Exemple #1
0
 public void Execute()
 {
     // Execute the card & set the respective panel to visible.
     CardAlgorithms[(int)mCardData.Type].ExecuteCard(mCardData.Tier, mCardData.MoveType);
     ControlAreaManager.SetCardPanelVisibility(mCardData.Type, true);
     ToggleCard(false);
 }
Exemple #2
0
    // Assumes that only valid tiles can be pressed.
    // Checking should be done in UpdatePanel.
    public void TilePressed(int _tileID)
    {
        AudioManager.PlayButtonClickSound();

        // Get PlayerPiece to execute move.
        int targetPosX = GameManager.Instance.Player.PosX + (_tileID % 5) - 2;
        int targetPosY = GameManager.Instance.Player.PosY + (_tileID / 5) - 2;

        GameManager.Instance.Player.ExecuteTurn(targetPosX, targetPosY);

        // Dismiss panel.
        ControlAreaManager.SetCardPanelVisibility(CardType.Movement, false);

        // Repeat if any.
        RepeatPanelControls.UseRepeat();
        if (RepeatPanelControls.NumRepeatsLeft > 0)
        {
            // Disable cancel button for future repeats.
            // Players to continue using same repeated card until repeats end.
            mCancelButton.interactable = false;
        }
        else
        {
            // Organise the cards.
            DeckManager.Instance.ReorganiseCards();
            mCancelButton.interactable = true;
        }
    }
Exemple #3
0
    public void Use()
    {
        AudioManager.PlayButtonClickSound();

        PlayerPiece player = GameManager.Instance.Player;

        // Focus onto player and animate player.
        BoardScroller.Instance.FocusCameraToPos(
            DungeonManager.Instance.GridPosToWorldPos(player.PosX, player.PosY),
            0.2f,
            Graph.InverseExponential);
        ScaleToAction  scaleUp      = new ScaleToAction(player.transform, Graph.SmoothStep, Vector3.one * DungeonManager.Instance.ScaleMultiplier * 1.75f, 0.5f);
        ScaleToAction  scaleDownHit = new ScaleToAction(player.transform, Graph.Dipper, Vector3.one * DungeonManager.Instance.ScaleMultiplier * 1.1f, 0.25f);
        ActionSequence smashSeq     = new ActionSequence(scaleUp, scaleDownHit);

        smashSeq.OnActionFinish += () => {
            // Dramatic shake.
            ShakeAction2D camShake = new ShakeAction2D(Camera.main.transform, 10, 1.85f, Graph.InverseLinear);
            camShake.SetShakeByDuration(0.6f, 35);
            ActionHandler.RunAction(camShake);

            // Make all things take damage.
            for (int i = 0; i < mArrAffectedPositions.Length; i++)
            {
                DungeonBlock block = DungeonManager.Instance.DungeonBlocks[(int)mArrAffectedPositions[i].x, (int)mArrAffectedPositions[i].y];
                switch (block.State)
                {
                case BlockState.EnemyPiece:
                    if (RepeatPanelControls.NumRepeatsLeft > 0)
                    {
                        block.Enemy.TakeDamage(1 * RepeatPanelControls.NumRepeatsLeft);
                    }
                    else
                    {
                        block.Enemy.TakeDamage(1);
                    }
                    break;

                case BlockState.Obstacle:
                    DungeonManager.Instance.DestroyBlock(block.PosX, block.PosY);
                    break;
                }
            }

            RepeatPanelControls.ClearRepeats();
        };
        ActionHandler.RunAction(smashSeq);

        // Dismiss panel.
        ControlAreaManager.SetCardPanelVisibility(CardType.Smash, false);

        // Organise the cards.
        DeckManager.Instance.ReorganiseCards();
    }
 private void Awake()
 {
     if (sInstance == null)
     {
         sInstance = this;
         Setup();
     }
     else if (sInstance != this)
     {
         Destroy(this.gameObject);
         return;
     }
 }
    public void Use()
    {
        AudioManager.PlayButtonClickSound();

        // If a Repeat has already been used. Player is stacking repeats
        if (snNumRepeatsLeft > 0)
        {
            switch (sRepeatTier)
            {
            case CardTier.Bronze:
                snNumRepeatsLeft *= 2;
                break;

            case CardTier.Silver:
                snNumRepeatsLeft *= 3;
                break;

            case CardTier.Gold:
                snNumRepeatsLeft *= 5;
                break;
            }
        }
        // Else, it is the first repeat used.
        else
        {
            switch (sRepeatTier)
            {
            case CardTier.Bronze:
                snNumRepeatsLeft = 2;
                break;

            case CardTier.Silver:
                snNumRepeatsLeft = 3;
                break;

            case CardTier.Gold:
                snNumRepeatsLeft = 5;
                break;
            }
        }

        PlayerInfoManager.Instance.UpdateRepeat(snNumRepeatsLeft);

        // Dismiss panel.
        ControlAreaManager.SetCardPanelVisibility(CardType.Repeat, false);

        // Organise the cards.
        DeckManager.Instance.ReorganiseCards();
    }
    // For the button to call.
    public void Use()
    {
        AudioManager.PlayButtonClickSound();

        int numCards = 0;

        switch (sDrawTier)
        {
        case CardTier.Bronze:
            numCards = 1;
            break;

        case CardTier.Silver:
            numCards = 3;
            break;

        case CardTier.Gold:
            numCards = 5;
            break;
        }

        if (RepeatPanelControls.NumRepeatsLeft > 0)
        {
            numCards *= RepeatPanelControls.NumRepeatsLeft;
            // Cap at 5, no point going more than that, just wastes processing power.
            if (numCards > 5)
            {
                numCards = 5;
            }

            // Clear the repeats.
            RepeatPanelControls.ClearRepeats();
        }

        // Organise the cards.
        DeckManager.Instance.ReorganiseCards();

        // Draw cards.
        DelayAction draw = new DelayAction(0.3f);

        draw.OnActionFinish += () => { DeckManager.Instance.DrawCard(); };
        ActionRepeat repeatedDraw = new ActionRepeat(draw, numCards);

        ActionHandler.RunAction(repeatedDraw);

        // Dismiss panel.
        ControlAreaManager.SetCardPanelVisibility(CardType.DrawCard, false);
    }
Exemple #7
0
    public void SelectCard(int _id)
    {
        AudioManager.PlayButtonClickSound();

        RepeatPanelControls.UseRepeat();
        if (RepeatPanelControls.NumRepeatsLeft > 0)
        {
            if (DeckManager.Instance.GetNumCardsInHand() < DeckManager.knMaxCardsInHand - 1)
            {
                mCancelButton.interactable = false;

                DelayAction nextDrawDelay = new DelayAction(1.6f);
                nextDrawDelay.OnActionStart += () => {
                    EventAnimationController.Instance.SetIsAnimating(true);
                    ControlAreaManager.Instance.SetControlBlockerEnabled(true);
                };
                nextDrawDelay.OnActionFinish += () => {
                    EventAnimationController.Instance.SetIsAnimating(false);
                    ControlAreaManager.SetCardPanelVisibility(CardType.MovementJoker, true);
                };
                ActionHandler.RunAction(nextDrawDelay);
            }
            else
            {
                ControlAreaManager.Instance.SetControlBlockerEnabled(false);
                RepeatPanelControls.ClearRepeats();
                mCancelButton.interactable = true;
            }

            GridType _movementType = (GridType)_id;
            DeckManager.Instance.DrawCard(_movementType);
        }
        else
        {
            GridType _movementType = (GridType)_id;
            DeckManager.Instance.DrawCard(_movementType);

            ControlAreaManager.Instance.SetControlBlockerEnabled(false);
            RepeatPanelControls.ClearRepeats();
            mCancelButton.interactable = true;
        }

        // Dismiss panel.
        ControlAreaManager.SetCardPanelVisibility(CardType.MovementJoker, false);

        // Organise the cards.
        DeckManager.Instance.ReorganiseCards();
    }
    // For the button to call.
    public void Use()
    {
        AudioManager.PlayButtonClickSound();

        int shieldPoints = 0;

        switch (sShieldTier)
        {
        case CardTier.Bronze:
            shieldPoints = 1;
            break;

        case CardTier.Silver:
            shieldPoints = 3;
            break;

        case CardTier.Gold:
            shieldPoints = 5;
            break;
        }

        // Repeat if any.
        if (RepeatPanelControls.NumRepeatsLeft > 0)
        {
            // Apply multiple times.
            GameManager.Instance.Player.AddShieldPoints(shieldPoints * RepeatPanelControls.NumRepeatsLeft);

            RepeatPanelControls.ClearRepeats();
        }
        else
        {
            GameManager.Instance.Player.AddShieldPoints(shieldPoints);
        }

        // Dismiss panel.
        ControlAreaManager.SetCardPanelVisibility(CardType.TempShield, false);

        // Organise the cards.
        DeckManager.Instance.ReorganiseCards();
    }
    private void Setup()
    {
        mCtrlArea = GameObject.Find("ControlAreaCanvas").GetComponent <ControlAreaManager>();

        mPhaseTop    = transform.FindChild("Phase_Top").GetComponent <Image>();
        mPhaseBottom = transform.FindChild("Phase_Bottom").GetComponent <Image>();

        mBGOverlayImage         = transform.FindChild("BGOverlayImage").GetComponent <Image>();
        mBGOverlayImage.enabled = false;

        InverseSmoothStep = new Graph((float _x) => {
            return(Mathf.Lerp(
                       1f - ((1f - _x) * (1f - _x)),
                       _x * _x,
                       _x));
        });



        GameOverCG                       = transform.FindChild("FinishFloor").FindChild("PlayerDied").GetComponent <CanvasGroup>();
        GameOverOptionsCG                = GameOverCG.transform.FindChild("GameOverOptions").GetComponent <CanvasGroup>();
        GameOverCG.alpha                 = 0.0f;
        GameOverCG.blocksRaycasts        = false;
        GameOverCG.interactable          = false;
        GameOverOptionsCG.alpha          = 0.0f;
        GameOverOptionsCG.blocksRaycasts = false;
        GameOverOptionsCG.interactable   = false;

        FloorClearedCG                = transform.FindChild("FinishFloor").FindChild("FloorCleared").GetComponent <CanvasGroup>();
        FloorClearedCG.alpha          = 0.0f;
        FloorClearedCG.blocksRaycasts = false;
        FloorClearedCG.interactable   = false;

        mRedFlash         = transform.FindChild("RedFlash").GetComponent <Image>();
        mRedFlash.enabled = false;
    }
Exemple #10
0
    public void Use()
    {
        AudioManager.PlayButtonClickSound();

        switch (sJokerTier)
        {
        case CardTier.Bronze:
            if (RepeatPanelControls.NumRepeatsLeft > 0)
            {
                // Cap it at 5. Won't draw more than 5 cards (due to slot limit).
                int numRepeats = RepeatPanelControls.NumRepeatsLeft;
                if (numRepeats > 5)
                {
                    numRepeats = 5;
                }

                for (int i = 0; i < numRepeats; i++)
                {
                    GridType _randBronzeType = (GridType)Random.Range(0, 3);
                    DeckManager.Instance.DrawCard(_randBronzeType);
                }

                RepeatPanelControls.ClearRepeats();
            }
            else
            {
                GridType _randBronzeType = (GridType)Random.Range(0, 3);
                DeckManager.Instance.DrawCard(_randBronzeType);
            }
            break;

        case CardTier.Silver:
            if (RepeatPanelControls.NumRepeatsLeft > 0)
            {
                // Cap it at 5. Won't draw more than 5 cards (due to slot limit).
                int numRepeats = RepeatPanelControls.NumRepeatsLeft;
                if (numRepeats > 5)
                {
                    numRepeats = 5;
                }

                for (int i = 0; i < numRepeats; i++)
                {
                    GridType _randSilverType = (GridType)(Random.Range(0, 2) + 3);
                    DeckManager.Instance.DrawCard(_randSilverType);
                }

                RepeatPanelControls.ClearRepeats();
            }
            else
            {
                GridType _randSilverType = (GridType)(Random.Range(0, 2) + 3);
                DeckManager.Instance.DrawCard(_randSilverType);
            }
            break;
        }

        // Dismiss panel.
        ControlAreaManager.SetCardPanelVisibility(CardType.MovementJoker, false);

        // Organise the cards.
        DeckManager.Instance.ReorganiseCards();
    }