You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Skill.cs 3.7 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using Preparation.Interface;
  2. using Preparation.Utility;
  3. namespace GameClass.GameObj
  4. {
  5. public class BecomeVampire : IActiveSkill // 化身吸血鬼
  6. {
  7. public int SkillCD => GameData.commonSkillCD / 3 * 4;
  8. public int DurationTime => GameData.commonSkillTime;
  9. private readonly object commonSkillLock = new object();
  10. public object ActiveSkillLock => commonSkillLock;
  11. }
  12. public class CanBeginToCharge : IActiveSkill
  13. {
  14. public int SkillCD => GameData.commonSkillCD / 5;
  15. public int DurationTime => GameData.commonSkillTime / 10 * 6;
  16. private readonly object commonSkillLock = new object();
  17. public object ActiveSkillLock => commonSkillLock;
  18. }
  19. public class BecomeInvisible : IActiveSkill
  20. {
  21. public int SkillCD => GameData.commonSkillCD;
  22. public int DurationTime => GameData.commonSkillTime / 10 * 6;
  23. private readonly object commonSkillLock = new object();
  24. public object ActiveSkillLock => commonSkillLock;
  25. }
  26. public class Punish : IActiveSkill
  27. {
  28. public int SkillCD => GameData.commonSkillCD;
  29. public int DurationTime => GameData.commonSkillTime / 10 * 6;
  30. private readonly object commonSkillLock = new object();
  31. public object ActiveSkillLock => commonSkillLock;
  32. }
  33. public class NuclearWeapon : IActiveSkill // 核武器
  34. {
  35. public int SkillCD => GameData.commonSkillCD / 3 * 7;
  36. public int DurationTime => GameData.commonSkillTime / 10;
  37. private readonly object commonSkillLock = new object();
  38. public object ActiveSkillLock => commonSkillLock;
  39. }
  40. public class UseKnife : IActiveSkill
  41. {
  42. public int SkillCD => GameData.commonSkillCD / 3 * 2;
  43. public int DurationTime => GameData.commonSkillTime / 10;
  44. private readonly object commonSkillLock = new object();
  45. public object ActiveSkillLock => commonSkillLock;
  46. }
  47. public class SuperFast : IActiveSkill // 3倍速
  48. {
  49. public int SkillCD => GameData.commonSkillCD;
  50. public int DurationTime => GameData.commonSkillTime / 10 * 4;
  51. private readonly object commonSkillLock = new object();
  52. public object ActiveSkillLock => commonSkillLock;
  53. }
  54. public class NullSkill : IActiveSkill
  55. {
  56. public int SkillCD => GameData.commonSkillCD;
  57. public int DurationTime => GameData.commonSkillTime;
  58. private readonly object commonSkillLock = new object();
  59. public object ActiveSkillLock => commonSkillLock;
  60. }
  61. public static class SkillFactory
  62. {
  63. public static IActiveSkill FindIActiveSkill(ActiveSkillType activeSkillType)
  64. {
  65. switch (activeSkillType)
  66. {
  67. case ActiveSkillType.BecomeInvisible:
  68. return new BecomeInvisible();
  69. case ActiveSkillType.UseKnife:
  70. return new UseKnife();
  71. default:
  72. return new NullSkill();
  73. }
  74. }
  75. public static ActiveSkillType FindActiveSkillType(IActiveSkill ActiveSkill)
  76. {
  77. switch (ActiveSkill)
  78. {
  79. case BecomeInvisible:
  80. return ActiveSkillType.BecomeInvisible;
  81. case UseKnife:
  82. return ActiveSkillType.UseKnife;
  83. case CanBeginToCharge:
  84. return ActiveSkillType.CanBeginToCharge;
  85. case Punish:
  86. return ActiveSkillType.Publish;
  87. default:
  88. return ActiveSkillType.Null;
  89. }
  90. }
  91. }
  92. }