Ropasci-Forest/Assets/Scripts/Combat/CombatManager.cs
Gerard Gascón fca6784fe7 init
2025-04-24 17:02:43 +02:00

194 lines
7 KiB
C#

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");
}
}