From ade0bd136975241e9368e5929f6ebc6861b4407b Mon Sep 17 00:00:00 2001 From: shangfengh <3495281661@qq.com> Date: Sat, 1 Apr 2023 18:35:45 +0800 Subject: [PATCH] fix: :bug: help Client get CD --- .../GameObj/Character/Character.Skill.cs | 2 +- logic/GameClass/GameObj/Map/Door.cs | 2 +- logic/Gaming/Game.cs | 29 +++++++++++++++++++ logic/Server/GameServer.cs | 3 +- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/logic/GameClass/GameObj/Character/Character.Skill.cs b/logic/GameClass/GameObj/Character/Character.Skill.cs index 0040e5f..80ee0a0 100644 --- a/logic/GameClass/GameObj/Character/Character.Skill.cs +++ b/logic/GameClass/GameObj/Character/Character.Skill.cs @@ -102,8 +102,8 @@ namespace GameClass.GameObj foreach (var activeSkill in this.Occupation.ListOfIActiveSkill) { - this.TimeUntilActiveSkillAvailable.Add(activeSkill, 0); this.IActiveSkillDictionary.Add(activeSkill, SkillFactory.FindIActiveSkill(activeSkill)); + this.TimeUntilActiveSkillAvailable.Add(activeSkill, IActiveSkillDictionary[activeSkill].SkillCD); } // UsePassiveSkill(); //创建player时开始被动技能,这一过程也可以放到gamestart时进行 diff --git a/logic/GameClass/GameObj/Map/Door.cs b/logic/GameClass/GameObj/Map/Door.cs index 8828ee0..6dd85e9 100644 --- a/logic/GameClass/GameObj/Map/Door.cs +++ b/logic/GameClass/GameObj/Map/Door.cs @@ -17,7 +17,7 @@ namespace GameClass.GameObj public override bool IsRigid => !isOpen; public override ShapeType Shape => ShapeType.Square; - private bool isOpen = false; + private bool isOpen = true; public bool IsOpen { get => isOpen; diff --git a/logic/Gaming/Game.cs b/logic/Gaming/Game.cs index 3ff184c..3d72d3c 100644 --- a/logic/Gaming/Game.cs +++ b/logic/Gaming/Game.cs @@ -269,6 +269,35 @@ namespace Gaming else return false; } + public void AllActiveSkillDisabledTemporarily() + { + if (!gameMap.Timer.IsGaming) + return; + /* new Thread + ( + () => + { + Thread.Sleep(10);*/ + 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(); + } + /* } + ) + { IsBackground = true }.Start(); + */ + } public void AllPlayerUsePassiveSkill() { diff --git a/logic/Server/GameServer.cs b/logic/Server/GameServer.cs index 7182f61..4e7a828 100644 --- a/logic/Server/GameServer.cs +++ b/logic/Server/GameServer.cs @@ -56,8 +56,9 @@ namespace Server { if (flag == true) { - ReportGame(GameState.GameStart); game.AllPlayerUsePassiveSkill(); + ReportGame(GameState.GameStart); + game.AllActiveSkillDisabledTemporarily(); flag = false; } else ReportGame(GameState.GameRunning);