public void fireMoveFinish() { GameObject go = GameObject.Find("GameManager"); battleSystem = go.GetComponent <BattleSystemStateMachine>(); foreach (BaseCharacterClass participant in battleSystem.participantList) { participant.moveIsFinished = true; } }
public override void Ultimate() { proceedNext = true; if (moveFirstPass) { battleSystem = playerController.GetComponent <BattleSystemStateMachine>(); startTimeTrack = Time.time; moveFirstPass = false; currentEnemy = 0; currentLetterName = 0; currentLetterPhrase = 0; numOfAliveEnemies = 0; damageDict = new Dictionary <BaseCharacterClass, int>(); lettersToType = new List <GameObject>(); timerBarHolder.SetActive(true); potentialButtons = new List <string>(new string[] { "n'ghaagl", "ph'shugg", "ph'nglui", "mglw'nafh", "wgah'nagl" }); positionSpawnList.Clear(); foreach (EnemyLayout enem in gameLoop.battleEncounterInstance.listOfEnemies) { positionSpawnList.Add(enem.enemyPosition + enem.enemyColliderPosition); } foreach (BaseCharacterClass enemy in battleSystem.enemyList) { if (enemy.isDead) { continue; } else { numOfAliveEnemies++; } } } if (battleSystem.enemyList[currentEnemy].isDead) { currentEnemy++; } else { // add to damage dict if (firstCycle) { randomInt = UnityEngine.Random.Range(0, potentialButtons.Count); chosenWord = potentialButtons[randomInt]; firstCycle = false; newTypableHolder = Instantiate(typableTextHolder, Vector3.zero, Quaternion.identity); newTypableHolder.transform.parent = gameLoop.battleEncounterInstance.transform; newTypableHolder.transform.localPosition = positionSpawnList[currentEnemy]; newTypableHolder.transform.localPosition = new Vector3(newTypableHolder.transform.localPosition.x, newTypableHolder.transform.localPosition.y, -6); GameObject placeholderLetter = newTypableHolder.transform.Find("PlaceholderLetter").gameObject; float xTextPosition = -(battleSystem.enemyList[currentEnemy].CharacterClassName.Length / 4); foreach (char letter in battleSystem.enemyList[currentEnemy].CharacterClassName) { GameObject newLetter = Instantiate(placeholderLetter, Vector3.zero, Quaternion.identity); newLetter.transform.parent = newTypableHolder.transform; newLetter.GetComponent <TextMesh>().text = letter.ToString(); newLetter.transform.localPosition = new Vector3(xTextPosition, 0, 0); xTextPosition += 0.5f; lettersToType.Add(newLetter); } foreach (Transform child in newTypableHolder.transform) { child.gameObject.SetActive(true); } } // account for spaces if (battleSystem.enemyList[currentEnemy].CharacterClassName[currentLetterName].ToString() == " " && typingName) { if (Input.GetKeyDown("space")) { currentLetterName++; if (currentLetterName >= battleSystem.enemyList[currentEnemy].CharacterClassName.Length) { currentLetterName = 0; Destroy(newTypableHolder); typingName = false; typingPhrase = true; } } } // end account for spaces else if (Input.GetKeyDown(battleSystem.enemyList[currentEnemy].CharacterClassName[currentLetterName].ToString().ToLower()) && typingName) { lettersToType[currentLetterName].GetComponent <TextMesh>().color = Color.red; currentLetterName++; if (currentLetterName >= battleSystem.enemyList[currentEnemy].CharacterClassName.Length) { currentLetterName = 0; Destroy(newTypableHolder); lettersToType.Clear(); typingName = false; typingPhrase = true; newTypableHolder = Instantiate(typableTextHolder, Vector3.zero, Quaternion.identity); newTypableHolder.transform.parent = gameLoop.battleEncounterInstance.transform; newTypableHolder.transform.localPosition = positionSpawnList[currentEnemy]; newTypableHolder.transform.localPosition = new Vector3(newTypableHolder.transform.localPosition.x, newTypableHolder.transform.localPosition.y, -6); GameObject placeholderLetter = newTypableHolder.transform.Find("PlaceholderLetter").gameObject; float xTextPosition = -(chosenWord.Length / 4); foreach (char letter in chosenWord) { GameObject newLetter = Instantiate(placeholderLetter, Vector3.zero, Quaternion.identity); newLetter.transform.parent = newTypableHolder.transform; newLetter.GetComponent <TextMesh>().text = letter.ToString(); newLetter.transform.localPosition = new Vector3(xTextPosition, 0, 0); xTextPosition += 0.5f; lettersToType.Add(newLetter); } foreach (Transform child in newTypableHolder.transform) { child.gameObject.SetActive(true); } } } else if (Input.GetKeyDown(chosenWord[currentLetterPhrase].ToString().ToLower()) && typingPhrase) { lettersToType[currentLetterPhrase].GetComponent <TextMesh>().color = Color.red; currentLetterPhrase++; if (currentLetterPhrase >= chosenWord.Length) { damageDict.Add(battleSystem.enemyList[currentEnemy], UltimateDamage); Destroy(newTypableHolder); currentLetterPhrase = 0; lettersToType.Clear(); typingPhrase = false; typingName = true; firstCycle = true; currentEnemy++; } } } if (currentEnemy >= gameLoop.battleEncounterInstance.listOfEnemies.Count) { timerBarHolder.SetActive(false); timerBar.fillAmount = 1; typingName = true; firstCycle = true; typingPhrase = false; moveFirstPass = true; proceedNext = false; } else if (Time.time - startTimeTrack >= timePerEnemy * numOfAliveEnemies) { Debug.Log(currentLetterName + " : " + currentLetterPhrase); float percentageDamage = 0; if (typingName) { percentageDamage = (currentLetterName) / ((float)battleSystem.enemyList[currentEnemy].CharacterClassName.Length + (float)chosenWord.Length); } else if (typingPhrase) { percentageDamage = ((float)battleSystem.enemyList[currentEnemy].CharacterClassName.Length + currentLetterPhrase) / ((float)battleSystem.enemyList[currentEnemy].CharacterClassName.Length + (float)chosenWord.Length); } //float percentageDamage = (currentLetterName + currentLetterPhrase) / ((float)battleSystem.enemyList[currentEnemy].CharacterClassName.Length + (float)chosenWord.Length); float damageToDeal = Mathf.Round(UltimateDamage * percentageDamage); Debug.Log(percentageDamage + " : " + damageToDeal); damageDict.Add(battleSystem.enemyList[currentEnemy], (int)damageToDeal); Destroy(newTypableHolder); timerBarHolder.SetActive(false); timerBar.fillAmount = 1; typingName = true; firstCycle = true; typingPhrase = false; moveFirstPass = true; proceedNext = false; } timerBar.fillAmount = ((timePerEnemy * numOfAliveEnemies) - (Time.time - startTimeTrack)) / (timePerEnemy * numOfAliveEnemies); }
public override void Move01() { proceedNext = true; if (moveFirstPass) { battleSystem = GameObject.Find("GameManager").GetComponent <BattleSystemStateMachine>(); startTimeTrack = Time.time; clonedTargets = new List <GameObject>(); damagedEnemies = new List <GameObject>(); moveFirstPass = false; currentEnemy = 0; damageDict = new Dictionary <BaseCharacterClass, int>(); potentialButtons = new List <string>(new string[] { "a", "s", "d", "f", "space" }); positionSpawnList.Clear(); foreach (EnemyLayout enem in gameLoop.battleEncounterInstance.listOfEnemies) { float randomInt = UnityEngine.Random.Range(0, potentialButtons.Count); positionSpawnList.Add(enem.enemyPosition + enem.enemyColliderPosition); Debug.Log("Adding " + potentialButtons[(int)randomInt] + " to potential buttons."); keyPressList.Add(potentialButtons[(int)randomInt]); potentialButtons.Remove(potentialButtons[(int)randomInt]); } } if (battleSystem.enemyList[currentEnemy].isDead) { currentEnemy++; } else { if (beginShrink) { GameObject newCircleTarget = Instantiate(concentricCirclesHolder, Vector3.zero, Quaternion.identity); newCircleTarget.transform.parent = gameLoop.battleEncounterInstance.transform; newCircleTarget.transform.localPosition = positionSpawnList[currentEnemy]; targetScript = newCircleTarget.GetComponent <ConcentricCircleTarget>(); targetScript.stopShrinking = false; targetScript.keyPressed = keyPressList[currentEnemy]; buttonIndicator = newCircleTarget.transform.Find("ButtonPressHolder/" + keyPressList[currentEnemy]).gameObject; buttonIndicator.SetActive(true); newCircleTarget.transform.localScale = new Vector3(0.5f, 0.5f, 1); foreach (Transform child in newCircleTarget.transform) { child.gameObject.SetActive(true); } clonedTargets.Add(newCircleTarget); beginShrink = false; } else if (targetScript.stopShrinking) { float targetX = targetScript.targetRing.transform.localScale.x; float currentX = targetScript.scalingRing.transform.localScale.x; float subtractFromDamage = Mathf.Abs(targetX - currentX); int move01Minus = (int)(Move01Damage - (subtractFromDamage * 30)); if (move01Minus < 0) { move01Minus = 0; } damageDict.Add(battleSystem.enemyList[currentEnemy], move01Minus); currentEnemy++; buttonIndicator.SetActive(false); beginShrink = true; } else if (targetScript.fracScale >= 1 && targetScript.fracScale <= 2) { damageDict.Add(battleSystem.enemyList[currentEnemy], 0); currentEnemy++; beginShrink = true; buttonIndicator.SetActive(false); } } if (currentEnemy >= gameLoop.battleEncounterInstance.listOfEnemies.Count) { foreach (GameObject circleTarget in clonedTargets) { Destroy(circleTarget); } moveFirstPass = true; proceedNext = false; } }