void TurnChange() { StatusTimers(); if (currentTurn > -1) { turnTimer[currentTurn] -= turnValue; } CalculateTurnValue(); currentTurn = -1; do { if (currentTurn >= 0) { AddToTimers(ref turnTimer); } currentTurn = 0; for (int i = 1; i < turnTimer.Length; i++) { if (turnTimer[i] > turnTimer[currentTurn]) { currentTurn = i; } } }while (turnTimer[currentTurn] < turnValue); currentMenu = RpgMenu.Main; battleUI.UpdateMenuText(currentTurn); battleUI.ChangeBattleMenu(); }
void SelectArea(bool playersMustLive) { bool charAbove = false; bool charBelow = false; if (charSelectIndex < 4) { if (charSelectIndex > 0) { if (gameMaster.playerParty[charSelectIndex - 1].charName != "na" && (!playersMustLive || gameMaster.playerParty[charSelectIndex - 1].currentHP > 0)) { charAbove = true; } } if (charSelectIndex < 3) { if (gameMaster.playerParty[charSelectIndex + 1].charName != "na" && (!playersMustLive || gameMaster.playerParty[charSelectIndex + 1].currentHP > 0)) { charBelow = true; } } } else { if (charSelectIndex > 4) { if (enemyParty[charSelectIndex - 5].charName != "na" && enemyParty[charSelectIndex - 5].currentHP > 0) { charAbove = true; } } if (charSelectIndex < 7) { if (enemyParty[charSelectIndex - 3].charName != "na" && enemyParty[charSelectIndex - 3].currentHP > 0) { charBelow = true; } } } if (charAbove && charBelow) { charsSelected = new int[2] { charSelectIndex - 1, charSelectIndex + 1 } } ; else { if (charAbove) { charsSelected = new int[1] { charSelectIndex - 1 } } ; else { charsSelected = new int[1] { charSelectIndex + 1 } }; } } void SelectAll(bool playersMustLive) { bool[] charsSelected = new bool[8]; int charsAliveCount = 0; for (int i = 0; i < 8; i++) { if (i < 4) { if (gameMaster.playerParty[i].charName != "na" && (!playersMustLive || gameMaster.playerParty[i].currentHP > 0)) { charsAliveCount++; charsSelected[i] = true; } } else { if (enemyParty[i - 4].charName != "na" && enemyParty[i - 4].currentHP > 0) { charsAliveCount++; charsSelected[i] = true; } } } this.charsSelected = new int[charsAliveCount]; for (int i = 0; i < this.charsSelected.Length; i++) { for (int k = 0; k < charsSelected.Length; k++) { if (charsSelected[k]) { this.charsSelected[i] = k; charsSelected[k] = false; break; } } } } void MenuConfirm() { if (currentMenu != RpgMenu.SelectChar) { prevMenu = currentMenu; } switch (currentMenu) { case RpgMenu.Main: switch (mainIndex) { case 0: currentMenu = RpgMenu.Attack; break; case 1: currentMenu = RpgMenu.Skill; break; case 2: currentMenu = RpgMenu.Item; break; case 3: currentMenu = RpgMenu.Escape; break; } break; case RpgMenu.Attack: currentMenu = RpgMenu.SelectChar; break; case RpgMenu.Skill: currentMenu = RpgMenu.SelectChar; break; case RpgMenu.Item: currentMenu = RpgMenu.SelectChar; break; case RpgMenu.SelectChar: switch (prevMenu) { case RpgMenu.Attack: switchToSTG = true; break; case RpgMenu.Skill: usingSkill = true; break; } battleUI.CharacterCursors(-1, new int[0]); break; } menuInteractionDelay = 10; battleUI.ChangeBattleMenu(); } int[] TargetHandling() { int[] allTargets = new int[charsSelected.Length + ((charSelectIndex != -1) ? 1 : 0)]; if (charSelectIndex != -1) { allTargets[0] = charSelectIndex; } for (int i = 0; i < charsSelected.Length; i++) { allTargets[i + ((charSelectIndex != -1) ? 1 : 0)] = charsSelected[i]; } return(allTargets); } void MenuBack() { switch (currentMenu) { case RpgMenu.Attack: currentMenu = RpgMenu.Main; break; case RpgMenu.Skill: currentMenu = RpgMenu.Main; break; case RpgMenu.Item: currentMenu = RpgMenu.Main; break; case RpgMenu.SelectChar: currentMenu = prevMenu; charsSelected = new int[0]; charSelectIndex = -1; battleUI.CharacterCursors(charSelectIndex, charsSelected); break; } menuInteractionDelay = 10; battleUI.ChangeBattleMenu(); } void UseSkill(Character caster, Character[] targets, SkillData skill) { Skill.UseSkill(skill, caster, targets); } void EnemyTurn() { currentMenu = RpgMenu.None; battleUI.ChangeBattleMenu(); Debug.Log("Enemy " + (currentTurn - 4).ToString() + " (" + enemyParty[currentTurn - 4].charName + ")'s turn"); switchToSTG = true; } void SwitchToSTG(int playerTarget, RpgEnemy enemyAttacker, int patternIndex, bool spell) { camAnimations.SetBool("BulletHell", true); shmupManager.endSTG = false; shmupManager.SpawnPlayer(gameMaster.playerParty[playerTarget].shmupData, gameMaster.playerParty[playerTarget].shotTypeEquip, playerTarget, gameMaster.playerParty[playerTarget].damageTypeUnlocks[attackSelectIndex].damageType, gameMaster.playerParty[playerTarget].statusEffects.ToArray()); shmupManager.SpawnEnemy(enemyAttacker.shmupSpawn, enemyAttacker.weaknessesAndResistances, 120, new Vector2(0, 275), patternIndex, spell); gameMaster.lockInputs = true; switchToSTG = false; switchingToSTG = true; } void InitializeSTG(int player, GameMasterScript.DamageTypes damageType, RpgEnemy enemy, int patternIndex, bool spell) { shmupManager.SpawnPlayer(gameMaster.playerParty[player].shmupData, gameMaster.playerParty[player].shotTypeEquip, player, damageType, gameMaster.playerParty[player].statusEffects.ToArray()); shmupManager.SpawnEnemy(enemy.shmupSpawn, enemy.weaknessesAndResistances, 120, new Vector2(0, 275), patternIndex, spell); } void SwitchToRPG() { camAnimations.SetBool("BulletHell", false); mainCam.gameObject.SetActive(true); inSTG = false; returningToRpg = true; } IEnumerator SwitchToSTGCam() { switchToSTG = false; switchingToSTG = true; shmupManager.startingSTG = true; shmupManager.endSTG = false; camAnimations.SetBool("BulletHell", true); StartCoroutine(battleUI.FadeRPGMenu(false)); gameMaster.lockInputs = true; do { yield return(null); } while (!battleUI.FadeBlackscreen(true)); int delayCounter = 5; do { delayCounter--; yield return(null); } while (delayCounter > 0); mainCam.gameObject.SetActive(false); shmupManager.blackScreen.color = new Color(0, 0, 0, 1); shmupManager.shmupCam.gameObject.SetActive(true); inSTG = true; switchingToSTG = false; if (currentTurn > 3) { int player = Random.Range(0, 2); InitializeSTG(player, gameMaster.playerParty[player].damageTypeUnlocks[0].damageType, enemyParty[currentTurn - 4], 0, true); } else { InitializeSTG(currentTurn, gameMaster.playerParty[currentTurn].damageTypeUnlocks[attackSelectIndex].damageType, enemyParty[charSelectIndex - 4], 0, usingSkill); } do { shmupManager.blackScreen.color = new Color(0, 0, 0, shmupManager.blackScreen.color.a - (gameMaster.timeScale * 0.025f)); yield return(null); } while (shmupManager.blackScreen.color.a > 0); gameMaster.lockInputs = false; shmupManager.startingSTG = false; shmupManager.inSTG = true; } IEnumerator SwitchToRPGCam() { inSTG = false; shmupManager.inSTG = false; returningToRpg = true; gameMaster.lockInputs = true; do { shmupManager.blackScreen.color = new Color(0, 0, 0, shmupManager.blackScreen.color.a + (gameMaster.timeScale * 0.025f)); yield return(null); } while (shmupManager.blackScreen.color.a < 1); shmupManager.DestroySTG(); int delayCounter = 5; do { delayCounter--; yield return(null); } while (delayCounter > 0); camAnimations.SetBool("BulletHell", false); mainCam.gameObject.SetActive(true); battleUI.InstantBlackscreen(true); shmupManager.shmupCam.gameObject.SetActive(false); returningToRpg = false; entranceDelayPassed = 0; do { yield return(null); } while (!battleUI.FadeBlackscreen(false)); StartCoroutine(battleUI.FadeRPGMenu(true)); gameMaster.lockInputs = false; } }