from enum import Enum from typing import List, Dict import sys if sys.version_info < (3, 9): from typing import Tuple else: Tuple = tuple class GameState(Enum): NullGameState = 0 GameStart = 1 GameRunning = 2 GameEnd = 3 class PlaceType(Enum): NullPlaceType = 0 Land = 1 Wall = 2 Grass = 3 ClassRoom = 4 Gate = 5 HiddenGate = 6 Window = 7 Door3 = 8 Door5 = 9 Door6 = 10 Chest = 11 class ShapeType(Enum): NullShapeType = 0 Square = 1 Circle = 2 class PlayerType(Enum): NullPlayerType = 0 StudentPlayer = 1 TrickerPlayer = 2 class PropType(Enum): NullPropType = 0 Key3 = 1 Key5 = 2 Key6 = 3 AddSpeed = 4 AddLifeOrClairaudience = 5 AddHpOrAp = 6 ShieldOrSpear = 7 RecoveryFromDizziness = 8 class BulletType(Enum): NullBulletType = 0 FlyingKnife = 1 CommonAttackOfTricker = 2 BombBomb = 3 JumpyDumpty = 4 AtomBomb = 5 class StudentType(Enum): NullStudentType = 0 Athlete = 1 Teacher = 2 StraightAStudent = 3 Robot = 4 TechOtaku = 5 class TrickerType(Enum): NullTrickerType = 0 Assassin = 1 Klee = 2 ANoisyPerson = 3 Idol = 4 class StudentBuffType(Enum): NullStudentBuffType = 0 AddSpeed = 1 AddLife = 2 Shield = 3 Invisible = 4 class TrickerBuffType(Enum): NullTrickerBuffType = 0 AddSpeed = 1 Spear = 2 AddAp = 3 Clairaudience = 4 Invisible = 5 class PlayerState(Enum): NullState = 0 Idle = 1 Learning = 2 Addicted = 3 Quit = 4 Graduated = 5 Treated = 6 Rescued = 7 Stunned = 8 Treating = 9 Rescuing = 10 Swinging = 11 Attacking = 12 Locking = 13 Rummaging = 14 Climbing = 15 OpeningAChest = 16 UsingSpecialSkill = 17 OpeningAGate = 18 class MessageOfObj(Enum): NullMessageOfObj = 0 StudentMessage = 1 TrickerMessage = 2 PropMessage = 3 BulletMessage = 4 BombedBulletMessage = 5 ClassroomMessage = 6 GateMessage = 7 ChestMessage = 8 DoorMessage = 9 MapMessage = 10 NewsMessage = 11 HiddenGateMessage = 12 class HiddenGateState(Enum): Null = 0 Refreshed = 1 Opened = 2 class Player: x: int y: int speed: int viewRange: int playerID: int guid: int radius: int score: int facingDirection: float timeUntilSkillAvailable: List[float] = [] playerType: PlayerType prop: List[PropType] = [] place: PlaceType bulletType: BulletType playerState: PlayerState class Student(Player): studentType: StudentType determination: int addiction: int treatProgress: int rescueProgress: int learningSpeed: int treatSpeed: int dangerAlert: float buff: List[StudentBuffType] = [] class Tricker(Player): trickerType: TrickerType trickDesire: float classVolume: float buff: List[TrickerBuffType] = [] class Prop: x: int y: int guid: int type: PropType place: PlaceType facingDirection: float class Bullet: bulletType: BulletType x: int y: int facingDirection: float guid: int team: PlayerType place: PlaceType bombRange: float speed: int class BombedBullet: bulletType: BulletType x: int y: int facingDirection: float mappingID: int bombRange: float class GameMap: classroomState: Dict[Tuple[int, int], int] = {} gateState: Dict[Tuple[int, int], int] = {} chestState: Dict[Tuple[int, int], int] = {} doorState: Dict[Tuple[int, int], bool] = {} doorProgress: Dict[Tuple[int, int], int] = {} hiddenGateState: Dict[Tuple[int, int], HiddenGateState] = {} class GameInfo: gameTime: int subjectFinished: int studentGraduated: int studentQuited: int studentScore: int trickerScore: int