コード例 #1
0
ファイル: GameLevel.cs プロジェクト: OhBlihv/SkyCore-MiNET
        public virtual void SetPlayerTeam(SkyPlayer player, GameTeam oldTeam, GameTeam team)
        {
            if (oldTeam != null)
            {
                TeamPlayerDict[oldTeam].Remove(player);
            }

            if (team != null)
            {
                TeamPlayerDict[team].Add(player);

                if (team.IsSpectator)
                {
                    AddSpectator(player);
                }
                else
                {
                    //Respawn if this player is missing
                    if (player.IsGameSpectator)
                    {
                        List <MiNET.Player> gamePlayers = new List <MiNET.Player>();
                        DoForAllPlayers(gamePlayer =>
                        {
                            if (!gamePlayer.IsGameSpectator)
                            {
                                gamePlayers.Add(gamePlayer);
                            }
                        });

                        //TODO: Convert to scaled down invisible players?
                        //SkyUtil.log(
                        //    $"Spawning {player.Username} to ({string.Join(",", gamePlayers.Select(x => x.ToString()).ToArray())})");
                        player.SpawnToPlayers(gamePlayers.ToArray());
                    }

                    player.IsGameSpectator = false;
                }
            }
        }