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.

structures.py 6.2 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298
  1. from enum import Enum
  2. from typing import List, Dict
  3. import sys
  4. if sys.version_info < (3, 9):
  5. from typing import Tuple
  6. else:
  7. Tuple = tuple
  8. class GameState(Enum):
  9. NullGameState = 0
  10. GameStart = 1
  11. GameRunning = 2
  12. GameEnd = 3
  13. class PlaceType(Enum):
  14. NullPlaceType = 0
  15. Land = 1
  16. Wall = 2
  17. Grass = 3
  18. ClassRoom = 4
  19. Gate = 5
  20. HiddenGate = 6
  21. Window = 7
  22. Door3 = 8
  23. Door5 = 9
  24. Door6 = 10
  25. Chest = 11
  26. class ShapeType(Enum):
  27. NullShapeType = 0
  28. Square = 1
  29. Circle = 2
  30. class PlayerType(Enum):
  31. NullPlayerType = 0
  32. StudentPlayer = 1
  33. TrickerPlayer = 2
  34. class PropType(Enum):
  35. NullPropType = 0
  36. Key3 = 1
  37. Key5 = 2
  38. Key6 = 3
  39. AddSpeed = 4
  40. AddLifeOrClairaudience = 5
  41. AddHpOrAp = 6
  42. ShieldOrSpear = 7
  43. RecoveryFromDizziness = 8
  44. class BulletType(Enum):
  45. NullBulletType = 0
  46. FlyingKnife = 1
  47. CommonAttackOfTricker = 2
  48. BombBomb = 3
  49. JumpyDumpty = 4
  50. AtomBomb = 5
  51. class StudentType(Enum):
  52. NullStudentType = 0
  53. Athlete = 1
  54. Teacher = 2
  55. StraightAStudent = 3
  56. Robot = 4
  57. TechOtaku = 5
  58. Sunshine = 6
  59. class TrickerType(Enum):
  60. NullTrickerType = 0
  61. Assassin = 1
  62. Klee = 2
  63. ANoisyPerson = 3
  64. Idol = 4
  65. class StudentBuffType(Enum):
  66. NullStudentBuffType = 0
  67. AddSpeed = 1
  68. AddLife = 2
  69. Shield = 3
  70. Invisible = 4
  71. class TrickerBuffType(Enum):
  72. NullTrickerBuffType = 0
  73. AddSpeed = 1
  74. Spear = 2
  75. AddAp = 3
  76. Clairaudience = 4
  77. Invisible = 5
  78. class PlayerState(Enum):
  79. NullState = 0
  80. Idle = 1
  81. Learning = 2
  82. Addicted = 3
  83. Quit = 4
  84. Graduated = 5
  85. Encouraged = 6
  86. Roused = 7
  87. Stunned = 8
  88. Encouraging = 9
  89. Rousing = 10
  90. Swinging = 11
  91. Attacking = 12
  92. Locking = 13
  93. # Rummaging = 14
  94. Climbing = 15
  95. OpeningAChest = 16
  96. UsingSpecialSkill = 17
  97. OpeningAGate = 18
  98. class MessageOfObj(Enum):
  99. NullMessageOfObj = 0
  100. StudentMessage = 1
  101. TrickerMessage = 2
  102. PropMessage = 3
  103. BulletMessage = 4
  104. BombedBulletMessage = 5
  105. ClassroomMessage = 6
  106. GateMessage = 7
  107. ChestMessage = 8
  108. DoorMessage = 9
  109. MapMessage = 10
  110. NewsMessage = 11
  111. HiddenGateMessage = 12
  112. class HiddenGateState(Enum):
  113. Null = 0
  114. Refreshed = 1
  115. Opened = 2
  116. class Player:
  117. def __init__(self, **kwargs) -> None:
  118. self.x = 0
  119. self.y = 0
  120. self.speed = 0
  121. self.viewRange = 0
  122. self.playerID = 0
  123. self.guid = 0
  124. self.radius = 0
  125. self.score = 0
  126. self.facingDirection = 0.0
  127. self.timeUntilSkillAvailable = []
  128. self.playerType = PlayerType.NullPlayerType
  129. self.prop = []
  130. self.place = PlaceType.NullPlaceType
  131. self.bulletType = BulletType.NullBulletType
  132. self.playerState = PlayerState.NullState
  133. x: int
  134. y: int
  135. speed: int
  136. viewRange: int
  137. playerID: int
  138. guid: int
  139. radius: int
  140. score: int
  141. facingDirection: float
  142. timeUntilSkillAvailable: List[float]
  143. playerType: PlayerType
  144. prop: List[PropType]
  145. place: PlaceType
  146. bulletType: BulletType
  147. playerState: PlayerState
  148. class Student(Player):
  149. def __init__(self, **kwargs) -> None:
  150. super().__init__()
  151. self.studentType = StudentType.NullStudentType
  152. self.determination = 0
  153. self.addiction = 0
  154. self.encourageProgress = 0
  155. self.rouseProgress = 0
  156. self.learningSpeed = 0
  157. self.encourageSpeed = 0
  158. self.dangerAlert = 0.0
  159. self.buff = []
  160. studentType: StudentType
  161. determination: int
  162. addiction: int
  163. encourageProgress: int
  164. rouseProgress: int
  165. learningSpeed: int
  166. encourageSpeed: int
  167. dangerAlert: float
  168. buff: List[StudentBuffType]
  169. class Tricker(Player):
  170. def __init__(self, **kwargs) -> None:
  171. super().__init__()
  172. self.trickerType = TrickerType.NullTrickerType
  173. self.trickDesire = 0.0
  174. self.classVolume = 0.0
  175. self.buff = []
  176. trickerType: TrickerType
  177. trickDesire: float
  178. classVolume: float
  179. buff: List[TrickerBuffType]
  180. class Prop:
  181. def __init__(self, **kwargs) -> None:
  182. self.x = 0
  183. self.y = 0
  184. self.guid = 0
  185. self.type = PropType.NullPropType
  186. self.place = PlaceType.NullPlaceType
  187. self.facingDirection = 0.0
  188. x: int
  189. y: int
  190. guid: int
  191. type: PropType
  192. place: PlaceType
  193. facingDirection: float
  194. class Bullet:
  195. def __init__(self, **kwargs) -> None:
  196. self.bulletType = BulletType.NullBulletType
  197. self.x = 0
  198. self.y = 0
  199. self.facingDirection = 0.0
  200. self.guid = 0
  201. self.team = PlayerType.NullPlayerType
  202. self.place = PlaceType.NullPlaceType
  203. self.bombRange = 0.0
  204. self.speed = 0
  205. bulletType: BulletType
  206. x: int
  207. y: int
  208. facingDirection: float
  209. guid: int
  210. team: PlayerType
  211. place: PlaceType
  212. bombRange: float
  213. speed: int
  214. class BombedBullet:
  215. def __init__(self, **kwargs) -> None:
  216. self.bulletType = BulletType.NullBulletType
  217. self.x = 0
  218. self.y = 0
  219. self.facingDirection = 0.0
  220. self.mappingID = 0
  221. self.bombRange = 0.0
  222. bulletType: BulletType
  223. x: int
  224. y: int
  225. facingDirection: float
  226. mappingID: int
  227. bombRange: float
  228. class GameMap:
  229. def __init__(self, **kwargs) -> None:
  230. self.classroomState = {}
  231. self.gateState = {}
  232. self.chestState = {}
  233. self.doorState = {}
  234. self.doorProgress = {}
  235. self.hiddenGateState = {}
  236. classroomState: Dict[Tuple[int, int], int]
  237. gateState: Dict[Tuple[int, int], int]
  238. chestState: Dict[Tuple[int, int], int]
  239. doorState: Dict[Tuple[int, int], bool]
  240. doorProgress: Dict[Tuple[int, int], int]
  241. hiddenGateState: Dict[Tuple[int, int], HiddenGateState]
  242. class GameInfo:
  243. def __init__(self, **kwargs) -> None:
  244. self.gameTime = 0
  245. self.subjectFinished = 0
  246. self.studentGraduated = 0
  247. self.studentQuited = 0
  248. self.studentScore = 0
  249. self.trickerScore = 0
  250. gameTime: int
  251. subjectFinished: int
  252. studentGraduated: int
  253. studentQuited: int
  254. studentScore: int
  255. trickerScore: int