예제 #1
0
        public void VoteResultTest()
        {
            DeckSettings deckSettings   = new DeckSettings();
            var          contractMapper = new ContractMapper();
            ILobby       lobby          = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var secondPlayer   = createdPlayers[1];
            var thirdPlayer    = createdPlayers[2];
            var fourthPlayer   = createdPlayers[3];
            var mainPlayer     = createdPlayers.SingleOrDefault(player => player.Token.Equals(lobby.MainPlayer));

            lobby.SetCard(mainPlayer.Cards[0], "ok", mainPlayer.Token);
            foreach (var createdPlayer in createdPlayers)
            {
                contractMapper.MapToStageData(createdPlayer.Token, lobby);
            }
            lobby.SetCard(secondPlayer.Cards[0], secondPlayer.Token);
            lobby.SetCard(thirdPlayer.Cards[0], thirdPlayer.Token);
            lobby.SetCard(fourthPlayer.Cards[0], fourthPlayer.Token);
            lobby.SetCard(lobby.Players[0].Card, secondPlayer.Token);
            lobby.SetCard(lobby.Players[1].Card, thirdPlayer.Token);
            lobby.SetCard(lobby.Players[2].Card, fourthPlayer.Token);
            Assert.IsTrue(lobby.VoteResults.Where(result => result.Count.Equals(1)).Count().Equals(3));
        }
예제 #2
0
        public void AddPlayerToLobbyFromManager()
        {
            string        nick         = "default";
            DeckSettings  deckSettings = new DeckSettings();
            ILobbyManager lobbyManager = new LobbyManager();
            var           lobbyId      = Guid.Empty;

            lobbyId = lobbyManager.AddPlayer("0", GameType.Usual, 4, nick);
            for (int i = 1; i < 4; i++)
            {
                var returnedId = lobbyManager.AddPlayer(i.ToString(), GameType.Usual, 4, nick);
                Assert.IsTrue(returnedId.Equals(lobbyId));
            }
            var newLobbyId = lobbyManager.AddPlayer("5", GameType.Usual, 4, nick);

            Assert.IsFalse(newLobbyId.Equals(lobbyId));
            var lobbyIdForCustomGame = lobbyManager.AddPlayer("6", GameType.Custom, 4, nick);

            Assert.IsFalse(lobbyId.Equals(lobbyIdForCustomGame) && lobbyIdForCustomGame.Equals(newLobbyId));
            var lobbyIdWithNewSizeAndGameTypeIsUsual = lobbyManager.AddPlayer("7", GameType.Usual, 5, nick);

            Assert.IsFalse(lobbyIdWithNewSizeAndGameTypeIsUsual.Equals(lobbyIdForCustomGame) &&
                           lobbyIdWithNewSizeAndGameTypeIsUsual.Equals(newLobbyId) &&
                           lobbyIdWithNewSizeAndGameTypeIsUsual.Equals(lobbyId));
        }
예제 #3
0
        public void CalculatePointsWhenAllPlayersChooseMainCard()
        {
            DeckSettings deckSettings   = new DeckSettings();
            var          contractMapper = new ContractMapper();
            ILobby       lobby          = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var secondPlayer   = createdPlayers[1];
            var thirdPlayer    = createdPlayers[2];
            var fourthPlayer   = createdPlayers[3];
            var mainPlayer     = createdPlayers.SingleOrDefault(player => player.Token.Equals(lobby.MainPlayer));

            lobby.SetCard(mainPlayer.Cards[0], "ok", mainPlayer.Token);
            foreach (var createdPlayer in createdPlayers)
            {
                contractMapper.MapToStageData(createdPlayer.Token, lobby);
            }
            lobby.SetCard(secondPlayer.Cards[0], secondPlayer.Token);
            lobby.SetCard(thirdPlayer.Cards[0], thirdPlayer.Token);
            lobby.SetCard(fourthPlayer.Cards[0], fourthPlayer.Token);
            lobby.SetCard(lobby.Players[0].Card, secondPlayer.Token);
            lobby.SetCard(lobby.Players[0].Card, thirdPlayer.Token);
            lobby.SetCard(lobby.Players[0].Card, fourthPlayer.Token);
            Thread.Sleep(1000);
            Assert.IsTrue(lobby.Scores.All(score => score.Points.Equals(0)));
        }
예제 #4
0
        public void SetTextAndCardButPlayerisReady()
        {
            var          text         = "this is fail";
            DeckSettings deckSettings = new DeckSettings();
            ILobby       lobby        = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var mainPlayer     = createdPlayers.SingleOrDefault(player => player.Token.Equals(lobby.MainPlayer));
            var usualPlayer    = createdPlayers[1];

            mainPlayer.Ready = true;
            try
            {
                lobby.SetCard(mainPlayer.Cards[0], text, mainPlayer.Token);
            }
            catch (Exception e)
            {
                Assert.IsNotNull(e);
            }

            Assert.IsTrue(!lobby.Text.Equals(text));
        }
예제 #5
0
 public override void OnMenuItemClicked(ContextMenuItem menuItem)
 {
     if (menuItem.id == 4)
     {
         DeckEditor cloned = Instantiate(this);
         copyProperties(cloned);
         cloned.transform.position = new Vector3(0, 0, 0f);
         clonedDecks.Add(cloned);
     }
     if (menuItem.id == 1)
     {
         //Zone settings
         DeckPermissionSettings.Show(this);
     }
     else if (menuItem.id == 2)
     {
         //Card settings
         DeckSettings.Show(this);
     }
     else
     {
         //Remove
         base.OnMenuItemClicked(menuItem);
     };
 }
예제 #6
0
        public void SetCardWhenArgumentsAreOk()
        {
            DeckSettings deckSettings   = new DeckSettings();
            var          contractMapper = new ContractMapper();
            ILobby       lobby          = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var secondPlayer   = createdPlayers[1];
            var mainPlayer     = createdPlayers.SingleOrDefault(player => player.Token.Equals(lobby.MainPlayer));

            lobby.SetCard(mainPlayer.Cards[0], "ok", mainPlayer.Token);
            Assert.IsTrue(lobby.Text.Equals("ok") && mainPlayer.Ready.Equals(true));
            foreach (var createdPlayer in createdPlayers)
            {
                contractMapper.MapToStageData(createdPlayer.Token, lobby);
            }
            lobby.SetCard(secondPlayer.Cards[0], secondPlayer.Token);
            Assert.IsTrue(lobby.Stage.Equals(2));
            Assert.IsTrue(secondPlayer.Ready &&
                          !secondPlayer.Card.Equals(0) &&
                          !secondPlayer.Cards.Contains(secondPlayer.Card) &&
                          secondPlayer.Cards.Count.Equals(5));
        }
예제 #7
0
        public void AllPlayersCanSetCardAndLobbyStafeIs3()
        {
            DeckSettings deckSettings   = new DeckSettings();
            var          contractMapper = new ContractMapper();
            ILobby       lobby          = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var secondPlayer   = createdPlayers[1];
            var thirdPlayer    = createdPlayers[2];
            var fourthPlayer   = createdPlayers[3];
            var mainPlayer     = createdPlayers.SingleOrDefault(player => player.Token.Equals(lobby.MainPlayer));

            lobby.SetCard(mainPlayer.Cards[0], "ok", mainPlayer.Token);
            foreach (var createdPlayer in createdPlayers)
            {
                contractMapper.MapToStageData(createdPlayer.Token, lobby);
            }
            lobby.SetCard(secondPlayer.Cards[0], secondPlayer.Token);
            lobby.SetCard(thirdPlayer.Cards[0], thirdPlayer.Token);
            lobby.SetCard(fourthPlayer.Cards[0], fourthPlayer.Token);
            Assert.IsTrue(lobby.Stage.Equals(3));
        }
예제 #8
0
        public Deck Create(DeckSettings settings)
        {
            IEnumerable <Card> cards = _cardCollectionProviders
                                       .SelectMany(ccp => ccp.GetCards())
                                       .SelectMany(c => c.Value);

            return(new Deck(cards));
        }
예제 #9
0
        public DeckViewModel(Models.Deck deckModel)
        {
            _deckModel = deckModel;

            // Load available input languages
            foreach (var lang in InputLanguageManager.Current.AvailableInputLanguages ?? new List <object>())
            {
                Languages.Add(CultureInfo.CreateSpecificCulture(lang.ToString()));
            }

            // Load system default language
            var defaultLang = InputLanguageManager.Current.CurrentInputLanguage;

            // TODO: Remove hard-coded initialization
            // Initialize scripts
            var defaultScript = new NoneScript("None");

            Scripts.Add(defaultScript);
            Scripts.Add(new MirrorScript("Clone"));
            Scripts.Add(new FuriganaScript(MyQuery, "Furigana"));
            Scripts.Add(new DictionaryFormScript(MyQuery, "Dictionary Form"));
            Scripts.Add(new NotesScript(MyQuery, "Notes"));


            // Initialize deck settings
            DeckSettings = new DeckSettings(defaultLang, defaultScript);

            foreach (var noteModel in deckModel.note_models)
            {
                DeckSettings.AddFieldSettings(noteModel);
            }

            // Create dictionary of noteModels
            foreach (var noteModel in deckModel.note_models)
            {
                _noteModels.Add(noteModel.crowdanki_uuid, noteModel);
                NoteModels.Add(noteModel);
            }

            SelectedNoteModel = NoteModels.First();

            foreach (var note in deckModel.notes)
            {
                // Add notes where note model exists
                if (_noteModels.TryGetValue(note.note_model_uuid, out var noteModel))
                {
                    NoteViewModels.Add(new NoteViewModel(note, noteModel, this));
                }
                else
                {
                    // TODO Error handling
                }
            }

            Sort();
        }
예제 #10
0
        public void AddPlayerToLobby()
        {
            DeckSettings deckSettings = new DeckSettings();
            ILobby       lobby        = new Lobby(4, GameType.Usual);

            for (int i = 0; i < lobby.Size; i++)
            {
                Assert.IsTrue(lobby.HasPlaces);
                lobby.Add(i.ToString(), nick);
            }
            Assert.IsFalse(lobby.HasPlaces);
            lobby.Add("5", nick);
        }
예제 #11
0
        public void PlayersGiveCardsAfterJoiningToLobby()
        {
            DeckSettings deckSettings = new DeckSettings();
            ILobby       lobby        = new Lobby(4, GameType.Usual);

            for (int i = 0; i < lobby.Size; i++)
            {
                lobby.Add(i.ToString(), nick);
            }
            foreach (var lobbyPlayer in lobby.Players)
            {
                Assert.IsTrue(lobbyPlayer.Cards.Count.Equals(6));
            }
        }
예제 #12
0
        public void GetCardTest()
        {
            int          lobbySize    = 4;
            DeckSettings deckSettings = new DeckSettings();
            Deck         deck         = new Deck(lobbySize, DeckSettings.CountOfCards(lobbySize));
            IList <int>  swapDeck     = new List <int>();

            while (!deck.CardDeck.Count.Equals(0))
            {
                int card = deck.GetCard();
                Assert.IsTrue(!swapDeck.Contains(card));
                swapDeck.Add(card);
            }
            Assert.IsTrue(swapDeck.Count.Equals(DeckSettings.CountOfCards(lobbySize)));
        }
예제 #13
0
    void LoadDeck(DeckSettings settings)
    {
        var newCards = new List <Card>();

        // clone base card values for each suit
        for (int suitId = 0; suitId < settings.suitCount; ++suitId)
        {
            foreach (var baseValue in settings.baseValues)
            {
                newCards.Add(new Card(baseValue, suitId));
            }
        }

        LoadDeck(newCards);
    }
예제 #14
0
        public void SetTextAndCardFromMain()
        {
            var          text         = "good";
            DeckSettings deckSettings = new DeckSettings();
            ILobby       lobby        = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var mainPlayer     = createdPlayers.SingleOrDefault(player => player.Token.Equals(lobby.MainPlayer));
            var usualPlayer    = createdPlayers[1];

            lobby.SetCard(mainPlayer.Cards[0], text, mainPlayer.Token);
            Assert.IsTrue(lobby.Text.Equals(text) && mainPlayer.Cards.Count.Equals(5) && mainPlayer.Ready);
        }
예제 #15
0
        public void AddPlayerWithAnotherNickName()
        {
            //arrange
            string        nick         = "default";
            DeckSettings  deckSettings = new DeckSettings();
            ILobbyManager lobbyManager = new LobbyManager();
            var           lobbyToken   = Guid.Empty;
            var           players      = new[] { new Player("1", nick),
                                                 new Player("2", nick),
                                                 new Player("3", nick),
                                                 new Player("4", nick), };

            foreach (var player in players)
            {
                lobbyToken = lobbyManager.AddPlayer(player.Token, GameType.Usual, 4, player.NickName);
            }
            //Act
            var tokenFromManager = lobbyManager.AddPlayer("5", GameType.Usual, 4, nick);

            Assert.IsFalse(tokenFromManager.Equals(lobbyToken));
        }
예제 #16
0
        public void SetTextFromUsualPlayer()
        {
            DeckSettings deckSettings = new DeckSettings();
            ILobby       lobby        = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var mainPlayer     = createdPlayers.SingleOrDefault(player => player.Token.Equals(lobby.MainPlayer));
            var usualPlayer    = createdPlayers[1];

            try
            {
                lobby.SetCard(usualPlayer.Cards[0], "this is fail", usualPlayer.Token);
            }
            catch (Exception)
            {
            }
            Assert.IsTrue(lobby.Text.Equals(String.Empty));
        }
예제 #17
0
        public void SetCardFromUsualPlayerWhoIsReady()
        {
            DeckSettings deckSettings = new DeckSettings();
            ILobby       lobby        = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var firstPlayer    = createdPlayers[1];

            firstPlayer.Ready = true;
            try
            {
                lobby.SetCard(firstPlayer.Cards[0], firstPlayer.Token);
            }
            catch (Exception)
            {
            }
            Assert.IsTrue(firstPlayer.Card.Equals(0) && firstPlayer.Cards.Count.Equals(6));
        }
예제 #18
0
        public void SetCardWithoutTextByMainPlayer()
        {
            var          text         = "fail";
            DeckSettings deckSettings = new DeckSettings();
            ILobby       lobby        = new Lobby(4, GameType.Usual);

            string[] tokens = { "1", "2", "3", "4" };
            foreach (var token in tokens)
            {
                lobby.Add(token, token);
            }
            var createdPlayers = lobby.Players;
            var mainPlayer     = createdPlayers.SingleOrDefault(player => player.Token.Equals(lobby.MainPlayer));
            var usualPlayer    = createdPlayers[1];

            try
            {
                lobby.SetCard(usualPlayer.Cards[0], mainPlayer.Token);
            }
            catch (Exception)
            {
            }
            Assert.IsTrue(!lobby.Text.Equals(text) && usualPlayer.Cards.Count.Equals(6));
        }
예제 #19
0
 public Deck Create(DeckSettings settings)
 {
     return(returnValue);
 }
예제 #20
0
        public void CreatingCardDistributor()
        {
            DeckSettings deckSettings = new DeckSettings();

            Assert.IsTrue(DeckSettings.SizeToCount.Count.Equals(4));
        }
예제 #21
0
 public Deck(DeckSettings settings)
 {
     LoadDeck(settings);
 }