From 14c7100b4c723efa04b7609508a2064704b7f1d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?b=CA=B0edoh=E2=82=82=20sw=C3=A9?= Date: Fri, 5 Apr 2024 23:06:56 +0500 Subject: [PATCH] Switch from p3hel to json. --- levels.py | 37 +++++-------------------------------- main.py | 8 +++----- maps/cross.p3hel | 1 - maps/empty.p3hel | 1 - maps/squareroom.p3hel | 1 - maps/triangle.p3hel | 1 - 6 files changed, 8 insertions(+), 41 deletions(-) delete mode 100644 maps/cross.p3hel delete mode 100644 maps/empty.p3hel delete mode 100644 maps/squareroom.p3hel delete mode 100644 maps/triangle.p3hel diff --git a/levels.py b/levels.py index 24cdbb1..2404a0b 100644 --- a/levels.py +++ b/levels.py @@ -1,5 +1,7 @@ from os import makedirs from time import time +import json +from serialize import default, object_hook from numba import jit, c16, b1, byte from numba.experimental import jitclass from numba.types import UniTuple @@ -18,42 +20,13 @@ class Segment: self.pointB = cB self.color = trColor -def parse_level_from_string(string): - level = [] - - raw_segments = string.split('|') - - for segment in raw_segments: - raw_segment = segment.split('/') - - level.append( - Segment( - raw_segment[0] == "True", - complex(raw_segment[1]), - complex(raw_segment[2]), - tuple(map(int, raw_segment[3][1:len(raw_segment[3])-1].split(', '))) - ) - ) - - return level - -def save_level_to_string(level): - string_level = "" - - for segment in level: - string_level += f'{segment.isFinite}/{segment.pointA}/{segment.pointB}/{segment.color}' - if segment != level[len(level) - 1]: - string_level += '|' - - return string_level - def save_level(level): makedirs("./levels/", exist_ok=True) - level_save = save_level_to_string(level) + level_save = json.dumps(level, default=default) unix_timestamp = int(time()) - filename = f'{unix_timestamp}.p3hel' + filename = f'{unix_timestamp}.json' save = open(f"./levels/{filename}", "w") save.write(level_save) save.close() @@ -61,7 +34,7 @@ def save_level(level): def open_level(path): save = open(path, "r") - r = save.read() + r = json.loads(save.read(), object_hook=object_hook) save.close() return r diff --git a/main.py b/main.py index 9a93bab..e4196af 100755 --- a/main.py +++ b/main.py @@ -8,9 +8,8 @@ import sys import pygame import pygame.freetype -from levels import Segment, open_level, parse_level_from_string from gyro import GyroVector, Poincare2Klein -from levels import open_level, save_level, parse_level_from_string, make_wall +from levels import open_level, save_level, make_wall from constants import I, WHITE, BLACK, IROT, ROT, OFFSET from draw import draw from alert import Alert @@ -54,10 +53,9 @@ def mainLoop(): alert.start_hide_thread(alerts, delay) try: - leveltoparse = open_level(sys.argv[1]) + level = open_level(sys.argv[1]) except IndexError: - leveltoparse = open_level("maps/squareroom.p3hel") - level = parse_level_from_string(leveltoparse) + level = open_level("maps/squareroom.json") while bCont: for event in pygame.event.get(): diff --git a/maps/cross.p3hel b/maps/cross.p3hel deleted file mode 100644 index db796f0..0000000 --- a/maps/cross.p3hel +++ /dev/null @@ -1 +0,0 @@ -False/1/0/(255, 0, 0 |False/1j/0/(0, 255, 0 diff --git a/maps/empty.p3hel b/maps/empty.p3hel deleted file mode 100644 index 07c6a6d..0000000 --- a/maps/empty.p3hel +++ /dev/null @@ -1 +0,0 @@ -True/0/0/(0, 0, 0 diff --git a/maps/squareroom.p3hel b/maps/squareroom.p3hel deleted file mode 100644 index a586296..0000000 --- a/maps/squareroom.p3hel +++ /dev/null @@ -1 +0,0 @@ -True/0.6/0.6j/(255, 0, 0)|True/0.6/-0.6j/(0, 255, 0)|True/-0.6/-0.6j/(0, 0, 255)|True/-0.6/0.6j/(255, 255, 0) \ No newline at end of file diff --git a/maps/triangle.p3hel b/maps/triangle.p3hel deleted file mode 100644 index 72ea064..0000000 --- a/maps/triangle.p3hel +++ /dev/null @@ -1 +0,0 @@ -True/(0.38529100476842437+0j)/(-0.2372040619364459+0.36629343026935063j)/(255, 0, 0)|True/(-0.2372040619364459+0.36629343026935063j)/(-0.22354939429564802-0.26820653903460522j)/(0, 255, 0)|True/(-0.22354939429564802-0.26820653903460523j)/(0.39868528559672944+0.017873216691274733j)/(0, 0, 255) \ No newline at end of file