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.3 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. public bool IsBeingUsed { get; set; }
  12. }
  13. public class CanBeginToCharge : IActiveSkill
  14. {
  15. public int SkillCD => GameData.commonSkillCD / 5;
  16. public int DurationTime => GameData.commonSkillTime / 10 * 6;
  17. private readonly object commonSkillLock = new object();
  18. public object ActiveSkillLock => commonSkillLock;
  19. public bool IsBeingUsed { get; set; }
  20. }
  21. public class BecomeInvisible : IActiveSkill
  22. {
  23. public int SkillCD => GameData.commonSkillCD;
  24. public int DurationTime => GameData.commonSkillTime / 10 * 6;
  25. private readonly object commonSkillLock = new object();
  26. public object ActiveSkillLock => commonSkillLock;
  27. public bool IsBeingUsed { get; set; }
  28. }
  29. public class NuclearWeapon : IActiveSkill // 核武器
  30. {
  31. public int SkillCD => GameData.commonSkillCD / 3 * 7;
  32. public int DurationTime => GameData.commonSkillTime / 10;
  33. private readonly object commonSkillLock = new object();
  34. public object ActiveSkillLock => commonSkillLock;
  35. public bool IsBeingUsed { get; set; }
  36. }
  37. public class UseKnife : IActiveSkill
  38. {
  39. public int SkillCD => GameData.commonSkillCD / 3 * 2;
  40. public int DurationTime => GameData.commonSkillTime / 10;
  41. private readonly object commonSkillLock = new object();
  42. public object ActiveSkillLock => commonSkillLock;
  43. public bool IsBeingUsed { get; set; }
  44. }
  45. public class SuperFast : IActiveSkill // 3倍速
  46. {
  47. public int SkillCD => GameData.commonSkillCD;
  48. public int DurationTime => GameData.commonSkillTime / 10 * 4;
  49. private readonly object commonSkillLock = new object();
  50. public object ActiveSkillLock => commonSkillLock;
  51. public bool IsBeingUsed { get; set; }
  52. }
  53. public static class SkillFactory
  54. {
  55. public static IActiveSkill? FindIActiveSkill(ActiveSkillType activeSkillType)
  56. {
  57. switch (activeSkillType)
  58. {
  59. case ActiveSkillType.BecomeInvisible:
  60. return new BecomeInvisible();
  61. case ActiveSkillType.UseKnife:
  62. return new UseKnife();
  63. default:
  64. return null;
  65. }
  66. }
  67. public static ActiveSkillType FindActiveSkillType(IActiveSkill ActiveSkill)
  68. {
  69. switch (ActiveSkill)
  70. {
  71. case BecomeInvisible:
  72. return ActiveSkillType.BecomeInvisible;
  73. case UseKnife:
  74. return ActiveSkillType.UseKnife;
  75. case CanBeginToCharge:
  76. return ActiveSkillType.CanBeginToCharge;
  77. default:
  78. return ActiveSkillType.Null;
  79. }
  80. }
  81. }
  82. }