Пример #1
0
 public virtual void runEvent(Player[] playerList, int activePlayer, int playerCount, AdvDeck advDeck, GameManager gm)
 {
     return;
 }
    // Use this for initialization
    void Start()
    {
        //Init the decks
        advDeck   = new AdvDeck();
        storyDeck = new StoryDeck();
        rigging   = new TestRiggingFunctions();
        advDeck.initDeck();
        storyDeck.initDeck();
        log.log("decks initialized");
        //testingScenario = PlayerPrefs.GetInt("testScenario");
        //playerCount = PlayerPrefs.GetInt("humanPlayerNum")  + 1 ;
        //aiStrat=PlayerPrefs.GetInt("aiStrategy");

        hp          = new HelperFunctions();
        playerCount = rigging.getRiggedPlayerCount(testingScenario);
        players     = new Player[playerCount];
        for (int i = 0; i < playerCount; i++)
        {
            if (testingScenario == 12 || testingScenario == 13 || testingScenario == 14)
            {
                players[i] = new Player(new Card[12], 4, 0, "Player " + (i));
            }
            else
            {
                players[i] = new Player(new Card[12], 0, 0, "Player " + (i));
            }
        }

        if (testingScenario == 18)
        {
            players[0] = new Player(new Card[12], 4, 0, "Player 1");
        }
        dealHands(playerCount);
        if (rigging.getRiggedAiStratagy(testingScenario) != -1)
        {
            if (rigging.getRiggedAiStratagy(testingScenario) == 1)
            {
                players[rigging.getRiggedAiIndex(testingScenario)].assumingDirectControl(new Strategy1AI(players[rigging.getRiggedAiIndex(testingScenario)]));
            }
            if (rigging.getRiggedAiStratagy(testingScenario) == 2)
            {
                players[rigging.getRiggedAiIndex(testingScenario)].assumingDirectControl(new Strategy2AI(players[rigging.getRiggedAiIndex(testingScenario)]));
            }
        }

        log.Init();
        log.log("Testing scenario is " + testingScenario);
        log.log("There are " + PlayerPrefs.GetInt("aiPlayerNum") + " AI players.");
        log.log("There are " + PlayerPrefs.GetInt("humanPlayerNum") + " Human players.");
        log.log("Current test scenario is " + PlayerPrefs.GetInt("testScenario"));



        ui = new UI(this);
        log.log("Created UI");
        //Create all the players and add it to the players array

        log.log("Created player array");


        log.log("Dealt cards");



        gameStart();
    }
    public Card[][] dealRiggedHand(int test, Player[] players, AdvDeck advDeck)
    {
        Card[][] result;
        if (test == 0 || test == 6 || test == 7 || test == 9)
        {
            result = new Card[3][];
            for (int i = 0; i < 3; i++)
            {
                Card[] newHand = new Card[12];
                for (int j = 0; j < newHand.Length; j++)
                {
                    newHand[j] = advDeck.drawCard();
                    //log.log("Gave " + players[i].getName() + " a " + newHand[j].getName() + " card");
                }
                result[i] = newHand;
            }
        }
        else if (test == 1 || test == 2 || test == 3)
        {
            result = new Card[4][];
            Card[] player1NewHand = new Card[12];
            player1NewHand[0] = advDeck.getCard("saxons");
            player1NewHand[1] = advDeck.getCard("boar");
            player1NewHand[2] = advDeck.getCard("sword");
            player1NewHand[3] = advDeck.getCard("toquestingbeast");
            for (int i = 4; i < player1NewHand.Length; i++)
            {
                player1NewHand[i] = advDeck.drawCard();
            }

            Card[] player2NewHand = new Card[12];
            for (int i = 0; i < player2NewHand.Length; i++)
            {
                player2NewHand[i] = advDeck.drawCard();
            }

            Card[] player3NewHand = new Card[12];
            player3NewHand[0] = advDeck.getCard("horse");
            player3NewHand[1] = advDeck.getCard("excalibur");
            for (int i = 2; i < player3NewHand.Length; i++)
            {
                player3NewHand[i] = advDeck.drawCard();
            }

            Card[] player4NewHand = new Card[12];
            player4NewHand[0] = advDeck.getCard("battleax");
            player4NewHand[1] = advDeck.getCard("lance");
            for (int i = 2; i < player4NewHand.Length; i++)
            {
                player4NewHand[i] = advDeck.drawCard();
            }
            result[0] = player1NewHand;
            result[1] = player2NewHand;
            result[2] = player3NewHand;
            result[3] = player4NewHand;
        }
        else if (test == 4)
        {
            result = new Card[3][];
            Card[] player1NewHand = new Card[12];
            player1NewHand[0] = advDeck.getCard("saxons");
            player1NewHand[1] = advDeck.getCard("tovalor");
            for (int i = 2; i < player1NewHand.Length; i++)
            {
                player1NewHand[i] = advDeck.drawCard();
            }

            Card[] player2NewHand = new Card[12];
            player2NewHand[0] = advDeck.getCard("amour");
            player2NewHand[1] = advDeck.getCard("amour");
            for (int i = 2; i < player2NewHand.Length; i++)
            {
                player2NewHand[i] = advDeck.drawCard();
            }

            Card[] player3NewHand = new Card[12];
            player3NewHand[0] = advDeck.getCard("mordred");
            for (int i = 1; i < player3NewHand.Length; i++)
            {
                player3NewHand[i] = advDeck.drawCard();
            }
            result[0] = player1NewHand;
            result[1] = player2NewHand;
            result[2] = player3NewHand;
        }
        else if (test == 5)
        {
            result = new Card[3][];
            Card[] player1NewHand = new Card[12];
            player1NewHand[0] = advDeck.getCard("gawain");
            player1NewHand[1] = advDeck.getCard("percival");
            for (int i = 2; i < player1NewHand.Length; i++)
            {
                player1NewHand[i] = advDeck.drawCard();
            }

            Card[] player2NewHand = new Card[12];
            player2NewHand[0] = advDeck.getCard("thieves");
            player2NewHand[1] = advDeck.getCard("thieves");
            player2NewHand[2] = advDeck.getCard("thieves");
            player2NewHand[3] = advDeck.getCard("saxons");
            player2NewHand[4] = advDeck.getCard("saxons");
            player2NewHand[5] = advDeck.getCard("saxons");
            player2NewHand[6] = advDeck.getCard("robberknight");
            player2NewHand[7] = advDeck.getCard("robberknight");
            player2NewHand[8] = advDeck.getCard("mordred");
            for (int i = 9; i < player2NewHand.Length; i++)
            {
                player2NewHand[i] = advDeck.drawCard();
            }

            Card[] player3NewHand = new Card[12];
            player3NewHand[0] = advDeck.getCard("mordred");
            for (int i = 1; i < player3NewHand.Length; i++)
            {
                player3NewHand[i] = advDeck.drawCard();
            }
            result[0] = player1NewHand;
            result[1] = player2NewHand;
            result[2] = player3NewHand;
        }
        else if (test == 7)
        {
            result = new Card[3][];
            for (int i = 0; i < 3; i++)
            {
                Card[] newHand = new Card[12];
                for (int j = 0; j < newHand.Length; j++)
                {
                    newHand[j] = advDeck.drawCard();
                    //log.log("Gave " + players[i].getName() + " a " + newHand[j].getName() + " card");
                }
                result[i] = newHand;
            }
            Card[] player2NewHand = new Card[12];
            player2NewHand[0] = advDeck.getCard("thieves");
            player2NewHand[1] = advDeck.getCard("thieves");
            player2NewHand[2] = advDeck.getCard("thieves");
            player2NewHand[3] = advDeck.getCard("saxons");
            player2NewHand[4] = advDeck.getCard("saxons");
            player2NewHand[5] = advDeck.getCard("saxons");
            player2NewHand[6] = advDeck.getCard("robberknight");
            player2NewHand[7] = advDeck.getCard("robberknight");
            player2NewHand[8] = advDeck.getCard("tovalor");
            for (int i = 9; i < player2NewHand.Length; i++)
            {
                player2NewHand[i] = advDeck.drawCard();
            }
            result[1] = player2NewHand;
        }
        else if (test == 8)
        {
            result = new Card[3][];
            for (int i = 0; i < 3; i++)
            {
                Card[] newHand = new Card[12];
                for (int j = 0; j < newHand.Length; j++)
                {
                    newHand[j] = advDeck.drawCard();
                    //log.log("Gave " + players[i].getName() + " a " + newHand[j].getName() + " card");
                }
                result[i] = newHand;
            }
            Card[] player1NewHand = new Card[12];
            player1NewHand[0] = advDeck.getCard("thieves");
            player1NewHand[1] = advDeck.getCard("saxons");
            player1NewHand[2] = advDeck.getCard("boar");
            player1NewHand[3] = advDeck.getCard("toquestingbeast");
            for (int i = 4; i < player1NewHand.Length; i++)
            {
                player1NewHand[i] = advDeck.drawCard();
            }

            Card[] player2NewHand = new Card[12];
            player2NewHand[0] = advDeck.getCard("thieves");
            player2NewHand[1] = advDeck.getCard("saxons");
            player2NewHand[2] = advDeck.getCard("horse");
            player2NewHand[3] = advDeck.getCard("horse");
            player2NewHand[4] = advDeck.getCard("lance");
            player2NewHand[5] = advDeck.getCard("excalibur");
            for (int i = 4; i < player2NewHand.Length; i++)
            {
                player2NewHand[i] = advDeck.drawCard();
            }
            result[0] = player1NewHand;
            result[1] = player2NewHand;
        }
        else if (test == 9)
        {
            result = new Card[3][];
            for (int i = 0; i < 3; i++)
            {
                Card[] newHand = new Card[12];
                for (int j = 0; j < newHand.Length; j++)
                {
                    newHand[j] = advDeck.drawCard();
                    //log.log("Gave " + players[i].getName() + " a " + newHand[j].getName() + " card");
                }
                result[i] = newHand;
            }
            Card[] player1NewHand = new Card[12];
            player1NewHand[0] = advDeck.getCard("thieves");
            player1NewHand[1] = advDeck.getCard("saxons");
            player1NewHand[2] = advDeck.getCard("boar");
            player1NewHand[3] = advDeck.getCard("greenknight");
            for (int i = 4; i < player1NewHand.Length; i++)
            {
                player1NewHand[i] = advDeck.drawCard();
            }

            Card[] player2NewHand = new Card[12];
            player2NewHand[0] = advDeck.getCard("thieves");
            player2NewHand[1] = advDeck.getCard("saxons");
            player2NewHand[2] = advDeck.getCard("horse");
            player2NewHand[3] = advDeck.getCard("horse");
            player2NewHand[4] = advDeck.getCard("lance");
            player2NewHand[5] = advDeck.getCard("excalibur");
            for (int i = 6; i < player2NewHand.Length; i++)
            {
                player2NewHand[i] = advDeck.drawCard();
            }
            result[0] = player1NewHand;
            result[1] = player2NewHand;
        }
        else if (test == 10)
        {
            result = new Card[3][];
            for (int i = 0; i < 3; i++)
            {
                Card[] newHand = new Card[12];
                for (int j = 0; j < newHand.Length; j++)
                {
                    newHand[j] = advDeck.drawCard();
                    //log.log("Gave " + players[i].getName() + " a " + newHand[j].getName() + " card");
                }
                result[i] = newHand;
            }
            Card[] player1NewHand = new Card[12];
            player1NewHand[0] = advDeck.getCard("thieves");
            player1NewHand[1] = advDeck.getCard("saxons");
            player1NewHand[2] = advDeck.getCard("boar");
            player1NewHand[3] = advDeck.getCard("greenknight");
            for (int i = 4; i < player1NewHand.Length; i++)
            {
                player1NewHand[i] = advDeck.drawCard();
            }

            Card[] player2NewHand = new Card[12];
            player2NewHand[0] = advDeck.getCard("thieves");
            player2NewHand[1] = advDeck.getCard("saxons");
            player2NewHand[2] = advDeck.getCard("horse");
            player2NewHand[3] = advDeck.getCard("horse");
            player2NewHand[4] = advDeck.getCard("lance");
            player2NewHand[5] = advDeck.getCard("excalibur");
            for (int i = 6; i < player2NewHand.Length; i++)
            {
                player2NewHand[i] = advDeck.drawCard();
            }
            result[0] = player1NewHand;
            result[1] = player2NewHand;
        }
        else if (test == 11)
        {
            result = new Card[3][];
            for (int i = 0; i < 3; i++)
            {
                Card[] newHand = new Card[12];
                for (int j = 0; j < newHand.Length; j++)
                {
                    newHand[j] = advDeck.drawCard();
                    //log.log("Gave " + players[i].getName() + " a " + newHand[j].getName() + " card");
                }
                result[i] = newHand;
            }
            Card[] player1NewHand = new Card[12];
            player1NewHand[0] = advDeck.getCard("thieves");
            player1NewHand[1] = advDeck.getCard("saxons");
            player1NewHand[2] = advDeck.getCard("toquestingbeast");
            player1NewHand[3] = advDeck.getCard("greenknight");
            for (int i = 4; i < player1NewHand.Length; i++)
            {
                player1NewHand[i] = advDeck.drawCard();
            }

            Card[] player2NewHand = new Card[12];
            player2NewHand[0] = advDeck.getCard("thieves");
            player2NewHand[1] = advDeck.getCard("saxons");
            player2NewHand[2] = advDeck.getCard("horse");
            player2NewHand[3] = advDeck.getCard("horse");
            player2NewHand[4] = advDeck.getCard("lance");
            player2NewHand[5] = advDeck.getCard("excalibur");
            for (int i = 6; i < player2NewHand.Length; i++)
            {
                player2NewHand[i] = advDeck.drawCard();
            }
            result[0] = player1NewHand;
            result[1] = player2NewHand;
        }
        else if (test == 13 || test == 14 || test == 15 || test == 16 || test == 17 || test == 18)
        {
            result = new Card[3][];
            for (int i = 0; i < 3; i++)
            {
                Card[] newHand = new Card[12];
                for (int j = 0; j < newHand.Length; j++)
                {
                    newHand[j] = advDeck.drawCard();
                    //log.log("Gave " + players[i].getName() + " a " + newHand[j].getName() + " card");
                }
                result[i] = newHand;
            }

            return(result);
        }
        else
        {
            result = new Card[3][];
            for (int i = 0; i < 3; i++)
            {
                Card[] newHand = new Card[12];
                for (int j = 0; j < newHand.Length; j++)
                {
                    newHand[j] = advDeck.drawCard();
                    //log.log("Gave " + players[i].getName() + " a " + newHand[j].getName() + " card");
                }
                result[i] = newHand;
            }
        }

        return(result);
    }
Пример #4
0
    public override void runEvent(Player[] playerList, int activePlayer, int playerCount, AdvDeck advDeck, GameManager gm)
    {
        int lowestShields = 50;      //arbitrarily high count
        int lowestRank    = 10;      //arbitrarily high count

        Card[] draws = new Card[2];
        Card[] empty = null;

        int highestShields = -1;

        for (int i = 0; i < playerList.Length; i++)
        {
            if (playerList[i].getShields() > highestShields)
            {
                highestShields = playerList[i].getShields();
            }
        }
        Player [] playersAffected = null;
        switch (name)
        {
        case "chivdeed":
            //player(s) in last receive 3 shields
            for (int i = 0; i < playerCount; i++)
            {
                if (playerList [i].getRank() < lowestRank)
                {
                    lowestRank = playerList [i].getRank();
                }
                if (playerList [i].getShields() < lowestShields)
                {
                    lowestShields = playerList [i].getShields();
                }
            }
            for (int j = 0; j < playerCount; j++)
            {
                if ((playerList[j].getRank() == lowestRank) && (playerList[j].getShields() == lowestShields))
                {
                    playerList[j].addShields(3);
                }
            }
            break;

        case "courtcalled":
            //all players discard all allies
            Debug.Log("Playing courtcalled. Current Player is: " + playerList[activePlayer].getName());
            for (int i = 0; i < playerCount; i++)
            {
                playerList [i].setInPlayHand(null);
                playerList [i].getLogger().log("Discarding all cards in play.");
            }
            gm.drawQuestCard();
            break;

        case "kingscall":
            Debug.Log("Playing kingscall. Current Player is: " + playerList[activePlayer].getName());
            for (int i = 0; i < playerList.Length; i++)
            {
                Debug.Log(i);
                if (playerList[i].getShields() == highestShields)
                {
                    playersAffected = hp.addPlayer(playersAffected, playerList[i]);
                }
            }
            gm.kingsCall(playersAffected);

            //top player(s) must discard 1 weapon. if they can't they must discard 2 foes
            break;

        case "recognition":
            Debug.Log("Playing recognition. Current Player is: " + playerList[activePlayer].getName());
            gm.recognition();
            //next player(s) to complete a quest get 2 extra shields
            break;

        case "plague":
            //active player loses 2 shields if possible
            Debug.Log("Playing plague. Current Player is: " + playerList[activePlayer].getName());
            if (playerList[activePlayer].getShields() > 1)
            {
                Debug.Log("Removing 2 shields from " + playerList[activePlayer].getName());
                playerList[activePlayer].removeShields(2);
            }
            gm.drawQuestCard();
            break;

        case "pox":
            //all players but active players lose 1 shield if possible
            Debug.Log("Playing pox. Current Player is: " + playerList[activePlayer].getName());
            for (int i = 0; i < playerCount; i++)
            {
                if (i != activePlayer && playerList[i].getShields() > 0)
                {
                    Debug.Log("Removing a shield from " + playerList[i].getName());
                    playerList[i].removeShields(1);
                }
            }
            gm.drawQuestCard();
            break;

        case "prosperity":
            //all players draw 2 adventure cards
            for (int i = 0; i < playerCount; i++)
            {
                log.log("prosperity through the kingdom called");

                gm.drawXGeneralNumberOfCards(2, state.PROSPERITY, playerList);
            }
            break;

        case "queensfavor":
            Debug.Log("Playing queensfavor. Current Player is: " + playerList[activePlayer].getName());
            //player(s) in last draw 2 adventure cards
            for (int i = 0; i < playerCount; i++)
            {
                if (playerList [i].getShields() < lowestShields)
                {
                    lowestShields = playerList [i].getShields();
                }
            }
            for (int j = 0; j < playerCount; j++)
            {
                if (playerList[j].getShields() == lowestShields)
                {
                    playersAffected = hp.addPlayer(playersAffected, playerList[j]);
                }
            }

            gm.drawXGeneralNumberOfCards(2, state.QUEENSFAVOR, playersAffected);
            break;
        }
        return;
    }