void Start() { currentAction = PreformAction.WAIT; EnemiesInBattle.AddRange(GameObject.FindGameObjectsWithTag("Enemy")); ProtagsInBattle.AddRange(GameObject.FindGameObjectsWithTag("Protag")); ProtagInput = ProtagGUI.ACTIVATE; AttackPanel.SetActive(false); EnemySelectPanel.SetActive(false); MagicPanel.SetActive(false); EnemyButtons(); }
void retreat() { PlaySelectSound(); DestoryEnemyGUIs(); isboss = false; targetCharacter = null; battleEnabled = false; battlestate = PreformAction.Wait; foreach (BattleCharacter enemy in enemies) { Destroy(enemy.gameObject); } enemies.Clear(); ModeHandler.money = Mathf.FloorToInt(ModeHandler.money * 0.75f); deleteButtons(); ModeHandler.modehandler.afterMenuSelect(); }
public AttackBase getAttack(int attackNum) { AttackBase attack; attack = ((PlayerCharacter)players[currentTurn]).moves[attackNum]; int sp = ((PlayerCharacter)players[currentTurn]).specialPoints; if (sp >= attack.spCost) { selectedAttack = attack; battlestate = PreformAction.TakeAction; deleteButtons(); return(attack); } else { PlayDeclineSound(); backToMenu(); return(null); } }
public BattleCharacter getTarget(int attackNum, AttackBase attkMove) { PlaySelectSound(); BattleCharacter target = null; ((PlayerCharacter)players[currentTurn]).specialPoints -= attkMove.spCost; if (attkMove.attkRng != AttackBase.attackRange.all) { if (attkMove.attkType == AttackBase.attackType.heal) { target = ((PlayerCharacter)players[attackNum]); } else { target = ((EnemyCharacter)enemies[attackNum]); } targetCharacter = target; } battlestate = PreformAction.getPlayerAttack; deleteButtons(); return(target); }
void backToMenu() { deleteButtons(); battlestate = PreformAction.Wait; createdButtons = false; }
void OnGUI() { drawPlayerStats(); if (battleEnabled) { drawEnemyStats(); if (playerturn()) { PlayerCharacter currentPlayer = (PlayerCharacter)players[currentTurn]; if (currentPlayer.health == 0) { incrementTurn(); } switch (battlestate) { case PreformAction.Wait: if (currentPlayer.charAnimatior.GetBool("IsHurt") == false) { if (!createdButtons) { if (this.eGen.currentPhase > 0) { GameObject attkButton = Instantiate(button, new Vector3(350, 140, 3), Quaternion.identity) as GameObject; attkButton.GetComponent <Button>().onClick.AddListener(() => retreat()); Text buttonTxt = attkButton.transform.Find("Text").GetComponent <Text>(); buttonTxt.text = "Retreat"; attkButton.transform.SetParent(this.transform); attkButton.GetComponent <Image>().gameObject.transform.position = new Vector3(350, 140, 3); buttons.Add(attkButton); } createAttackButtons(); } } break; case PreformAction.TakeAction: //char selects target if (!createdButtons) { if (selectedAttack.attkRng != AttackBase.attackRange.all) { createTargetButtons(selectedAttack); } else { getTarget(0, selectedAttack); } } break; case PreformAction.getPlayerAttack: if (selectedAttack.attkRng != AttackBase.attackRange.all) { currentPlayer.Attack(targetCharacter, selectedAttack); } else { currentPlayer.Attack(null, selectedAttack); } battlestate = PreformAction.Preformaction; break; case PreformAction.Preformaction: if (currentPlayer.animations == BattleCharacter.animationstate.finish) { battlestate = PreformAction.CompleteTurn; } break; } } else { EnemyCharacter currentEnemy = (EnemyCharacter)enemies[currentTurn - players.Count]; switch (battlestate) { case PreformAction.Wait: if (currentEnemy.charAnimatior.GetBool("IsHurt") == false) { currentEnemy.autoAttack(); targetCharacter = currentEnemy.targetChar; battlestate = PreformAction.Preformaction; } break; case PreformAction.Preformaction: if (currentEnemy.animations == BattleCharacter.animationstate.finish) { battlestate = PreformAction.CompleteTurn; } break; } } if (battlestate == PreformAction.CompleteTurn) { if (!checkfordeadAnimations()) { battlestate = PreformAction.Wait; checkForVictory(); incrementTurn(); } } } }
// Update is called once per frame void Update() { switch (currentAction) { case (PreformAction.WAIT): if (PreformList.Count > 0) { currentAction = PreformAction.TAKEACTION; } break; case (PreformAction.TAKEACTION): GameObject preformer = GameObject.Find(PreformList[0].Attacker); if (PreformList[0].Type == "Enemy") { EnemyStateMachine ESM = preformer.GetComponent <EnemyStateMachine>(); for (int i = 0; i < ProtagsInBattle.Count; i++) { if (PreformList[0].AttackersTarget == ProtagsInBattle[i]) { ESM.ProtagToAttack = PreformList[0].AttackersTarget; ESM.currentState = EnemyStateMachine.TurnState.ACTION; break; } else { PreformList[0].AttackersTarget = ProtagsInBattle[Random.Range(0, ProtagsInBattle.Count)]; ESM.ProtagToAttack = PreformList[0].AttackersTarget; ESM.currentState = EnemyStateMachine.TurnState.ACTION; } } } if (PreformList[0].Type == "Protag") { ProtagStateMachine PSM = preformer.GetComponent <ProtagStateMachine>(); PSM.EnemyToAttack = PreformList[0].AttackersTarget; PSM.currentState = ProtagStateMachine.TurnState.ACTION; } currentAction = PreformAction.PREFORMACTION; break; case (PreformAction.PREFORMACTION): //idle break; case (PreformAction.CHECKALIVE): if (ProtagsInBattle.Count < 1) { currentAction = PreformAction.LOSE; } else if (EnemiesInBattle.Count < 1) { currentAction = PreformAction.WIN; } else { clearAttackPanel(); ProtagInput = ProtagGUI.ACTIVATE; } break; case (PreformAction.LOSE): { Debug.Log("You lost the Battle!"); } break; case (PreformAction.WIN): { Debug.Log("You won the Battle!"); for (int i = 0; i < ProtagsInBattle.Count; i++) { ProtagsInBattle[i].GetComponent <ProtagStateMachine>().currentState = ProtagStateMachine.TurnState.WAITING; } } break; } switch (ProtagInput) { case (ProtagGUI.ACTIVATE): if (ProtagsToManage.Count > 0) { ProtagsToManage[0].transform.Find("Selector").gameObject.SetActive(true); ProtagChoice = new HandleTurns(); AttackPanel.SetActive(true); CreateAttackButtons(); ProtagInput = ProtagGUI.WAITING; } break; case (ProtagGUI.WAITING): //idle break; case (ProtagGUI.DONE): ProtagInputDone(); break; } }