Exemple #1
0
    public override void OnStartDrag()
    {
        tempVisualState             = whereIsThisCard.VisualState;
        whereIsThisCard.VisualState = VisualStates.Dragging;

        sr.enabled = true;
        lr.enabled = true;

        whereIsThisCard.SetHandSortingOrder();
    }
Exemple #2
0
    // PRZESUŃ WSZYSTKIE KARTY DO NOWYCH MIEJSC
    void PlaceCardsOnNewSlots()
    {
        //Sprawdza wszystkie elementy typu GameObject, które znajdują się w CardsInHand
        //Pierwszy argument to zmienna do której zostanie przypisana wartość listy
        // "in" standardowo wykorzystuje się w funkcji foreach
        // CardsInHand to lista po której będą sprawdzane obiekty
        foreach (GameObject g in CardsInHand)
        {
            // przenieś kartę do nowego slotu
            // Na aktualnym obiekcie "g" odczytuje jego pozycję (transform) i przenosi go do nowej pozycji po osi X (DOLocalMoveX)
            ///DOLocalMoveX to funkcja która pochodzi z dołączonej biblioteki DOTWEEN
            // Pierwszy parametr tej funkcji pobiera pozycję obiektu na osi x (slots.Children[CardsInHand.IndexOf(g)]) poprzez .transform.localPosition.x
            ///IndexOf(g) wyszukuje określony obiekt (g) i zwraca liczony od zera indeks pierwszego wystąpienia w obrębie całego CardsInHand
            /// transform.localPosition.x - to pozycja względem pozycji macierzystej po osi X
            /// W tym przypadku pozycją macierzystą jest pozycja slots.Children
            // Drugi parametr funkcji DOLocalMoveX odpowiada za czas w jakim ma nastąpić przesunięcie
            g.transform.DOLocalMoveX(slots.Children[CardsInHand.IndexOf(g)].transform.localPosition.x, 0.3f);

            // zastosuj prawidłową kolejność sortowania i wartość HandSlot na później
            //Inicjalizuje obiekt "w" typu WhereIsTheCardOrCreature
            ///Ogólnie jest to klasa odpowiedzialna za sprawdzanie gdzie znajduje się karta lub stworzenie w grze, więcej opisane w jego skrypcie
            // Przypisuje do "w" wszystkie komponenty, które znajdują się w obiekcie (GameObject) "g", tyle że przypisuje te komponenty
            // Które wymaga klasa WhereIsTheCardOrCreature; to tak jakby przerabiał GameObject na WhereIsTheCardOrCreature
            WhereIsTheCardOrCreature w = g.GetComponent <WhereIsTheCardOrCreature>();

            //WITCOC = WhereIsTheCardOrCreature
            //Pobiera zmienną slot z WITCOC i przypisuje do niego obiekt "g" z CardInHand, wcześniej wyszukany przez - IndexOf()
            w.Slot = CardsInHand.IndexOf(g);
            w.SetHandSortingOrder(); //wywołuje funkcję z WITCOC; funkcja ogólnie ustawia kolejność sortowania w ręce (więcej w jego skrypcie)
        }
    }
Exemple #3
0
    public override void OnEndDrag()
    {
        // 1) Check if we are holding a card over the table
        if (DragSuccessful())
        {
            // determine table position
            var tablePos = playerOwner.PArea.tableVisual.TablePosForNewCreature(Camera.main.ScreenToWorldPoint(
                                                                                    new Vector3(Input.mousePosition.x, Input.mousePosition.y, transform.position.z - Camera.main.transform.position.z)).x);

            // Debug.Log("Table Pos for new Creature: " + tablePos.ToString());
            // play this card
            playerOwner.PlayACreatureFromHand(GetComponent <IDHolder>().UniqueID, tablePos);
        }
        else
        {
            // Set old sorting order
            whereIsCard.SetHandSortingOrder();
            whereIsCard.VisualState = tempState;

            // Move this card back to its slot position
            var PlayerHand = playerOwner.PArea.handVisual;
            var oldCardPos = PlayerHand.slots.Children[savedHandSlot].transform.localPosition;
            transform.DOLocalMove(oldCardPos, 1f);
        }
    }
Exemple #4
0
    public override void OnCancelDrag()
    {
        whereIsCard.SetHandSortingOrder();
        whereIsCard.VisualState = tempState;
        HandVisual PlayerHand = playerOwner.PArea.handVisual;
        Vector3    oldCardPos = PlayerHand.slots.Children[savedHandSlot].transform.localPosition;

        transform.DOLocalMove(oldCardPos, 1f);
    }
 void PlaceCardsOnNewSlots()
 {
     foreach (GameObject g in CardsInHand)
     {
         g.transform.DOLocalMoveX(slots.Children[CardsInHand.IndexOf(g)].transform.localPosition.x, 0.3f);
         // apply correct sorting order and HandSlot value for later
         WhereIsTheCardOrCreature w = g.GetComponent <WhereIsTheCardOrCreature>();
         w.Slot = CardsInHand.IndexOf(g);
         w.SetHandSortingOrder();
     }
 }
    void PlaceCardsOnNewSlots()
    {
        foreach (GameObject g in CardsInHand)
        {
            g.transform.DOLocalMoveX(slots.Children[CardsInHand.IndexOf(g)].transform.localPosition.x, 0.3f);

            // корректный порядок сортировки (чтобы карты накладывались друг на друга)
            WhereIsTheCardOrCreature w = g.GetComponent <WhereIsTheCardOrCreature>();
            w.Slot = CardsInHand.IndexOf(g);
            w.SetHandSortingOrder();
        }
    }
Exemple #7
0
 /// <summary>
 /// After a new creature is added or an old creature dies, this method
 /// shifts all the creatures and places the creatures on new slots.
 /// </summary>
 void PlaceCardsOnNewSlots()
 {
     foreach (GameObject g in CardsOnTable)
     {
         g.transform.DOLocalMoveX(slots.Children[CardsOnTable.IndexOf(g)].transform.localPosition.x, 0.3f);
         // apply correct sorting order and HandSlot value for later
         // TODO: figure out if I need to do something here:
         // g.GetComponent<WhereIsTheCardOrCreature>().SetTableSortingOrder() = CreaturesOnTable.IndexOf(g);
         WhereIsTheCardOrCreature w = g.GetComponent <WhereIsTheCardOrCreature>();
         w.Slot = CardsOnTable.IndexOf(g);
         w.SetHandSortingOrder();
     }
 }
    void ChangeLastCardStatusToInHand(GameObject card, WhereIsTheCardOrCreature w)
    {
        //Debug.Log("Changing state to Hand for card: " + card.gameObject.name);
        if (owner == AreaPosition.Low)
        {
            w.VisualState = VisualStates.LowHand;
        }
        else
        {
            w.VisualState = VisualStates.TopHand;
        }

        w.SetHandSortingOrder();
        Command.CommandExecutionComplete();
    }
Exemple #9
0
    // this method will be called when the card arrived to table
    void ChangeLastCardStatusToOnTable(GameObject card, WhereIsTheCardOrCreature w)
    {
        //Debug.Log("Changing state to Hand for card: " + card.gameObject.name);
        if (owner == AreaPosition.Low)
        {
            w.VisualState = VisualStates.LowTable;
        }
        else
        {
            w.VisualState = VisualStates.TopTable;
        }

        // set correct sorting order
        w.SetHandSortingOrder();
        // end command execution for DrawACArdCommand
        Command.CommandExecutionComplete();
    }
Exemple #10
0
 public override void OnEndDrag()
 {
     if (DragSuccessful())
     {
         Debug.Log("Drag successful");
         // Determine to place card in left or right slot, based on if the user dragged to slot or table.
         if (DragTargetedLeftSlot())
         {
             Debug.Log("Drag targeted Left spot, playing to 0.");
             playerOwner.PlayItemFromHand(GetComponentInParent <IDHolder>().UniqueID, 0);
         }
         else if (DragTargetedRightSlot())
         {
             Debug.Log("Drag targeted Right slot, playing to 1");
             playerOwner.PlayItemFromHand(GetComponentInParent <IDHolder>().UniqueID, 1);
         }
         else
         {
             Debug.Log("Dragged to table, playing wherever.");
             int tablePos = playerOwner.PArea.tableVisual.TablePosForNewCard(Camera.main.ScreenToWorldPoint(
                                                                                 new Vector3(Input.mousePosition.x, Input.mousePosition.y, transform.position.z -
                                                                                             Camera.main.transform.position.z)).x);
             playerOwner.PlayItemFromHand(GetComponentInParent <IDHolder>().UniqueID, tablePos);
         }
     }
     else
     {
         // Set old sorting order
         whereIsCard.SetHandSortingOrder();
         whereIsCard.VisualState = tempState;
         //Move this card back to its slot position
         HandVisual PlayerHand = playerOwner.PArea.handVisual;
         Vector3    oldCardPos = PlayerHand.slots.Children[savedHandSlot].transform.localPosition;
         transform.DOLocalMove(oldCardPos, 1f);
     }
     transform.localPosition = new Vector3(0f, 0f, 0.4f);
     lr.enabled         = false;
     triangleSR.enabled = false;
 }
Exemple #11
0
    // ZMIANA OSTATNIEJ KARTY NA: InHand
    void ChangeLastCardStatusToInHand(GameObject card, WhereIsTheCardOrCreature w)
    {
        //Debug.Log("Zmiana stanu na kartę w ręce: " + card.gameObject.name);

        // Tutaj sprawdzamy do której dłoni ma trafić karta, czy do przeciwnika czy do naszej
        // Jeśli owner jest równy pozycji Low (jest to pozycja gracza na dole ekranu) to jedzie z kodem ->
        if (owner == AreaPosition.Low)
        {
            // odwołanie się do VisualState w WITCOC i nadanie jej argumentu "LowHand" z enum VisualStates
            w.VisualState = VisualStates.LowHand;
        }

        // Jeśli owner nie jest Low to jest Top (czyli jest na pozycji gracza na górze ekranu) i jedzie z tym kodem ->
        else
        {
            // odwołanie się do VisualState w WITCOC i nadanie jej argumentu "TopHand" z enum VisualStates
            w.VisualState = VisualStates.TopHand;
        }

        // ustawienie prawidłowej kolejności sortowania
        w.SetHandSortingOrder();            // odwołanie się do metody w WITCOC i wykonanie tej metody
        Command.CommandExecutionComplete(); // odwołanie się do metody w klasie Command i jej wywołanie
    }
Exemple #12
0
 public override void OnEndDrag()
 {
     // 1) Sprawdź, czy trzymamy kartę nad polem bitwy
     if (DragSuccessful())
     {
         // określ pozycję na polu bitwy
         int tablePos = playerOwner.PArea.tableVisual.TablePosForNewCreature(Camera.main.ScreenToWorldPoint(
                                                                                 new Vector3(Input.mousePosition.x, Input.mousePosition.y, transform.position.z - Camera.main.transform.position.z)).x);
         // Debug.Log("Table Pos dla nowego stworzenia: " + tablePos.ToString());
         // zagraj kartę
         playerOwner.PlayACreatureFromHand(GetComponent <IDHolder>().UniqueID, tablePos);
     }
     else
     {
         // Ustaw stary porządek sortowania
         whereIsCard.SetHandSortingOrder();
         whereIsCard.VisualState = tempState;
         // Przenieś tę kartę z powrotem do jej gniazda
         HandVisual PlayerHand = playerOwner.PArea.handVisual;
         Vector3    oldCardPos = PlayerHand.slots.Children[savedHandSlot].transform.localPosition;
         transform.DOLocalMove(oldCardPos, 1f);
     }
 }
Exemple #13
0
    public override void OnEndDrag()
    {
        Target = null;
        RaycastHit[] hits;
        // TODO: raycast here anyway, store the results in
        hits = Physics.RaycastAll(origin: Camera.main.transform.position,
                                  direction: (-Camera.main.transform.position + transform.position).normalized,
                                  maxDistance: 30f);

        foreach (var h in hits)
        {
            if (h.transform.tag.Contains("Player"))
            {
                // selected a Player
                Target = h.transform.gameObject;
            }
            else if (h.transform.tag.Contains("Creature"))
            {
                // hit a creature, save parent transform
                Target = h.transform.parent.gameObject;
            }
        }

        var targetValid = false;

        if (Target != null)
        {
            // determine an owner of this card
            Player owner = null;
            if (tag.Contains("Low"))
            {
                owner = GlobalSettings.Instance.LowPlayer;
            }
            else
            {
                owner = GlobalSettings.Instance.TopPlayer;
            }

            // check of we should play this spell depending on targeting options
            var targetID = Target.GetComponent <IDHolder>().UniqueID;
            switch (Targets)
            {
            case TargetingOptions.AllCharacters:
                owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                targetValid = true;
                break;

            case TargetingOptions.AllCreatures:
                if (Target.tag.Contains("Creature"))
                {
                    owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                    targetValid = true;
                }
                break;

            case TargetingOptions.EnemyCharacters:
                if (Target.tag.Contains("Creature") || Target.tag.Contains("Player"))
                {
                    // had to check that target is not a card
                    if ((tag.Contains("Low") && Target.tag.Contains("Top")) ||
                        (tag.Contains("Top") && Target.tag.Contains("Low")))
                    {
                        owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                        targetValid = true;
                    }
                }
                break;

            case TargetingOptions.EnemyCreatures:
                if (Target.tag.Contains("Creature"))
                {
                    // had to check that target is not a card or a player
                    if ((tag.Contains("Low") && Target.tag.Contains("Top")) ||
                        (tag.Contains("Top") && Target.tag.Contains("Low")))
                    {
                        owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                        targetValid = true;
                    }
                }
                break;

            case TargetingOptions.YourCharacters:
                if (Target.tag.Contains("Creature") || Target.tag.Contains("Player"))
                {
                    // had to check that target is not a card
                    if ((tag.Contains("Low") && Target.tag.Contains("Low")) ||
                        (tag.Contains("Top") && Target.tag.Contains("Top")))
                    {
                        owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                        targetValid = true;
                    }
                }
                break;

            case TargetingOptions.YourCreatures:
                if (Target.tag.Contains("Creature"))
                {
                    // had to check that target is not a card or a player
                    if ((tag.Contains("Low") && Target.tag.Contains("Low")) ||
                        (tag.Contains("Top") && Target.tag.Contains("Top")))
                    {
                        owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                        targetValid = true;
                    }
                }
                break;

            default:
                Debug.LogWarning("Reached default case in DragSpellOnTarget! Suspicious behaviour!!");
                break;
            }
        }

        if (!targetValid)
        {
            // not a valid target, return
            whereIsThisCard.VisualState = tempVisualState;
            whereIsThisCard.SetHandSortingOrder();
        }

        // return target and arrow to original position
        // this position is special for spell cards to show the arrow on top
        transform.localPosition = new Vector3(0f, 0f, 0.4f);
        sr.enabled         = false;
        lr.enabled         = false;
        triangleSR.enabled = false;
    }
Exemple #14
0
    public override void OnEndDrag()
    {
        Target = null;
        RaycastHit[] hits;
        // TODO: Zapisywanie gdzieś rezultatów
        hits = Physics.RaycastAll(origin: Camera.main.transform.position,
                                  direction: (-Camera.main.transform.position + this.transform.position).normalized,
                                  maxDistance: 30f);

        foreach (RaycastHit h in hits)
        {
            if (h.transform.tag.Contains("Player"))
            {
                // wybranie gracza
                Target = h.transform.gameObject;
            }
            else if (h.transform.tag.Contains("Creature"))
            {
                // zaatakuj stwora, zapisz transformację
                Target = h.transform.parent.gameObject;
            }
        }

        bool targetValid = false;

        if (Target != null)
        {
            // określić właściciela tej karty
            Player owner = null;
            if (tag.Contains("Low"))
            {
                owner = GlobalSettings.Instance.LowPlayer;
            }
            else
            {
                owner = GlobalSettings.Instance.TopPlayer;
            }

            // sprawdź, czy powinniśmy zagrać to zaklęcie w zależności od opcji kierowania
            int targetID = Target.GetComponent <IDHolder>().UniqueID;
            switch (Targets)
            {
            case TargetingOptions.AllCharacters:
                owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                targetValid = true;
                break;

            case TargetingOptions.AllCreatures:
                if (Target.tag.Contains("Creature"))
                {
                    owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                    targetValid = true;
                }
                break;

            case TargetingOptions.EnemyCharacters:
                if (Target.tag.Contains("Creature") || Target.tag.Contains("Player"))
                {
                    // Sprawdzenie czy cel nie jest kartą
                    if ((tag.Contains("Low") && Target.tag.Contains("Top")) ||
                        (tag.Contains("Top") && Target.tag.Contains("Low")))
                    {
                        owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                        targetValid = true;
                    }
                }
                break;

            case TargetingOptions.EnemyCreatures:
                if (Target.tag.Contains("Creature"))
                {
                    // Sprawdzenie czy cel nie jest kartą, lub graczem
                    if ((tag.Contains("Low") && Target.tag.Contains("Top")) ||
                        (tag.Contains("Top") && Target.tag.Contains("Low")))
                    {
                        owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                        targetValid = true;
                    }
                }
                break;

            case TargetingOptions.YourCharacters:
                if (Target.tag.Contains("Creature") || Target.tag.Contains("Player"))
                {
                    // Sprawdzenie czy cel nie jest kartą
                    if ((tag.Contains("Low") && Target.tag.Contains("Low")) ||
                        (tag.Contains("Top") && Target.tag.Contains("Top")))
                    {
                        owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                        targetValid = true;
                    }
                }
                break;

            case TargetingOptions.YourCreatures:
                if (Target.tag.Contains("Creature"))
                {
                    // Sprawdzenie czy cel nie jest kartą lub graczem
                    if ((tag.Contains("Low") && Target.tag.Contains("Low")) ||
                        (tag.Contains("Top") && Target.tag.Contains("Top")))
                    {
                        owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().UniqueID, targetID);
                        targetValid = true;
                    }
                }
                break;

            default:
                Debug.LogWarning("Reached default case in DragSpellOnTarget! Suspicious behaviour!!");
                break;
            }
        }

        if (!targetValid)
        {
            // Jeśli nie jest prawidłowym celem, wróć
            whereIsThisCard.VisualState = tempVisualState;
            whereIsThisCard.SetHandSortingOrder();
        }

        // powrót strzałki i celu do pierwotnej pozycji
        // ta pozycja jest szczególna dla kart zaklęć, aby pokazać strzałkę na górze
        transform.localPosition = new Vector3(0f, 0f, 0.4f);
        sr.enabled         = false;
        lr.enabled         = false;
        triangleSR.enabled = false;
    }
    public override void OnEndDrag()
    {
        target = null;
        RaycastHit[] hits;
        // TODO: raycast here anyway, store the results in
        hits = Physics.RaycastAll(origin: Camera.main.transform.position,
                                  direction: (-Camera.main.transform.position + this.transform.position).normalized,
                                  maxDistance: 30f);
        foreach (RaycastHit h in hits)
        {
            //Debug.Log(h, h.transform);
            // We're only looking for valid targets
            if (h.transform.tag.Contains("Player") && h.transform.GetComponent <AvatarVisual>().IsValidTarget)
            {
                // selected a Player
                DebugManager.Instance.DebugMessage("You've selected a player.", DebugManager.MessageType.Targeting);
                target = h.transform.gameObject;
                break;
            }
            else if (h.transform.tag.Contains("Creature") && h.transform.parent.GetComponent <OneCreatureManager>().IsValidTarget)
            {
                // hit a creature, save parent transform
                DebugManager.Instance.DebugMessage("You've selected a creature.", DebugManager.MessageType.Targeting);
                target = h.transform.parent.gameObject;
                break;
            }
            else if (h.transform.tag.Contains("HandCard"))
            {
                if ((h.transform.GetComponent <OneCardManager>() && h.transform.GetComponent <OneCardManager>().IsValidTarget) ||
                    (h.transform.parent.GetComponent <OneCardManager>() && h.transform.parent.GetComponent <OneCardManager>().IsValidTarget))
                {
                    // hit a spell, we're not ready yet
                    DebugManager.Instance.DebugMessage("You've selected a card.", DebugManager.MessageType.Targeting);
                    throw new NotImplementedException();
                }
            }
            else if (h.transform.tag.Contains("Full Table") && h.transform.GetComponent <FullTableVisual>().IsValidTarget)
            {
                // hit the full table, we're not ready yet
                DebugManager.Instance.DebugMessage("You've selected the entire table.", DebugManager.MessageType.Targeting);
                throw new NotImplementedException();
            }
        }

        if (target != null)
        {
            // determine an owner of this card
            Player owner = null;
            if (tag.Contains("Bottom"))
            {
                owner = GlobalSettings.Instance.BottomPlayer;
            }
            else
            {
                owner = GlobalSettings.Instance.TopPlayer;
            }

            int targetID = target.GetComponent <IDHolder>().uniqueID;

            owner.PlayASpellFromHand(GetComponentInParent <IDHolder>().uniqueID, targetID);
        }
        else
        {
            // not a valid target, return
            whereIsThisCard.VisualState = tempVisualState;
            whereIsThisCard.SetHandSortingOrder();
        }

        // return target and arrow to original position
        // this position is special for spell cards to show the arrow on top
        transform.localPosition = new Vector3(0f, 0f, 0.4f);
        sr.enabled         = false;
        lr.enabled         = false;
        triangleSR.enabled = false;
    }