public override void Initialize(GameInfo gameInfo, GameSetting gameSetting)
        {
            base.Initialize(gameInfo, gameSetting);

            comingoutDay = new Random().Next(3) + 1;
            isCameout = false;
        }
 public virtual void Initialize(GameInfo gameInfo, GameSetting gameSetting)
 {
     GameInfoMap.Clear();
     GameSetting = gameSetting;
     Day = gameInfo.Day;
     GameInfoMap[Day] = gameInfo;
     MyRole = gameInfo.Role;
     Me = gameInfo.Agent;
     return;
 }
Exemple #3
0
        public GameData(GameSetting gameSetting)
        {
            agentStatusMap = new Dictionary<Agent, Status>();
            agentRoleMap = new Dictionary<Agent, Role>();
            TalkList = new List<Talk>();
            WhisperList = new List<Talk>();
            VoteList = new List<Vote>();
            AttackVoteList = new List<Vote>();
            SuddendeathList = new List<Agent>();

            this.gameSetting = gameSetting;
        }
        public TcpipServer(int port, int limit, GameSetting gameSetting)
        {
            this.gameSetting = gameSetting;
            this.port = port;
            this.limit = limit;
            ipAddress = IPAddress.Parse("127.0.0.1");
            nameMap = new Dictionary<Agent, string>();
            serverListenerSet = new HashSet<IServerListener>();

            connectionAgentMap = new Dictionary<TcpClient, Agent>();
            agentConnectionMap = new Dictionary<Agent, TcpClient>();
            lastTalkIdxMap = new Dictionary<Agent, int>();
            lastWhisperIdxMap = new Dictionary<Agent, int>();
        }
 public void SetGameSetting(GameSetting gameSetting)
 {
     this.gameSetting = gameSetting;
 }
Exemple #6
0
 /// <summary>
 /// Create packet with game inforamtion and game setting.
 /// </summary>
 /// <param name="request"></param>
 /// <param name="gameInfoToSend"></param>
 /// <param name="gameSetting"></param>
 public Packet(Request request, GameInfoToSend gameInfoToSend, GameSetting gameSetting)
 {
     Request     = request;
     GameInfo    = gameInfoToSend;
     GameSetting = gameSetting;
 }
 public override sealed void Initialize(GameInfo gameInfo, GameSetting gameSetting)
 {
     Role? myRole = gameInfo.Role;
     switch (myRole)
     {
         case Role.VILLAGER:
             rolePlayer = VillagerPlayer;
             break;
         case Role.SEER:
             rolePlayer = SeerPlayer;
             break;
         case Role.MEDIUM:
             rolePlayer = MediumPlayer;
             break;
         case Role.BODYGUARD:
             rolePlayer = BodyguardPlayer;
             break;
         case Role.POSSESSED:
             rolePlayer = PossessedPlayer;
             break;
         case Role.WEREWOLF:
             rolePlayer = WerewolfPlayer;
             break;
         default:
             rolePlayer = VillagerPlayer;
             break;
     }
     rolePlayer.Initialize(gameInfo, gameSetting);
 }
Exemple #8
0
 /// <summary>
 /// Create packet with game inforamtion and game setting.
 /// </summary>
 /// <param name="request"></param>
 /// <param name="gameInfoToSend"></param>
 /// <param name="gameSetting"></param>
 public Packet(Request request, GameInfoToSend gameInfoToSend, GameSetting gameSetting)
 {
     Request = request;
     GameInfo = gameInfoToSend;
     GameSetting = gameSetting;
 }
        public override void Initialize(GameInfo gameInfo, GameSetting gameSetting)
        {
            base.Initialize(gameInfo, gameSetting);

            List<Role> fakeRoles = gameSetting.RoleNumMap.Keys.ToList();
            List<Role> nonFakeRoleList = new Role[] { Role.BODYGUARD, Role.FREEMASON, Role.POSSESSED, Role.WEREWOLF }.ToList();
            fakeRoles.RemoveAll(role => nonFakeRoleList.Contains(role));
            fakeRole = fakeRoles[new Random().Next(fakeRoles.Count)];

            // 占い師,or霊能者なら1~3日目からランダムに選択してCO.村人ならCOしない.
            comingoutDay = new Random().Next(3) + 1;
            if (fakeRole == Role.VILLAGER)
            {
                comingoutDay = 1000;
            }
            isCameout = false;
        }
 /// <summary>
 /// Called when the game started.
 /// </summary>
 /// <param name="gameInfo">Information about current game status.</param>
 /// <param name="gameSetting">Game settings.</param>
 public abstract void Initialize(GameInfo gameInfo, GameSetting gameSetting);
Exemple #11
0
        public object Recieve(Packet packet)
        {
            GameInfo    gameInfo    = lastGameInfo;
            GameSetting gameSetting = packet.GameSetting;

            if (packet.GameInfo != null)
            {
                gameInfo     = packet.GameInfo.ToGameInfo();
                lastGameInfo = gameInfo;
            }

            if (packet.TalkHistory != null)
            {
                Talk lastTalk = null;
                if (gameInfo.TalkList != null && gameInfo.TalkList.Count != 0)
                {
                    lastTalk = gameInfo.TalkList[gameInfo.TalkList.Count - 1];
                }
                foreach (var talk in packet.TalkHistory)
                {
                    if (IsAfter(talk, lastTalk))
                    {
                        gameInfo.TalkList.Add(talk.ToTalk());
                    }
                }
            }

            if (packet.WhisperHistory != null)
            {
                Talk lastWhisper = null;
                if (gameInfo.WhisperList != null && gameInfo.WhisperList.Count != 0)
                {
                    lastWhisper = gameInfo.WhisperList[gameInfo.WhisperList.Count - 1];
                }
                foreach (var whisper in packet.WhisperHistory)
                {
                    if (IsAfter(whisper, lastWhisper))
                    {
                        gameInfo.WhisperList.Add(whisper.ToTalk());
                    }
                }
            }

            object returnObject = null;

            switch (packet.Request)
            {
            case Request.INITIALIZE:
                Running = true;
                player.Initialize(gameInfo, gameSetting);
                break;

            case Request.DAILY_INITIALIZE:
                player.Update(gameInfo);
                player.DayStart();
                break;

            case Request.DAILY_FINISH:
                player.Update(gameInfo);
                break;

            case Request.NAME:
                if (PlayerName == null)
                {
                    returnObject = player.Name;
                    if (returnObject == null)
                    {
                        returnObject = player.GetType().Name;
                    }
                }
                else
                {
                    returnObject = PlayerName;
                }
                break;

            case Request.ROLE:
                if (RequestRole != null)
                {
                    returnObject = RequestRole.ToString();
                }
                else
                {
                    returnObject = "none";
                }
                break;

            case Request.ATTACK:
                player.Update(gameInfo);
                returnObject = player.Attack();
                break;

            case Request.TALK:
                player.Update(gameInfo);
                returnObject = player.Talk();
                if (returnObject == null)
                {
                    returnObject = Talk.SKIP;
                }
                break;

            case Request.WHISPER:
                player.Update(gameInfo);
                returnObject = player.Whisper();
                if (returnObject == null)
                {
                    returnObject = Talk.SKIP;
                }
                break;

            case Request.DIVINE:
                player.Update(gameInfo);
                returnObject = player.Divine();
                break;

            case Request.GUARD:
                player.Update(gameInfo);
                returnObject = player.Guard();
                break;

            case Request.VOTE:
                player.Update(gameInfo);
                returnObject = player.Vote();
                break;

            case Request.FINISH:
                player.Update(gameInfo);
                Finish();
                break;

            default:
                break;
            }
            return(returnObject);
        }