private void InitCardBehavior(CardBehavior InCardBehavior, Card InCard)
 {
     InCardBehavior.Card = InCard;
     InCardBehavior.GetImageComponents();
     InCardBehavior.FrontImageComponent.sprite = InCard.ImageFront;
     InCardBehavior.BackImageComponent.sprite  = InCard.ImageBack;
 }
Beispiel #2
0
    public void CreatePrefab()
    {
        var go = GameObject.Instantiate(Resources.Load("Card") as GameObject);

        behavior = go.GetComponent <CardBehavior>();
        behavior.Init(data, this);
    }
    public void DrawCard()
    {
        int n = cardsInDeck.Count;

        if (n <= 0)
        {
            return;
        }
        // generate a card at deck positoin
        Vector3      pos = new Vector3(0.3f, 0.11f, -2.9f);
        CardBehavior go  = Instantiate(card, pos, Quaternion.identity);
        string       s   = cardsInDeck[n - 1]; // get and remove a card

        cardsInDeck.RemoveAt(n - 1);
        go.SetTexture(s);

        cardsInHand.Add(go);

        go.inHand = true;

        //Frame frame = provider.CurrentFrame;

        /*
         * foreach (Hand hand in frame.Hands)
         * {
         *  if (hand.IsLeft)
         *  {
         *      go.attachedTo = hand;
         *  }
         *
         * }
         */
    }
Beispiel #4
0
    void ShuffleCards(CombatantBehavior combatant, Transform combatantTransform)
    {
        bool keepGoing = true;

        while (keepGoing)
        {
            if (combatant.GetNextOpenSlot() < handAmount && combatant.GetNextOpenSlot() != -1)
            {
                int openSlot = combatant.GetNextOpenSlot();
                //Probably not good to try/catch this.
                try
                {
                    CardBehavior card = cardScripts[combatant.GetCardInSlot(openSlot + 1)];
                    card.MoveSlot(openSlot, combatantTransform.GetChild(openSlot));
                    combatant.SetOccupiedSlot(openSlot + 1, false, -1);
                    combatant.SetOccupiedSlot(card.GetSlot(), true, card.GetSessionId());
                }
                catch
                {
                    keepGoing = false;
                }
            }
            else
            {
                keepGoing = false;
            }
        }
    }
Beispiel #5
0
    public void SetCards(List <Card> newCards, bool faceDown = false)
    {
        Cards = newCards;

        foreach (Transform child in transform)
        {
            Destroy(child.gameObject);
        }
        cardObjects.Clear();

        float cardSpacing     = 12.0f;
        float firstCardOffset = -1 * (Cards.Count - 1) / 2.0f * cardSpacing;

        for (int i = 0; i < Cards.Count; i++)
        {
            GameObject newCard = Instantiate(CardPrefab, transform);
            cardObjects.Add(newCard);

            CardBehavior             cardBehavior             = newCard.GetComponent <CardBehavior>();
            SelectableObjectBehavior selectableObjectBehavior = newCard.GetComponent <SelectableObjectBehavior>();
            //selectableObjectBehavior.ClickEnabled = CanChooseCard;
            cardBehavior.SetCard(Cards[i], faceDown);
            cardBehavior.CardSelectedEvent.AddListener(OnCardClick);

            newCard.transform.localPosition = new Vector3(firstCardOffset + i * cardSpacing, 0.0f, 0.0f);
        }
    }
Beispiel #6
0
    public void AttachCardTo(GameObject gameObjectToAttachTo)
    {
        CardBehavior behaviorComponent = GetBehaviorComponent(gameObjectToAttachTo);

        behaviorComponent.SetConfig(this);
        behavior = behaviorComponent;
    }
Beispiel #7
0
    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            enemyScript.CardMoveTest();
        }

        if (updateMousePos)
        {
            selectedCard.transform.position = camera.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 140)); //Don't use constant for z but it's f****d up.
        }

        Hover(Input.mousePosition);

        if (Input.GetMouseButtonDown(0) && !updateMousePos)
        {
            Click(Input.mousePosition);
        }

        if (Input.GetMouseButtonUp(0))
        {
            if (selectedButton != null)
            {
                selectedButton.Select(false);
                selectedButton = null;
                EndTurn();
            }
        }

        if (Input.GetMouseButtonUp(0) && updateMousePos)
        {
            updateMousePos = false;
            if (selectedButton != null)
            {
                selectedButton.Select(false);
                selectedButton = null;
                //PlayCard();
            }

            if (selectedCard != null && !selectedCard.GetInPlayArea())
            {
                //selectedCard.transform.localPosition = oldCardPosition;
                selectedCard.Reset();
                //selectedCard.Select(false);
                selectedCard = null;
                //PlayCard();
            }
            else if (selectedCard != null && selectedCard.GetInPlayArea())
            {
                if (playAreaCard != null)
                {
                    playAreaCard.Reset();
                }
                selectedCard.SetAreaParent();
                playAreaCard = selectedCard;
            }
        }
    }
    public void HandToPinch(GameObject cc)
    {
        CardBehavior cb = cc.GetComponent <CardBehavior>();

        cb.inHand  = false;
        cb.pinched = true;

        cardsInHand.Remove(cb);
    }
    public void RenderCardSize()
    {
        int n = cardsInHand.Count;

        for (int i = 0; i < n; i++)
        {
            CardBehavior go = (CardBehavior)cardsInHand[i];
            go.SetScale(targetSize);
        }
    }
 public void OnClick(CardBehavior instance)
 {
     if (!_isAnimationRunning)
     {
         _isAnimationRunning = true;
         instance.PlayAnimation();
         instance.PlayAudio();
         Context.GetInstance().firstInstance = instance;
     }
 }
Beispiel #11
0
    void EndTurn()
    {
        sideTurn++;
        if (sideTurn > sidesAmount - 1)
        {
            sideTurn = 0;
        }

        turnCount++;

        for (int k = 0; k < amtCombatants; k++)
        {
            if (activeCombatants[k] != null)
            {
                FillHand(activeCombatants[k]);
                combatantScripts[k].ResetAp(sideTurn); //Fill combatant AP to max AP if it is the beginning of their turn.
            }
        }

        //Change Turn Text
        if (sideTurn == 0)
        {
            turnText0.text = "Turn";
            turnText1.text = "";
        }
        else
        {
            turnText0.text = "";
            turnText1.text = "Turn";
        }

        //Deselect Cards and Combatants
        if (selectedCard != null)
        {
            selectedCard.Reset();
            selectedCard = null;
        }

        if (selectedCombatant != null)
        {
            selectedCombatant.Select(false);
            selectedCombatant = null;
        }

        //Tell AI it's their turn.
        if (AI_Enabled)
        {
            if (sideTurn == enemyScript.GetSide())
            {
                enemyScript.IsTurn(true);
            }
        }
    }
 public void OnClick(CardBehavior instance)
 {
     if (!_isAnimationRunning && Context.GetInstance().firstInstance.GetInstanceID() != instance.GetInstanceID())
     {
         ;
     }
     {
         _isAnimationRunning = true;
         instance.PlayAnimation();
         instance.PlayAudio();
         Context.GetInstance().secondInstance = instance;
     }
 }
Beispiel #13
0
    void Hover(Vector3 mposition)
    {
        RaycastHit hit;
        Ray        ray = camera.ScreenPointToRay(mposition);

        if (Physics.Raycast(ray, out hit))
        {
            Transform objectHit = hit.transform;
            if (objectHit.tag == "Card")
            {
                if (highlightedCard != null)
                {
                    highlightedCard.Highlight(false);
                }
                highlightedCard = objectHit.gameObject.GetComponent <CardBehavior>();
                highlightedCard.Highlight(true);
            }

            else if (objectHit.tag == "Button")
            {
                highlightedButton = objectHit.gameObject.GetComponent <ButtonBehavior>();
                highlightedButton.Highlight(true);
            }

            else if (objectHit.tag == "Combatant")
            {
                highlightedCombatant = objectHit.gameObject.GetComponent <CombatantBehavior>();
                highlightedCombatant.Highlight(true);
            }

            else
            {
                if (highlightedCard != null)
                {
                    highlightedCard.Highlight(false);
                    highlightedCard = null;
                }
                if (highlightedButton != null)
                {
                    highlightedButton.Highlight(false);
                    highlightedButton = null;
                }
                if (highlightedCombatant != null)
                {
                    highlightedCombatant.Highlight(false);
                    highlightedCombatant = null;
                }
            }
        }
    }
Beispiel #14
0
    public void OnDrop_Card(PointerEventData EventData, CardBehavior Card)
    {
        if (AllowedCardTypes.Contains(Card.Card.CardType))
        {
            var CardRectTransform = (RectTransform)Card.transform;

            Card.GetComponent <Draggable>().ParentToReturnTo = this.transform;
            CardRectTransform.SetParent(transform);
            CardRectTransform.transform.SetParent(transform);
            CardRectTransform.transform.SetAsLastSibling();
            CardRectTransform.sizeDelta = ((RectTransform)this.transform).sizeDelta;
            Card.SetFacing(true);
            Cards.Add(Card);
        }
    }
Beispiel #15
0
 private bool hasCardOfSuit(CardSuit suit)
 {
     foreach (GameObject cardObj in cardObjects)
     {
         if (cardObj) //in case destroyed and didn't cleanup list
         {
             CardBehavior cardB = cardObj.GetComponent <CardBehavior>();
             if (cardB.GetCard().Suit == suit)
             {
                 return(true);
             }
         }
     }
     return(false);
 }
Beispiel #16
0
 private void Awake()
 {
     theCard         = GetComponent <CardDisplay>();
     m_cardBehavior  = GetComponent <CardBehavior>();
     deck            = FindObjectOfType <Stack>();
     enemyController = FindObjectOfType <EnemyController>();
     //get the rectTransform from playArea
     playArea = GameObject.FindGameObjectWithTag("PlayArea").GetComponent <RectTransform>();
     //get the combat controller
     combatController = FindObjectOfType <CombatController>();
     //get the reward controller
     rewardController = FindObjectOfType <RewardController>();
     //get the GameStateController
     gameController = FindObjectOfType <GameStateController>();
 }
Beispiel #17
0
    private void DrawCard(GameObject targetCard, int NewCardIndex, int NewCardRow)
    {
        //Select a random card from those in the collection
        System.Random randomInt   = new System.Random();
        int           randomIndex = randomInt.Next(collectionToDrawFrom.Count);
        GameObject    randomCard  = collectionToDrawFrom[randomIndex];

        Log("Random index: " + randomIndex + NL + "Random card: " + randomCard.name);

        //"Draw" a random card
        if (myDrawMethod == DrawMethod.replaceTargetSprite)
        {
            Log("Changing " + targetCard.name + " to " + randomCard.name);
            CopyCardSprite(randomCard, targetCard);
        }
        else if (myDrawMethod == DrawMethod.CreateNewCardAtTarget)
        {
            Log("Created " + randomCard.name + " at " + targetCard.transform.position);
            GameObject newCard = Instantiate(randomCard, targetCard.transform.position, new Quaternion());

            //Set sorting layer so newest drawn card is topmost
            newCard.GetComponent <SpriteRenderer>().sortingOrder = session.CurrentCardLayer;
            session.CurrentCardLayer++;

            //Disable the "dragToMove"
            CardBehavior newCardBehavior = newCard.GetComponent <CardBehavior>();
            newCardBehavior.ClickToDrag = false;
            newCardBehavior.Row         = NewCardRow;
            newCardBehavior.Index       = NewCardIndex;

            //Update current card
            session.CurrentCard = newCard;
        }

        session.TotalDrawnCards++;

        //Play Sfx
        SfxPlayer player = GetComponent <SfxPlayer>();

        if (player != null)
        {
            player.SelectNewClip();
            player.GetComponent <AudioSource>().Play();
        }
    }
    public void Validation()
    {
        CardBehavior firstCard  = Context.GetInstance().firstInstance;
        CardBehavior secondCard = Context.GetInstance().secondInstance;

        if (firstCard.GetCurrentSprite().name == secondCard.GetCurrentSprite().name)
        {
            Context.GetInstance().firstInstance.Dispose();
            Context.GetInstance().secondInstance.Dispose();
            Context.GetInstance().currentState   = Context.GetInstance().NoCards;
            Context.GetInstance().firstInstance  = null;
            Context.GetInstance().secondInstance = null;
        }
        else
        {
            firstCard.PlayAnimation();
            secondCard.PlayAnimation();
        }
    }
 public void AnimationEnd(CardBehavior instance)
 {
     if (Context.GetInstance().firstInstance.GetInstanceID() == instance.GetInstanceID())
     {
         IsAnimationFinished_1 = true;
     }
     if (Context.GetInstance().secondInstance.GetInstanceID() == instance.GetInstanceID())
     {
         IsAnimationFinished_2 = true;
     }
     if (IsAnimationFinished_1 && IsAnimationFinished_2)
     {
         IsAnimationFinished_1 = false;
         IsAnimationFinished_2 = false;
         Context.GetInstance().currentState   = Context.GetInstance().NoCards;
         Context.GetInstance().firstInstance  = null;
         Context.GetInstance().secondInstance = null;
     }
 }
Beispiel #20
0
  // Bir element seçildiği taktirde bir element spawn eder ve seçilen elemente göre çevresindeki elektronları açar

  void RealSpawn(GameObject Kart, CardBehavior Script)
  {
      if (Script.element == null)
      {
          Script.element = Maneger.CompoundFinderer.instantiateionObj.GetComponent <ElementsBehavior>().element;
          isPlaced       = true;

          Kart.transform.transform.Find("Element").gameObject.SetActive(true);
          ElektronOpen(Script.element.elektronCaunt, Kart);
      }
      else
      {
          ElektronClose(Kart);
          Script.element = null;

          Script.element = Maneger.CompoundFinderer.instantiateionObj.GetComponent <ElementsBehavior>().element;
          ElektronOpen(Script.element.elektronCaunt, Kart);
      }
  }
Beispiel #21
0
 public void SetSelectableCards(bool canSelect, CardSuit?allowedSuit = null)
 {
     foreach (GameObject cardObj in cardObjects)
     {
         if (cardObj) //in case destroyed and didn't cleanup list
         {
             CardBehavior             cardB     = cardObj.GetComponent <CardBehavior>();
             SelectableObjectBehavior selBehave = cardObj.GetComponent <SelectableObjectBehavior>();
             if (canSelect && (allowedSuit == null || !hasCardOfSuit((CardSuit)allowedSuit) || (cardB.GetCard().Suit == allowedSuit)))
             {
                 selBehave.ClickEnabled = true;
             }
             else
             {
                 selBehave.ClickEnabled = false;
             }
         }
     }
 }
Beispiel #22
0
    /*
     * //PlayCard With Button
     * void PlayCard()
     * {
     *  if (selectedCard != null && selectedCombatant != null)
     *  {
     *      //Attack Card
     *      if (selectedCard.GetEffect() == 0 && selectedCombatant.side != sideTurn) //make side a getter.
     *      {
     *          if (selectedCombatant.Damage(selectedCard.GetDamageVal()) <= 0) //Call HPAdjust, do damage, if it brings the combatant's HP zero, kill it.
     *          {
     *              selectedCombatant.Die();
     *              selectedCombatant = null;
     *          }
     *          selectedCard.Die();
     *          selectedCard = null;
     *          EndTurn();
     *      }
     *      //Healer Card
     *      else if (selectedCard.GetEffect() == 1)
     *      {
     *          Debug.Log("Healing Card. Not yet implemented.");
     *          EndTurn();
     *      }
     *      else
     *      {
     *          Debug.Log("Card Has No Effect");
     *      }
     *      //EndTurn();
     *  }
     * }
     */

    //PlayCard With PlayArea
    void PlayCard()
    {
        if (playAreaCard != null && selectedCombatant != null)
        {
            //Attack Card
            if (playAreaCard.GetEffect() == 0 && selectedCombatant.side != sideTurn) //make side a getter.
            {
                CombatantBehavior owningCombatant = combatantScripts[playAreaCard.GetCombatant()];

                if (owningCombatant.EvalCardCost(playAreaCard.GetApCost()))         //Evaluate if we have enough AP to use card then remove action points based on card AP cost.
                {
                    if (selectedCombatant.Damage(playAreaCard.GetDamageVal()) <= 0) //Call HPAdjust, do damage, if it brings the combatant's HP zero, kill it.
                    {
                        KillCombatant(selectedCombatant);
                    }

                    //owningCombatant.SubtractAp(playAreaCard.GetApCost()); //Remove action points based on card AP cost.
                    owningCombatant.SetOccupiedSlot(playAreaCard.GetSlot(), false, -1); //Set slot's occupied slot to empty.

                    ShuffleCards(owningCombatant, activeCombatants[playAreaCard.GetCombatant()].transform);

                    activeCards[playAreaCard.GetSessionId()] = null;
                    cardScripts[playAreaCard.GetSessionId()] = null;
                    playAreaCard.Die();
                    playAreaCard = null;
                    //EndTurn();
                }
                //Healer Card
                else if (playAreaCard.GetEffect() == 1)
                {
                    Debug.Log("Healing Card. Not yet implemented.");
                    EndTurn();
                }
                else
                {
                    Debug.Log("Card Has No Effect");
                }
                //EndTurn();
            }
        }
    }
Beispiel #23
0
    void Awake()
    {
        if (CompoundFinderer != null)
        {
            GameObject.Destroy(CompoundFinderer);
        }
        else
        {
            CompoundFinderer = this;
        }

        DontDestroyOnLoad(this);


        foundObjects  = new List <CompoundClass>();
        foundObjects2 = new List <CompoundClass>();

        script1 = Kart1.GetComponent <CardBehavior>();
        script2 = Kart2.GetComponent <CardBehavior>();
        script3 = Kart3.GetComponent <CardBehavior>();
    }
Beispiel #24
0
    public void onGestureEnd()
    {
        if (pinching == null)
        {
            return;
        }
        CardBehavior cb = pinching.GetComponent <CardBehavior>();

        cb.pinched = false;

        DetectionManager.DetectionHand rightHand = DetectionManager.Get().GetHand(EHand.eRightHand);

        //pinching.GetComponent<Rigidbody>().velocity = rightHand.GetFinger(EFinger.eIndex).GetTipVelocity();
        pinching.GetComponent <Rigidbody>().velocity = rightHand.GetVelocity();
        Debug.Log(rightHand.GetVelocity().ToString());
        //Debug.Log(rightHand.GetFinger(EFinger.eThumb+1).GetTipVelocity().ToString());

        pinching.transform.parent = null;
        pinching = null;

        //TBD: after release a card,
    }
 public void AnimationEnd(CardBehavior instance)
 {
     currentState.AnimationEnd(instance);
 }
Beispiel #26
0
    //AI Controlled Opponent Methods

    public void AISelect(int card)
    {
        cardScripts[card].AIPlay(enemyScript.GetPlayArea());
        playAreaCard = cardScripts[card];
    }
Beispiel #27
0
 public virtual void SetParent(CardBehavior parent)
 {
     this.parent = parent;
 }
Beispiel #28
0
    void Click(Vector3 mposition)
    {
        RaycastHit hit;
        Ray        ray = camera.ScreenPointToRay(mposition);

        if (Physics.Raycast(ray, out hit))
        {
            Transform objectHit = hit.transform;
            if (objectHit.tag == "Card")
            {
                updateMousePos = true;
                if (selectedCard != null)
                {
                    selectedCard.Select(false);
                }
                selectedCard = objectHit.gameObject.GetComponent <CardBehavior>();
                selectedCard.Select(true);
                oldCardPosition = selectedCard.transform.localPosition;
            }

            else if (objectHit.tag == "Button")
            {
                selectedButton = objectHit.gameObject.GetComponent <ButtonBehavior>();
                selectedButton.Select(true);
            }


            else if (objectHit.tag == "Combatant")
            {
                if (selectedCombatant != null)
                {
                    selectedCombatant.Select(false);
                }
                selectedCombatant = objectHit.gameObject.GetComponent <CombatantBehavior>();
                selectedCombatant.Select(true);

                if (playAreaCard != null)
                {
                    PlayCard();
                }
            }

            else if (objectHit.tag == "PlayArea")
            {
                if (playAreaCard != null)
                {
                    playAreaCard.Reset();
                    playAreaCard = null;
                }
            }

            else
            {
                if (selectedCard != null)
                {
                    selectedCard.Select(false);
                    selectedCard = null;
                }

                if (selectedCombatant != null)
                {
                    selectedCombatant.Select(false);
                    selectedCombatant = null;
                }
            }
        }
    }
 public void OnClick(CardBehavior instance)
 {
     currentState.OnClick(instance);
 }
 public void AnimationEnd(CardBehavior instance)
 {
     Context.GetInstance().currentState = Context.GetInstance().TwoCards;
     Context.GetInstance().Validation();
     bool _isAnimationRunning = false;
 }
 public void OnClick(CardBehavior instance)
 {
 }