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); }
// 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; } }
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); }
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; }
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(); }