From 11e1be0960ed9d8265a7352aaf06970c4bbd65b0 Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Tue, 4 Apr 2023 09:18:28 +0800 Subject: [PATCH] refactor: :art: refactor the struction of code --- .../GameObj/Character/Character.Skill.cs | 31 +-- .../GameObj/Character/Character.Student.cs | 8 +- logic/GameClass/GameObj/Character/Skill.cs | 250 ------------------ logic/Gaming/ActionManager.cs | 5 +- logic/Gaming/Game.cs | 20 -- logic/Preparation/Interface/ICharacter.cs | 2 + logic/Preparation/Interface/IOccupation.cs | 49 +++- logic/Preparation/Interface/ISkill.cs | 249 ++++++++++++++++- logic/Server/GameServer.cs | 1 - logic/规则Logic.md | 2 - 10 files changed, 296 insertions(+), 321 deletions(-) delete mode 100644 logic/GameClass/GameObj/Character/Skill.cs diff --git a/logic/GameClass/GameObj/Character/Character.Skill.cs b/logic/GameClass/GameObj/Character/Character.Skill.cs index 06d8c10..a1dc379 100644 --- a/logic/GameClass/GameObj/Character/Character.Skill.cs +++ b/logic/GameClass/GameObj/Character/Character.Skill.cs @@ -61,34 +61,7 @@ namespace GameClass.GameObj this.CanMove = true; this.score = 0; this.buffManager = new BuffManager(); - switch (characterType) - { - case CharacterType.Assassin: - this.occupation = new Assassin(); - break; - case CharacterType.Robot: - this.occupation = new Robot(); - break; - case CharacterType.Teacher: - this.occupation = new Teacher(); - break; - case CharacterType.Klee: - this.occupation = new Klee(); - break; - case CharacterType.StraightAStudent: - this.occupation = new StraightAStudent(); - break; - case CharacterType.ANoisyPerson: - this.occupation = new ANoisyPerson(); - break; - case CharacterType.TechOtaku: - this.occupation = new TechOtaku(); - break; - case CharacterType.Athlete: - default: - this.occupation = new Athlete(); - break; - } + this.occupation = OccupationFactory.FindIOccupation(characterType); this.MaxHp = this.hp = Occupation.MaxHp; this.OrgMoveSpeed = this.moveSpeed = Occupation.MoveSpeed; this.BulletOfPlayer = this.OriBulletOfPlayer = Occupation.InitBullet; @@ -103,7 +76,7 @@ namespace GameClass.GameObj foreach (var activeSkill in this.Occupation.ListOfIActiveSkill) { this.IActiveSkillDictionary.Add(activeSkill, SkillFactory.FindIActiveSkill(activeSkill)); - this.TimeUntilActiveSkillAvailable.Add(activeSkill, IActiveSkillDictionary[activeSkill].SkillCD); + this.TimeUntilActiveSkillAvailable.Add(activeSkill, 0); } // UsePassiveSkill(); //创建player时开始被动技能,这一过程也可以放到gamestart时进行 diff --git a/logic/GameClass/GameObj/Character/Character.Student.cs b/logic/GameClass/GameObj/Character/Character.Student.cs index d38cb8f..60fa091 100644 --- a/logic/GameClass/GameObj/Character/Character.Student.cs +++ b/logic/GameClass/GameObj/Character/Character.Student.cs @@ -122,12 +122,12 @@ namespace GameClass.GameObj public Student(XY initPos, int initRadius, CharacterType characterType) : base(initPos, initRadius, characterType) { - this.OrgFixSpeed = this.fixSpeed = ((IStudent)Occupation).FixSpeed; - this.TreatSpeed = this.OrgTreatSpeed = ((IStudent)Occupation).TreatSpeed; - this.MaxGamingAddiction = ((IStudent)Occupation).MaxGamingAddiction; + this.OrgFixSpeed = this.fixSpeed = ((IStudentType)Occupation).FixSpeed; + this.TreatSpeed = this.OrgTreatSpeed = ((IStudentType)Occupation).TreatSpeed; + this.MaxGamingAddiction = ((IStudentType)Occupation).MaxGamingAddiction; } } - public class Golem : Student + public class Golem : Student, IGolem { private Character? parent; // 主人 public Character? Parent diff --git a/logic/GameClass/GameObj/Character/Skill.cs b/logic/GameClass/GameObj/Character/Skill.cs deleted file mode 100644 index 4f6c6a3..0000000 --- a/logic/GameClass/GameObj/Character/Skill.cs +++ /dev/null @@ -1,250 +0,0 @@ -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; - } - } - } -} \ No newline at end of file diff --git a/logic/Gaming/ActionManager.cs b/logic/Gaming/ActionManager.cs index 5cb0541..35f6c38 100644 --- a/logic/Gaming/ActionManager.cs +++ b/logic/Gaming/ActionManager.cs @@ -173,7 +173,7 @@ namespace Gaming playerTreated.PlayerState = PlayerStateType.Treated; player.PlayerState = PlayerStateType.Treating; new FrameRateTaskExecutor( - loopCondition: () => playerTreated.PlayerState == PlayerStateType.Treated && player.PlayerState == PlayerStateType.Treating && gameMap.Timer.IsGaming && GameData.ApproachToInteract(playerTreated.Position, player.Position), + loopCondition: () => playerTreated.PlayerState == PlayerStateType.Treated && player.PlayerState == PlayerStateType.Treating && gameMap.Timer.IsGaming, loopToDo: () => { if (playerTreated.AddDegreeOfTreatment(GameData.frameDuration * player.TreatSpeed, player)) @@ -182,11 +182,10 @@ namespace Gaming timeInterval: GameData.frameDuration, finallyReturn: () => 0 ) - .Start(); - if (playerTreated.PlayerState == PlayerStateType.Treated) playerTreated.PlayerState = PlayerStateType.Null; if (player.PlayerState == PlayerStateType.Treating) player.PlayerState = PlayerStateType.Null; + else if (playerTreated.PlayerState == PlayerStateType.Treated) playerTreated.PlayerState = PlayerStateType.Null; } ) { IsBackground = true }.Start(); diff --git a/logic/Gaming/Game.cs b/logic/Gaming/Game.cs index 709b84e..edbdb3c 100644 --- a/logic/Gaming/Game.cs +++ b/logic/Gaming/Game.cs @@ -270,26 +270,6 @@ namespace Gaming else return false; } - public void AllActiveSkillDisabledTemporarily() - { - if (!gameMap.Timer.IsGaming) - return; - gameMap.GameObjLockDict[GameObjType.Character].EnterWriteLock(); - try - { - foreach (Character player in gameMap.GameObjDict[GameObjType.Character]) - { - foreach (var activeSkill in player.Occupation.ListOfIActiveSkill) - { - player.SetTimeUntilActiveSkillAvailable(activeSkill, 0); - } - } - } - finally - { - gameMap.GameObjLockDict[GameObjType.Character].ExitWriteLock(); - } - } public void AllPlayerUsePassiveSkill() { diff --git a/logic/Preparation/Interface/ICharacter.cs b/logic/Preparation/Interface/ICharacter.cs index 4f69fba..c4b175c 100644 --- a/logic/Preparation/Interface/ICharacter.cs +++ b/logic/Preparation/Interface/ICharacter.cs @@ -15,4 +15,6 @@ namespace Preparation.Interface public bool IsGhost(); } + public interface IStudent : ICharacter { } + public interface IGolem : IStudent { } } \ No newline at end of file diff --git a/logic/Preparation/Interface/IOccupation.cs b/logic/Preparation/Interface/IOccupation.cs index fd57eb6..6a101e1 100644 --- a/logic/Preparation/Interface/IOccupation.cs +++ b/logic/Preparation/Interface/IOccupation.cs @@ -18,18 +18,18 @@ namespace Preparation.Interface public int SpeedOfOpenChest { get; } } - public interface IGhost : IOccupation + public interface IGhostType : IOccupation { } - public interface IStudent : IOccupation + public interface IStudentType : IOccupation { public int FixSpeed { get; } public int TreatSpeed { get; } public int MaxGamingAddiction { get; } } - public class Assassin : IGhost + public class Assassin : IGhostType { private const int moveSpeed = (int)(GameData.basicGhostMoveSpeed * 1.1); public int MoveSpeed => moveSpeed; @@ -60,7 +60,7 @@ namespace Preparation.Interface public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; public int SpeedOfOpenChest => speedOfOpenChest; } - public class Klee : IGhost + public class Klee : IGhostType { private const int moveSpeed = (int)(GameData.basicGhostMoveSpeed * 155 / 127); public int MoveSpeed => moveSpeed; @@ -91,7 +91,7 @@ namespace Preparation.Interface public int speedOfOpenChest = (int)(GameData.basicSpeedOfOpenChest * 1.1); public int SpeedOfOpenChest => speedOfOpenChest; } - public class ANoisyPerson : IGhost + public class ANoisyPerson : IGhostType { private const int moveSpeed = (int)(GameData.basicGhostMoveSpeed * 1.07); public int MoveSpeed => moveSpeed; @@ -122,7 +122,7 @@ namespace Preparation.Interface public int speedOfOpenChest = (int)(GameData.basicSpeedOfOpenChest); public int SpeedOfOpenChest => speedOfOpenChest; } - public class Teacher : IStudent + public class Teacher : IStudentType { private const int moveSpeed = GameData.basicStudentMoveSpeed * 3 / 4; public int MoveSpeed => moveSpeed; @@ -162,7 +162,7 @@ namespace Preparation.Interface public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; public int SpeedOfOpenChest => speedOfOpenChest; } - public class Athlete : IStudent + public class Athlete : IStudentType { private const int moveSpeed = GameData.basicStudentMoveSpeed * 40 / 38; public int MoveSpeed => moveSpeed; @@ -202,7 +202,7 @@ namespace Preparation.Interface public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; public int SpeedOfOpenChest => speedOfOpenChest; } - public class StraightAStudent : IStudent + public class StraightAStudent : IStudentType { private const int moveSpeed = (int)(GameData.basicStudentMoveSpeed * 0.8); public int MoveSpeed => moveSpeed; @@ -242,7 +242,7 @@ namespace Preparation.Interface public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; public int SpeedOfOpenChest => speedOfOpenChest; } - public class Robot : IStudent + public class Robot : IStudentType { private const int moveSpeed = (int)(GameData.basicStudentMoveSpeed); public int MoveSpeed => moveSpeed; @@ -282,7 +282,7 @@ namespace Preparation.Interface public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; public int SpeedOfOpenChest => speedOfOpenChest; } - public class TechOtaku : IStudent + public class TechOtaku : IStudentType { private const int moveSpeed = (int)(GameData.basicStudentMoveSpeed * 0.75); public int MoveSpeed => moveSpeed; @@ -322,7 +322,7 @@ namespace Preparation.Interface public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; public int SpeedOfOpenChest => speedOfOpenChest; } - public class Sunshine : IStudent + public class Sunshine : IStudentType { private const int moveSpeed = GameData.basicStudentMoveSpeed; public int MoveSpeed => moveSpeed; @@ -362,4 +362,31 @@ namespace Preparation.Interface public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; public int SpeedOfOpenChest => speedOfOpenChest; } + + public static class OccupationFactory + { + public static IOccupation FindIOccupation(CharacterType characterType) + { + switch (characterType) + { + case CharacterType.Assassin: + return new Assassin(); + case CharacterType.Robot: + return new Robot(); + case CharacterType.Teacher: + return new Teacher(); + case CharacterType.Klee: + return new Klee(); + case CharacterType.StraightAStudent: + return new StraightAStudent(); + case CharacterType.ANoisyPerson: + return new ANoisyPerson(); + case CharacterType.TechOtaku: + return new TechOtaku(); + case CharacterType.Athlete: + default: + return new Athlete(); + } + } + } } \ No newline at end of file diff --git a/logic/Preparation/Interface/ISkill.cs b/logic/Preparation/Interface/ISkill.cs index c38663b..5c66d58 100644 --- a/logic/Preparation/Interface/ISkill.cs +++ b/logic/Preparation/Interface/ISkill.cs @@ -1,4 +1,7 @@ -namespace Preparation.Interface +using Preparation.Interface; +using Preparation.Utility; + +namespace Preparation.Interface { public interface ISkill { @@ -13,4 +16,248 @@ public object ActiveSkillLock { get; } public bool IsBeingUsed { get; set; } } +} +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 IGolem? golemSummoned = null; + public IGolem? 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; + } + } } \ No newline at end of file diff --git a/logic/Server/GameServer.cs b/logic/Server/GameServer.cs index 013320a..6f6aacb 100644 --- a/logic/Server/GameServer.cs +++ b/logic/Server/GameServer.cs @@ -59,7 +59,6 @@ namespace Server { game.AllPlayerUsePassiveSkill(); ReportGame(GameState.GameStart); - game.AllActiveSkillDisabledTemporarily(); flag = false; } else ReportGame(GameState.GameRunning); diff --git a/logic/规则Logic.md b/logic/规则Logic.md index 7b89a7b..a10f0df 100644 --- a/logic/规则Logic.md +++ b/logic/规则Logic.md @@ -196,8 +196,6 @@ - 不加说明,这里“学生”往往包括职业“教师” ### 初始状态 -- 所有玩家可以立刻使用主动技能 - - 虽然一开始会接到仍需的冷却时间,但实际上是CD - 玩家出生点固定且一定为空地 ### 交互