コード例 #1
0
        void Divine()
        {
            foreach (var agent in AliveAgentList.Where(a => RoleOf(a) == Role.SEER))
            {
                var target     = gameServer.RequestDivineTarget(agent);
                var targetRole = RoleOf(target);
                if (target == null || StatusOf(target) == Status.DEAD || targetRole == Role.UNC)
                {
                    // Do nothing.
                }
                else
                {
                    var divine = new Judge(Day, agent, target, targetRole.GetSpecies());
                    gameData.Divine = divine;

                    if (targetRole == Role.FOX)
                    {
                        gameData.AddLastDeadAgent(target);
                        gameData.CursedFox = target;
                    }

                    if (GameLogger != null)
                    {
                        GameLogger.Log($"{Day},divine,{agent.AgentIdx},{target.AgentIdx},{divine.Result}");
                    }
                }
            }
        }
コード例 #2
0
        void Guard()
        {
            foreach (var agent in AliveAgentList.Where(a => RoleOf(a) == Role.BODYGUARD))
            {
                if (agent == gameData.Executed)
                {
                    continue;
                }
                var target = gameServer.RequestGuardTarget(agent);
                if (target == null || agent == target)
                {
                    // Do nothing.
                }
                else
                {
                    var guard = new Guard(Day, agent, target);
                    gameData.Guard = guard;

                    if (GameLogger != null)
                    {
                        GameLogger.Log($"{Day},guard,{agent.AgentIdx},{target.AgentIdx},{RoleOf(target)}");
                    }
                }
            }
        }
コード例 #3
0
 void Vote()
 {
     gameData.VoteList.Clear();
     foreach (var agent in AliveAgentList)
     {
         var target = gameServer.RequestVote(agent);
         if (target == null || StatusOf(target) == Status.DEAD || agent == target)
         {
             target = AliveAgentList.Where(a => a != agent).Shuffle().First();
         }
         var vote = new Vote(Day, agent, target);
         gameData.VoteList.Add(vote);
         if (GameLogger != null)
         {
             GameLogger.Log($"{Day},vote,{agent.AgentIdx},{target.AgentIdx}");
         }
     }
     gameData.LatestVoteList = new List <Vote>(gameData.VoteList);
 }