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();
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
 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);
             }
         }
     }
 }