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

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