Android Open Source - DistributedMemory Host Game State Manager






From Project

Back to project page DistributedMemory.

License

The source code is released under:

Apache License

If you think the Android project DistributedMemory 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 org.faudroids.distributedmemory.core;
//from   www.j a  va2  s.c  o  m

import org.faudroids.distributedmemory.network.BroadcastMessage;
import org.faudroids.distributedmemory.utils.Assert;

import javax.inject.Inject;

import timber.log.Timber;

/**
 * Same as {@link org.faudroids.distributedmemory.core.GameStateManager} except it can
 * also handle state transition that require acks from clients before being executed.
 */
final class HostGameStateManager extends GameStateManager {

  private HostStateTransition stateTransition = null;
  private HostStateTransitionListener stateTransitionListener = null;

  @Inject
  public HostGameStateManager() { }


  @Override
  public void reset() {
    super.reset();
    stateTransition = null;
  }


  public void registerStateTransitionListener(HostStateTransitionListener stateTransitionListener) {
    Assert.assertTrue(this.stateTransitionListener == null, "already registered");
    this.stateTransitionListener = stateTransitionListener;
  }


  public void unregisterStateTransitionListener() {
    Assert.assertTrue(this.stateTransitionListener != null, "not registered");
    this.stateTransitionListener = null;
  }


  /**
   * Starts a state transition by sending the broadcast and waiting for all acks from clients
   * before actually changing the state.
   */
  public void startStateTransition(BroadcastMessage<?> broadcastMessage, GameState nextState) {
    Assert.assertTrue(stateTransition == null || stateTransition.isComplete(), "previous state transition not yet finished!");
    Timber.d("Starting host game state transition to " + nextState);
    stateTransition = new HostStateTransition(new HostStateTransitionListener() {
      @Override
      public void onTransitionFinished(GameState nextState) {
        stateTransition = null;
        changeState(nextState);
        if (stateTransitionListener != null) stateTransitionListener.onTransitionFinished(nextState);
      }
    },  nextState,  broadcastMessage);
    stateTransition.startTransition();
  }


  public boolean onAckReceived() {
    Assert.assertTrue(stateTransition != null && !stateTransition.isComplete(), "no state transition in progress");
    return stateTransition.onAckReceived();
  }


  public boolean isStateTransitionComplete() {
    return stateTransition == null;
  }

}




Java Source Code List

org.faudroids.distributedmemory.ApplicationTest.java
org.faudroids.distributedmemory.app.AppModule.java
org.faudroids.distributedmemory.app.DistributedMemoryApplication.java
org.faudroids.distributedmemory.common.BaseActivity.java
org.faudroids.distributedmemory.common.BaseApplication.java
org.faudroids.distributedmemory.common.BaseListActivity.java
org.faudroids.distributedmemory.common.BaseService.java
org.faudroids.distributedmemory.common.CommonModule.java
org.faudroids.distributedmemory.common.Injector.java
org.faudroids.distributedmemory.core.Card.java
org.faudroids.distributedmemory.core.ClientGameListener.java
org.faudroids.distributedmemory.core.ClientGameManager.java
org.faudroids.distributedmemory.core.CoreModule.java
org.faudroids.distributedmemory.core.Device.java
org.faudroids.distributedmemory.core.Evaluation.java
org.faudroids.distributedmemory.core.GameSetupInfo.java
org.faudroids.distributedmemory.core.GameStateManager.java
org.faudroids.distributedmemory.core.GameState.java
org.faudroids.distributedmemory.core.HostGameListener.java
org.faudroids.distributedmemory.core.HostGameManager.java
org.faudroids.distributedmemory.core.HostGameStateManager.java
org.faudroids.distributedmemory.core.HostStateTransitionListener.java
org.faudroids.distributedmemory.core.HostStateTransition.java
org.faudroids.distributedmemory.core.MessageConstants.java
org.faudroids.distributedmemory.core.MessageReader.java
org.faudroids.distributedmemory.core.MessageWriter.java
org.faudroids.distributedmemory.core.Player.java
org.faudroids.distributedmemory.network.BroadcastMessage.java
org.faudroids.distributedmemory.network.ClientNetworkListener.java
org.faudroids.distributedmemory.network.ConnectionHandlerFactory.java
org.faudroids.distributedmemory.network.ConnectionHandler.java
org.faudroids.distributedmemory.network.HostInfo.java
org.faudroids.distributedmemory.network.HostNetworkListener.java
org.faudroids.distributedmemory.network.HostSocketHandler.java
org.faudroids.distributedmemory.network.JsonConnectionHandler.java
org.faudroids.distributedmemory.network.NetworkManager.java
org.faudroids.distributedmemory.network.NetworkModule.java
org.faudroids.distributedmemory.network.StringConnectionHandler.java
org.faudroids.distributedmemory.ui.AboutActivity.java
org.faudroids.distributedmemory.ui.BitmapCache.java
org.faudroids.distributedmemory.ui.ClientUtils.java
org.faudroids.distributedmemory.ui.GameActivity.java
org.faudroids.distributedmemory.ui.HelpActivity.java
org.faudroids.distributedmemory.ui.HelpDialogActivity.java
org.faudroids.distributedmemory.ui.HostGameActivity.java
org.faudroids.distributedmemory.ui.HostService.java
org.faudroids.distributedmemory.ui.JoinGameActivity.java
org.faudroids.distributedmemory.ui.LobbyActivity.java
org.faudroids.distributedmemory.ui.MainActivity.java
org.faudroids.distributedmemory.ui.QRCodeUtils.java
org.faudroids.distributedmemory.ui.StopServerBroadcastReceiver.java
org.faudroids.distributedmemory.ui.UiModule.java
org.faudroids.distributedmemory.utils.Assert.java
org.faudroids.distributedmemory.utils.NotificationUtils.java
org.faudroids.distributedmemory.utils.QRCodeEncoder.java
org.faudroids.distributedmemory.utils.ServiceUtils.java
org.faudroids.distributedmemory.utils.UtilsModule.java