Switch from p3hel to json.
This commit is contained in:
parent
2b0e9cbeef
commit
14c7100b4c
37
levels.py
37
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
|
||||
|
||||
|
8
main.py
8
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():
|
||||
|
@ -1 +0,0 @@
|
||||
False/1/0/(255, 0, 0 |False/1j/0/(0, 255, 0
|
@ -1 +0,0 @@
|
||||
True/0/0/(0, 0, 0
|
@ -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)
|
@ -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)
|
Loading…
Reference in New Issue
Block a user