Example #1
0
    //============================================================
    // Private Methods:
    //============================================================

    private void SpawnPlayer(float invulnerabilityDuration = 0)
    {
        // respawn the player in the centre of the play area
        player = Instantiate(playerPrefab, Vector3.zero, Quaternion.identity, transform);
        player.Init(bulletContainer, invulnerabilityDuration);

        // signal a new player has spawned, and to update transforms if necessary
        if (NewPlayer != null)
        {
            NewPlayer.Invoke(player.transform);
        }
    }
Example #2
0
        public int AddPlayer(Player player)
        {
            Monitor.Enter(this);

            players.Add(player);

            NewPlayer?.Invoke(Name);

            if (players.Count == MaxPlayers)
            {
                players[CurrentPlayer].StartStep(CalcPlanetIncome(CurrentPlayer));
            }
            Monitor.Exit(this);

            return(players.Count - 1);
        }
Example #3
0
    void HandleInboundMessage(UdpMessage message)
    {
        switch (message.Event)
        {
        case "connected": Connected?.Invoke(); break;

        case "position": PositionUpdate?.Invoke(Deserialize <PositionUpdate>(message.Data.ToString())); break;

        case "newplayer": NewPlayer?.Invoke(new Guid(message.Data.ToString())); break;

        case "playerdisconnected": PlayerDisconnected?.Invoke(new Guid(message.Data.ToString())); break;

        case "newnetobj": NewNetObj?.Invoke(Deserialize <NetObj>(message.Data.ToString())); break;

        case "destroynetobj": NetObjDestroyed?.Invoke(new Guid(message.Data.ToString())); break;

        case "owner-changed": OwnerChanged?.Invoke(new Guid(message.Data.ToString())); break;

        default: Debug.LogError("Received invalid inbound message event: " + message.Event); break;
        }
    }
Example #4
0
        private void ManageMessage(Object sender, NewMessageEvent newMessage)
        {
            if (newMessage.Message == "ERROR")
            {
                _error = true;
                ReceiveDone.Set();
            }
            string[] decompostion = newMessage.Message.Split(' ');
            string   type         = decompostion[0];

            switch (type)
            {
            case "GAMEMODE":
                _idGameMode = int.Parse(decompostion[1].Split('=')[1]);
                ReceiveDone.Set();
                break;

            case "PLAYER":
                _idPlayer = int.Parse(decompostion[1].Split('=')[1]);
                ReceiveDone.Set();
                break;

            case "GAMES":
                _gameModes = new List <CurrentGameMode>();
                foreach (var info in decompostion)
                {
                    if (info == "GAMES")
                    {
                        continue;
                    }
                    if (info == "")
                    {
                        continue;
                    }
                    _gameModes.Add(DecryptGame(info));
                }
                ReceiveDone.Set();
                break;

            case "NEWPLAYER":
                bool ready = bool.Parse(decompostion[1].Split('=')[1]);
                if (ready)
                {
                    StartGame?.Invoke(this, new StartGameEvent());
                }
                else
                {
                    NewPlayer?.Invoke(this, new NewPlayerEvent {
                        Player = DecryptPlayer(decompostion[2])
                    });
                }
                break;

            case "ADDPLAYER":
                _isReady = bool.Parse(decompostion[1].Split('=')[1]);
                ReceiveDone.Set();
                break;

            case "PLAYERSGAME":
                _players = new List <Player>();
                foreach (var info in decompostion)
                {
                    if (info == "PLAYERSGAME")
                    {
                        continue;
                    }
                    if (info == "")
                    {
                        continue;
                    }
                    _players.Add(DecryptPlayer(info));
                }
                ReceiveDone.Set();
                break;

            case "ERRORGAME":
                ErrorGames?.Invoke(this, new ErrorGamesEvent());
                break;

            case "DELPLAYER":
                DeletePLayer?.Invoke(this, new DeletePlayerEvent(int.Parse(decompostion[1].Split('=')[1])));
                break;

            case "SWITCH":
                SwitchCell?.Invoke(this, new SwitchCellEvent(int.Parse(decompostion[1].Split('=')[1]), int.Parse(decompostion[2].Split('=')[1]), int.Parse(decompostion[3].Split('=')[1])));
                break;

            case "STARTGEN":
                StartGenEv?.Invoke(this, new StartGenEvent());
                break;

            case "DIFFGEN":
                _cells = new List <Cell>();
                if (decompostion[1] == "FIN")
                {
                    _cells = null;
                    ReceiveDone.Set();
                    break;
                }
                foreach (var info in decompostion)
                {
                    if (info == "DIFFGEN")
                    {
                        continue;
                    }
                    if (info == "")
                    {
                        continue;
                    }
                    _cells.Add(DecryptCell(info));
                }
                ReceiveDone.Set();
                break;

            case "GETZONE":
                _zone = new List <Cell>();
                foreach (var info in decompostion)
                {
                    if (info == "DIFFGEN")
                    {
                        continue;
                    }
                    if (info == "")
                    {
                        continue;
                    }
                    _zone.Add(DecryptCell(info));
                }
                ReceiveDone.Set();
                break;
            }
        }