/// <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; } } } } }
/// <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); }
// 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>(); }
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(); }
/// <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; } }
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()); }