Exemple #1
0
        /// <summary>
        /// 從設定檔建立遊戲
        /// </summary>
        /// <returns>遊戲清單</returns>
        public static Dictionary <GameNameType, IGame> CreateGames()
        {
            Dictionary <GameNameType, IGame> games = new Dictionary <GameNameType, IGame>();

            string[] gameNames = ConfigurationManager.AppSettings.AllKeys
                                 .Where(key => key.StartsWith("Games_"))
                                 .Select(key => ConfigurationManager.AppSettings[key])
                                 .ToArray();
            foreach (var gameName in gameNames)
            {
                try
                {
                    Assembly assembly = Assembly.Load(gameName);
                    string   fullname = string.Format("{0}.Game", gameName);
                    Type     type     = assembly.GetType(fullname);
                    if (type == null)
                    {
                        continue;
                    }

                    GameNameType    key  = new GameNameType(gameName);
                    ConstructorInfo ctor = type.GetConstructor(new[] { typeof(GameNameType) });
                    IGame           game = ( IGame )ctor.Invoke(new object[] { key });
                    games.Add(key, game);
                }
                catch (Exception e)
                {
                    string s = e.Message;
                }
            }

            return(games);
        }
Exemple #2
0
        public void TestGame_LeaveRoomSuccess()
        {
            NicknameType         nickname = new NicknameType("Caesar");
            Mock <IHanabiPlayer> player   = new Mock <IHanabiPlayer>();

            player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname);

            player.Setup(x => x.OnEnterGame(nickname));
            player.Setup(x => x.OnJoinRoom(It.IsAny <Room>()));
            int count = 0;

            player.Setup(x => x.SendCommand(It.IsAny <Command>()))
            .Callback <Command>(c =>
            {
                switch (++count)
                {
                case 1:
                    VerifyEnterGame(c, ExitGameResult.Success);
                    break;

                case 2:
                    VerifyQuitRoom(c, QuitRoomResult.Success, 0);
                    break;
                }
            });

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerEnter(game, player.Object, nickname);

            player.VerifyAll();
        }
Exemple #3
0
        public void TestGame_JoinRoomSuccess()
        {
            NicknameType         nickname1 = new NicknameType("Caesar");
            NicknameType         nickname2 = new NicknameType("Jenny");
            Mock <IHanabiPlayer> player1   = new Mock <IHanabiPlayer>();
            Mock <IHanabiPlayer> player2   = new Mock <IHanabiPlayer>();

            player1.SetupGet <NicknameType>(x => x.nickname).Returns(nickname1);
            player2.SetupGet <NicknameType>(x => x.nickname).Returns(nickname2);

            RoomIndexType index = new RoomIndexType(0);

            player1.Setup(x => x.OnEnterGame(nickname1));
            player1.Setup(x => x.OnJoinRoom(It.Is <Room>(r => r.RoomIndex == index)));
            int count1 = 0;

            player1.Setup(x => x.SendCommand(It.IsAny <Command>()))
            .Callback <Command>(c =>
            {
                switch (++count1)
                {
                case 1:
                    VerifyEnterGame(c, ExitGameResult.Success);
                    break;
                }
            });

            player2.Setup(x => x.OnEnterGame(nickname2));
            player2.Setup(x => x.OnJoinRoom(It.Is <Room>(r => r.RoomIndex == index)));
            int count2 = 0;

            player2.Setup(x => x.SendCommand(It.IsAny <Command>()))
            .Callback <Command>(c =>
            {
                switch (++count2)
                {
                case 1:
                    VerifyEnterGame(c, ExitGameResult.Success);
                    break;

                case 2:
                    VerifyJoinRoom(c, JoinRoomResult.Success, 2);
                    break;
                }
            });

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerEnter(game, player1.Object, nickname1);

            PlayerEnter(game, player2.Object, nickname2);
            PlayerJoinRoom(game, player2.Object, index);

            player1.VerifyAll();
            player2.VerifyAll();
        }
Exemple #4
0
 public Game(GameNameType gameName)
 {
     this.GameName = gameName;
     this.Players  = new Dictionary <NicknameType, IHanabiPlayer>();
     Rooms         = new Dictionary <RoomIndexType, Room>();
     for (int count = 0; count < 10; ++count)
     {
         Room room = new Room(count);
         Rooms.Add(room.RoomIndex, room);
     }
 }
Exemple #5
0
        public void TestGame_ExitGameFailed()
        {
            NicknameType         nickname = new NicknameType("Caesar");
            Mock <IHanabiPlayer> player   = new Mock <IHanabiPlayer>();

            player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname);
            player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyExitGame(c, ExitGameResult.Fail))));

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerExit(game, player.Object, nickname);

            player.VerifyAll();
        }
Exemple #6
0
        public void TestGame_GetRoomListEmptyList()
        {
            NicknameType         nickname = new NicknameType("Caesar");
            Mock <IHanabiPlayer> player   = new Mock <IHanabiPlayer>();

            player.SetupGet <NicknameType>(x => x.nickname).Returns(nickname);
            player.Setup(x => x.OnEnterGame(nickname));
            player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Success))));
            player.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyGameList(c, 0))));

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerEnter(game, player.Object, nickname);
            PlayerGetRoomList(game, player.Object);

            player.VerifyAll();
        }
Exemple #7
0
        public void TestGame_EnterGameFail()
        {
            NicknameType         nickname = new NicknameType("Caesar");
            Mock <IHanabiPlayer> player1  = new Mock <IHanabiPlayer>();

            player1.SetupGet <NicknameType>(x => x.nickname).Returns(nickname);
            player1.Setup(x => x.OnEnterGame(nickname));
            player1.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Success))));

            Mock <IHanabiPlayer> player2 = new Mock <IHanabiPlayer>();

            player2.Setup(x => x.SendCommand(It.Is <Command>(c => VerifyEnterGame(c, ExitGameResult.Fail))));

            GameNameType gameName = new GameNameType("Hanabi");
            Game         game     = new Game(gameName);

            PlayerEnter(game, player1.Object, nickname);
            PlayerEnter(game, player2.Object, nickname);

            player1.VerifyAll();
            player2.VerifyAll();
        }