Android Open Source - hackfmi-ragdoll-physics Host Strategy






From Project

Back to project page hackfmi-ragdoll-physics.

License

The source code is released under:

GNU General Public License

If you think the Android project hackfmi-ragdoll-physics 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 com.midtownmadness.bubblecombat.multiplay;
/*w ww. j av a 2s.  c om*/
import java.io.IOException;

import android.bluetooth.BluetoothServerSocket;
import android.content.Context;
import android.graphics.Paint.Join;
import android.os.SystemClock;
import android.util.Log;

import com.midtownmadness.bubblecombat.Settings;
import com.midtownmadness.bubblecombat.multiplay.commobjects.GoMessageObject;

public class HostStrategy extends BaseStrategy {

  protected static final String TAG = HostStrategy.class.getSimpleName();
  private BluetoothServerSocket serverSocket;
  private Object monitor = new Object();
  private boolean goCommandGiven;

  public HostStrategy(Context context, BluetoothServerSocket serverSocket,
      MultiplayManager manager) {
    super(context, manager);
    this.serverSocket = serverSocket;
  }

  @Override
  public void handshakeAndLoad() {
    getHandler().post(new Runnable() {

      @Override
      public void run() {
        try {
          otherPlayer = serverSocket.accept(Settings.HOST_TIMEOUT);
          toast("Accepted client socket " + otherPlayer.toString());

          // please don't do ugly stuff with my 'otherPlayer' field
          manager.onPlayerConnected(otherPlayer);

          BluetoothMessage message = obtainMessage(otherPlayer);

          if (message.messageType == MessageType.JOIN_GAME) {
            commenceGame();
          }

        } catch (IOException e) {
          // timeout
          e.printStackTrace();
          Log.e(TAG, "Timeout when hosting!");
        }

      }
    });
  }

  @Override
  public void onLooperReady() {
    handshakeAndLoad();
  }

  @Override
  public void close() {
    toast("close");
    try {
      if (otherPlayer != null) {
        otherPlayer.getInputStream().close();
        otherPlayer.getOutputStream().close();
        otherPlayer.close();
      }
      serverSocket.close();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  @Override
  public void commenceGame() {
    getHandler().post(new Runnable() {

      @Override
      public void run() {
        toast("Player " + otherPlayer.getRemoteDevice().getName()
            + "has joined!");

        final long syncStamp = sendGoMessage();
        manager.onGameCommenced(syncStamp);
      }
    });
  }

  private long sendGoMessage() {
    MessageType type = MessageType.GO;
    long baseTimestamp = SystemClock.uptimeMillis();
    GoMessageObject payload = new GoMessageObject(baseTimestamp);
    sendMessage(payload, type, otherPlayer);
    return baseTimestamp;
  }

}




Java Source Code List

com.midtownmadness.bubblecombar.listeners.GameRoomListener.java
com.midtownmadness.bubblecombar.model.GameModel.java
com.midtownmadness.bubblecombar.model.GamesAdapter.java
com.midtownmadness.bubblecombar.model.MockAdapter.java
com.midtownmadness.bubblecombat.BaseActivity.java
com.midtownmadness.bubblecombat.BluetoothGamesAdapter.java
com.midtownmadness.bubblecombat.GameActivity.java
com.midtownmadness.bubblecombat.GameView.java
com.midtownmadness.bubblecombat.GlobalContext.java
com.midtownmadness.bubblecombat.MenuActivity.java
com.midtownmadness.bubblecombat.MockMultiplayerGame.java
com.midtownmadness.bubblecombat.Settings.java
com.midtownmadness.bubblecombat.game.DrawThread.java
com.midtownmadness.bubblecombat.game.GameObject.java
com.midtownmadness.bubblecombat.game.GameWallObject.java
com.midtownmadness.bubblecombat.game.LevelObject.java
com.midtownmadness.bubblecombat.game.PlayerObject.java
com.midtownmadness.bubblecombat.multiplay.BaseStrategy.java
com.midtownmadness.bubblecombat.multiplay.BluetoothConnectException.java
com.midtownmadness.bubblecombat.multiplay.BluetoothMessage.java
com.midtownmadness.bubblecombat.multiplay.Callback.java
com.midtownmadness.bubblecombat.multiplay.ClientStrategy.java
com.midtownmadness.bubblecombat.multiplay.HostStrategy.java
com.midtownmadness.bubblecombat.multiplay.LoggingListener.java
com.midtownmadness.bubblecombat.multiplay.LooperThread.java
com.midtownmadness.bubblecombat.multiplay.MessageType.java
com.midtownmadness.bubblecombat.multiplay.MultiplayEventListener.java
com.midtownmadness.bubblecombat.multiplay.MultiplayEvent.java
com.midtownmadness.bubblecombat.multiplay.MultiplayManager.java
com.midtownmadness.bubblecombat.multiplay.MultiplayStrategy.java
com.midtownmadness.bubblecombat.multiplay.MultiplayUtil.java
com.midtownmadness.bubblecombat.multiplay.MultiplayerGame.java
com.midtownmadness.bubblecombat.multiplay.commobjects.GoMessageObject.java
com.midtownmadness.bubblecombat.physics.BodyCreationRequest.java
com.midtownmadness.bubblecombat.physics.BodyUserData.java
com.midtownmadness.bubblecombat.physics.CentralHurdle.java
com.midtownmadness.bubblecombat.physics.CollisionListener.java
com.midtownmadness.bubblecombat.physics.DefaultLevelBuilder.java
com.midtownmadness.bubblecombat.physics.LevelBuilder.java
com.midtownmadness.bubblecombat.physics.MovementRequest.java
com.midtownmadness.bubblecombat.physics.MovementStateRequest.java
com.midtownmadness.bubblecombat.physics.PhysicsRequest.java
com.midtownmadness.bubblecombat.physics.PhysicsService.java
com.midtownmadness.bubblecombat.views.MenuGameView.java
com.midtownmadness.bubblecombat.views.MenuView.java