Android Open Source - nadia Game Surface View






From Project

Back to project page nadia.

License

The source code is released under:

GNU Lesser General Public License

If you think the Android project nadia listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * GameSurfaceView.java//  w  w w . ja v  a2  s .co m
 * 
 * Copyright (c) 2013, Emmanuel Arana Corzo. All rights reserved.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA 02110-1301  USA
 */

package com.redarctic.nadia.baseengine;

import java.util.ArrayList;

import com.redarctic.nadia.controls.DirectionalPad;
import com.redarctic.nadia.ext.simplesignalslot.ISlotProvider;
import com.redarctic.nadia.ext.simplesignalslot.SignalSlotMap;
import com.redarctic.nadia.ext.simplesignalslot.SlotProviderMethodPair;

import android.content.Context;
import android.graphics.Canvas;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class GameSurfaceView 
extends SurfaceView 
implements Runnable, DrawableObject, ISlotProvider {
  Thread t;
  SurfaceHolder shHolder;
  boolean isItOK = false;
  
  protected ArrayList<GameComponent> components = new ArrayList<GameComponent>();
  GameStateManager stateManager;
  GameState currentState;
  
  DirectionalPad gamePad;
  
  public GameSurfaceView(Context context) {
    super(context);
    this.initialize();
  }
  
  public GameSurfaceView(Context context, DirectionalPad gamePad) {
    super(context);
    if (null != gamePad)
      this.gamePad = gamePad;
    else
      throw new NullPointerException();
    this.initialize();
  }

  @Override
  public void initialize() {
    this.shHolder = getHolder();
    
    this.initializeStates();
  }

  @Override
  public void update(Canvas canvas) {
    if (null != this.gamePad) {
      this.gamePad.update(canvas);
    }
    
    for (GameComponent component : this.getComponents()) {
      component.update(canvas);
    }
    this.currentState.update(canvas);
  }

  @Override
  public void drawMe(Canvas canvas) {
    canvas.drawARGB(255, 255, 255, 255);
    
    this.currentState.drawMe(canvas);
    
    if (null != this.gamePad)
      this.gamePad.drawMe(canvas);
  }

  @Override
  public void run() {
    while (true == this.isItOK) {
      if (!this.shHolder.getSurface().isValid()) {
        continue;
      }
      
      /*
       * BEGIN TO DRAW 
       */
      Canvas c = this.shHolder.lockCanvas();
      
      this.update(c);
      this.drawMe(c);
      
      /*
       * END DRAW 
       */
      this.shHolder.unlockCanvasAndPost(c);
    }
  }
  
  public void resume() {
    this.isItOK = true;
    
    if (this.t == null) {
      this.t = new Thread(this);
      this.t.start();
    }
  }
  
  public void pause() {
    this.isItOK = false;
    
    while (true) {
      try {
        this.t.join(1000);
        break;
      }
      catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
  
  public void setCurrentState(GameState state) {
    this.currentState = state;
  }

  public ArrayList<GameComponent> getComponents() {
    return this.components;
  }
  
  public DirectionalPad getGamePad() {
    return gamePad;
  }

  public void setGamePad(DirectionalPad gamePad) {
    this.gamePad = gamePad;
  }

  private void initializeStates() {
    if (null == this.stateManager) {
      this.stateManager = new GameStateManager();
      
      if (null == this.getComponents()) {
        this.components = new ArrayList<GameComponent>();
      }
      this.components.add(this.stateManager);
      
      for (GameComponent component : this.getComponents()) {
        component.initialize();
      }
      
      SignalSlotMap.fastConnect(this.stateManager, GameStateManager.SIGNAL_STATE_CHANGE, 
          SlotProviderMethodPair.create(this, "setCurrentState", GameState.class));
    }
  }
  
  public GameStateManager getStateManager() {
    return this.stateManager;
  } 
}




Java Source Code List

com.ashokgelal.samaya.DateTimeFormatter.java
com.ashokgelal.samaya.DateTimeInterval.java
com.ashokgelal.samaya.DateTimeParser.java
com.ashokgelal.samaya.DateTime.java
com.ashokgelal.samaya.ModelUtil.java
com.ashokgelal.samaya.Samaya.java
com.ashokgelal.samaya.TimeSpan.java
com.ashokgelal.samaya.ToStringUtil.java
com.ashokgelal.samaya.Util.java
com.redarctic.nadia.baseengine.BaseGameState.java
com.redarctic.nadia.baseengine.ColorPallete.java
com.redarctic.nadia.baseengine.DrawableGameComponent.java
com.redarctic.nadia.baseengine.DrawableObject.java
com.redarctic.nadia.baseengine.GameComponent.java
com.redarctic.nadia.baseengine.GameStateManager.java
com.redarctic.nadia.baseengine.GameState.java
com.redarctic.nadia.baseengine.GameSurfaceView.java
com.redarctic.nadia.baseengine.GameSurface.java
com.redarctic.nadia.baseengine.SpriteFont.java
com.redarctic.nadia.baseengine.Sprite.java
com.redarctic.nadia.baseengine.character.BaseModifier.java
com.redarctic.nadia.baseengine.character.Classes.java
com.redarctic.nadia.baseengine.character.FormulaModifierException.java
com.redarctic.nadia.baseengine.character.Player.java
com.redarctic.nadia.baseengine.item.ArmorLocation.java
com.redarctic.nadia.baseengine.item.Armor.java
com.redarctic.nadia.baseengine.item.BaseItem.java
com.redarctic.nadia.baseengine.item.ItemManager.java
com.redarctic.nadia.baseengine.item.ItemType.java
com.redarctic.nadia.baseengine.item.Shield.java
com.redarctic.nadia.baseengine.item.Weapon.java
com.redarctic.nadia.baseengine.item.WeaponsType.java
com.redarctic.nadia.baseengine.sprite.AnimatedSprite.java
com.redarctic.nadia.baseengine.sprite.AnimationException.java
com.redarctic.nadia.baseengine.sprite.AnimationKey.java
com.redarctic.nadia.baseengine.sprite.Animation.java
com.redarctic.nadia.baseengine.tileengine.Camera.java
com.redarctic.nadia.baseengine.tileengine.Engine.java
com.redarctic.nadia.baseengine.tileengine.MapLayer.java
com.redarctic.nadia.baseengine.tileengine.TileException.java
com.redarctic.nadia.baseengine.tileengine.TileMap.java
com.redarctic.nadia.baseengine.tileengine.Tile.java
com.redarctic.nadia.baseengine.tileengine.Tileset.java
com.redarctic.nadia.baseengine.world.Level.java
com.redarctic.nadia.baseengine.world.World.java
com.redarctic.nadia.collision.Circle.java
com.redarctic.nadia.collision.CollisionPolygon.java
com.redarctic.nadia.collision.ConvexPolygonException.java
com.redarctic.nadia.collision.Rectangle.java
com.redarctic.nadia.controls.ButtonPad.java
com.redarctic.nadia.controls.DirectionalPad.java
com.redarctic.nadia.controls.menu.CharacterDialog.java
com.redarctic.nadia.controls.menu.ControlBorder.java
com.redarctic.nadia.controls.menu.ControlManager.java
com.redarctic.nadia.controls.menu.Control.java
com.redarctic.nadia.controls.menu.Label.java
com.redarctic.nadia.controls.menu.LeftRightSelector.java
com.redarctic.nadia.controls.menu.LinkLabel.java
com.redarctic.nadia.controls.menu.Menu.java
com.redarctic.nadia.controls.menu.PictureBox.java
com.redarctic.nadia.controls.menu.SimpleConversation.java
com.redarctic.nadia.ext.MathHelper.java
com.redarctic.nadia.ext.StringHelper.java
com.redarctic.nadia.ext.simplesignalslot.ISignalProvider.java
com.redarctic.nadia.ext.simplesignalslot.ISlotProvider.java
com.redarctic.nadia.ext.simplesignalslot.PrimitiveWrapper.java
com.redarctic.nadia.ext.simplesignalslot.SignalSlotMap.java
com.redarctic.nadia.ext.simplesignalslot.SignalSlotPair.java
com.redarctic.nadia.ext.simplesignalslot.SlotProviderMethodPair.java