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.

Generator.cs 2.0 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using Preparation.Utility;
  2. namespace GameClass.GameObj
  3. {
  4. /// <summary>
  5. /// 发电机
  6. /// </summary>
  7. public class Generator : Immovable
  8. {
  9. public Generator(XY initPos) :
  10. base(initPos, GameData.numOfPosGridPerCell / 2, GameObjType.Generator)
  11. {
  12. }
  13. public override bool IsRigid => true;
  14. public override ShapeType Shape => ShapeType.Square;
  15. private int numOfFixing = 0;
  16. public int NumOfFixing
  17. {
  18. get => numOfFixing;
  19. set
  20. {
  21. lock (gameObjLock)
  22. {
  23. numOfFixing = value;
  24. }
  25. }
  26. }
  27. private int degreeOfRepair = 0;
  28. public int DegreeOfRepair
  29. {
  30. get => degreeOfRepair;
  31. private set
  32. {
  33. lock (gameObjLock)
  34. {
  35. if (degreeOfRepair < GameData.degreeOfFixedGenerator)//不允许正常破坏已经修好的发电机
  36. if (value < 0) degreeOfRepair = 0;
  37. else degreeOfRepair = value > GameData.degreeOfFixedGenerator ? GameData.degreeOfFixedGenerator : value;
  38. }
  39. }
  40. }
  41. public bool Repair(int addDegree, Character character)
  42. {
  43. if (DegreeOfRepair == GameData.degreeOfFixedGenerator) return false;
  44. int orgDegreeOfRepair = degreeOfRepair;
  45. DegreeOfRepair += addDegree;
  46. if (DegreeOfRepair > orgDegreeOfRepair)
  47. character.AddScore(GameData.StudentScoreFix(DegreeOfRepair) - GameData.StudentScoreFix(orgDegreeOfRepair));
  48. else character.AddScore(GameData.TrickerScoreDamageGenerator(orgDegreeOfRepair) - GameData.TrickerScoreDamageGenerator(DegreeOfRepair));
  49. if (DegreeOfRepair == GameData.degreeOfFixedGenerator)
  50. return true;
  51. else return false;
  52. }
  53. }
  54. }