예제 #1
0
    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);
    }
예제 #2
0
    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;
        }
    }
예제 #3
0
    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!");
    }