示例#1
0
        public void doVote(Vote vote, int maxThreshold, bool lSort, bool sortBy)
        {
            if (vote != null && !hasVotes)
            {
                hasVotes = true;
            }

            Player playerTarget = null;

            try
            {
                Player playerVoting         = null;
                Player playerVotingFromVote = vote.PlayerVoting;
                foreach (Player player in playersInVoteCount)
                {
                    if (player.Name.Equals(playerVotingFromVote.Name))
                    {
                        playerVoting = player;
                        break;
                    }
                }
                if (playerVoting == null)
                {
                    Debug.Log("Couldn't find player for post number: " + vote.PostNumber);
                    return;
                }
                //Debug.Log ("VOTE NUMBER: " + vote.PostNumber + " PLAYER VOTING NAME:|" + playerVoting.Name + "|WHERE VOTE IS AT:|" + ((playerVoting.PlayerCurrentlyVoting == null) ? "NULL" : playerVoting.PlayerCurrentlyVoting.Name) + "|");
                Player playerTargetFromVote = vote.PlayerVoted;
                if (playerTargetFromVote != null)
                {
                    foreach (Player player in playersInVoteCount)
                    {
                        if (player.Name.Equals(playerTargetFromVote.Name))
                        {
                            playerTarget = player;
                            break;
                        }
                    }
                }

                Wagon currentWagon = null;
                Wagon newWagon     = null;


                //Player is already voting there.
                if ((playerVoting.PlayerCurrentlyVoting != null) && ((playerTarget != null) && (playerVoting.PlayerCurrentlyVoting.Name.Equals(playerTarget.Name))))
                {
                    //Debug.Log("ALREADY VOTING THERE.");


                    return;
                }
                else
                {
                    //Debug.Log("HI");
                    //Unvote required
                    if ((playerTarget == null) || (playerTarget.Name.ContainsIgnoreCase("Unvote")))
                    {
                        currentWagon = getWagonByTarget(playerVoting.PlayerCurrentlyVoting);
                        if (currentWagon != null)
                        {
                            //currentWagon.removeVote (playerVoting);
                            currentWagon.removeVote(vote);

                            //addPlayerNotVoting (playerVoting);
                            playerVoting.PlayerCurrentlyVoting = null;
                            playerVoting.PostNumberOfVote      = vote.PostNumber;
                            return;
                        }
                        playerVoting.PlayerCurrentlyVoting = null;
                        playerVoting.PostNumberOfVote      = vote.PostNumber;
                        return;
                    }

                    //This is a swap of vote.
                    if (playerVoting.PlayerCurrentlyVoting != null)
                    {
                        //Debug.Log ("PLAYER VOTING NAME:|" + playerVoting.Name + "| VOTE PLAYER VOTING NAME:|" + vote.PlayerVoting.Name + "|");
                        //Debug.Log("SWAP OF VOTE: ");
                        currentWagon = getWagonByTarget(playerVoting.PlayerCurrentlyVoting);
                        if (currentWagon != null)
                        {
                            //currentWagon.removeVote (playerVoting);
                            currentWagon.removeVote(vote);
                            playerVoting.PlayerCurrentlyVoting = null;
                            playerVoting.PostNumberOfVote      = vote.PostNumber;
                            //addPlayerNotVoting (playerVoting);
                        }
                    }

                    //Debug.Log("ADD THAT VOTE");
                    //Add that vote
                    newWagon = getWagonByTarget(playerTarget);
                    if (newWagon == null)
                    {
                        if (playerTarget != null && playerTarget.IsAlive)
                        {
                            Wagon createdWagon = new Wagon(maxThreshold, lSort, sortBy);
                            createdWagon.addVote(vote);
                            playerVoting.PlayerCurrentlyVoting = vote.PlayerVoted;
                            playerVoting.PostNumberOfVote      = vote.PostNumber;
                            wagons.Add(createdWagon);
                        }
                        else if (playerTarget == null)
                        {
                            System.Console.WriteLine("Wagon creation error. Check your hammer votes for vote:[color][u][b] is the proper order. " + vote.PostNumber);
                            throw new Exception("PLAYER TARGET WAS NULL!!!!!!! " + vote.buildDebugOutput());
                        }
                    }
                    else if (playerTarget.IsAlive)
                    {
                        //newWagon.addVote (playerVoting);
                        newWagon.addVote(vote);
                        playerVoting.PlayerCurrentlyVoting = vote.PlayerVoted;
                        playerVoting.PostNumberOfVote      = vote.PostNumber;

                        //removePlayerNotVoting (playerVoting);
                        isHammered = newWagon.IsHammered;
                        if (isHammered && playerTarget != Wagon.NO_LYNCH_PLAYER)
                        {
                            days[vote.DayNumber - 1].killLynchedPlayer(playerTarget);
                            if (playerTarget != null)
                            {
                                foreach (Player aPlayer in playersInVoteCount)
                                {
                                    if (playerTarget.Name.Equals(aPlayer.Name))
                                    {
                                        aPlayer.IsDead      = true;
                                        playerTarget.IsDead = true;
                                    }
                                }
                            }
                            System.Console.WriteLine("Player " + playerTarget.Name + " was hammered in post " + vote.PostNumber + ".");
                        }
                    }
                }
            }
            catch (NullReferenceException e)
            {
                System.Console.WriteLine(vote.buildDebugOutput() + "Player Target:|" + (playerTarget != null ? playerTarget.Name : "<null>") + "|");
                System.Console.WriteLine(e.ToString());
                System.Console.WriteLine("A player was missing from post " + vote.PostNumber + ". Please check your replacements.  Debug String: " + vote.buildDebugOutput());
            }
            catch (Exception e)
            {
                System.Console.WriteLine(e.ToString());
                System.Console.WriteLine("An unknown error occurred in post number" + vote.PostNumber + ". Please check formatting of file.");
            }
        }