| @@ -361,7 +361,7 @@ namespace GameClass.GameObj | |||||
| { | { | ||||
| lock (actionLock) | lock (actionLock) | ||||
| { | { | ||||
| if (playerState == PlayerStateType.Null && IsMoving) return PlayerStateType.Moving; | |||||
| if (playerState == PlayerStateType.Moving && IsMoving == 1) return PlayerStateType.Moving; | |||||
| return playerState; | return playerState; | ||||
| } | } | ||||
| } | } | ||||
| @@ -423,9 +423,7 @@ namespace GameClass.GameObj | |||||
| { | { | ||||
| //只能被SetPlayerState引用 | //只能被SetPlayerState引用 | ||||
| whatInteractingWith = gameObj; | whatInteractingWith = gameObj; | ||||
| if (value != PlayerStateType.Moving) | |||||
| IsMoving = false; | |||||
| playerState = (value == PlayerStateType.Moving) ? PlayerStateType.Null : value; | |||||
| playerState = value; | |||||
| //Debugger.Output(this,playerState.ToString()+" "+IsMoving.ToString()); | //Debugger.Output(this,playerState.ToString()+" "+IsMoving.ToString()); | ||||
| return ++stateNum; | return ++stateNum; | ||||
| } | } | ||||
| @@ -434,9 +432,7 @@ namespace GameClass.GameObj | |||||
| { | { | ||||
| //只能被SetPlayerState引用 | //只能被SetPlayerState引用 | ||||
| whatInteractingWith = gameObj; | whatInteractingWith = gameObj; | ||||
| if (value != PlayerStateType.Moving) | |||||
| IsMoving = false; | |||||
| playerState = (value == PlayerStateType.Moving) ? PlayerStateType.Null : value; | |||||
| playerState = value; | |||||
| //Debugger.Output(this,playerState.ToString()+" "+IsMoving.ToString()); | //Debugger.Output(this,playerState.ToString()+" "+IsMoving.ToString()); | ||||
| return stateNum; | return stateNum; | ||||
| } | } | ||||
| @@ -574,7 +570,6 @@ namespace GameClass.GameObj | |||||
| lock (actionLock) | lock (actionLock) | ||||
| { | { | ||||
| whatInteractingWith = null; | whatInteractingWith = null; | ||||
| IsMoving = false; | |||||
| playerState = PlayerStateType.Null; | playerState = PlayerStateType.Null; | ||||
| return ++stateNum; | return ++stateNum; | ||||
| } | } | ||||
| @@ -803,6 +798,7 @@ namespace GameClass.GameObj | |||||
| return false; | return false; | ||||
| } | } | ||||
| } | } | ||||
| public void TryActivatingLIFE() | public void TryActivatingLIFE() | ||||
| { | { | ||||
| if (buffManager.TryActivatingLIFE()) | if (buffManager.TryActivatingLIFE()) | ||||
| @@ -47,21 +47,11 @@ namespace GameClass.GameObj | |||||
| } | } | ||||
| } | } | ||||
| private bool isMoving; | |||||
| public bool IsMoving | |||||
| private int isMoving = 0; | |||||
| public int IsMoving | |||||
| { | { | ||||
| get | |||||
| { | |||||
| lock (actionLock) | |||||
| return isMoving; | |||||
| } | |||||
| set | |||||
| { | |||||
| lock (actionLock) | |||||
| { | |||||
| isMoving = value; | |||||
| } | |||||
| } | |||||
| get => Interlocked.CompareExchange(ref isMoving, 0, 1); | |||||
| set => Interlocked.Exchange(ref isMoving, value); | |||||
| } | } | ||||
| // 移动,改变坐标 | // 移动,改变坐标 | ||||
| @@ -151,7 +141,7 @@ namespace GameClass.GameObj | |||||
| moveReaderWriterLock.EnterReadLock(); | moveReaderWriterLock.EnterReadLock(); | ||||
| try | try | ||||
| { | { | ||||
| return !isMoving && canMove && !isRemoved; | |||||
| return isMoving == 0 && canMove && !isRemoved; | |||||
| } | } | ||||
| finally | finally | ||||
| { | { | ||||
| @@ -102,7 +102,7 @@ namespace GameEngine | |||||
| lock (obj.ActionLock) | lock (obj.ActionLock) | ||||
| { | { | ||||
| if (!obj.IsAvailableForMove) { EndMove(obj); return; } | if (!obj.IsAvailableForMove) { EndMove(obj); return; } | ||||
| obj.IsMoving = true; | |||||
| obj.IsMoving = 1; | |||||
| } | } | ||||
| new Thread | new Thread | ||||
| @@ -139,7 +139,7 @@ namespace GameEngine | |||||
| if (isEnded) | if (isEnded) | ||||
| { | { | ||||
| obj.IsMoving = false; | |||||
| obj.IsMoving = 0; | |||||
| EndMove(obj); | EndMove(obj); | ||||
| return; | return; | ||||
| } | } | ||||
| @@ -184,7 +184,7 @@ namespace GameEngine | |||||
| } | } | ||||
| if (isEnded) | if (isEnded) | ||||
| { | { | ||||
| obj.IsMoving = false; | |||||
| obj.IsMoving = 0; | |||||
| EndMove(obj); | EndMove(obj); | ||||
| return; | return; | ||||
| } | } | ||||
| @@ -224,7 +224,7 @@ namespace GameEngine | |||||
| } | } | ||||
| } while (flag); | } while (flag); | ||||
| } | } | ||||
| obj.IsMoving = false; // 结束移动 | |||||
| obj.IsMoving = 0; // 结束移动 | |||||
| EndMove(obj); | EndMove(obj); | ||||
| } | } | ||||
| } | } | ||||
| @@ -76,7 +76,7 @@ namespace Gaming | |||||
| public bool Fix(Student player)// 自动检查有无发电机可修 | public bool Fix(Student player)// 自动检查有无发电机可修 | ||||
| { | { | ||||
| if (player.CharacterType == CharacterType.Teacher || (!player.Commandable()) || player.PlayerState == PlayerStateType.Fixing) | |||||
| if ((!player.Commandable()) || player.PlayerState == PlayerStateType.Fixing) | |||||
| return false; | return false; | ||||
| Generator? generatorForFix = (Generator?)gameMap.OneForInteract(player.Position, GameObjType.Generator); | Generator? generatorForFix = (Generator?)gameMap.OneForInteract(player.Position, GameObjType.Generator); | ||||
| @@ -8,7 +8,7 @@ namespace Preparation.Interface | |||||
| { | { | ||||
| object ActionLock { get; } | object ActionLock { get; } | ||||
| public int MoveSpeed { get; } | public int MoveSpeed { get; } | ||||
| public bool IsMoving { get; set; } | |||||
| public int IsMoving { get; set; } | |||||
| public bool IsRemoved { get; } | public bool IsRemoved { get; } | ||||
| public bool IsAvailableForMove { get; } | public bool IsAvailableForMove { get; } | ||||
| public long StateNum { get; } | public long StateNum { get; } | ||||
| @@ -169,7 +169,7 @@ namespace Preparation.Interface | |||||
| public List<ActiveSkillType> ListOfIActiveSkill => new(new ActiveSkillType[] { ActiveSkillType.Punish }); | public List<ActiveSkillType> ListOfIActiveSkill => new(new ActiveSkillType[] { ActiveSkillType.Punish }); | ||||
| public List<PassiveSkillType> ListOfIPassiveSkill => new(new PassiveSkillType[] { }); | public List<PassiveSkillType> ListOfIPassiveSkill => new(new PassiveSkillType[] { }); | ||||
| public const int fixSpeed = 0; | |||||
| public const int fixSpeed = 50; | |||||
| public int FixSpeed => fixSpeed; | public int FixSpeed => fixSpeed; | ||||
| public const int treatSpeed = (int)(GameData.basicTreatSpeed * 0.8); | public const int treatSpeed = (int)(GameData.basicTreatSpeed * 0.8); | ||||
| @@ -178,16 +178,16 @@ namespace Preparation.Interface | |||||
| public const double concealment = GameData.basicConcealment * 0.5; | public const double concealment = GameData.basicConcealment * 0.5; | ||||
| public double Concealment => concealment; | public double Concealment => concealment; | ||||
| public const int alertnessRadius = GameData.basicStudentAlertnessRadius / 2; | |||||
| public const int alertnessRadius = GameData.basicStudentAlertnessRadius * 2 / 3; | |||||
| public int AlertnessRadius => alertnessRadius; | public int AlertnessRadius => alertnessRadius; | ||||
| public int viewRange = GameData.basicStudentViewRange * 9 / 10; | |||||
| public int viewRange = GameData.basicStudentViewRange * 8 / 10; | |||||
| public int ViewRange => viewRange; | public int ViewRange => viewRange; | ||||
| public int speedOfOpeningOrLocking = GameData.basicSpeedOfOpeningOrLocking; | public int speedOfOpeningOrLocking = GameData.basicSpeedOfOpeningOrLocking; | ||||
| public int SpeedOfOpeningOrLocking => speedOfOpeningOrLocking; | public int SpeedOfOpeningOrLocking => speedOfOpeningOrLocking; | ||||
| public int speedOfClimbingThroughWindows = GameData.basicStudentSpeedOfClimbingThroughWindows / 2; | |||||
| public int speedOfClimbingThroughWindows = GameData.basicStudentSpeedOfClimbingThroughWindows * 1000 / 1222; | |||||
| public int SpeedOfClimbingThroughWindows => speedOfClimbingThroughWindows; | public int SpeedOfClimbingThroughWindows => speedOfClimbingThroughWindows; | ||||
| public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; | public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; | ||||