Browse Source

Merge pull request #588 from shangfengh/new

fix: 🐛 fix the bug about OpenDoorWay
tags/v0.1.0
shangfengh GitHub 2 years ago
parent
commit
3b00ff2338
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 21 additions and 7 deletions
  1. +10
    -4
      logic/GameClass/GameObj/Character/Character.cs
  2. +11
    -3
      logic/Gaming/ActionManager.cs

+ 10
- 4
logic/GameClass/GameObj/Character/Character.cs View File

@@ -516,10 +516,16 @@ namespace GameClass.GameObj
((Chest)whatInteractingWith!).StopOpen();
return ChangePlayerState(value, gameObj);
case PlayerStateType.OpeningTheDoorway:
Doorway doorway = (Doorway)whatInteractingWith!;
doorway.StopOpenning();
return ChangePlayerState(value, gameObj);

try
{
Doorway doorway = (Doorway)whatInteractingWith!;
doorway.StopOpenning();
return ChangePlayerState(value, gameObj);
}
finally
{
ThreadNum.Release();
}
case PlayerStateType.OpeningTheDoor:
Door door = (Door)whatInteractingWith!;
try


+ 11
- 3
logic/Gaming/ActionManager.cs View File

@@ -126,8 +126,6 @@ namespace Gaming

public bool OpenDoorway(Student player)
{
if (!(player.Commandable()))
return false;
Doorway? doorwayToOpen = (Doorway?)gameMap.OneForInteract(player.Position, GameObjType.Doorway);
if (doorwayToOpen == null) return false;

@@ -137,7 +135,16 @@ namespace Gaming
(
() =>
{
//player.ThreadNum.WaitOne();
player.ThreadNum.WaitOne();
lock (player.ActionLock)
{
if (stateNum != player.StateNum)
{
player.ThreadNum.Release();
return;
}
}
doorwayToOpen.TryToOpen();
Thread.Sleep(GameData.degreeOfOpenedDoorway - doorwayToOpen.OpenDegree);
lock (player.ActionLock)
{
@@ -145,6 +152,7 @@ namespace Gaming
{
player.SetPlayerStateNaturally();
doorwayToOpen.FinishOpenning();
player.ThreadNum.Release();
}
}
}


Loading…
Cancel
Save