using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using TMPro; public class EnemyController : MonoBehaviour{ [SerializeField] Dialogue loseDialogue = default; [SerializeField] HandManager playerHand = default; [SerializeField] CustomTMP_Animated text = default; [SerializeField] Animator textAnim = default; [SerializeField, Range(0, 100)] int percentageWood = 0; [SerializeField, Range(0, 100)] int percentageMeat = 0; [Space] [SerializeField] Sprite rock = default; [SerializeField] Sprite paper = default; [SerializeField] Sprite scisors = default; [SerializeField] Sprite deathSprite = default; [SerializeField] Animator playerAnim = default; [SerializeField] Animator anim = default; [SerializeField] Image image = default; [SerializeField] GameObject[] heart = default; int life = 3; [SerializeField] GameObject[] playerHeart = default; int playerLife = 3; int enemyAttack; int playerAttack; bool lost; public void Attack(bool attackingWithMeat, bool attackingWithWood, int attack){ float randomNumber = Random.Range(0f, 100f); if(randomNumber > percentageWood && attackingWithWood){ Debug.Log("Wait, that's illegal"); } if(randomNumber > percentageMeat && attackingWithMeat){ Debug.Log("Wait, that's illegal"); } enemyAttack = Mathf.RoundToInt(Random.Range(100f, 300f) / 100f); playerAttack = attack; switch (enemyAttack){ case 1: //Rock if(playerAttack == 2){ anim.SetTrigger("Die"); }else if(playerAttack == 3){ playerAnim.SetTrigger("Die"); } break; case 2: //Paper if (playerAttack == 3){ anim.SetTrigger("Die"); }else if (playerAttack == 1){ playerAnim.SetTrigger("Die"); } break; case 3: //Scisors if (playerAttack == 1){ anim.SetTrigger("Die"); }else if (playerAttack == 2){ playerAnim.SetTrigger("Die"); } break; } } int count; void Update(){ if(lost && count == 0){ if (Input.anyKeyDown){ textAnim.SetTrigger("Exit"); count = 1; } } } public void ShowArm(){ switch (enemyAttack){ case 1: //Rock image.sprite = rock; if (playerAttack == 2){ heart[life - 1].SetActive(false); life--; if (life == 0){ OnDie(); } }else if (playerAttack == 3){ playerHeart[playerLife - 1].SetActive(false); playerLife--; if (playerLife == 0){ Lose(); } } break; case 2: //Paper image.sprite = paper; if (playerAttack == 3){ heart[life - 1].SetActive(false); life--; if (life == 0){ OnDie(); } }else if (playerAttack == 1){ playerHeart[playerLife - 1].SetActive(false); playerLife--; if (playerLife == 0){ Lose(); } } break; case 3: //Scisors image.sprite = scisors; if (playerAttack == 1){ heart[life - 1].SetActive(false); life--; if (life == 0){ OnDie(); } }else if (playerAttack == 2){ playerHeart[playerLife - 1].SetActive(false); playerLife--; if (playerLife == 0){ Lose(); } } break; } } void Lose(){ text.ReadText(loseDialogue.sentences[0]); lost = true; playerHand.canCut = true; textAnim.SetTrigger("Enter"); playerHand.GetComponentInParent().SetTrigger("EnterDeath"); } public void Shake(){ image.sprite = rock; } void OnDie(){ if (!gameObject.activeSelf) return; GetComponent().sprite = deathSprite; StartCoroutine(Die()); } IEnumerator Die(){ yield return new WaitForSeconds(.5f); GameMaster.instance.CompleteGrid(GameMaster.instance.currentGrid); } }