public IEnumerator KillerHangoverCard_EnemyPlayersMissTurn() { //Tests that all of the enemy players miss their turn when the card is played. Setup(); game.InitializeMap(); yield return(null); //wait for test setup to load. Player testPlayer = players [0]; game.currentPlayer = testPlayer; game.DisableTestMode(); Card testCard = new KillerHangoverCard(testPlayer); cardDeck.SetActiveCard(testCard); //add to active cards testCard.activatePunishment(); yield return(null); //wait for game to update Assert.AreEqual(testPlayer, game.currentPlayer); Assert.AreEqual(Game.TurnState.Move1, game.GetTurnState()); game.EndTurn(); //End the turn; yield return(null); //wait for game to update Assert.AreEqual(Game.TurnState.Move1, game.GetTurnState()); Assert.AreEqual(testPlayer, game.currentPlayer); }
public void AssignPunishmentCard(Player player) { //This method is used to give 'player' a new punishment card. int randInt = Random.Range(0, 100); if (randInt < 25) { Card lecturerStrikeCard = new LecturerStrikeCard(player); player.AddPunishmentCard(lecturerStrikeCard); return; } if (randInt < 50) { Card nothingCard = new NothingCard(player); player.AddPunishmentCard(nothingCard); return; } if (randInt < 75) { Card killerHangoverCard = new KillerHangoverCard(player); player.AddPunishmentCard(killerHangoverCard); return; } if (randInt < 100) { Card freshersFluCard = new FreshersFluCard(player); player.AddPunishmentCard(freshersFluCard); return; } }
public void Load() { Debug.Log("Entered Load"); using (StreamReader reader = new StreamReader(Application.persistentDataPath + "/gameInformation.dat")) { string[] line = reader.ReadLine().Split(':'); //restore current player if (line[0] == "Current Player") { DeactiveCurrentPlayer(); //load in player saved game.currentPlayer = GameObject.Find(line[1]).GetComponent <Player>(); game.currentPlayer.SetActive(true); game.currentPlayer.GetGui().Activate(); } //restore move state line = reader.ReadLine().Split(':'); if (line[0] == "Turn state") { switch (line[1]) { case "Move1": game.SetTurnState(Game.TurnState.Move1); break; case "Move2": game.SetTurnState(Game.TurnState.Move2); break; case "EndOfTurn": game.SetTurnState(Game.TurnState.EndOfTurn); break; case "NULL": game.SetTurnState(Game.TurnState.NULL); break; } } // ASSESSMENT 4 ADDITION (22/03/2018) // restore players for (int i = 0; i < 4; i++) { game.players[i].SetBeer(int.Parse(reader.ReadLine().Split(':')[1].ToString())); game.players[i].SetKnowledge(int.Parse(reader.ReadLine().Split(':')[1].ToString())); game.players[i].SetHuman(bool.Parse(reader.ReadLine().Split(':')[1])); game.players[i].SetActive(bool.Parse(reader.ReadLine().Split(':')[1])); string[] cards = reader.ReadLine().Split(':')[1].Split(','); foreach (string card in cards) { switch (card) { case "FreshersFluCard": Card freshersFluCard = new FreshersFluCard(game.players[i]); game.players[i].AddPunishmentCard(freshersFluCard); break; case "LecturerStrikeCard": Card lecturerStrikeCard = new LecturerStrikeCard(game.players[i]); game.players[i].AddPunishmentCard(lecturerStrikeCard); break; case "KillerHangoverCard": Card killerHangoverCard = new KillerHangoverCard(game.players[i]); game.players[i].AddPunishmentCard(killerHangoverCard); break; case "NothingCard": Card nothingCard = new NothingCard(game.players[i]); game.players[i].AddPunishmentCard(nothingCard); break; } } } //----------------------------------- //sectors Sector[] sectors = map.GetComponentsInChildren <Sector>(); for (int i = 0; i < 32; i++) { reader.ReadLine().Split(':'); //set sector owner line = reader.ReadLine().Split(':'); string playerName = line[1]; int playerID = GetPlayerIDByName(playerName); if (playerID != -1) { sectors[i].SetOwner(game.players[playerID]); game.players[playerID].ownedSectors.Add(sectors[i]); } else { sectors[i].SetOwner(null); } //capture landmarks (and place vice chancellor if present) line = reader.ReadLine().Split(':'); if (line[1] == "ViceChancellor") { game.spawnVice(i); } else if (line[1] != "null") { game.players[playerID].Capture(sectors[i]); } //spawn units (if present) //line = reader.ReadLine().Split(); string aay = reader.ReadLine(); line = aay.Split(':'); if (line[1] != "null") //if there is a unit to place { GameObject[] playerPrefabs = new GameObject[] { player1UnitPrefab, player2UnitPrefab, player3UnitPrefab, player4UnitPrefab }; // instantiate a new unit at the sector Unit newUnit = Instantiate(playerPrefabs[playerID]).GetComponent <Unit>(); // initialize the new unit newUnit.Initialize(game.players[playerID], sectors[i]); // add the new unit to the player's list of units and // the sector's unit parameters game.players[playerID].units.Add(newUnit); //sectors[i].SetUnit(newUnit); newUnit.SetLevel(int.Parse(line[2])); //ASSESSMENT 4 ADDITION (22/03/2018) Color unitColor = new Color( float.Parse(line[3]), float.Parse(line[4]), float.Parse(line[5]) ); newUnit.SetColor(unitColor); newUnit.gameObject.GetComponent <Renderer>().material.color = unitColor; //---------------------------------- } } // ASSESSMENT 4 ADDITION (22/03/2018) // Reset active cards and their states line = reader.ReadLine().Split(':'); if (line[0] == "activeCards") { for (int i = 0; i < int.Parse(line[1]); i++) { string[] card = reader.ReadLine().Split(':'); int playerID = GetPlayerIDByName(card[1]); int turnCount = int.Parse(card[2]); switch (card[0]) { case "FreshersFluCard": FreshersFluCard freshersFluCard = new FreshersFluCard(game.players[playerID], turnCount); Dictionary <Player, int[]> bonuses = new Dictionary <Player, int[]>(); for (int j = 0; j < 3; j++) { string[] playerLine = reader.ReadLine().Split(':'); playerID = GetPlayerIDByName(playerLine[0]); bonuses.Add(game.players[playerID], new int[] { int.Parse(playerLine[1]), int.Parse(playerLine[2]) }); } freshersFluCard.SetPvcBonuses(bonuses); game.cardDeck.SetActiveCard(freshersFluCard); break; case "LecturerStrikeCard": LecturerStrikeCard lecturerStrikeCard = new LecturerStrikeCard(game.players[playerID], turnCount); game.cardDeck.SetActiveCard(lecturerStrikeCard); GameObject strikeScene = GameObject.Instantiate(Resources.Load <GameObject> ("strike_model/StrikePeople")); strikeScene.name = "StrikePeople"; break; case "KillerHangoverCard": KillerHangoverCard killerHangoverCard = new KillerHangoverCard(game.players[playerID], turnCount); game.cardDeck.SetActiveCard(killerHangoverCard); break; } } } } Debug.Log("Loaded!"); }