コード例 #1
0
    public override void Awake()
    {
        _dataAccessor = PlayerDataAccessor;
        _mapper       = new PlayerMapping();

        base.Awake();
    }
コード例 #2
0
        public static PlayerInfo Create(Common.Player player, Common.Ball ball, TeamType team, IEnumerable <Common.Player> other)
        {
            Guard.NotNull(player, "player");
            Guard.NotNull(ball, "ball");

            var tackled = other.Where(o => player.CanTackle(o)).ToList();

            if (tackled.Count > 0)
            {
            }

            var info = new PlayerInfo()
            {
                Id            = PlayerMapping.GetId(player.PlayerType, team),
                Position      = player.Position,
                Velocity      = player.Velocity,
                IsBallOwner   = player == ball.Owner,
                CanPickUpBall = player.CanPickUpBall(ball),
                CanBeTackled  = tackled.Select(p => PlayerMapping.GetId(p.PlayerType, TeamType.Other)).ToList(),
                FallenTimer   = player.FallenTimer,
                TackleTimer   = player.TackleTimer,
            };

            info.DistanceToOwnGoal   = Goal.Own.GetDistance(info);
            info.DistanceToOtherGoal = Goal.Other.GetDistance(info);
            return(info);
        }
コード例 #3
0
 /// <summary>Invokes wait.</summary>
 /// <remarks>
 /// Calling sometimes ended up having null reference exceptions.
 /// </remarks>
 public void Invoke(PlayerMapping mapping)
 {
     try
     {
         mapping[id].ActionWait();
     }
     catch (System.NullReferenceException) { }
 }
コード例 #4
0
		/// <summary>Invokes move.</summary>
		public void Invoke(PlayerMapping mapping) { mapping[id].ActionGo(target.ToVector()); }
コード例 #5
0
		/// <summary>Invokes shoot on goal.</summary>
		public void Invoke(PlayerMapping mapping) { mapping[id].ActionShootGoal((float)power); }
コード例 #6
0
 /// <summary>Invokes move.</summary>
 public void Invoke(PlayerMapping mapping)
 {
     mapping[id].ActionGo(target.ToVector());
 }
コード例 #7
0
 /// <summary>Invokes drop ball.</summary>
 public void Invoke(PlayerMapping mapping)
 {
     mapping[id].ActionPickUpBall();
 }
コード例 #8
0
 /// <summary>Invokes drop ball.</summary>
 public void Invoke(PlayerMapping mapping)
 {
     mapping[id].ActionTackle(mapping[target]);
 }
コード例 #9
0
ファイル: Game.cs プロジェクト: KunyiLiu/Mafia_on_Teams
 /// <summary>
 /// API called to add a new player to the game
 /// </summary>
 /// <param name="player"></param>
 public void AddPlayer(Player player)
 {
     PlayerMapping.Add(player.Id, player);
     NumPlayers++;
 }
コード例 #10
0
 public void Invoke(PlayerMapping mapping)
 {
 }
コード例 #11
0
		public void Invoke(PlayerMapping mapping) { }
コード例 #12
0
		/// <summary>Invokes the shoot on target.</summary>
		public void Invoke(PlayerMapping mapping) { mapping[id].ActionShoot(target.ToVector(), (float)power); }
コード例 #13
0
ファイル: Game.cs プロジェクト: KunyiLiu/Mafia_on_Teams
        public void InitializeGameBoard()
        {
            FillRolesToAssign();

            Random        random          = new Random();
            List <Player> inactivePlayers = PlayerMapping.Select(p => p.Value).ToList();

            // TODO: Add some validation to make sure aggregate roles and role counts do not exceed number of players
            foreach (Role role in RolesToAssign.Keys)
            {
                if (inactivePlayers.Count == 0)
                {
                    break;
                }
                for (int i = 0; i < RolesToAssign[role]; i++)
                {
                    //remove later
                    if (role == Role.Mafia && i == 0)
                    {
                        foreach (Player p in inactivePlayers)
                        {
                            if (p.Name == "Kunyi Liu")
                            {
                                p.Role   = role;
                                p.Active = true;
                                inactivePlayers.Remove(p);

                                Mafia mafia = new Mafia(p);
                                Mafias.Add(mafia);
                                PlayerMapping[p.Id] = mafia;
                                ActivePlayers.Add(mafia);
                                break;
                            }
                        }
                        continue;
                    }
                    Player playerToModify = inactivePlayers[random.Next(inactivePlayers.Count)];

                    playerToModify.Role   = role;
                    playerToModify.Active = true;
                    inactivePlayers.Remove(playerToModify);

                    if (role == Role.Mafia)
                    {
                        Mafia mafia = new Mafia(playerToModify);
                        Mafias.Add(mafia);
                        PlayerMapping[playerToModify.Id] = mafia;
                        ActivePlayers.Add(mafia);
                    }
                    else if (role == Role.Doctor)
                    {
                        Doctor doctor = new Doctor(playerToModify);
                        Doctors.Add(doctor);
                        PlayerMapping[playerToModify.Id] = doctor;
                        ActivePlayers.Add(doctor);
                    }
                }
            }

            foreach (Player player in inactivePlayers)
            {
                player.Role   = Role.Villager;
                player.Active = true;
                Villager villager = new Villager(player);
                PlayerMapping[player.Id] = villager;
                ActivePlayers.Add(villager);
            }

            ShowRolesToPlayers();
            CurrentState = GameState.Night;
        }
コード例 #14
0
 /// <summary>Invokes shoot on goal.</summary>
 public void Invoke(PlayerMapping mapping)
 {
     mapping[id].ActionShootGoal((float)power);
 }
コード例 #15
0
		/// <summary>Invokes drop ball.</summary>
		public void Invoke(PlayerMapping mapping) { mapping[id].ActionTackle(mapping[target]); }
コード例 #16
0
		/// <summary>Invokes drop ball.</summary>
		public void Invoke(PlayerMapping mapping) { mapping[id].ActionPickUpBall(); }
コード例 #17
0
 /// <summary>Invokes the shoot on target.</summary>
 public void Invoke(PlayerMapping mapping)
 {
     mapping[id].ActionShoot(target.ToVector(), (float)power);
 }