// CARD DRAW METHODS // creates a card and returns a new card as a GameObject GameObject CreateACardAtPosition(Cards c, Vector3 position, Vector3 eulerAngles) { // Instantiate a card depending on its type GameObject card; /*if (c.MaxHealth > 0) //We don't have creature cards now * { * // this card is a creature card * card = GameObject.Instantiate(GlobalSettings.Instance.CreatureCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; * } * else * {*/ // this is a spell: checking for targeted or non-targeted spell if (c.targets == TargetingOptions.NoTarget) { card = GameObject.Instantiate(GlobalSettings.Instance.NoTargetSpellCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; } else { card = GameObject.Instantiate(GlobalSettings.Instance.TargetedSpellCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; // pass targeting options to DraggingActions DragSpellOnTarget dragSpell = card.GetComponentInChildren <DragSpellOnTarget>(); dragSpell.Targets = c.targets; } //} // apply the look of the card based on the info from CardAsset OneCardManager manager = card.GetComponent <OneCardManager>(); manager.cardAsset = c; manager.ReadCardFromAsset(); return(card); }
GameObject CreateACardAtPosition(CardAsset cardAsset, Vector3 position, Vector3 eulerAngles) { GameObject card; if (cardAsset.IsCreatureCard) { card = GameObject.Instantiate(GlobalSettings.Instance.CreatureCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; } else { if (cardAsset.Targets == TargetingOptions.NoTarget) { card = GameObject.Instantiate(GlobalSettings.Instance.NoTargetSpellCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; } else { card = GameObject.Instantiate(GlobalSettings.Instance.TargetedSpellCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; // pass targeting options to DraggingActions DragSpellOnTarget dragSpell = card.GetComponentInChildren <DragSpellOnTarget>(); dragSpell.Targets = cardAsset.Targets; } } // apply the look of the card based on the info from CardAsset OneCardManager manager = card.GetComponentInChildren <OneCardManager>(); manager.cardAsset = cardAsset; manager.LoadFromCardAsset(); return(card); }
GameObject CreateACardAtPosition(CardAsset c, Vector3 position, Vector3 eulerAngles) { GameObject card; if (c.MaxHealth > 0) { card = GameObject.Instantiate(GlobalSettings.Instance.CreatureCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; } else { if (c.Targets == TargetingOptions.NoTarget) { card = GameObject.Instantiate(GlobalSettings.Instance.NoTargetSpellCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; } else { card = GameObject.Instantiate(GlobalSettings.Instance.TargetedSpellCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; // передает список допустимых целей скрипту, отвечающему за проверку корректности цели DragSpellOnTarget dragSpell = card.GetComponentInChildren <DragSpellOnTarget>(); dragSpell.Targets = c.Targets; } } OneCardManager manager = card.GetComponent <OneCardManager>(); manager.cardAsset = c; manager.ReadCardFromAsset(); return(card); }
// METODY WYKRYWANIA KART // TWORZY NOWĄ KARTĘ I ZWRACA JAKO GAMEOBJECT ///CardAsset c to zmienna która odwołuje się do klasy CardAsset GameObject CreateACardAtPosition(CardAsset c, Vector3 position, Vector3 eulerAngles) { // Wywołaj kartę w zależności od jej typu //Inicjalizuje zmienną "card" typu GameObject GameObject card; if (c.MaxHealth > 0) //Odwołuje się do pola MaxHealth w klasie CardAsset i sprawdza czy wartość jest większa od 0 { // Jeśli jest większe od 0 to jest to karta istoty więc jedzie z tym kodem ///Instantiate() - klonuje obiekt i zwraca ten klon więc: // Klonuje opiekt GameObject i zwraca klon o parametrach: // GlobalSettings.Instance.CreatureCardPrefab - odnosi się do pozycji w skrypcie GlobalSetting i klonuje Preefab karty postaci // Która jest do tej instancji przypisana // do argumentu posisiotn przypisywana jest pozycja karty /// Quaternion.Euler jest odpowiedzialny za rotację; samo Euler() - zwraca obót (kąt Eulera) // do argumentu eulerAngles jest przypisywany obrót który jest wykonywany przy obracaniu karty gdy się ją wykłada // as GameObject na końcu określa, jakiego typu jest obiekt w tym wypadku dalej GameObject card = GameObject.Instantiate(GlobalSettings.Instance.CreatureCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; } else { // jśli c.MaxHealth jest równe 0, to jest to karta czaru, więc następuje sprawdzanie czy jest to czar z celownikiem czy nie // Jeśli chodzi o celownik to, mam na myśli czary, przy których trzeba wyznaczyć obiekt w grze na który ma mieć ta karta wpływ // c.Targets - to odwołanie się do zmiennej Targets typu TargetingOptions (zmienna znajduje się w skrypcie CardAsset) // TargetingOptions.NoTarget - to odwołanie się do argumentu "NoTarget", który znajduje się w enum "TargetingOptions" // Jeżeli c.Targets równa się TargetingOptions.NoTarget to jedzie dalej z kodem -> if (c.Targets == TargetingOptions.NoTarget) { // To co powyżej w tej funkcji, z tą różnicą że teraz tworzymy klon z preefabem NoTargetSpellCardPrefab card = GameObject.Instantiate(GlobalSettings.Instance.NoTargetSpellCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; } // Jeśli c.Targets nie jest równe TargetingOptions.NoTarget to jest to czar ??globalny?? (bez celownika) // Więc jedzie z kodem poniżej -> else { // To co powyżej w tej funkcji, z tą różnicą, że teraz tworzymy klon z preefabem TargetedSpellCardPrefab card = GameObject.Instantiate(GlobalSettings.Instance.TargetedSpellCardPrefab, position, Quaternion.Euler(eulerAngles)) as GameObject; // Zainicjowanie obiektu dragSpell typy DragSpellOnTarget (jest to klasa) // Do dragSpell przypisuje zwrócony komponent (GetComponentInChildren) z obiektu card, typu DragSpellOnTarget /// GetComponentInChildren - zwraca komponent wyszukany po pierwszym wyszukiwaniu głębi, w sensie nie wchodzi za głęboko w obiekt /// Na przyszłość: Komponent zostanie zwrócony tylko wtedy gdy obiekt z którego będzie wyszukiwany będzie aktywny na scenie DragSpellOnTarget dragSpell = card.GetComponentInChildren <DragSpellOnTarget>(); // Odwołuje się do zmiennej Targets w klasie dragSpell i przypisuje do niej zmienną Targets z klasy CardAsset dragSpell.Targets = c.Targets; // Ogólnie chodzi tutaj o to aby przekazać do skryptu odpowiedzialnego za poruszanie kartami opcje jak ma kartę kierować } } // Zastosowanie wyglądu karty na podstawie informacji z CardAsset // Zainicjowanie zmiennej manager typu OneCardManager (to jest klasa/skrypt) // Przypisanie do manager komponentu pozyskanego (GetComponent) z obiektu card, typu OneCardManager OneCardManager manager = card.GetComponent <OneCardManager>(); // Odwołanie się do zmiennej "cardAsset" znajdującej się w "OneCardManager" i przypisanie do niej obiektu "c" (jest to cardAsset) manager.cardAsset = c; manager.ReadCardFromAsset(); //wywołanie funkcji znajdującej się w OneCardManager (więcej o niej w danym skrypcie) return(card); //Zwrócenie obiektu card }