Пример #1
0
    void GiveHearts(int winnerIndex)
    {
        List <int> givenCardIndexes = fieldCards.IndexListWhere(
            (c) =>
        {
            return(c.IsMatch((int)MarkName.spade, 12) ||
                   c.markNo == (int)MarkName.heart);
        });
        int givenCnt = givenCardIndexes.Count;

        for (int i = 0; i < givenCnt; i++)
        {
            fieldCards.MoveTo(ref players[winnerIndex].heartBox, givenCardIndexes[i] - i);
        }
        players[winnerIndex].heartBox.ListView();
    }
Пример #2
0
    public void TurnDeck()
    {
        if (deckCards.Count == 0)
        {
            return;
        }

        int deckCnt = deckCards.Count;

        deckCards[deckCnt - 1].frontFace = true;
        deckCards.MoveTo(ref fieldCards, deckCnt - 1);
        fieldCards.ListView();
    }
Пример #3
0
    // Update is called once per frame
    void Update()
    {
        //Firebase.Database.DataSnapshot snapshot = null;
        switch (stateNo)
        {
        case (int)PlayerState.SetUp:

            if (myDB.SnapData == null)
            {
                return;
            }

            handCards.allFront = isPlayable;
            heartBox.allFront  = true;
            DownloadMyHandDB(myDB.SnapData);
            myDB.RemoveReadData();
            if (handCards.Count == 0)
            {
                myDB.ReadQuery(handDBname);
                return;
            }
            Debug.Log("read!");

            PrepareNewPlay();
            stateNo = (int)PlayerState.Idle;
            break;

        case (int)PlayerState.BeginMyPhase:
            if (isPlayable)
            {
                GetSelectableIndexes();
                handCards.Highlight(selectableIndexes);
                handCards.EmphasizeOne(selectableIndexes[selectIndex]);
            }
            else
            {
                myDB.ReadQuery(selectDBname);
            }
            stateNo = (int)PlayerState.MyPhase;
            break;

        case (int)PlayerState.MyPhase:
            if (isPlayable)
            {
                if (SelectCard())
                {
                    stateNo = (int)PlayerState.EndMyPhase;
                    myDB.AddAsync(selectDBname, selectableIndexes[selectIndex]);
                    myDB.Push(queryCountDBname, master.ClientNo.ToString());
                    myDB.ReadQuery(queryCountDBname);
                }
            }
            else
            {
                if (myDB.SnapData == null)
                {
                    return;
                }
                if (int.Parse(myDB.SnapData.GetRawJsonValue()) == -1)
                {
                    myDB.ReadQuery(selectDBname);
                }
                else
                {
                    stateNo = (int)PlayerState.EndMyPhase;
                    handCards.MoveTo(ref fieldBox,
                                     int.Parse(myDB.SnapData.GetRawJsonValue()));
                    fieldBox.ListView();
                    handCards.ListView();
                    myDB.Push(queryCountDBname, master.ClientNo.ToString());
                    myDB.ReadQuery(selectDBname);
                }
                myDB.RemoveReadData();
            }
            break;

        case (int)PlayerState.EndMyPhase:
            //return;
            if (myDB.SnapData == null)
            {
                return;
            }
            if (isPlayable)
            {
                if (myDB.SnapData.ChildrenCount < master.PlayerCnt)
                {
                    myDB.ReadQuery(queryCountDBname);
                }
                else
                {
                    selectIndex = 0;
                    Debug.Log("idle");
                    stateNo = (int)PlayerState.Idle;
                    myDB.AddAsync(selectDBname, -1);
                    Debug.Log(myDB.SnapData.ChildrenCount);
                }
            }
            else
            {
                if (int.Parse(myDB.SnapData.GetRawJsonValue()) != -1)
                {
                    myDB.ReadQuery(selectDBname);
                }
                else
                {
                    stateNo = (int)PlayerState.Idle;
                }
            }
            myDB.RemoveReadData();
            break;

        case (int)PlayerState.Idle:

            break;
        }
    }