|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- using Preparation.Interface;
- using Preparation.Utility;
-
- namespace GameClass.GameObj
- {
- public class CanBeginToCharge : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD * 24 / 30;
- public int DurationTime => GameData.commonSkillTime * 5 / 10;
-
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class BecomeInvisible : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD;
- public int DurationTime => GameData.commonSkillTime * 6 / 10;
-
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class Punish : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD;
- public int DurationTime => 0;
-
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class Rouse : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD;
- public int DurationTime => 0;
-
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class Howl : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD * 3 / 4;
- public int DurationTime => 0;
-
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class JumpyBomb : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD / 2;
- public int DurationTime => GameData.commonSkillTime * 3 / 10;
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class UseKnife : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD * 2 / 3;
- public int DurationTime => GameData.commonSkillTime / 10;
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class UseRobot : IActiveSkill
- {
- public int SkillCD => GameData.frameDuration;
- public int DurationTime => 0;
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class WriteAnswers : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD;
- public int DurationTime => 0;
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- private int degreeOfMeditation = 0;
- public int DegreeOfMeditation
- {
- get => degreeOfMeditation;
- set
- {
- lock (commonSkillLock)
- {
- degreeOfMeditation = value;
- }
- }
- }
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class SummonGolem : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD;
- public int DurationTime => 0;
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- private Golem? golemSummoned = null;
- public Golem? GolemSummoned
- {
- get => golemSummoned;
- set
- {
- lock (commonSkillLock)
- {
- golemSummoned = value;
- }
- }
- }
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = value;
- }
- }
-
- public class NullSkill : IActiveSkill
- {
- public int SkillCD => GameData.commonSkillCD;
- public int DurationTime => GameData.commonSkillTime;
- private readonly object commonSkillLock = new object();
- public object ActiveSkillLock => commonSkillLock;
-
- public bool isBeingUsed = false;
- public bool IsBeingUsed
- {
- get => isBeingUsed; set => isBeingUsed = false;
- }
- }
-
- public static class SkillFactory
- {
- public static IActiveSkill FindIActiveSkill(ActiveSkillType activeSkillType)
- {
- switch (activeSkillType)
- {
- case ActiveSkillType.BecomeInvisible:
- return new BecomeInvisible();
- case ActiveSkillType.UseKnife:
- return new UseKnife();
- case ActiveSkillType.Howl:
- return new Howl();
- case ActiveSkillType.CanBeginToCharge:
- return new CanBeginToCharge();
- case ActiveSkillType.Punish:
- return new Punish();
- case ActiveSkillType.JumpyBomb:
- return new JumpyBomb();
- case ActiveSkillType.WriteAnswers:
- return new WriteAnswers();
- case ActiveSkillType.SummonGolem:
- return new SummonGolem();
- case ActiveSkillType.UseRobot:
- return new UseRobot();
- case ActiveSkillType.Rouse:
- return new Rouse();
- default:
- return new NullSkill();
- }
- }
-
- public static ActiveSkillType FindActiveSkillType(IActiveSkill ActiveSkill)
- {
- switch (ActiveSkill)
- {
- case BecomeInvisible:
- return ActiveSkillType.BecomeInvisible;
- case Howl:
- return ActiveSkillType.Howl;
- case UseKnife:
- return ActiveSkillType.UseKnife;
- case CanBeginToCharge:
- return ActiveSkillType.CanBeginToCharge;
- case Punish:
- return ActiveSkillType.Punish;
- case JumpyBomb:
- return ActiveSkillType.JumpyBomb;
- case WriteAnswers:
- return ActiveSkillType.WriteAnswers;
- case SummonGolem:
- return ActiveSkillType.SummonGolem;
- case UseRobot:
- return ActiveSkillType.UseRobot;
- case Rouse:
- return ActiveSkillType.Rouse;
- default:
- return ActiveSkillType.Null;
- }
- }
- }
- }
|