Android Open Source - Gamework Game Handler






From Project

Back to project page Gamework.

License

The source code is released under:

Apache License

If you think the Android project Gamework 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

package cz.robyer.gamework.game;
//from ww  w . j a  v  a2  s .  c  o m
import java.util.WeakHashMap;

import cz.robyer.gamework.game.GameEvent.EventType;
import cz.robyer.gamework.utils.Log;

/**
 * Handler for broadcasting {@link GameEvent}s.
 * @author Robert P?sel
 */
public class GameHandler implements GameEventBroadcaster {
  private static final String TAG = GameHandler.class.getSimpleName();
  
  private final WeakHashMap<GameEventListener, Boolean> listeners = new WeakHashMap<GameEventListener, Boolean>();
  private final GameService parent;
  
  /**
   * Class constructor.
   * @param parent GameService which uses this handler.
   */
  public GameHandler(GameService parent) {
    this.parent = parent;
  }
  
  /**
   * Add listener.
   * @param listener
   * @return true if listener was added or false if it already existed
   */
  public synchronized boolean addListener(GameEventListener listener) {
    Log.d(TAG, "Adding GameEventListener " + listener.toString());
    return (listeners.put(listener, true) == null);
  }
  
  /**
   * Remove registered listener.
   * @param listener to remove
   * @return true when listener was removed or false if it did not existed
   */
  public synchronized boolean removeListener(GameEventListener listener) {
    Log.d(TAG, "Removing GameEventListener " + listener.toString());
    return (listeners.remove(listener) != null);
   }
  
  /**
   * Removes all registered listeners.
   */
  public synchronized void clearListeners() {
    Log.d(TAG, "Clearing GameEventListeners");
    listeners.clear();
  }
  
  /**
   * Broadcasts {@link GameEvent} to all registered listeners.
   */
  @Override
  public synchronized void broadcastEvent(GameEvent event) {
    int severity = android.util.Log.INFO;
    if (event.type == EventType.UPDATED_LOCATION ||
      event.type == EventType.UPDATED_TIME) {
      severity = android.util.Log.DEBUG;
      }
  
      if (Log.loggingEnabled()) {
        Log.println(severity, TAG, "Broadcasting event " + event.type.name() + " to " + listeners.size() + " listeners");
      }
  
      for (GameEventListener listener : listeners.keySet()) {
        if (listener != null) {
          listener.receiveEvent(event);
        }
      }
  }
  
  /**
   * Broadcasts {@link GameEvent} to all registered listeners.
   * @param type
   */
  public synchronized void broadcastEvent(EventType type) {
    broadcastEvent(new GameEvent(type));
  }

  /**
   * Returns actual game time in milliseconds.
   */
  public long getGameTime() {
    return parent.getTime();
  }
}




Java Source Code List

cz.robyer.gamework.app.activity.BaseActivity.java
cz.robyer.gamework.app.activity.BaseGameActivity.java
cz.robyer.gamework.app.activity.GameInventoryActivity.java
cz.robyer.gamework.app.activity.GameMapActivity.java
cz.robyer.gamework.app.activity.GameMessagesActivity.java
cz.robyer.gamework.app.activity.GameObjectivesActivity.java
cz.robyer.gamework.app.activity.GameToolsActivity.java
cz.robyer.gamework.app.activity.HelpActivity.java
cz.robyer.gamework.app.activity.MainActivity.java
cz.robyer.gamework.app.activity.MessageActivity.java
cz.robyer.gamework.app.game.GameService.java
cz.robyer.gamework.app.service.JavaScriptHandler.java
cz.robyer.gamework.app.service.MessageAdapter.java
cz.robyer.gamework.constants.Constants.java
cz.robyer.gamework.game.GameEventBroadcaster.java
cz.robyer.gamework.game.GameEventListener.java
cz.robyer.gamework.game.GameEvent.java
cz.robyer.gamework.game.GameHandler.java
cz.robyer.gamework.game.GameService.java
cz.robyer.gamework.game.GameStatus.java
cz.robyer.gamework.scenario.BaseObject.java
cz.robyer.gamework.scenario.HookableObject.java
cz.robyer.gamework.scenario.IdentificableObject.java
cz.robyer.gamework.scenario.ScenarioInfo.java
cz.robyer.gamework.scenario.Scenario.java
cz.robyer.gamework.scenario.area.Area.java
cz.robyer.gamework.scenario.area.MultiPointArea.java
cz.robyer.gamework.scenario.area.PointArea.java
cz.robyer.gamework.scenario.area.SoundArea.java
cz.robyer.gamework.scenario.helper.EventHookable.java
cz.robyer.gamework.scenario.helper.ScannerHookable.java
cz.robyer.gamework.scenario.helper.TimeHookable.java
cz.robyer.gamework.scenario.hook.Condition.java
cz.robyer.gamework.scenario.hook.Hook.java
cz.robyer.gamework.scenario.message.Message.java
cz.robyer.gamework.scenario.parser.XmlScenarioParser.java
cz.robyer.gamework.scenario.reaction.ActivityReaction.java
cz.robyer.gamework.scenario.reaction.EventReaction.java
cz.robyer.gamework.scenario.reaction.MessageReaction.java
cz.robyer.gamework.scenario.reaction.MultiReaction.java
cz.robyer.gamework.scenario.reaction.Reaction.java
cz.robyer.gamework.scenario.reaction.ReferenceReaction.java
cz.robyer.gamework.scenario.reaction.SoundReaction.java
cz.robyer.gamework.scenario.reaction.VariableReaction.java
cz.robyer.gamework.scenario.reaction.VibrateReaction.java
cz.robyer.gamework.scenario.variable.BooleanVariable.java
cz.robyer.gamework.scenario.variable.DecimalVariable.java
cz.robyer.gamework.scenario.variable.Variable.java
cz.robyer.gamework.utils.GPoint.java
cz.robyer.gamework.utils.Log.java
cz.robyer.gamework.utils.Utils.java