Exemple #1
0
    /// <summary>
    /// ダブルクリックしたときに自動で組札に移動
    /// </summary>
    /// <param name="selected"></param>
    void AutoStack(GameObject selected)
    {
        for (int i = 0; i < cardSetting.suitePos.Length; i++)
        {
            //ダブルクリックをしたカードが1の時
            CanSelect stack = cardSetting.suitePos[i].GetComponent <CanSelect>();
            if (selected.GetComponent <CanSelect>().value == 1)
            {
                if (cardSetting.suitePos[i].GetComponent <CanSelect>().value == 0)
                {
                    slot = selected;
                    Stack(stack.gameObject);
                    break;
                }
            }
            //それ以外
            else
            {
                if ((cardSetting.suitePos[i].GetComponent <CanSelect>().mark == slot.GetComponent <CanSelect>().mark) &&
                    (cardSetting.suitePos[i].GetComponent <CanSelect>().value == slot.GetComponent <CanSelect>().value - 1))
                {
                    if (HasNoChildren(slot))
                    {
                        slot = selected;
                        string lastCardname = stack.mark + stack.value.ToString();

                        GameObject lastCard = GameObject.Find(lastCardname);
                        Stack(lastCard);
                        break;
                    }
                }
            }
        }
    }
Exemple #2
0
    /// <summary>
    /// カードを次の場所に移動できるかどうかの判定
    /// </summary>
    /// <param name="selected"></param>
    /// <returns></returns>
    bool Stackable(GameObject selected)
    {
        CanSelect cs1 = slot.GetComponent <CanSelect>();
        CanSelect cs2 = selected.GetComponent <CanSelect>();

        //山札にあるカードかどうか
        if (!cs2.inDeckPile)
        {
            //先に選択されたカードが後に選択された組札に置けるかの判定
            if (cs2.suite)
            {
                if (cs1.mark == cs2.mark || (cs1.value == 1 && cs2.mark == null))
                {
                    if (cs1.value == cs2.value + 1)
                    {
                        return(true);
                    }
                }
                else
                {
                    return(false);
                }
            }
            //番札の一番下に階段式に置けるか
            else
            {
                if (cs1.value == cs2.value - 1)
                {
                    //カードのマークが違う色ならtrue、同じならfalseを返す
                    if (cs1.cardRed != cs2.cardRed)
                    {
                        return(true);
                    }
                    else
                    {
                        return(false);
                    }
                }
            }
        }
        //山札のカードを選択していた場合はfalseを返す
        return(false);
    }
Exemple #3
0
    // Start is called before the first frame update
    void Start()
    {
        List <string> deck = ThreeOfSpades.GenerateDeck();

        threeOfSpades = FindObjectOfType <ThreeOfSpades>();
        userInput     = FindObjectOfType <UserInput>();
        int i = 0;

        foreach (string card in deck)
        {
            if (this.name == card)
            {
                cardUp = threeOfSpades.cardFaces[i];
                break;
            }
            i++;
        }
        spriteRenderer = GetComponent <SpriteRenderer>();
        canSelect      = GetComponent <CanSelect>();
    }
    void Start()
    {
        List <string> deck = CardSetting.DeckCreate();

        cardSetting = FindObjectOfType <CardSetting>();
        userInput   = FindObjectOfType <UserInput>();

        int i = 0;

        foreach (string card in deck)
        {
            if (this.name == card)
            {
                cardFace = cardSetting.faceSprites[i];
                break;
            }
            i++;
        }
        spriteRenderer = GetComponent <SpriteRenderer>();
        canSelect      = GetComponent <CanSelect>();
    }
Exemple #5
0
        public void Save(System.IO.FileStream fs, System.Xml.XmlWriter fi)
        {
            UInt16 eSize = (UInt16)(Text.Length + 14);

            utftUtils.Save2Bytes(fs, eSize);
            fs.WriteByte((byte)GetItemTypeNumber());
            fs.WriteByte(ID);
            utftUtils.Save2Bytes(fs, (UInt16)X);
            utftUtils.Save2Bytes(fs, (UInt16)Y);
            fs.WriteByte((byte)width);
            fs.WriteByte((byte)heigth);
            UInt16 clr = utftUtils.GetUTFTColorBytes(BackColor);

            utftUtils.Save2Bytes(fs, clr);
            clr = utftUtils.GetUTFTColorBytes(FontColor);
            utftUtils.Save2Bytes(fs, clr);
            fs.WriteByte(Convert.ToByte(_canSelect));
            fs.WriteByte((byte)Text.Length);
            char[] arr = Text.ToCharArray();
            for (int i = 0; i < Text.Length; i++)
            {
                fs.WriteByte((byte)arr[i]);
            }

            fi.WriteStartElement("Element");
            fi.WriteElementString("ItemType", ItemType);
            fi.WriteElementString("ID", ID.ToString());
            fi.WriteElementString("X", X.ToString());
            fi.WriteElementString("Y", Y.ToString());
            fi.WriteElementString("Width", width.ToString());
            fi.WriteElementString("Height", heigth.ToString());
            fi.WriteElementString("BackColor", BackColor.ToString());
            fi.WriteElementString("FontColor", FontColor.ToString());
            fi.WriteElementString("CanSelect", CanSelect.ToString());
            fi.WriteElementString("Text", Text);
            fi.WriteElementString("ItemName", ItemName);
            fi.WriteEndElement();
        }
Exemple #6
0
    /// <summary>
    /// 対象のカードが条件を満たしているならトリガーを解除する
    /// </summary>
    /// <param name="selected">選択されたカード</param>
    /// <returns>true   めくれない</returns>
    /// <returns>false  めくれる</returns>
    bool Blocked(GameObject selected)
    {
        CanSelect cs2 = selected.GetComponent <CanSelect>();

        if (cs2.inDeckPile == true)
        {
            //山札からめくったカードが最初のであれば選択可能な状態にする
            //それ以外は選択不可
            if (cs2.name == cardSetting.flipCardsOnDisplay.First())
            {
                return(false);
            }
        }
        else
        {
            //番札にあるめくられていないカードが一番上にあるならめくれるようにする
            //それ以外は判定不可
            if (cs2.name == cardSetting.bottoms[cs2.row].Last())
            {
                return(false);
            }
        }
        return(true);
    }
    public void ExecuteCommand()
    {
        //記録するデータの保存----------------------------------------------------------

        //番札
        bottom0     = new List <string>(cardSetting.number0);
        bottom1     = new List <string>(cardSetting.number1);
        bottom2     = new List <string>(cardSetting.number2);
        bottom3     = new List <string>(cardSetting.number3);
        bottom4     = new List <string>(cardSetting.number4);
        bottom5     = new List <string>(cardSetting.number5);
        bottom6     = new List <string>(cardSetting.number6);
        bottomsData = new List <string>[] { bottom0, bottom1, bottom2, bottom3, bottom4, bottom5, bottom6 };

        //CanSelect
        cs1 = slot.GetComponent <CanSelect>();
        cs2 = selected.GetComponent <CanSelect>();
        //ポジション
        removedPos = slot.transform.position;
        //親子関係
        parented = slot.transform.parent.gameObject;
        //デッキ
        memoryDeck = new List <string>(cardSetting.deck);
        //めくられたカードの情報
        flipCards = new List <string>(cardSetting.flipCardsOnDisplay);
        //組札にあるか
        _suite = cs1.suite;
        //組札の情報
        if (cs1.suite)
        {
            suiterowNum = cardSetting.suitePos[cs1.row].GetComponent <CanSelect>().value;
            suitemark   = cardSetting.suitePos[cs1.row].GetComponent <CanSelect>().mark;
        }
        //デッキにあるかどうか
        inDeck = cs1.inDeckPile;
        //列
        cs1rowNum = cs1.row;
        //---------------------------------------------------------------------------------


        float OffsetY;

        //後に選択されたのが組札、もしくは先に選択されたカードが13の場合はカードをずらすY座標を0。
        //それ以外は少し下げる
        if (cs2.suite || (!cs2.suite && cs1.value == 13))
        {
            OffsetY = 0;
        }
        else
        {
            OffsetY = 0.5f;
        }

        //先に選択されたカードが後に選択されたカードの子になる
        slot.transform.position = new Vector3(selected.transform.position.x, selected.transform.position.y - OffsetY, selected.transform.position.z - 0.01f);
        slot.transform.parent   = selected.transform;


        //山札の場合は移動したカードを山札の配列から取り除く
        if (cs1.inDeckPile)
        {
            //int t = cardSetting.flipCardsOnDisplay.IndexOf(slot.name);
            //Debug.Log(t);
            cardSetting.flipCardsOnDisplay.Remove(slot.name);
            cardSetting.deck.Remove(slot.name);
        }
        //組札間での移動(1のみ)
        else if (cs1.suite && cs2.suite && cs1.value == 1)//後に選択された組札に置けるかはStackable関数で判定済みなのでcs2にはnullが入っていることになっている
        {
            cardSetting.suitePos[cs1.row].GetComponent <CanSelect>().value = 0;
            cardSetting.suitePos[cs1.row].GetComponent <CanSelect>().mark  = null;
        }
        //先に選択されたカードが組札から取り除かれるとき
        else if (cs1.suite)
        {
            cardSetting.suitePos[cs1.row].GetComponent <CanSelect>().value = cs1.value - 1;
        }
        //移動したカードを元の配列から取り除く
        else
        {
            cardSetting.bottoms[cs1.row].Remove(slot.name);
        }

        //山札から取り除かれた以降、山札にカードを意図的に追加できないようにする
        cs1.inDeckPile = false;
        cs1.row        = cs2.row;

        //組札への移動の時
        if (cs2.suite)
        {
            cardSetting.suitePos[cs1.row].GetComponent <CanSelect>().value = cs1.value;
            cardSetting.suitePos[cs1.row].GetComponent <CanSelect>().mark  = cs1.mark;
            cs1.suite = true;
        }
        //それ以外
        else
        {
            cs1.suite = false;
        }
    }
Exemple #8
0
 public CardFlipCommand(CanSelect _canSelect)
 {
     canSelect = _canSelect;
 }
 public override string ToString()
 {
     return("PermissionId = " + PermissionId.ToString() + ",RoleId = " + RoleId.ToString() + ",PageId = " + PageId.ToString() + ",CanCreate = " + CanCreate.ToString() + ",CanDelete = " + CanDelete.ToString() + ",CanUpdate = " + CanUpdate.ToString() + ",CanSelect = " + CanSelect.ToString() + ",AssignedBy = " + AssignedBy.ToString() + ",CompanyId = " + CompanyId.ToString());
 }