コード例 #1
0
    public void fireMoveFinish()
    {
        GameObject go = GameObject.Find("GameManager");

        battleSystem = go.GetComponent <BattleSystemStateMachine>();
        foreach (BaseCharacterClass participant in battleSystem.participantList)
        {
            participant.moveIsFinished = true;
        }
    }
コード例 #2
0
 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);
 }
コード例 #3
0
 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;
     }
 }