void OnGUI() { GUILayout.BeginVertical("box"); ip = GUILayout.TextField(ip, 32); port = GUILayout.TextField(port, 4); GUILayout.Label("playerID " + NetworkAPI.PlayerId); // TEST display player id if (!IsSetup && GUILayout.Button("Init")) { Log("Init network on port " + port); NetworkAPI.Setup(port); IsSetup = true; } if (IsSetup && !IsConnected && GUILayout.Button("Connect")) { Log("Setup connection on " + ip + ":" + port); NetworkAPI.SetupClient(ip, port); IsConnected = true; } if (IsSetup && IsConnected && !IsLaunched && GUILayout.Button("Launch Lockstep")) { Log("Launch Lockstep..."); gameObject.GetComponent <Lockstep>().enabled = true; IsLaunched = true; } // GUILayout.Label(Console); GUILayout.EndVertical(); }
void OnAction(int playerID, GameAction action) { if (action.LockstepTurn > lockstepTurn) { uint turn = action.LockstepTurn - lockstepTurn; NetworkUI.Log("Receive action from player " + playerID + " for turn " + turn); if (turn <= 2 && actions[turn][playerID] == null) { actions[turn][playerID] = action; ++numberOfPlayerWhoSendAction[turn]; } } // Send wait message for stop overloaded network bool wait = action.LockstepTurn > lockstepTurn + 2; NetworkAPI.SendConfirmation(new GameConfirmation(action.LockstepTurn, wait)); }
void SendActionToAll() { for (int i = 0; i < actions.Length; ++i) { GameAction action = actions[i][NetworkAPI.PlayerId]; if (action == null) { NetworkUI.Log("action null for turn " + i); continue; } for (int j = 0; j < playerHaveConfirmedMyAction[i].Length; ++j) { if (wait[i][j] > 0) { --wait[i][j]; continue; } if (!playerHaveConfirmedMyAction[i][j]) { if (j == NetworkAPI.PlayerId) { Debug.LogError("Player can't have not confirmed it's action..."); } else { NetworkUI.Log("Send action for turn " + i + " to all..."); NetworkAPI.SendAction(action); // TODO send to a specific player } } else { NetworkUI.Log("Player " + j + " have confirmed my action for turn " + i); } } } }