public IEnumerator initReplaceRefuseTest() { THHGame game = TestGameflow.initStandardGame(); _ = game.run(); yield return(new WaitForSeconds(.1f)); game.players[0].cmdInitReplace(game); game.players[1].cmdInitReplace(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); yield return(new WaitForSeconds(.1f)); game.players[0].cmdInitReplace(game); game.players[1].cmdInitReplace(game); var args = game.triggers.getRecordedEvents().Where(e => e is THHPlayer.InitReplaceEventArg); Assert.AreEqual(args.Count(), 2); Assert.AreEqual(((THHPlayer.InitReplaceEventArg)args.ElementAt(0)).player, game.players[0]); Assert.AreEqual(((THHPlayer.InitReplaceEventArg)args.ElementAt(1)).player, game.players[1]); game.Dispose(); }
public void PatchouliMegaReaverTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Patchouli(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new MegaReaver(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); int preHand = game.sortedPlayers[1].hand.count; game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].hand[0], 0); if (preHand <= 3) { Assert.AreEqual(0, game.sortedPlayers[1].hand.count); } else { Assert.AreEqual(3, preHand - game.sortedPlayers[1].hand.count); } }
public IEnumerator useTest() { THHGame game = TestGameflow.initStandardGame(); _ = game.run(); yield return(new WaitForSeconds(.1f)); game.players[0].cmdInitReplace(game); game.players[1].cmdInitReplace(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); yield return(new WaitForSeconds(.1f)); THHPlayer.UseEventArg use = game.triggers.getRecordedEvents().FirstOrDefault(e => e is THHPlayer.UseEventArg) as THHPlayer.UseEventArg; Assert.NotNull(use); Assert.AreEqual(game.sortedPlayers[0], use.player); Assert.AreEqual(game.sortedPlayers[0].field[0], use.card); Assert.AreEqual(TestServant.ID, use.card.define.id); Assert.AreEqual(0, use.position); Assert.AreEqual(0, use.targets.Length); THHPlayer.SetGemEventArg setGem = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHPlayer.SetGemEventArg) as THHPlayer.SetGemEventArg; Assert.AreEqual(0, setGem.value); THHPlayer.MoveEventArg summon = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHPlayer.MoveEventArg) as THHPlayer.MoveEventArg; Assert.NotNull(summon); Assert.AreEqual(game.sortedPlayers[0], summon.player); Assert.AreEqual(TestServant.ID, summon.card.define.id); Assert.AreEqual(0, summon.position); game.Dispose(); }
public void PatchouliSylphyHornTest() { TouhouCardEngine.CardDefine[][] decks = new TouhouCardEngine.CardDefine[][] { Enumerable.Repeat(new RashFairy(), 30).ToArray(), Enumerable.Repeat(new AgniShine(), 30).ToArray() }; THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Patchouli(), 2).ToArray(), decks, new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); }
public void PatchouliBestMagicTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Patchouli(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new BestMagic(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].hand[0], 0); int preGem = game.sortedPlayers[1].gem; game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].hand[0], 0); Assert.AreEqual(1, preGem - game.sortedPlayers[1].gem); }
public void PatchouliSkillTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Patchouli(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new RashFairy(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); int preHand = game.sortedPlayers[1].hand.count; int preDeck = game.sortedPlayers[1].deck.count; int preLife = game.sortedPlayers[1].master.getCurrentLife(); game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].skill, 0, game.sortedPlayers[1].master); Assert.AreEqual(1, game.sortedPlayers[1].hand.count - preHand); Assert.AreEqual(-1, game.sortedPlayers[1].deck.count - preDeck); Assert.AreEqual(-2, game.sortedPlayers[1].master.getCurrentLife() - preLife); }
public IEnumerator burnTest() { THHGame game = TestGameflow.initStandardGame(); _ = game.run(); yield return(new WaitForSeconds(.1f)); game.players[0].cmdInitReplace(game); game.players[1].cmdInitReplace(game); yield return(new WaitForSeconds(.1f)); for (int i = 0; i < 7; i++) { game.sortedPlayers[0].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); } THHPlayer.BurnEventArg burn = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHPlayer.BurnEventArg) as THHPlayer.BurnEventArg; Assert.NotNull(burn); Assert.AreEqual(game.sortedPlayers[0], burn.player); Assert.AreEqual(game.sortedPlayers[0].grave[0], burn.card); game.Dispose(); }
public void missingSpecterTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Reimu(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new MissingSpecter(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].hand[0], 0); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdAttack(game, game.sortedPlayers[0].field[0], game.sortedPlayers[1].field[0]); Assert.AreEqual(1, game.sortedPlayers[0].field.count); Assert.AreEqual(1, game.sortedPlayers[1].field.count); }
public void PatchouliAgniShineTest() { TouhouCardEngine.CardDefine[][] decks = new TouhouCardEngine.CardDefine[][] { Enumerable.Repeat(new RashFairy(), 30).ToArray(), Enumerable.Repeat(new AgniShine(), 30).ToArray() }; THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Patchouli(), 2).ToArray(), decks, new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].hand[0], 0); THHCard.DamageEventArg damage = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHCard.DamageEventArg) as THHCard.DamageEventArg; Assert.AreEqual(0, game.sortedPlayers[0].field.count); Assert.AreEqual(4, damage.value); }
public IEnumerator fatigueTest() { THHGame game = TestGameflow.initStandardGame(deckCount: 10); _ = game.run(); yield return(new WaitForSeconds(.1f)); game.players[0].cmdInitReplace(game); game.players[1].cmdInitReplace(game); yield return(new WaitForSeconds(.1f)); for (int i = 0; i < 7; i++) { game.sortedPlayers[0].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); } THHPlayer.FatigueEventArg fatigue = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHPlayer.FatigueEventArg) as THHPlayer.FatigueEventArg; Assert.NotNull(fatigue); Assert.AreEqual(game.sortedPlayers[0], fatigue.player); THHCard.DamageEventArg damage = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHCard.DamageEventArg) as THHCard.DamageEventArg; Assert.NotNull(damage); Assert.AreEqual(game.sortedPlayers[0].master, damage.cards[0]); Assert.AreEqual(1, damage.value); game.Dispose(); }
public void sanaeSkillTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Sanae(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new RashFairy(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); game.sortedPlayers[0].cmdAttack(game, game.sortedPlayers[0].field[0], game.sortedPlayers[1].master); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].skill, 0, game.sortedPlayers[1].master); THHCard.HealEventArg heal = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHCard.HealEventArg) as THHCard.HealEventArg; Assert.AreEqual(1, heal.cards.Length); Assert.AreEqual(2, heal.value); Assert.AreEqual(1, heal.infoDic[game.sortedPlayers[1].master].healedValue); }
public IEnumerator winTest() { THHGame game = TestGameflow.initStandardGame(); _ = game.run(); yield return(new WaitForSeconds(.1f)); game.players[0].cmdInitReplace(game); game.players[1].cmdInitReplace(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); yield return(new WaitForSeconds(.1f)); for (int i = 0; i < 15; i++) { game.sortedPlayers[0].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdAttack(game, game.sortedPlayers[0].field[0], game.sortedPlayers[1].master); yield return(new WaitForSeconds(.1f)); } THHCard.AttackEventArg attack = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHCard.AttackEventArg) as THHCard.AttackEventArg; Assert.NotNull(attack); THHGame.GameEndEventArg gameEnd = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHGame.GameEndEventArg) as THHGame.GameEndEventArg; Assert.AreEqual(game.sortedPlayers[0], gameEnd.winners[0]); game.Dispose(); }
public IEnumerator rifleHunterTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Reimu(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new RifleHunter(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0, game.sortedPlayers[1].master); yield return(new WaitForSeconds(.1f)); Assert.AreEqual(28, game.sortedPlayers[1].master.getCurrentLife()); }
public IEnumerator humanVillageGuardTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Reimu(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new HumanVillageGuard(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); yield return(new WaitForSeconds(.1f)); Assert.True(game.sortedPlayers[0].field[0].isTaunt()); }
public IEnumerator remoteGameflowTest() { THHGame g1 = TestGameflow.initStandardGame(name: "客户端0", playersId: new int[] { 0, 1 }, option: new GameOption() { sortedPlayers = new int[] { 0, 1 } }); HostManager host = new GameObject(nameof(HostManager)).AddComponent <HostManager>(); host.logger = g1.logger; host.start(); ClientManager c1 = new GameObject(nameof(ClientManager)).AddComponent <ClientManager>(); c1.logger = g1.logger; c1.start(); Task task = c1.join(Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork)?.ToString(), host.port); (g1.answers as AnswerManager).client = c1; THHGame g2 = TestGameflow.initStandardGame(name: "客户端1", playersId: new int[] { 0, 1 }, option: new GameOption() { sortedPlayers = new int[] { 0, 1 } }); ClientManager c2 = new GameObject(nameof(ClientManager)).AddComponent <ClientManager>(); c2.logger = g2.logger; c2.start(); task = c2.join(Dns.GetHostEntry(Dns.GetHostName()).AddressList.FirstOrDefault(ip => ip.AddressFamily == AddressFamily.InterNetwork)?.ToString(), host.port); (g2.answers as AnswerManager).client = c2; yield return(new WaitUntil(() => task.IsCompleted)); _ = g1.run(); _ = g2.run(); yield return(new WaitForSeconds(.5f)); g1.players[0].cmdInitReplace(g1, g1.players[0].init[0, 1]); yield return(new WaitForSeconds(.5f)); g2.players[1].cmdInitReplace(g2); yield return(new WaitForSeconds(.5f)); g1.players[0].cmdUse(g1, g1.players[0].hand[0], 0); yield return(new WaitForSeconds(.5f)); g1.players[0].cmdTurnEnd(g1); yield return(new WaitForSeconds(.5f)); g2.players[1].cmdTurnEnd(g2); yield return(new WaitForSeconds(.5f)); g1.players[0].cmdAttack(g1, g1.players[0].field[0], g1.players[1].master); yield return(new WaitForSeconds(.5f)); g1.Dispose(); g2.Dispose(); }
public IEnumerator closeTest() { THHGame game = TestGameflow.initStandardGame(option: new GameOption() { timeout = 5 }); Task task = game.run(); game.close(); yield return(new WaitForSeconds(5.5f)); Assert.True(task.IsCanceled); }
public IEnumerator closeTest() { THHGame game = TestGameflow.initStandardGame(option: new GameOption() { timeoutForInitReplace = 5 }); Task task = game.run(); game.close(); yield return(new WaitForSeconds(5.5f)); Assert.False(game.isRunning); }
public IEnumerator surrenderTest() { THHGame game = TestGameflow.initStandardGame(); game.run(); //yield return new WaitUntil(() => //{ // return game.answers.getLastRequest(game.players[0].id) is InitReplaceRequest; //}); yield return(game.players[0].cmdSurrender(game).wait()); THHGame.GameEndEventArg gameEnd = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHGame.GameEndEventArg) as THHGame.GameEndEventArg; Assert.AreEqual(game.players[1], gameEnd.winners[0]); game.Dispose(); yield break; }
public void rashFairyTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Reimu(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new RashFairy(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); Assert.True(game.sortedPlayers[0].field[0].isCharge()); Assert.True(game.sortedPlayers[0].field[0].isReady()); }
public IEnumerator turnEndTest() { THHGame game = TestGameflow.initStandardGame(); game.run(); game.players[0].cmdInitReplace(game); game.players[1].cmdInitReplace(game); game.sortedPlayers[0].cmdTurnEnd(game); THHGame.TurnEndEventArg turnEnd = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHGame.TurnEndEventArg) as THHGame.TurnEndEventArg; Assert.NotNull(turnEnd); Assert.AreEqual(game.sortedPlayers[0], turnEnd.player); THHGame.TurnStartEventArg turnStart = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHGame.TurnStartEventArg) as THHGame.TurnStartEventArg; Assert.NotNull(turnStart); Assert.AreEqual(game.sortedPlayers[1], turnStart.player); game.Dispose(); yield break; }
public void buffTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new TestMaster(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new TestServant_Buff(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); Assert.AreEqual(2, game.sortedPlayers[0].field[0].getAttack(game)); Assert.AreEqual(2, game.sortedPlayers[0].field[0].getLife(game)); Assert.AreEqual(2, game.sortedPlayers[0].field[0].getCurrentLife(game)); }
public IEnumerator initTest() { THHGame game = TestGameflow.initStandardGame(); _ = game.run(); yield return(new WaitForSeconds(.1f)); THHGame.InitEventArg init = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHGame.InitEventArg) as THHGame.InitEventArg; Assert.NotNull(init); Assert.AreEqual(TestMaster.ID, game.players[0].master.define.id); Assert.AreEqual(30, game.players[0].master.getCurrentLife()); Assert.AreEqual(TestMaster.ID, game.players[1].master.define.id); Assert.AreEqual(30, game.players[1].master.getCurrentLife()); Assert.AreEqual(2, game.sortedPlayers.Length); bool isFirstPlayer = game.getPlayerIndex(game.sortedPlayers[0]) == 0; Assert.AreEqual(isFirstPlayer ? 3 : 4, game.players[0].init.count); Assert.AreEqual(isFirstPlayer ? 4 : 3, game.players[1].init.count); game.Dispose(); }
public IEnumerator initReplaceTest() { THHGame game = TestGameflow.initStandardGame(); _ = game.run(); yield return(new WaitForSeconds(.1f)); game.players[0].cmdInitReplace(game, game.players[0].init[0]); game.players[1].cmdInitReplace(game, game.players[1].init[0, 1]); yield return(new WaitForSeconds(.1f)); //替换手牌 Assert.AreEqual(8, game.triggers.getRecordedEvents().Length); THHPlayer.InitReplaceEventArg initReplace = game.triggers.getRecordedEvents()[1] as THHPlayer.InitReplaceEventArg; Assert.NotNull(initReplace); Assert.AreEqual(game.players[0], initReplace.player); Assert.AreEqual(1, initReplace.replacedCards.Length); initReplace = game.triggers.getRecordedEvents()[2] as THHPlayer.InitReplaceEventArg; Assert.NotNull(initReplace); Assert.AreEqual(game.players[1], initReplace.player); Assert.AreEqual(2, initReplace.replacedCards.Length); //游戏开始 THHGame.StartEventArg start = game.triggers.getRecordedEvents()[3] as THHGame.StartEventArg; Assert.NotNull(start); //玩家回合开始 THHGame.TurnStartEventArg turnStart = game.triggers.getRecordedEvents()[4] as THHGame.TurnStartEventArg; Assert.NotNull(turnStart); Assert.AreEqual(game.sortedPlayers[0], turnStart.player); //增加法力水晶并充满 THHPlayer.SetMaxGemEventArg setMaxGem = game.triggers.getRecordedEvents()[5] as THHPlayer.SetMaxGemEventArg; Assert.NotNull(setMaxGem); Assert.AreEqual(1, setMaxGem.value); THHPlayer.SetGemEventArg setGem = game.triggers.getRecordedEvents()[6] as THHPlayer.SetGemEventArg; Assert.NotNull(setGem); Assert.AreEqual(1, setGem.value); //抽一张卡 THHPlayer.DrawEventArg draw = game.triggers.getRecordedEvents()[7] as THHPlayer.DrawEventArg; Assert.NotNull(draw); Assert.AreEqual(game.sortedPlayers[0], draw.player); game.Dispose(); }
public IEnumerator attackTest() { THHGame game = TestGameflow.initStandardGame(); _ = game.run(); yield return(new WaitForSeconds(.2f)); game.players[0].cmdInitReplace(game); game.players[1].cmdInitReplace(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].hand[0], 0); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[1].cmdTurnEnd(game); yield return(new WaitForSeconds(.1f)); game.sortedPlayers[0].cmdAttack(game, game.sortedPlayers[0].field[0], game.sortedPlayers[1].field[0]); yield return(new WaitForSeconds(.1f)); THHCard.AttackEventArg attack = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHCard.AttackEventArg) as THHCard.AttackEventArg; Assert.NotNull(attack); THHCard.DamageEventArg d1 = attack.children[0] as THHCard.DamageEventArg; Assert.NotNull(d1); Assert.AreEqual(2, d1.value); THHCard.DamageEventArg d2 = attack.children[1] as THHCard.DamageEventArg; Assert.NotNull(d2); Assert.AreEqual(2, d2.value); THHCard.DeathEventArg d3 = game.triggers.getRecordedEvents().LastOrDefault(e => e is THHCard.DeathEventArg) as THHCard.DeathEventArg; Assert.NotNull(d3); Assert.AreEqual(2, d3.infoDic.Count); game.Dispose(); }
public void reimuSkillTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Reimu(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new RashFairy(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].skill, 0); Assert.AreEqual(1, game.sortedPlayers[0].field.count); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].skill, 0); Assert.AreEqual(2, game.sortedPlayers[0].field.count); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].skill, 0); Assert.AreEqual(3, game.sortedPlayers[0].field.count); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].skill, 0); Assert.AreEqual(4, game.sortedPlayers[0].field.count); Assert.AreEqual(4, game.sortedPlayers[0].field.Select(c => c.define).Distinct().Count());//有4种图腾 }
public void attackSelfTest() { THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Reimu(), 2).ToArray(), Enumerable.Repeat(Enumerable.Repeat(new DefaultServant(), 30).ToArray(), 2).ToArray(), new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 1); game.sortedPlayers[0].cmdAttack(game, game.sortedPlayers[0].field[0], game.sortedPlayers[0].master); Assert.AreEqual(30, game.sortedPlayers[0].master.getCurrentLife()); game.sortedPlayers[0].cmdAttack(game, game.sortedPlayers[0].field[0], game.sortedPlayers[0].field[1]); Assert.AreEqual(7, game.sortedPlayers[0].field[1].getCurrentLife()); }
public void PatchouliPrincessUndineTest() { TouhouCardEngine.CardDefine[][] decks = new TouhouCardEngine.CardDefine[][] { Enumerable.Repeat(new RoyalFlare(), 30).ToArray(), Enumerable.Repeat(new AgniShine(), 30).ToArray() }; THHGame game = TestGameflow.initStandardGame(null, new int[] { 0, 1 }, Enumerable.Repeat(new Patchouli(), 2).ToArray(), decks, new GameOption() { }); game.run(); game.sortedPlayers[0].cmdInitReplace(game); game.sortedPlayers[1].cmdInitReplace(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdTurnEnd(game); game.sortedPlayers[0].cmdTurnEnd(game); game.sortedPlayers[1].cmdUse(game, game.sortedPlayers[1].hand[0], 0); Assert.AreEqual(1, game.sortedPlayers[1].field.count); Assert.AreEqual(0, game.sortedPlayers[1].field[0].getAttack()); Assert.AreEqual(8, game.sortedPlayers[1].field[0].getLife()); game.sortedPlayers[1].cmdTurnEnd(game); int preLife = game.sortedPlayers[1].master.getCurrentLife(); game.sortedPlayers[0].cmdUse(game, game.sortedPlayers[0].hand[0], 0, game.sortedPlayers[1].master); Assert.AreEqual(1, preLife - game.sortedPlayers[1].master.getCurrentLife()); }
public IEnumerator initReplaceTest() { THHGame game = TestGameflow.initStandardGame(); _ = game.run(); yield return(game.players[0].cmdInitReplace(game, game.players[0].init[0]).wait()); yield return(game.players[1].cmdInitReplace(game, game.players[1].init[0, 1]).wait()); //替换手牌 IEventArg[] events = game.triggers.getRecordedEvents(); THHPlayer.InitReplaceEventArg initReplace = events.OfType <THHPlayer.InitReplaceEventArg>().First(); Assert.NotNull(initReplace); Assert.AreEqual(game.players[0], initReplace.player); Assert.AreEqual(1, initReplace.replacedCards.Length); initReplace = events.OfType <THHPlayer.InitReplaceEventArg>().Skip(1).First(); Assert.NotNull(initReplace); Assert.AreEqual(game.players[1], initReplace.player); Assert.AreEqual(2, initReplace.replacedCards.Length); //游戏开始 THHGame.StartEventArg start = events.OfType <THHGame.StartEventArg>().First(); Assert.NotNull(start); //玩家回合开始 THHGame.TurnStartEventArg turnStart = events.OfType <THHGame.TurnStartEventArg>().First(); Assert.NotNull(turnStart); Assert.AreEqual(game.sortedPlayers[0], turnStart.player); //增加法力水晶并充满 THHPlayer.SetMaxGemEventArg setMaxGem = events.skipUntil(e => e is THHGame.TurnStartEventArg).OfType <THHPlayer.SetMaxGemEventArg>().First(); Assert.NotNull(setMaxGem); Assert.AreEqual(1, setMaxGem.value); THHPlayer.SetGemEventArg setGem = events.OfType <THHPlayer.SetGemEventArg>().First(); Assert.NotNull(setGem); Assert.AreEqual(1, setGem.value); //抽一张卡 THHPlayer.DrawEventArg draw = events.OfType <THHPlayer.DrawEventArg>().First(); Assert.NotNull(draw); Assert.AreEqual(game.sortedPlayers[0], draw.player); game.Dispose(); }