コード例 #1
0
        private void SteppedOnCommunityChestSpace(Player[] players, IList <Space> listOfSpaces,
                                                  CommunityChestSpace CommunityChestSpaceObject, ChanceSpace ChanceSpaceObject, int currentPlayerCounter,
                                                  Player player, Space currentSpace)
        {
            ChanceCard drawCommunityChestCard = CommunityChestSpaceObject.DrawCard();

            if (drawCommunityChestCard is SpaceCard)
            {
                SpaceCard drawChanceCardAsSpaceCard = drawCommunityChestCard as SpaceCard;
                player.Position = drawChanceCardAsSpaceCard.PositionToGo;
                currentSpace    = listOfSpaces[player.Position];
                CheckSpaces(players, listOfSpaces, CommunityChestSpaceObject, ChanceSpaceObject, currentPlayerCounter, player, currentSpace);
            }
            if (drawCommunityChestCard is MoveCard)
            {
                MoveCard drawChanceCardAsMoveCard = drawCommunityChestCard as MoveCard;
                player.Position = drawChanceCardAsMoveCard.SquaresToMove + player.Position;
                currentSpace    = listOfSpaces[player.Position];
                CheckSpaces(players, listOfSpaces, CommunityChestSpaceObject, ChanceSpaceObject, currentPlayerCounter, player, currentSpace);
            }
            if (drawCommunityChestCard is GoodLuckCard)
            {
                GoodLuckCard drawChanceCardAsMoveCard = drawCommunityChestCard as GoodLuckCard;
                player.AddCash((int)drawChanceCardAsMoveCard.Cash);
            }
        }
コード例 #2
0
        public ChanceCard DrawCard(Queue <ChanceCard> listOfCards)
        {
            ChanceCard cardDrawn = listOfCards.Dequeue();

            listOfCards.Enqueue(cardDrawn);
            return(cardDrawn);
        }
コード例 #3
0
 public ChancePopup(ChanceCard card, Player caller)
 {
     this.card = card;
     onClose  += delegate
     {
         card.CallActions(caller);
     };
 }
コード例 #4
0
    private GameObject CreateCard(Chance q, Vector3 position)
    {
        GameObject cardDummy = Instantiate(cardPrefab, position, Quaternion.identity, null);
        ChanceCard card      = cardDummy.GetComponent <ChanceCard>();

        if (card != null)
        {
            card.SetUpCard(q);
        }
        return(cardDummy);
    }
コード例 #5
0
        public static void CreateChanceCard()
        {
            ChanceCard asset = ScriptableObject.CreateInstance <ChanceCard>();

            AssetDatabase.CreateAsset(asset, "Assets/Scriptable Objects/Cards/NewScripableObject.asset");
            AssetDatabase.SaveAssets();

            EditorUtility.FocusProjectWindow();

            Selection.activeObject = asset;
        }
コード例 #6
0
        public void AddAndRemoveActionCardTest()
        {
            IActionCard chance = new ChanceCard("Advance to Start", "Start", null);

            // add chance card
            mplayer.AddActionCard(chance);
            Assert.AreEqual(mplayer.ActionCards.Contains(chance), true);

            // remove chance card
            mplayer.RemoveActionCard(chance);
            Assert.AreEqual(mplayer.ActionCards.Contains(chance), false);
        }
コード例 #7
0
    /// <summary>
    /// Odtwarza listę przechowującą informację o otwarciu karty z informacjami o akcji
    /// </summary>
    private void RecreateActions(ChanceCard card)
    {
        if (card.actionStrings == null)
        {
            card.actionStrings = new List <ActionString>();
        }

        if (actionIsOpen.Count == 0)
        {
            foreach (ActionString actionString in card.actionStrings)
            {
                actionIsOpen.Add(false);
            }
        }
    }
コード例 #8
0
    /// <summary>
    /// Otwiera menu do dodawania poszczególnych akcji
    /// </summary>
    /// <param name="card">Obiekt, na którym działa edytor</param>
    private void AddMenu(ChanceCard card)
    {
        EditorGUILayout.BeginHorizontal();

        currentType = (ActionCard.ActionType)EditorGUILayout.EnumPopup("New Action Card", currentType);
        if (GUILayout.Button("Add"))
        {
            ActionString actionString = ActionString.GenerateDefault(currentType);

            actionIsOpen.Add(true);
            card.actionStrings.Add(actionString);
            EditorUtility.SetDirty(target);
        }

        EditorGUILayout.EndHorizontal();
    }
コード例 #9
0
    private void ShowRandomCard(Player player)
    {
        if (cards == null || cards.Count == 0)
        {
            cards = new List <ChanceCard>(chanceCards);
        }

        while (cards.Count > 0)
        {
            int        index = Random.Range(0, cards.Count - 1);
            ChanceCard card  = cards[index];
            cards.RemoveAt(index);

            if (card.IsActive())
            {
                card.OpenCard(player);
                break;
            }
        }
    }
コード例 #10
0
    /// <summary>
    /// Wyświetla informacje o akcji w danej karcie na podstawie actionStringa
    /// </summary>
    /// <param name="card">Karta, której akcje chcemy wyświetlić</param>
    /// <param name="actionString">Informacje o karcie w postaci listy stringów</param>
    /// <param name="index">Numer akcji na liście wszystkich akcji</param>
    private void ShowActionCard(ChanceCard card, ActionString actionString, int index)
    {
        EditorGUILayout.BeginHorizontal();

        actionIsOpen[index] = EditorGUILayout.Foldout(actionIsOpen[index], actionString.actionType.ToString());
        if (GUILayout.Button("X", GUILayout.Width(20)))
        {
            card.actionStrings.RemoveAt(index);
            actionIsOpen.RemoveAt(index);
        }

        EditorGUILayout.EndHorizontal();

        if (actionIsOpen.Count > index && actionIsOpen[index])
        {
            switch (actionString.actionType)
            {
            case ActionCard.ActionType.Money:
                ShowMoneyAction(actionString);
                break;

            case ActionCard.ActionType.Wait:
                ShowWaitAction(actionString);
                break;

            case ActionCard.ActionType.Move:
                ShowMoveAction(actionString);
                break;

            case ActionCard.ActionType.WithUser:
                ShowWithUserAction(actionString);
                break;

            case ActionCard.ActionType.Imprison:
                //Wiezienie nie ma żadnych parametrów
                break;
            }
        }

        EditorUtility.SetDirty(target);
    }
コード例 #11
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        ChanceCard card = (ChanceCard)target;

        RecreateActions(card);

        AddMenu(card);
        showActions = EditorGUILayout.BeginFoldoutHeaderGroup(showActions, "Actions (" + card.actionStrings.Count + ")");

        if (showActions)
        {
            for (int i = 0; i < card.actionStrings.Count; i++)
            {
                ActionString actionString = card.actionStrings[i];
                ShowActionCard(card, actionString, i);
            }
        }

        EditorGUILayout.EndFoldoutHeaderGroup();
    }
コード例 #12
0
        public void PlayerTurn(Player player, Board boar, int firstRoll, int secondRoll)
        {
            Tile currentTile;

            this.MovePlayer(player, firstDice, secondDice, board);
            currentTile = board.GetTileAtPosition(player.Position);

            Console.WriteLine("Current tile {0}", currentTile);
            IChoosableAction actionTile = currentTile as IChoosableAction;

            if (actionTile != null)
            {
                this.ExecuteActionFromTile(actionTile, player);
            }

            if (currentTile is CommunityTile)
            {
                CommunityCard card = CardHelpers.DrawCard(this.communityCards);

                Console.WriteLine("Community Card");
                Console.WriteLine("Card Desciption: {0}", card.Description);
                Console.ReadLine();

                this.ExecuteActionFromCard(card, player);
            }
            else if (currentTile is ChanceTile)
            {
                ChanceCard card = CardHelpers.DrawCard(this.chanceCards);

                Console.WriteLine("Chance Card");
                Console.WriteLine("Card Desciption: {0}", card.Description);
                Console.ReadLine();

                this.ExecuteActionFromCard(card, player);
            }
        }
コード例 #13
0
 public async void OnDrawChanceCard(object sender, EventArgs e)
 {
     ChanceCard c = this.state.GetNextChanceCard();
     await Navigation.PushAsync(new WatchPage(c));
 }
コード例 #14
0
    // Pulls a chance card and does that chance cards action.
    private IEnumerator ChanceCardHandler(Player player)
    {
        int        random = Random.Range(0, 7);
        ChanceCard card   = chanceCards[random];

        chanceCardUI.chanceString = card.chanceAction;
        chanceCardUI.gameObject.SetActive(true);
        yield return(new WaitForSeconds(4));

        IsDoneInteraction = false;
        chanceCardUI.gameObject.SetActive(false);

        switch (card.chanceId)
        {
        case 1:
            GameObject goTileObj = GameObject.FindGameObjectWithTag("Go");
            Tile       goTile    = goTileObj.GetComponent <Tile>();
            player.currentTile        = goTile;
            player.transform.position = goTile.transform.position;
            player.money += 200;
            break;

        case 2:
            // TODO: pass go mallarcy
            if (card.tag != "NoGo")
            {
                player.money += 200;
            }
            GameObject nunsIslandObj = GameObject.FindGameObjectWithTag("Nun");
            Tile       nunTile       = nunsIslandObj.GetComponent <Tile>();
            player.currentTile        = nunTile;
            player.transform.position = nunTile.transform.position;
            break;

        case 3:
            player.money += 50;
            break;

        case 4:
            GoToJailChance(player);
            break;

        case 5:
            player.money -= 25 * player.houseCount;
            break;

        case 6:
            player.money -= 15;
            break;

        case 7:
            player.money += 150;
            break;
        }
        if (doubleRoll == true)
        {
            StartCoroutine(RollAgain());
        }
        else
        {
            IsDoneInteraction = true;
        }
    }