| @@ -25,7 +25,7 @@ namespace GameClass.GameObj | |||||
| public Character? WhoOpen => whoOpen; | public Character? WhoOpen => whoOpen; | ||||
| public bool Open(Character character) | public bool Open(Character character) | ||||
| { | { | ||||
| lock (GameObjReaderWriterLock) | |||||
| lock (gameObjLock) | |||||
| { | { | ||||
| if (whoOpen != null) return false; | if (whoOpen != null) return false; | ||||
| openStartTime = Environment.TickCount64; | openStartTime = Environment.TickCount64; | ||||
| @@ -35,7 +35,7 @@ namespace GameClass.GameObj | |||||
| } | } | ||||
| public void StopOpen() | public void StopOpen() | ||||
| { | { | ||||
| lock (GameObjReaderWriterLock) | |||||
| lock (gameObjLock) | |||||
| { | { | ||||
| whoOpen = null; | whoOpen = null; | ||||
| } | } | ||||
| @@ -98,6 +98,7 @@ namespace GameClass.GameObj | |||||
| if (whoLockOrOpen != null) | if (whoLockOrOpen != null) | ||||
| { | { | ||||
| if ((Environment.TickCount64 - openStartTime) >= GameData.degreeOfLockingOrOpeningTheDoor / whoLockOrOpen.SpeedOfOpeningOrLocking) | if ((Environment.TickCount64 - openStartTime) >= GameData.degreeOfLockingOrOpeningTheDoor / whoLockOrOpen.SpeedOfOpeningOrLocking) | ||||
| //现在框架没有问题,但是调用可变的SpeedOfOpeningOrLocking可能死锁 | |||||
| isOpen = true; | isOpen = true; | ||||
| whoLockOrOpen = null; | whoLockOrOpen = null; | ||||
| } | } | ||||
| @@ -52,14 +52,7 @@ namespace Gaming | |||||
| { | { | ||||
| moveEngine.MoveObj(playerToMove, moveTimeInMilliseconds, moveDirection, playerToMove.StateNum); | moveEngine.MoveObj(playerToMove, moveTimeInMilliseconds, moveDirection, playerToMove.StateNum); | ||||
| Thread.Sleep(moveTimeInMilliseconds); | Thread.Sleep(moveTimeInMilliseconds); | ||||
| lock (playerToMove.ActionLock) | |||||
| { | |||||
| lock (playerToMove.ActionLock) | |||||
| { | |||||
| if (stateNum == playerToMove.StateNum) | |||||
| playerToMove.SetPlayerStateNaturally(); | |||||
| } | |||||
| } | |||||
| playerToMove.ResetPlayerState(stateNum); | |||||
| } | } | ||||
| } | } | ||||
| ) | ) | ||||