| @@ -361,7 +361,7 @@ namespace GameClass.GameObj | |||
| { | |||
| lock (actionLock) | |||
| { | |||
| if (playerState == PlayerStateType.Null && IsMoving) return PlayerStateType.Moving; | |||
| if (playerState == PlayerStateType.Moving && IsMoving == 1) return PlayerStateType.Moving; | |||
| return playerState; | |||
| } | |||
| } | |||
| @@ -423,9 +423,7 @@ namespace GameClass.GameObj | |||
| { | |||
| //只能被SetPlayerState引用 | |||
| whatInteractingWith = gameObj; | |||
| if (value != PlayerStateType.Moving) | |||
| IsMoving = false; | |||
| playerState = (value == PlayerStateType.Moving) ? PlayerStateType.Null : value; | |||
| playerState = value; | |||
| //Debugger.Output(this,playerState.ToString()+" "+IsMoving.ToString()); | |||
| return ++stateNum; | |||
| } | |||
| @@ -434,9 +432,7 @@ namespace GameClass.GameObj | |||
| { | |||
| //只能被SetPlayerState引用 | |||
| whatInteractingWith = gameObj; | |||
| if (value != PlayerStateType.Moving) | |||
| IsMoving = false; | |||
| playerState = (value == PlayerStateType.Moving) ? PlayerStateType.Null : value; | |||
| playerState = value; | |||
| //Debugger.Output(this,playerState.ToString()+" "+IsMoving.ToString()); | |||
| return stateNum; | |||
| } | |||
| @@ -574,7 +570,6 @@ namespace GameClass.GameObj | |||
| lock (actionLock) | |||
| { | |||
| whatInteractingWith = null; | |||
| IsMoving = false; | |||
| playerState = PlayerStateType.Null; | |||
| return ++stateNum; | |||
| } | |||
| @@ -803,6 +798,7 @@ namespace GameClass.GameObj | |||
| return false; | |||
| } | |||
| } | |||
| public void 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(); | |||
| try | |||
| { | |||
| return !isMoving && canMove && !isRemoved; | |||
| return isMoving == 0 && canMove && !isRemoved; | |||
| } | |||
| finally | |||
| { | |||
| @@ -102,7 +102,7 @@ namespace GameEngine | |||
| lock (obj.ActionLock) | |||
| { | |||
| if (!obj.IsAvailableForMove) { EndMove(obj); return; } | |||
| obj.IsMoving = true; | |||
| obj.IsMoving = 1; | |||
| } | |||
| new Thread | |||
| @@ -139,7 +139,7 @@ namespace GameEngine | |||
| if (isEnded) | |||
| { | |||
| obj.IsMoving = false; | |||
| obj.IsMoving = 0; | |||
| EndMove(obj); | |||
| return; | |||
| } | |||
| @@ -184,7 +184,7 @@ namespace GameEngine | |||
| } | |||
| if (isEnded) | |||
| { | |||
| obj.IsMoving = false; | |||
| obj.IsMoving = 0; | |||
| EndMove(obj); | |||
| return; | |||
| } | |||
| @@ -224,7 +224,7 @@ namespace GameEngine | |||
| } | |||
| } while (flag); | |||
| } | |||
| obj.IsMoving = false; // 结束移动 | |||
| obj.IsMoving = 0; // 结束移动 | |||
| EndMove(obj); | |||
| } | |||
| } | |||
| @@ -76,7 +76,7 @@ namespace Gaming | |||
| 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; | |||
| Generator? generatorForFix = (Generator?)gameMap.OneForInteract(player.Position, GameObjType.Generator); | |||
| @@ -8,7 +8,7 @@ namespace Preparation.Interface | |||
| { | |||
| object ActionLock { get; } | |||
| public int MoveSpeed { get; } | |||
| public bool IsMoving { get; set; } | |||
| public int IsMoving { get; set; } | |||
| public bool IsRemoved { get; } | |||
| public bool IsAvailableForMove { get; } | |||
| public long StateNum { get; } | |||
| @@ -169,7 +169,7 @@ namespace Preparation.Interface | |||
| public List<ActiveSkillType> ListOfIActiveSkill => new(new ActiveSkillType[] { ActiveSkillType.Punish }); | |||
| public List<PassiveSkillType> ListOfIPassiveSkill => new(new PassiveSkillType[] { }); | |||
| public const int fixSpeed = 0; | |||
| public const int fixSpeed = 50; | |||
| public int FixSpeed => fixSpeed; | |||
| 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 double Concealment => concealment; | |||
| public const int alertnessRadius = GameData.basicStudentAlertnessRadius / 2; | |||
| public const int alertnessRadius = GameData.basicStudentAlertnessRadius * 2 / 3; | |||
| public int AlertnessRadius => alertnessRadius; | |||
| public int viewRange = GameData.basicStudentViewRange * 9 / 10; | |||
| public int viewRange = GameData.basicStudentViewRange * 8 / 10; | |||
| public int ViewRange => viewRange; | |||
| public int speedOfOpeningOrLocking = GameData.basicSpeedOfOpeningOrLocking; | |||
| public int SpeedOfOpeningOrLocking => speedOfOpeningOrLocking; | |||
| public int speedOfClimbingThroughWindows = GameData.basicStudentSpeedOfClimbingThroughWindows / 2; | |||
| public int speedOfClimbingThroughWindows = GameData.basicStudentSpeedOfClimbingThroughWindows * 1000 / 1222; | |||
| public int SpeedOfClimbingThroughWindows => speedOfClimbingThroughWindows; | |||
| public int speedOfOpenChest = GameData.basicSpeedOfOpenChest; | |||