You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

Door.cs 1.7 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Preparation.Interface;
  2. using Preparation.Utility;
  3. namespace GameClass.GameObj
  4. {
  5. /// <summary>
  6. /// 门
  7. /// </summary>
  8. public class Door : GameObj
  9. {
  10. public Door(XY initPos, PlaceType placeType) :
  11. base(initPos, GameData.numOfPosGridPerCell / 2, GameObjType.Door)
  12. {
  13. switch (placeType)
  14. {
  15. case PlaceType.Door3:
  16. doorNum = 3;
  17. break;
  18. case PlaceType.Door5:
  19. doorNum = 5;
  20. break;
  21. case PlaceType.Door6:
  22. default:
  23. doorNum = 6;
  24. break;
  25. }
  26. this.CanMove = false;
  27. }
  28. private readonly int doorNum;
  29. public int DoorNum => doorNum;
  30. public override bool IsRigid => !isOpen;
  31. public override ShapeType Shape => ShapeType.Square;
  32. private bool isOpen = true;
  33. public bool IsOpen
  34. {
  35. get => isOpen;
  36. set
  37. {
  38. lock (gameObjLock)
  39. isOpen = value;
  40. }
  41. }
  42. private int openOrLockDegree = 0;
  43. public int OpenOrLockDegree
  44. {
  45. get => openOrLockDegree;
  46. set
  47. {
  48. if (value > 0)
  49. lock (gameObjLock)
  50. openOrLockDegree = (value > GameData.degreeOfLockingOrOpeningTheDoor) ? GameData.degreeOfLockingOrOpeningTheDoor : value;
  51. else
  52. lock (gameObjLock)
  53. openOrLockDegree = 0;
  54. }
  55. }
  56. }
  57. }