public void PutACardOnTable(GameObject card, int UniqueID) { // Set a tag to reflect where this card is foreach (Transform t in card.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Card"; } // pass this card to tableVisual class AddCard(card); // Bring card to front while it travels from draw spot to hand WhereIsTheCardOrCreature w = card.GetComponent <WhereIsTheCardOrCreature>(); w.BringToFront(); w.Slot = 0; w.VisualState = VisualStates.Transition; // move card to the hand; Sequence s = DOTween.Sequence(); // displace the card so that we can select it in the scene easier. s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, GlobalSettings.Instance.CardTransitionTimeFast)); s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTimeFast)); s.OnComplete(() => ChangeLastCardStatusToOnTable(card, w)); }
// method to create a new creature and add it to the table public void AddCreatureAtIndex(CardAsset ca, int UniqueID, int index) { GameObject creature = GameObject.Instantiate(GlobalSettings.Instance.CreaturePrefab, this.transform.position, Quaternion.identity) as GameObject; OneCreatureManager manager = creature.GetComponent <OneCreatureManager>(); manager.cardAsset = ca; manager.LoadFromCardAsset(); foreach (Transform t in creature.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Creature"; } creature.transform.SetParent(this.transform); CreaturesOnTable.Insert(index, creature); IDHolder id = creature.AddComponent <IDHolder>(); id.UniqueID = UniqueID; CalculateCardPositions(); // end command execution Command.CommandExecutionComplete(); }
public void GivePlayerACard(CardAsset cardAsset, int UniqueID) { GameObject card = CreateACardAtPosition(cardAsset, slots.Children[0].transform.localPosition); foreach (Transform transform in card.GetComponentsInChildren <Transform>()) { transform.tag = owner.ToString() + "Card"; } AddCard(card); WhereIsCard whereIsCard = card.GetComponent <WhereIsCard>(); IDHolder id = card.AddComponent <IDHolder>(); id.UniqueID = UniqueID; Sequence sequence = DOTween.Sequence(); sequence.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, 0)); if (TakeCardsOpenly) { sequence.Insert(0f, card.transform.DORotate(Vector3.zero, 0)); } sequence.OnComplete(() => ChangeLastCardStatusToInHand(card, whereIsCard)); }
public void AddCardAtIndex(CardAsset cardAsset, int UniqueID, int index) { GameObject card = Instantiate(ViewManager.Instance.cardOnBoardPrefab, slots.Children[index].transform.position, Quaternion.identity) as GameObject; CardOnBoardView cardView = card.GetComponent <CardOnBoardView>(); cardView.cardAsset = cardAsset; cardView.displayCardOnBoardVisual(); foreach (Transform transform in card.GetComponentsInChildren <Transform>()) { transform.tag = owner.ToString() + "CardOnFrontRow"; } card.transform.SetParent(slots.transform); cardsInRow.Insert(index, card); WhereIsCard whereIsCard = card.GetComponent <WhereIsCard>(); whereIsCard.Slot = index; whereIsCard.VisualState = VisualStates.LowBoardFrontRow; IDHolder id = card.AddComponent <IDHolder>(); id.UniqueID = UniqueID; ShiftSlotsGameObjectAccordingToNumberOfCardsOnBoard(); PlaceCardsOnNewSlots(); Command.CommandExecutionComplete(); }
// gives player a new card from a given position public void GivePlayerACard(CardAsset cardAsset, int UniqueID, bool fast = false, bool fromDeck = true) { var lastCardPosition = GetLastCardPosition(); var originPosition = fromDeck ? DeckTransform.position : OtherCardDrawSourceTransform.position; var card = CreateACardAtPosition(cardAsset, originPosition, new Vector3(0f, -180f, 0f)); foreach (Transform t in card.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Card"; } AddCard(card); var whereIs = card.GetComponent <WhereIsTheCardOrCreature>(); if (whereIs == null) { whereIs = card.GetComponentInChildren <WhereIsTheCardOrCreature>(); } whereIs.BringToFront(); whereIs.Slot = 0; whereIs.VisualState = VisualStates.Transition; // pass a unique ID to this card. IDHolder id = card.AddComponent <IDHolder>(); id.UniqueID = UniqueID; // move card to the hand; Sequence s = DOTween.Sequence(); if (!fast) { s.Append(card.transform.DOMove(DrawPreviewSpot.position, GlobalSettings.Instance.CardTransitionTime)); if (TakeCardsOpenly) { s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTime)); } s.AppendInterval(GlobalSettings.Instance.CardPreviewTime); s.Append(card.transform.DOLocalMove(lastCardPosition, GlobalSettings.Instance.CardTransitionTime)); } else { s.Append(card.transform.DOLocalMove(lastCardPosition, GlobalSettings.Instance.CardTransitionTimeFast)); if (TakeCardsOpenly) { s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTimeFast)); } } s.OnComplete(() => { ChangeLastCardStatusToInHand(card, whereIs); AdjustCardsInHand(); }); }
// gives player a new card from a given position public void GivePlayerACard(ScriptableObject c, int UniqueID, bool fast = false, bool fromDeck = true) { GameObject card; card = CreateACardAtPosition(c, DeckTransform.position, new Vector3(0f, -179f, 0f)); // Set a tag to reflect where this card is foreach (Transform t in card.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Card"; } // pass this card to HandVisual class AddCard(card); // Bring card to front while it travels from draw spot to hand WhereIsTheCardOrCreature w = card.GetComponent <WhereIsTheCardOrCreature>(); w.BringToFront(); w.Slot = 0; w.VisualState = VisualStates.Transition; // pass a unique ID to this card. IDHolder id = card.AddComponent <IDHolder>(); id.UniqueID = UniqueID; // move card to the hand; Sequence s = DOTween.Sequence(); if (!fast) { // Debug.Log ("Not fast!!!"); s.Append(card.transform.DOMove(DrawPreviewSpot.position, GlobalSettings.Instance.CardTransitionTime)); if (TakeCardsOpenly) { s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTime)); } else { s.Insert(0f, card.transform.DORotate(new Vector3(0f, 179f, 0f), GlobalSettings.Instance.CardTransitionTime)); } s.AppendInterval(GlobalSettings.Instance.CardPreviewTime); // displace the card so that we can select it in the scene easier. s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, GlobalSettings.Instance.CardTransitionTime)); } else { // displace the card so that we can select it in the scene easier. s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, GlobalSettings.Instance.CardTransitionTimeFast)); if (TakeCardsOpenly) { s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTimeFast)); } } s.OnComplete(() => ChangeLastCardStatusToInHand(card, w)); }
public void GivePlayerACard(AdventureAsset ca, int UniqueID) { GameObject card; card = CreateACardAtPosition(ca, new Vector3(0, 0, 0), new Vector3(0, 0, 0)); foreach (Transform t in card.GetComponentInChildren <Transform>()) { t.tag = owner.ToString() + "Card"; } }
// METODA KTORA DODAJE NOWĄ POSTAC DO TABLE VISUAL SPRAWDZAJĄC PO JEGO INDEKSIE public void AddCreatureAtIndex(CardAsset ca, int UniqueID, int index) { // Tworzy nową postać z preefaba (było już tłumaczone w HandVisual) GameObject creature = GameObject.Instantiate(GlobalSettings.Instance.CreaturePrefab, slots.Children[index].transform.position, Quaternion.identity) as GameObject; // Do stworzonej postaci przypisuje to co jest w CardAsset (było tłumaczone w HandVisual) OneCreatureManager manager = creature.GetComponent <OneCreatureManager>(); manager.cardAsset = ca; manager.ReadCreatureFromAsset(); // Ustawienie tagu, aby odzwierciedlić miejsce, w którym znajduje się ta karta // card.GetComponentsInChildren<Transform> - to zwrócony komponent typu Transform z obiektu card // Chodzi o przypisanie tagu do tego obiektu, a tag znajduje się w klasie Transform (jest to klasa systemowa) foreach (Transform t in creature.GetComponentsInChildren <Transform>()) { // Odwołanie się do tagu z Transform i przypisanie do niego zwróconego łańcucha znaków [ToString()] z "Owner" i dodanie do niego "Card" t.tag = owner.ToString() + "Creature"; } // umieszczamy stworzony obiekt "creature" na pozycji rodzica w slocie który jest na TableVisual creature.transform.SetParent(slots.transform); // Dodajemy stworzenie do listy stworzeń na Table CreaturesOnTable.Insert(index, creature); // niech to stworzenie zna swoją pozycję xD // Zainicjowanie zmiennej w typu WITCOC i przypisanie do niego creature z komponentem pobranym z WITCOC WhereIsTheCardOrCreature w = creature.GetComponent <WhereIsTheCardOrCreature>(); // Odwołanie się do zmiennej Slot w WITCOC i przypisanie mu wartości ze zmiennej index w.Slot = index; // Sprawdzamy na co ustawiony jest owner, jeśli jest równy parametrowi "Low" z enum AreaPosition to: if (owner == AreaPosition.Low) { w.VisualState = VisualStates.LowTable; // do zmiennej VisualState z klasy WITCOC przypisujemy parametr LowTable z enum VisualStates } else { w.VisualState = VisualStates.TopTable; // jeśli nie to do zmiennej przypisujemy TopTable z enum VisualStates } // Dodaj ID do tego stworzenia // Zainicjowanie zmiennej id typu IDHolder i przypisanie do niego creature z dodanym komponentem IDHolder IDHolder id = creature.AddComponent <IDHolder>(); // do UniqueID z klasy IDHolder przypisujemy UniqueID pobrane z funkcji, gdzieś to już tłumaczyłęm czemu tak (chyba w HandVisual) id.UniqueID = UniqueID; // po dodaniu nowego stwora zaktualizuj rozmieszczenie wszystkich innych stworzeń ShiftSlotsGameObjectAccordingToNumberOfCreatures(); // metoda opisana niżej PlaceCreaturesOnNewSlots(); // metoda opisana niżej // Zakończ wykonywanie poleceń Command.CommandExecutionComplete(); //wywołanie metody z klasy Command }
// method to create a new creature and add it to the table public void AddCreatureAtIndex(CardAsset ca, int UniqueID, int index) { // create a new creature from prefab GameObject creature = Instantiate(GlobalSettings.Instance.CreaturePrefab, slots.Children[index].transform.position, Quaternion.identity) as GameObject; // apply the look from CardAsset OneCreatureManager manager = creature.GetComponent <OneCreatureManager>(); manager.cardAsset = ca; manager.ReadCreatureFromAsset(); // add tag according to owner foreach (Transform t in creature.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Creature"; } // parent a new creature gameObject to table slots creature.transform.SetParent(slots.transform); // add a new creature to the list CreaturesOnTable.Insert(index, creature); // let this creature know about its position WhereIsTheCardOrCreature w = creature.GetComponent <WhereIsTheCardOrCreature>(); w.Slot = index; if (owner == AreaPosition.Bottom) { w.VisualState = VisualStates.BottomTable; } else { w.VisualState = VisualStates.TopTable; } // add our unique ID to this creature IDHolder id = creature.AddComponent <IDHolder>(); id.uniqueID = UniqueID; // after a new creature is added update placing of all the other creatures ShiftSlotsGameObjectAccordingToNumberOfCreatures(); PlaceCreaturesOnNewSlots(); w.SetTableSortingOrder(); // Angle monster appropriately creature.transform.rotation = creature.transform.parent.parent.rotation; // end command execution Command.CommandExecutionComplete(); DebugManager.Instance.DebugMessage(string.Format("{0} player played {1} on their field!", owner, ca.name), DebugManager.MessageType.Game, creature); }
/// <summary> /// Instancia el ente y configura sus valores. /// </summary> /// <param name="ente">Ente.</param> /// <param name="ca">Ca.</param> /// <param name="idUnico">Identifier unico.</param> /// <param name="indiceSlot">Indice slot.</param> private void ConfigurarEnte(GameObject ente, CartaBase ca, int idUnico, int indiceSlot) { string tagEnte = ""; OneEnteManager manager = null; if (ente.name.Contains("Magica")) { tagEnte = "Magica"; manager = ente.GetComponent <OneMagicaManager> (); } else { tagEnte = "Criatura"; manager = ente.GetComponent <OneCreatureManager>(); } manager.CartaAsset = ca; manager.LeerDatosAsset(); foreach (Transform t in ente.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + tagEnte; } // parent a new creature gameObject to table slots ente.transform.SetParent(slots.transform); // add a new creature to the list // Debug.Log ("insert index: " + index.ToString()); EntesOnTable.Insert(indiceSlot, ente); // let this creature know about its position WhereIsTheCardOrEntity w = ente.GetComponent <WhereIsTheCardOrEntity>(); w.Slot = indiceSlot; if (ente.tag.Contains("Low")) { //PETA w.EstadoVisual = VisualStates.MesaJugadorAbajo; } else { w.EstadoVisual = VisualStates.MesaJugadorArriba; } if (ente.GetComponents <AudioSource> () [0] != null && ente.GetComponents <AudioSource> () [0].clip != null) { ente.GetComponents <AudioSource>()[0].Play(); } // add our unique ID to this creature IDHolder id = ente.AddComponent <IDHolder>(); id.UniqueID = idUnico; ActualizarSlots(); MoverSlotCartas(); // TODO: remove this Comandas.Instance.CompletarEjecucionComanda(); }
// method to create a new creature and add it to the table public void AddCreatureAtIndex(CardAsset ca, int UniqueID, int index) { // create a new creature from prefab GameObject creature = GameObject.Instantiate(GlobalSettings.Instance.CreaturePrefab, slots.children[index].transform.position, Quaternion.identity) as GameObject; // apply the look from CardAsset OneCreatureManager manager = creature.GetComponent <OneCreatureManager>(); manager.cardAsset = ca; manager.ReadCreatureFromAsset(); // add tag according to owner foreach (Transform t in creature.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Creature"; } // parent a new creature gameObject to table slots creature.transform.SetParent(slots.transform); // add a new creature to the list CreaturesOnTable.Insert(index, creature); // let this creature know about its position WhereIsTheCardOrCreature w = creature.GetComponent <WhereIsTheCardOrCreature>(); w.Slot = index; if (owner == AreaPosition.Low) { w.VisualState = VisualStates.LowTable; } else { w.VisualState = VisualStates.TopTable; } // add our unique ID to this creature IDHolder id = creature.AddComponent <IDHolder>(); id.UniqueID = UniqueID; // after a new creature is added update placing of all the other creatures ShiftSlotsGameObjectAccordingToNumberOfCreatures(); PlaceCreaturesOnNewSlots(); // end command execution Command.CommandExecutionComplete(); }
public void AddCreatureAtIndex(CardAsset ca, int UniqueID, int index) { // создаем новый gameobject GameObject creature = GameObject.Instantiate(GlobalSettings.Instance.CreaturePrefab, slots.Children[index].transform.position, Quaternion.identity) as GameObject; // настраиваем внешний вид карты из ассета OneCreatureManager manager = creature.GetComponent <OneCreatureManager>(); manager.cardAsset = ca; manager.ReadCreatureFromAsset(); // добавляем тэг в соответствии с владельцем карты foreach (Transform t in creature.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Creature"; } // привязываем созданный объект к слотам на столе creature.transform.SetParent(slots.transform); // добавляем в список (на определенное место) CreaturesOnTable.Insert(index, creature); // позволяем созданному объекту знать свое местоположение WhereIsTheCardOrCreature w = creature.GetComponent <WhereIsTheCardOrCreature>(); w.Slot = index; if (owner == AreaPosition.Low) { w.VisualState = VisualStates.LowTable; } else { w.VisualState = VisualStates.TopTable; } // добавляем уникальный ID IDHolder id = creature.AddComponent <IDHolder>(); id.UniqueID = UniqueID; // обновляем местоположение остальных существ на столе ShiftSlotsGameObjectAccordingToNumberOfCreatures(); PlaceCreaturesOnNewSlots(); // заканчиваем выполнение комманды Command.CommandExecutionComplete(); }
public void GetCardFromDeck(CardAsset ca, int cardID, bool fast) { GameObject card; Transform DeckTransform = table.deckPosition; card = CreateACardAtPosition(ca, DeckTransform.position, new Vector3(0f, -179f, 0f)); // Set a tag to reflect where this card is foreach (Transform t in card.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Card"; } // pass this card to HandVisual class AddCard(card); // Bring card to front while it travels from draw spot to hand WhereIsTheCardOrCreature w = card.GetComponent <WhereIsTheCardOrCreature>(); w.BringToFront(); w.Slot = 0; w.VisualState = VisualStates.Transition; // pass a unique ID to this card. IDHolder id = card.AddComponent <IDHolder>(); id.UniqueID = cardID; // move card to the hand; Sequence s = DOTween.Sequence(); if (!fast) { // Debug.Log ("Not fast!!!"); s.Append(card.transform.DOLocalMove(gameObject.transform.localPosition, GlobalSettings.Instance.CardTransitionTime)); s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTime)); } else { // displace the card so that we can select it in the scene easier. s.Append(card.transform.DOLocalMove(gameObject.transform.localPosition, GlobalSettings.Instance.CardTransitionTimeFast)); s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTimeFast)); } s.OnComplete(() => ChangeLastCardStatusToInSlot(card, w)); }
public void AddCreatureAtIndex(CardAsset ca, int UniqueID, int index) { GameObject creature = GameObject.Instantiate(GlobalSettings.Instance.CreaturePrefab, slots.Children[index].transform.position, Quaternion.identity) as GameObject; OneCreatureManager manager = creature.GetComponent <OneCreatureManager>(); manager.cardAsset = ca; manager.ReadCreatureFromAsset(); // add tag according to owner foreach (Transform t in creature.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Creature"; } creature.transform.SetParent(slots.transform); CreaturesOnTable.Insert(index, creature); WhereIsTheCardOrCreature w = creature.GetComponent <WhereIsTheCardOrCreature>(); w.Slot = index; if (owner == AreaPosition.Low) { w.VisualState = VisualStates.LowTable; } else { w.VisualState = VisualStates.TopTable; } IDHolder id = creature.AddComponent <IDHolder>(); id.UniqueID = UniqueID; ShiftSlotsGameObjectAccordingToNumberOfCreatures(); PlaceCreaturesOnNewSlots(); Command.CommandExecutionComplete(); }
// CARD DRAW METHODS public void GivePlayerACard(CardAsset c, int UniqueID, bool fast = false, bool fromDeck = true) { GameObject card; if (fromDeck) { card = CreateACardAtPosition(c, DeckTransform.position, new Vector3(0f, -179f, 0f)); } else { card = CreateACardAtPosition(c, OtherCardDrawSourceTransform.position, new Vector3(0f, -179f, 0f)); } // save this as visual representation in CardLogic // Player ownerPlayer = GlobalSettings.Instance.Players[owner]; //Debug.Log(ownerPlayer); //Debug.Log(ownerPlayer.hand); //Debug.Log("CArdsInHand.Count: "+ ownerPlayer.hand.CardsInHand.Count); //Debug.Log("Attempted placeInHand: " +placeInHand); // ownerPlayer.hand.CardsInHand[0].VisualRepresentation = card; //Debug.Log(ownerPlayer.hand); // Set a tag to reflect where this card is foreach (Transform t in card.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Card"; } // pass this card to HandVisual class AddCard(card); // let the card know about its place in hand. WhereIsTheCardOrCreature w = card.GetComponent <WhereIsTheCardOrCreature>(); w.BringToFront(); w.Slot = 0; // pass a unique ID to this card. IDHolder id = card.AddComponent <IDHolder>(); id.UniqueID = UniqueID; // save this card to change its state to "Hand" when it arrives to the hand. LastDealtCard = card; // move card to the hand; Sequence s = DOTween.Sequence(); if (!fast) { Debug.Log("Not fast!!!"); s.Append(card.transform.DOMove(DrawPreviewSpot.position, GlobalSettings.Instance.CardTransitionTime)); if (TakeCardsOpenly) { s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTime)); } else { s.Insert(0f, card.transform.DORotate(new Vector3(0f, 179f, 0f), GlobalSettings.Instance.CardTransitionTime)); } s.AppendInterval(GlobalSettings.Instance.CardPreviewTime); // displace the card so that we can select it in the scene easier. s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, GlobalSettings.Instance.CardTransitionTime)); } else { // displace the card so that we can select it in the scene easier. s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, GlobalSettings.Instance.CardTransitionTimeFast)); if (TakeCardsOpenly) { s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTimeFast)); } } s.OnComplete(() => ChangeLastCardStatusToInHand(card, w)); }
// method to create a new creature and add it to the table public void AddCardAtIndex(CardAsset ca, GameObject itemCard, int UniqueID, int index) { GameObject targetSlot; if (index == 0) { targetSlot = leftSlot; } else { targetSlot = rightSlot; } Debug.Log("Adding CardAtIndex: " + ca.ToString() + itemCard.ToString() + UniqueID.ToString() + index); // create a new creature from prefab // GameObject itemCard = GameObject.Instantiate(GlobalSettings.Instance.ItemCardPrefab, slots.Children[index].transform.position, Quaternion.identity) as GameObject; itemCard.transform.position = slots.Children[index].transform.position; // apply the look from CardAsset OneCardManager manager = itemCard.GetComponent <OneCardManager>(); //manager.cardAsset = ca; //manager.ReadCardFromAsset(); // add tag according to owner foreach (Transform t in itemCard.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Item"; } // parent a new creature gameObject to table slots itemCard.transform.SetParent(targetSlot.transform); // add a new creature to the list if (index == 0) { leftCardOnTable = itemCard; } else { rightCardOnTable = itemCard; } // let this creature know about its position WhereIsTheCardOrCreature w = itemCard.GetComponent <WhereIsTheCardOrCreature>(); w.Slot = index; if (owner == AreaPosition.Low) { w.VisualState = VisualStates.LowTable; } else { w.VisualState = VisualStates.TopTable; } // add our unique ID to this creature if (itemCard.GetComponent <IDHolder>() == null) { Debug.Log("Tried to play a card without an IDHolder in TableVisual."); IDHolder id = itemCard.AddComponent <IDHolder>(); id.UniqueID = UniqueID; } // end command execution Command.CommandExecutionComplete(); }
// DAJE GRACZOWI NOWĄ KARTĘ Z POZYCJI public void GivePlayerACard(CardAsset c, int UniqueID, bool fast = false, bool fromDeck = true) { // Zainicjowanie obiektu card typu GameObject GameObject card; // Sprawdzenie dla pewności czy karta pochodzi z talii; fromDeck musi być true if (fromDeck) { // Przypisanie do obiektu card obiektu stworzonego za pomocą funkcji - CreateACardAtPosition() -> funkcja opisana wyżej // W nawiasach znajdują się argumenty na których ma operować funkcja card = CreateACardAtPosition(c, DeckTransform.position, new Vector3(0f, -179f, 0f)); } else { // Jeżeli fromDeck to false to karta nie jest z talii więc tworzy tą kartę, ale umieszcza ją w innym miejscu w grze card = CreateACardAtPosition(c, OtherCardDrawSourceTransform.position, new Vector3(0f, -179f, 0f)); } // Ustawienie tagu, aby odzwierciedlić miejsce, w którym znajduje się ta karta // card.GetComponentsInChildren<Transform> - to zwrócony komponent typu Transform z obiektu card // Chodzi o przypisanie tagu do tego obiektu, a tag znajduje się w klasie Transform (jest to klasa systemowa) foreach (Transform t in card.GetComponentsInChildren <Transform>()) { // Odwołanie się do tagu z Transform i przypisanie do niego zwróconego łańcucha znaków [ToString()] z "Owner" i dodanie do niego "Card" t.tag = owner.ToString() + "Card"; } AddCard(card); //wywołanie funkcji (jest opisana wyżej) // Zainicjowanie zmiennej w typu WITCOC przypisanie do niego komponentu z obiektu card typu WITCOC WhereIsTheCardOrCreature w = card.GetComponent <WhereIsTheCardOrCreature>(); w.BringToFront(); //odwołanie się do funkcji w klasie WITCOC i wywołanie jej (działanie funkcji opisane w danym skrypcie) w.Slot = 0; // Odwołanie się do zmiennej slot w klasie WITCOC i przypisanie jej wartości 0 w.VisualState = VisualStates.Transition; //Odwołanie się do zmiennej VisualState w klasie WITCOC (jest to zmienna typu enum) // I nadanie jej argumentu "Transition", który znajduje się w zbiorze enum VisualStates /// Ogólnie tutaj chodzi o to aby podczas gdy karta będzie podróżować z miejsca do ręki miała priorytet i była ponad wszystkimi /// Innymi obiektami (była najbardziej widoczna) // NADAJ TEJ KARCIE - ID // Zainicjowanie zmiennej id typu IDHolder i przypisanie do niej stworzonego komponentu z obiektu card, typu IDHolder IDHolder id = card.AddComponent <IDHolder>(); id.UniqueID = UniqueID; // Odwołanie się do zmiennej w klasie IDHolder i przypisanie do niej - jej (tzn jej ale będącej argumentem tej funkcji) xD /// Wiem to może być dziwne, ale to co przetwarza tamta klasa zapisuje się właśnie w UniqueID; chcemy to co ona wykona przekazać tą funkcją dalej /// Więc musimy to przekazać do jej argumentu - tym właśnie jest to drugie UniqueID po znaku równa się // PRZENIESIENIE KARTY DO RĘKI // Zainicjowanie zmiennej s typu Sequence /// Na przyszłość: jeśli chodzi o tym Sequence to jest to typ udostępniany przez bibliotekę DOTWEEN /// Tworzy ona zasób w której będzie można przetrzymywać stworzoną sekwencję animacji jaka ma być wykonywana /// Nie będę tutaj za dużo o niej pisać, ale polecam zapoznać się z dokumentacją DOTWEEN jest tam wszystko dokładnie wytłumaczone // Do "s" przypisujemy funkcję która będzie generować tą sekwencję (chodzi po prostu o dbanie o zdrowie swoich palcy i nie pisania za dużo) xD Sequence s = DOTween.Sequence(); // Na początku tej funkcji zainicjowaliśmy tą zmienną jako false, chodzi tutaj o wywołanie jej jako true, bez zmieniania jej na true if (!fast) { // Debug.Log ("Not fast!!!"); // s.Append() - Wywołanie funkcji Append zawartej w Sequence() /// Append() - dodaje animację do końca sekwencji // DrawPreviewSpot.position - przekazuje referencje pozycji jakie znajdują się w polu DrawPreviewSpot // GlobalSettings.Instance.CardTransitionTime - przekazuje referencje czasu jakie znajdują się w polu CardTransitionTime /// Jeśli chodzi o to ostatnie to jest to wytłumaczone w skrypcie GlobalSetting s.Append(card.transform.DOMove(DrawPreviewSpot.position, GlobalSettings.Instance.CardTransitionTime)); // Sprawdzanie czy można wyłożyć kartę, jeśli tak to jedzie z kodem -> if (TakeCardsOpenly) { // s.Insert() - Wywołanie funkcji Insert zawartej w Sequence() /// Insert() - umożliwia dodanie animacji do konkretnej pozycji czasowej // 0f - oznacza czas w którym ma zostać animacja umieszczona /// ogólnie w tej funkcji pierwszy argument zawsze oznacza czas // ard.transform.DORotate - wywołanie funkcji DORotate, która będzie działąć na Transform w obrębie card /// DORotate() - obraca cel do podanej wartości // Vector3.zero - pierwszy argument DORotate, jest końcowym stanem do jakiego ma zostać zmodyfikowany obiekt /// Na przyszłość: Vector3.zero - jest skrótem od Vector3 (0,0,0); ustawia obiekt na 0 // lobalSettings.Instance.CardTransitionTime - TO CO BYŁO OPISANE WYŻEJ ^ s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTime)); } //else //s.Insert(0f, card.transform.DORotate(new Vector3(0f, -179f, 0f), GlobalSettings.Instance.CardTransitionTime)); // s.AppendInterval() - Wywołanie funkcji AppendInterval zawartej w Sequence() // AppendInterval() - dodaje podany interwał do końca sekwencji // W nawiasie to co było wytłumaczane wyżej ^ s.AppendInterval(GlobalSettings.Instance.CardPreviewTime); // Dodajemy animację do końca sekwencji; w nawiasie podajemy jaka animacja ma się stworzyć // card.transform.DOLocalMove - odwołujemy się do tramsformacji w obrębie "card" i wywołujemy funkcję DOLocalMove /// DOLocalMove() - funkcja która przenosi obiekt do podanej wartości w nawiasie // slots.Children[0].transform.localPosition - odwołujemy się do lokalnej pozycji jaka jest zawarta w Children[0], który jest w "slots" /// Jest to pierwszy argument funkcji DOLocalMove(), zawsze oznacza pozycję do której ma się udać obiekt // Drugi argument to czas w jakim ma się przenieść obiekt, tutaj bez zmian to co powyżej było wyjaśniane ^ s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, GlobalSettings.Instance.CardTransitionTime)); } // Jeśli zmienna fast jest false to wykonuje poniższy kod -> else { // To samo co parę linikej wyżej z tą różnicą, że tym razem czas w jakim ma się wykonać animacja pochodzi od zmiennej CardTransitionTimeFast s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, GlobalSettings.Instance.CardTransitionTimeFast)); // Sprawdzenie czy można wyłożyć kartę z talii do ręki, TakeCardsOplenly musi być true aby ruszył się dalej kod -> if (TakeCardsOpenly) { // To samo co było wajaśniane wyżej w tej funkcji, dodajemy animację do konkretnej pozycji czasowej s.Insert(0f, card.transform.DORotate(Vector3.zero, GlobalSettings.Instance.CardTransitionTimeFast)); } } // Ustawienie wywołania zwrotnego (OnComplete), które zostanie wywołanie po zakończeniu animacji; w nawiasie podajemy co ma być wywołane /// => - to wyrażenie lambda, służy do wywoływania funkcji/metod. Przydatne przy delegatach. /// Nie wiem jak to wytłumaczyć na zrozumiały język. .może przykład: /// mamy delegację del Delegate -> przypisujemy do niego np x -> del Delegate = x / i teraz możemy użyć wyrażenia lambda aby określić argumenty /// del Delegate = x => x + x; /// Potem możemy wywołać Delegate(np. 5) i dostaniemy wynik 10, ponieważ podaną 5 lambda przypisuje do argumentów x+x /// I tak samo lambdę moża wykorzystać w funkcjach tak jak poniżej, mamy funkcję ChangeLastCardStatusToInHand i podane argumenty /// Lambda przekazuje te parametry do funkcji, potem ta funkcja się wykonuje i zwraca wynik do niej /// Wynik wędruje do OnComplete aby wykonać swoją robotę na podstawie swojego argumentu, który składa się z argumentów ChangeLastCardStatusToInHand /// W ten sposób stworzyliśmy tzw. Drzewo wyrażeń - coś się składa z czegoś, a to coś jeszcze z czegoś i tak do najniższej pozycji drzewa // A dlaczego tak? Bo funkcja ChangeLastCardStatusToInHand zmienia status karty; chcemy aby ten status wykonał się po tym jak karta trafi do ręki // Dlatego umieszczamy ją w OnComplete, która oznacza koniec animacji która przenosi kartę do ręki i w ten sposób mamy pewność że ta funkcja // Wykona się dopiero wtedy gdy karta będzie w ręce s.OnComplete(() => ChangeLastCardStatusToInHand(card, w)); }
/// <summary> /// Instancia la carta visual del jugador y la reparte. /// </summary> /// <param name="c">C.</param> /// <param name="UniqueID">Unique I.</param> /// <param name="fast">If set to <c>true</c> fast.</param> /// <param name="fromDeck">If set to <c>true</c> from deck.</param> /// <param name="rotarDeCara">If set to <c>true</c> rotar de cara.</param> public void DarCartaJugador(CartaPartida c, int UniqueID, bool fast = false, bool fromDeck = true, bool rotarDeCara = false) { if (!rotarDeCara) { fast = true; } GameObject card; if (fromDeck) { card = CrearCartaPorPosicion(c, DeckTransform.position, new Vector3(0f, -179f, 0f)); } else { card = CrearCartaPorPosicion(c, OtherCardDrawSourceTransform.position, new Vector3(0f, -179f, 0f)); } // save this as visual representation in CardLogic // Player ownerPlayer = GlobalSettings.Instance.Players[owner]; //Debug.Log(ownerPlayer); //Debug.Log(ownerPlayer.hand); //Debug.Log("CArdsInHand.Count: "+ ownerPlayer.hand.CardsInHand.Count); //Debug.Log("Attempted placeInHand: " +placeInHand); // ownerPlayer.hand.CardsInHand[0].VisualRepresentation = card; //Debug.Log(ownerPlayer.hand); // Set a tag to reflect where this card is foreach (Transform t in card.GetComponentsInChildren <Transform>()) { t.tag = owner.ToString() + "Card"; } // pass this card to HandVisual class AñadirCarta(card); // let the card know about its place in hand. WhereIsTheCardOrEntity w = card.GetComponent <WhereIsTheCardOrEntity>(); w.TraerAlFrente(); w.Slot = 0; w.EstadoVisual = VisualStates.Transicion; // pass a unique ID to this card. IDHolder id = card.AddComponent <IDHolder>(); id.UniqueID = UniqueID; // save this card to change its state to "Hand" when it arrives to the hand. LastDealtCard = card; if (card.GetComponent <AudioSource>() != null && ConfiguracionUsuario.Instance.Musica) { card.GetComponent <AudioSource>().Play(); } // move card to the hand; Sequence s = DOTween.Sequence(); if (!fast) { Debug.Log("Not fast!!!"); s.Append(card.transform.DOMove(DrawPreviewSpot.position, ConfiguracionUsuario.Instance.CardTransitionTime)); s.Insert(0f, card.transform.DORotate(Vector3.zero, ConfiguracionUsuario.Instance.CardTransitionTime)); s.AppendInterval(ConfiguracionUsuario.Instance.CardPreviewTime); // displace the card so that we can select it in the scene easier. s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, ConfiguracionUsuario.Instance.CardTransitionTime)); } else { // displace the card so that we can select it in the scene easier. if (rotarDeCara) { s.Insert(0f, card.transform.DORotate(Vector3.zero, ConfiguracionUsuario.Instance.CardTransitionTime)); } s.Append(card.transform.DOLocalMove(slots.Children[0].transform.localPosition, ConfiguracionUsuario.Instance.CardTransitionTime)); //if (TakeCardsOpenly) //s.Insert(0f, card.transform.DORotate(Vector3.zero, DatosGenerales.Instance.CardTransitionTimeFast)); } s.OnComplete(() => CambiarEstadoCartaAMano(card, w)); }