public bool AddToQueue(Guid playerId)
        {
            var success = PlayerWaitingQueue.AddToQueue(playerId);

            if (success)
            {
                PlayerAdded?.Invoke(this, new EventArgs());
            }

            return(success);
        }
Example #2
0
        private void OnLobbyNetworkReceived(NetPeer peer, NetDataReader dataReader)
        {
            NetMessage instruction = (NetMessage)dataReader.GetInt();

            switch (instruction)
            {
            case NetMessage.ServerClosed:
                OnServerClosed();
                break;

            case NetMessage.ClientsCount:
                int count = dataReader.GetInt();
                OnClientsCount(count);
                break;

            case NetMessage.AddPlayer:
                PlayerAdded?.Invoke(this, new LobbyPlayerEventArgs()
                {
                    PlayerID        = dataReader.GetString(),
                    ControllerIndex = (PlayerControllerIndex)dataReader.GetInt()
                });
                break;

            case NetMessage.RemovePlayer:
                PlayerRemoved?.Invoke(this, new LobbyPlayerEventArgs()
                {
                    PlayerID = dataReader.GetString()
                });
                break;

            case NetMessage.PrepareToStartGame:
                PreparingGameToStart?.Invoke(this, new LobbyOptionsArgs {
                    PlayersCount = dataReader.GetInt(),
                    Map          = dataReader.GetInt(),
                    Biome        = dataReader.GetInt(),
                });
                break;

            case NetMessage.InstantiateCharacter:
                InstantiateCharacter?.Invoke(this, new LobbyPlayerEventArgs {
                    PlayerID        = dataReader.GetString(),
                    ControllerIndex = (PlayerControllerIndex)dataReader.GetInt(),
                    Type            = (Pj.Type)dataReader.GetInt(),
                    X = dataReader.GetFloat(), Y = dataReader.GetFloat()
                });
                break;

            case NetMessage.StartGame:
                this.SetGameplay();
                GameStarted?.Invoke(this, EventArgs.Empty);
                break;
            }
        }
Example #3
0
        /// <summary>
        /// send the player all the existing network views
        /// </summary>
        /// <param name="player"></param>
        internal void SendViewInstantiates(Player player)
        {
            CleanupInvalidNetworkViewOwners();

            try
            {
                PlayerAdded?.Invoke(player);
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }
Example #4
0
 public void Add(ServerPlayer player)
 {
     lock (Members)
     {
         if (Members.Count == 0)
         {
             Wins   = 0;
             Losses = 0;
         }
         Members.Add(player);
     }
     player.Info.Team = this;
     PlayerAdded?.Invoke(this, this);
 }
Example #5
0
        public INetworkClient CreateLocalClient()
        {
            // TODO(james7132): Make this dynamic
            var clientToServer  = new LocalInterface();
            var serverInterface = clientToServer.Mirror;
            var serverToClient  = serverInterface.Connection;
            var localClient     = new NetworkClientPlayer(serverToClient, LowestAvailablePlayerID(serverToClient));

            localClient.Config.PlayerID = localClient.PlayerID;
            clients[serverToClient]     = localClient;
            PlayerAdded?.Invoke(localClient);
            AddNetworkInterface(serverInterface);
            return(new NetworkGameClient(clientToServer.Connection));
        }
Example #6
0
 public void AddPlayer(Player player)
 {
     if (PlayerAdded != null)
     {
         PlayerEventArgs pea = new PlayerEventArgs(player);
         foreach (System.EventHandler <PlayerEventArgs> e in PlayerAdded?.GetInvocationList())
         {
             e.BeginInvoke(this, pea, e.EndInvoke, null);
         }
     }
     if (!PlayerExists(player.Name))
     {
         characters.Add(player.Name, player);
     }
 }
 public void AddPlayer(Player player)
 {
     if (PlayerAdded != null)
     {
         PlayerEventArgs pea = new PlayerEventArgs(player);
         foreach (System.EventHandler <PlayerEventArgs> e in PlayerAdded?.GetInvocationList())
         {
             Task.Run(() => e.Invoke(this, pea));
         }
     }
     if (!PlayerExists(player.Name))
     {
         characters.Add(player.Name, player);
         charactersByGuid.Add(player.Guid, player);
     }
 }
Example #8
0
        internal void FinalizePlayerAdd(Player player)
        {
            if (player.Id == 0)
            {
                return;
            }

            //update the slot with the correct player.
            lock (_players)
                _players.Add(player.Id, player);

            try
            {
                PlayerAdded?.Invoke(player);
            }
            catch (Exception e) { Debug.LogException(e); }
        }
Example #9
0
        /*********
        ** Private methods
        *********/
        private static void OnUpdateTicked(object sender, EventArgs e)
        {
            if (!Context.IsWorldReady)
            {
                return;
            }

            var currentLength = MegaStorageMod.ModHelper.Multiplayer.GetConnectedPlayers().Count();

            if (currentLength > _prevLength)
            {
                PlayerAdded?.Invoke(null, null);
            }
            else if (currentLength < _prevLength)
            {
                PlayerRemoved?.Invoke(null, null);
            }
            _prevLength = currentLength;
        }
Example #10
0
        public void HandleAddPlayer(NetworkMessage msg)
        {
            MsgAddPlayer ap = msg as MsgAddPlayer;

            if (!PlayerList.ContainsKey(ap.PlayerID))
            {
                if (LocalPlayerID == ap.PlayerID)
                {
                    PlayerList.Add(ap.PlayerID, new LocalPlayer(null));
                }
                else
                {
                    PlayerList.Add(ap.PlayerID, new Player());
                }
            }

            Player player = PlayerList[ap.PlayerID];

            player.PlayerID = ap.PlayerID;

            player.Callsign = ap.Callsign;
            player.Motto    = ap.Motto;

            player.PlayerType = (PlayerTypes)ap.PlayerType;
            player.Team       = ap.Team;
            player.Wins       = ap.Wins;
            player.Losses     = ap.Losses;
            player.TeamKills  = ap.TeamKills;

            if (player.IsLocalPlayer) // hey it's us!
            {
                Me = player as LocalPlayer;
                if (SelfAdded != null)
                {
                    SelfAdded.Invoke(this, player);
                }
            }

            if (PlayerAdded != null)
            {
                PlayerAdded.Invoke(this, player);
            }
        }
Example #11
0
        public string LoginPlayer(string guestId, string playerName)
        {
            var board = _hostService.GetBoardForGuest(guestId);

            var game = Games.FirstOrDefault(x => x.BoardId == board.Id);

            if (game == null)
            {
                return("Invalid Room Code");
            }
            else if (string.IsNullOrEmpty(playerName))
            {
                return("Name is required.");
            }
            else
            {
                lock (_loginLock)
                {
                    var player = game.Players.FirstOrDefault(x => x.Name == playerName);

                    if (player != null)
                    {
                        return("Name is already taken.");
                    }
                    else if (game.Players.Count < game.MaxPlayers)
                    {
                        game.Players.Add(new Player {
                            Name = playerName
                        });

                        PlayerAdded?.Invoke(this, new GameChangedEventArgs
                        {
                            BoardId     = board.Id,
                            Action      = GameChangedEventActions.PlayerAdded,
                            PlayerIndex = game.Players.Count - 1
                        });
                    }
                }

                return(null);
            }
        }
Example #12
0
 private void OnPlayerAdded(List <PlayerDto> players)
 {
     PlayerAdded?.Invoke(this, players);
 }
Example #13
0
 public void AddPlayer(Player player)
 {
     _players.Add(player);
     PlayerAdded?.Invoke(player);
 }
Example #14
0
 public void Apply(PlayerAdded playerAdded)
 {
     _players.Add(new Player(playerAdded.PlayerId, playerAdded.PlayerName));
 }
Example #15
0
        public bool AddPlayer(LobbyUserExtension playerExt, out string error)
        {
            error = null;

            if (playerExt.CurrentLobby != null)
            {
                error = "You're already in a lobby";
                return(false);
            }

            var username = TryGetUsername(playerExt.Peer);

            if (username == null)
            {
                error = "Invalid username";
                return(false);
            }

            if (Members.ContainsKey(username))
            {
                error = "Already in the lobby";
                return(false);
            }

            if (IsDestroyed)
            {
                error = "Lobby is destroyed";
                return(false);
            }

            if (!IsPlayerAllowed(username, playerExt))
            {
                error = "You're not allowed";
                return(false);
            }

            if (Members.Values.Count >= MaxPlayers)
            {
                error = "Lobby is full";
                return(false);
            }

            if (!Config.AllowJoiningWhenGameIsLive && State != LobbyState.Preparations)
            {
                error = "Game is already in progress";
                return(false);
            }

            // Create an "instance" of the member
            var member = CreateMember(username, playerExt);

            // Add it to a team
            var team = PickTeamForPlayer(member);

            if (team == null)
            {
                error = "Invalid lobby team";
                return(false);
            }

            if (!team.AddMember(member))
            {
                error = "Not allowed to join a team";
                return(false);
            }

            Members[member.Username]           = member;
            MembersByPeerId[playerExt.Peer.Id] = member;

            // Set this lobby as player's current lobby
            playerExt.CurrentLobby = this;

            if (GameMaster == null)
            {
                PickNewGameMaster(false);
            }

            Subscribe(playerExt.Peer);

            playerExt.Peer.Disconnected += OnPeerDisconnected;

            OnPlayerAdded(member);

            if (PlayerAdded != null)
            {
                PlayerAdded.Invoke(member);
            }


            return(true);
        }
Example #16
0
 protected virtual void OnPlayerAdded(Player player)
 {
     PlayerAdded?.Invoke(this, player);
     _ghostObjectTimer.Start();
 }
Example #17
0
 public void RaisePlayerAddedEvent(Entity entity)
 {
     PlayerAdded?.Invoke(entity);
 }
Example #18
0
 internal void RaisePlayerAdded(PlayerState state)
 {
     Logger.Debug($"event {nameof(RaisePlayerAdded)}({state.Player.DisplayName})");
     Core.Logger.Flush();
     PlayerAdded?.Invoke(state);
 }
Example #19
0
 protected override void PlayerNameConfimred(PlayerAdded obj)
 {
     player = obj.Player;
     Events.Publish(new PlayerReady(obj.Player));
 }
Example #20
0
 protected virtual void OnPlayerAdded(Player player)
 {
     PlayerAdded?.Invoke(this, player);
 }
Example #21
0
 public void Apply(PlayerAdded evt)
 => Players.Add(evt.Name);
Example #22
0
 public void AddPlayer(PlayerInfo player)
 {
     Players.Add(player);
     PlayerAdded?.Invoke(player);
 }
Example #23
0
    public static void HandlePackage(byte[] package, int playerId = -1)
    {
        try
        {
            IncomingGameEvent gameEvent;

            Debug.Log((IncomingGameEventTypes)package[0]);

            switch ((IncomingGameEventTypes)package[0])
            {
            case IncomingGameEventTypes.CirclesFrameUpdate:
                gameEvent = new CirclesFrameUpdate(package);
                break;

            case IncomingGameEventTypes.RoundStarted:
                gameEvent = new RoundStarted(package);
                break;

            case IncomingGameEventTypes.PlayerAdded:
                gameEvent = new PlayerAdded(package);
                break;

            case IncomingGameEventTypes.PlayerDied:
                gameEvent = new PlayerDied(package);
                break;

            case IncomingGameEventTypes.RoundOver:
                gameEvent = new RoundOver(package);
                break;

            case IncomingGameEventTypes.CirclesAdded:
                gameEvent = new CirclesAdded(package);
                break;

            case IncomingGameEventTypes.CirclesRemoved:
                gameEvent = new CirclesRemoved(package);
                break;

            case IncomingGameEventTypes.FoodAdded:
                gameEvent = new FoodAdded(package);
                break;

            case IncomingGameEventTypes.FoodRemoved:
                gameEvent = new FoodRemoved(package);
                break;

            case IncomingGameEventTypes.PlayerLeft:
                gameEvent = new PlayerLeft(package);
                break;

            default:
                throw new Exception(String.Format("Incorrect package type: {0}", (IncomingGameEventTypes)package[0]));
                break;
            }

            GameManager.Instance.GameEvents.Enqueue(gameEvent);
        }
        catch (Exception e)
        {
            Debug.LogError(e.Message);
        }
    }