using System.Collections; using System.Collections.Generic; using UnityEngine; using TMPro; public class CombatManager : MonoBehaviour{ public enum EnemyType { Bear, Driada, Loca, Boss } public EnemyType enemyType = default; [Space] public EnemyController bear = default; public EnemyController driada = default; public EnemyController loca = default; public EnemyController boss = default; [Space] public GameObject bearHand = default; public GameObject driadaHand = default; public GameObject locaHand = default; public GameObject bossHand = default; [Space] [SerializeField] GameObject bearBackground = default; [SerializeField] GameObject driadaBackground = default; [SerializeField] GameObject locaBackground = default; [SerializeField] GameObject bossBackground = default; [Space] [SerializeField] Animator anim = default; [SerializeField] CustomTMP_Animated dialogue = default; [SerializeField] Dialogue bearDialogue = default; [SerializeField] Dialogue driadaDialogue = default; [SerializeField] Dialogue locaDialogue = default; [SerializeField] Dialogue bossDialogue = default; [Space] [SerializeField] Animator bearHandAnim = default; [SerializeField] Animator driadaHandAnim = default; [SerializeField] Animator locaHandAnim = default; [SerializeField] Animator bossHandAnim = default; [SerializeField] Animator playerHandAnim = default; int dialogueIndex; bool dialogueStarted; public static CombatManager instance; void Awake(){ instance = this; } // Start is called before the first frame update void Start(){ if(GameMaster.instance != null) enemyType = (EnemyType)GameMaster.instance.enemyType[GameMaster.instance.currentGrid]; AudioManager.instance.StopAll(); AudioManager.instance.Play("FightNoBrass"); switch (enemyType){ case EnemyType.Bear: driada.gameObject.SetActive(false); loca.gameObject.SetActive(false); driadaHand.SetActive(false); locaHand.SetActive(false); boss.gameObject.SetActive(false); bossHand.SetActive(false); driadaBackground.SetActive(false); locaBackground.SetActive(false); bossBackground.SetActive(false); break; case EnemyType.Driada: bear.gameObject.SetActive(false); loca.gameObject.SetActive(false); bearHand.SetActive(false); locaHand.SetActive(false); boss.gameObject.SetActive(false); bossHand.SetActive(false); bearBackground.SetActive(false); locaBackground.SetActive(false); bossBackground.SetActive(false); break; case EnemyType.Loca: driada.gameObject.SetActive(false); bear.gameObject.SetActive(false); driadaHand.SetActive(false); bearHand.SetActive(false); boss.gameObject.SetActive(false); bossHand.SetActive(false); driadaBackground.SetActive(false); bearBackground.SetActive(false); bossBackground.SetActive(false); break; case EnemyType.Boss: AudioManager.instance.Stop("FightNoBrass"); AudioManager.instance.Play("fightFull"); driada.gameObject.SetActive(false); bear.gameObject.SetActive(false); loca.gameObject.SetActive(false); locaHand.SetActive(false); driadaHand.SetActive(false); bearHand.SetActive(false); driadaBackground.SetActive(false); bearBackground.SetActive(false); bearBackground.SetActive(false); break; } } public void OnStartDialogue(){ switch (enemyType){ case EnemyType.Bear: dialogue.ReadText(bearDialogue.sentences[dialogueIndex]); break; case EnemyType.Driada: dialogue.ReadText(driadaDialogue.sentences[dialogueIndex]); break; case EnemyType.Loca: dialogue.ReadText(locaDialogue.sentences[dialogueIndex]); break; case EnemyType.Boss: dialogue.ReadText(bossDialogue.sentences[dialogueIndex]); break; } anim.SetTrigger("Enter"); dialogueStarted = true; dialogueIndex++; } // Update is called once per frame void Update(){ if (dialogueStarted){ if (Input.anyKeyDown){ switch (enemyType){ case EnemyType.Bear: if (dialogueIndex == bearDialogue.sentences.Length){ StartGame(EnemyType.Bear); break; } dialogue.ReadText(bearDialogue.sentences[dialogueIndex]); break; case EnemyType.Driada: if (dialogueIndex == driadaDialogue.sentences.Length){ StartGame(EnemyType.Driada); break; } dialogue.ReadText(driadaDialogue.sentences[dialogueIndex]); break; case EnemyType.Loca: if (dialogueIndex == locaDialogue.sentences.Length){ StartGame(EnemyType.Loca); break; } dialogue.ReadText(locaDialogue.sentences[dialogueIndex]); break; case EnemyType.Boss: if (dialogueIndex == bossDialogue.sentences.Length){ StartGame(EnemyType.Boss); break; } dialogue.ReadText(bossDialogue.sentences[dialogueIndex]); break; } dialogueIndex++; } } } void StartGame(EnemyType enemy){ switch (enemy){ case EnemyType.Bear: bearHandAnim.SetTrigger("Enter"); AudioManager.instance.Play("oso_risa"); break; case EnemyType.Boss: bossHandAnim.SetTrigger("Enter"); break; case EnemyType.Driada: driadaHandAnim.SetTrigger("Enter"); AudioManager.instance.Play("driada_risa"); break; case EnemyType.Loca: locaHandAnim.SetTrigger("Enter"); AudioManager.instance.Play("loca_risa"); break; } dialogueStarted = false; anim.SetTrigger("Exit"); playerHandAnim.SetTrigger("Enter"); } }