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

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