Creature.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.EventSystems;
  5. using UnityEngine.UI;
  6. public class Creature : MonoBehaviour {
  7. [SerializeField] Sprite creatureImage;
  8. [SerializeField] bool humanControlled;
  9. private int init;
  10. private int dex = 0;
  11. private List<Action> actions = new List<Action>();
  12. Weapon weapon;
  13. int health;
  14. private CanvasGroup canvasGroup;
  15. private RectTransform rectTransform;
  16. private Vector3Int currentPos;
  17. private Action firstAction;
  18. private Action secondAction;
  19. public int Dex { get => dex; set => dex = value; }
  20. public int Init { get => init; set => init = value; }
  21. private void Start() {
  22. canvasGroup = GetComponent<CanvasGroup>();
  23. rectTransform = GetComponent<RectTransform>();
  24. }
  25. public int GetInit() {
  26. return Init;
  27. }
  28. public void RollInit() {
  29. Init = Random.Range(0, 100 - dex);
  30. }
  31. public Sprite GetSprite() {
  32. return creatureImage;
  33. }
  34. public bool IsHumanControlled() {
  35. return humanControlled;
  36. }
  37. public void SetFirstAction(Action action) {
  38. firstAction = action;
  39. }
  40. public void SetSecondAction(Action action) {
  41. secondAction = action;
  42. }
  43. internal List<Creature> EnemiesInSquareNextToCreature(Creature creature, List<Creature> combatants) {
  44. List<Creature> enemiesClose = new();
  45. foreach (Creature c in combatants) {
  46. Vector3 distance = c.GetCurrentPosition() - creature.GetCurrentPosition();
  47. if (c.name != creature.name && distance.x <= 1 && distance.x >= -1 && distance.y <= 1 && distance.y >= -1) {
  48. enemiesClose.Add(c);
  49. }
  50. }
  51. return enemiesClose;
  52. }
  53. internal void SetPositionInGrid(Vector3Int vector3Int) {
  54. currentPos = vector3Int;
  55. }
  56. public Vector3Int GetCurrentPosition() {
  57. return currentPos;
  58. }
  59. public bool HasFirstAction() {
  60. return firstAction != null;
  61. }
  62. }