DefCard.cs 5.8 KB

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