AckCard.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using FSRole;
  5. using FSEvent;
  6. using FSBuff;
  7. using UnityEngine.UI;
  8. namespace FSCard {
  9. /*
  10. * 攻击卡片组件
  11. */
  12. public class AckCard : MonoBehaviour, Card {
  13. // 种类
  14. public CardType Type { get; set; }
  15. // 卡片的唯一标示
  16. public string ID { set; get; }
  17. // 花费的能量
  18. public int Cost { get; set; }
  19. // 韧性
  20. public int Tenacity { get; set; }
  21. // 数值
  22. public int Value { set; get; }
  23. // 目标
  24. public Role Target { set; get; }
  25. // 挂载的BUFF id
  26. public string BuffID { set; get; }
  27. // 描述
  28. public string Desc { set; get; }
  29. // 发起者
  30. public Role Source { set; get; }
  31. // 卡面
  32. public Image Face { set; get; }
  33. // 韧性
  34. public Image TenacityImage { set; get; }
  35. // 花费
  36. public Image CostImage { set; get; }
  37. // Buff
  38. public Text DescLabel { set; get; }
  39. // 是否正面
  40. public bool IsFront { set; get; }
  41. // Use this for initialization
  42. void Start() {
  43. Face = transform.Find("Face").GetComponent<Image>();
  44. TenacityImage = transform.Find("Tenacity").GetComponent<Image>();
  45. CostImage = transform.Find("Cost").GetComponent<Image>();
  46. DescLabel = transform.Find("Desc").GetComponent<Text>();
  47. SetFront(true);
  48. }
  49. /*
  50. * 卡片执行
  51. */
  52. public void OnExecute() {
  53. print("卡片 " + ID + " 启动," + Target.CurrentAttr.ID + " 受到攻击...");
  54. Target.GetDamage(-Value);
  55. // 判断BUFF是否存在,如果存在,则运行BUFF
  56. if (BuffID != null) {
  57. if (Target != null) {
  58. print("攻击附带BUFF " + BuffID);
  59. BuffManager.Instance.LoadBuff(Target.gameObject, BuffID);
  60. }
  61. }
  62. }
  63. /*
  64. * 设置正面或者背面
  65. */
  66. public void SetFront(bool face) {
  67. IsFront = face;
  68. // 正面处理
  69. if (IsFront) {
  70. // 将几个需要显示的空间置为可见
  71. Face.gameObject.SetActive(true);
  72. TenacityImage.gameObject.SetActive(true);
  73. CostImage.gameObject.SetActive(true);
  74. // 加载图片
  75. Image image = gameObject.GetComponent<Image>();
  76. if (Source.CurrentAttr.Camp == RoleCamp.ARMY) {
  77. if (Type == CardType.CARD_TYPE_ATTACK) {
  78. image.sprite = Resources.Load("Textures/Cards/BG/Army_Ack", typeof(Sprite)) as Sprite;
  79. } else if (Type == CardType.CARD_TYPE_DEFANCE) {
  80. image.sprite = Resources.Load("Textures/Cards/BG/Army_Def", typeof(Sprite)) as Sprite;
  81. } else {
  82. image.sprite = Resources.Load("Textures/Cards/BG/Army_Spec", typeof(Sprite)) as Sprite;
  83. }
  84. } else {
  85. if (Type == CardType.CARD_TYPE_ATTACK) {
  86. image.sprite = Resources.Load("Textures/Cards/BG/Enemy_Ack", typeof(Sprite)) as Sprite;
  87. } else if (Type == CardType.CARD_TYPE_DEFANCE) {
  88. image.sprite = Resources.Load("Textures/Cards/BG/Enemy_Def", typeof(Sprite)) as Sprite;
  89. } else {
  90. image.sprite = Resources.Load("Textures/Cards/BG/Enemy_Spec", typeof(Sprite)) as Sprite;
  91. }
  92. }
  93. Face.sprite = Resources.Load("Textures/Cards/Face/" + ID, typeof(Sprite)) as Sprite;
  94. string url = string.Format("Textures/Cards/Tenacity/tenacity_{0:d2}", Tenacity);
  95. TenacityImage.sprite = Resources.Load(url, typeof(Sprite)) as Sprite;
  96. url = string.Format("Textures/Cards/Cost/cost_{0:d2}", Cost);
  97. CostImage.sprite = Resources.Load(url, typeof(Sprite)) as Sprite;
  98. DescLabel.text = Desc;
  99. } else {
  100. // 加载背部图片
  101. Image image = gameObject.GetComponent<Image>();
  102. if (Source.CurrentAttr.Camp == RoleCamp.ARMY) {
  103. if (Type == CardType.CARD_TYPE_ATTACK) {
  104. image.sprite = Resources.Load("Textures/Cards/BG/Army_Ack_Back", typeof(Sprite)) as Sprite;
  105. } else if (Type == CardType.CARD_TYPE_DEFANCE) {
  106. image.sprite = Resources.Load("Textures/Cards/BG/Army_Def_Back", typeof(Sprite)) as Sprite;
  107. } else {
  108. image.sprite = Resources.Load("Textures/Cards/BG/Army_Spec_Back", typeof(Sprite)) as Sprite;
  109. }
  110. } else {
  111. if (Type == CardType.CARD_TYPE_ATTACK) {
  112. image.sprite = Resources.Load("Textures/Cards/BG/Enemy_Ack_Back", typeof(Sprite)) as Sprite;
  113. } else if (Type == CardType.CARD_TYPE_DEFANCE) {
  114. image.sprite = Resources.Load("Textures/Cards/BG/Enemy_Def_Back", typeof(Sprite)) as Sprite;
  115. } else {
  116. image.sprite = Resources.Load("Textures/Cards/BG/Enemy_Spec_Back", typeof(Sprite)) as Sprite;
  117. }
  118. }
  119. Face.gameObject.SetActive(false);
  120. TenacityImage.gameObject.SetActive(false);
  121. CostImage.gameObject.SetActive(false);
  122. DescLabel.text = "";
  123. }
  124. }
  125. }
  126. }