parent
920ca2b111
commit
f2cd83bf0a
@ -0,0 +1,101 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import json
|
||||
import os
|
||||
import pygame
|
||||
import sys
|
||||
import traceback
|
||||
from . import settings
|
||||
from . import sounds
|
||||
from . import objects
|
||||
|
||||
|
||||
def save(self, name):
|
||||
|
||||
name = name.encode("utf-8")
|
||||
# removes invalid characters
|
||||
if "/" in name:
|
||||
name = name.replace("/", "\\")
|
||||
if "%" in name:
|
||||
name = name.replace("%", "")
|
||||
|
||||
if not os.path.isdir("./saves/%s/" % name):
|
||||
os.makedirs("./saves/%s/" % name)
|
||||
|
||||
all_world_data = {}
|
||||
world_image = {}
|
||||
for world_name in settings.localmap:
|
||||
if not os.path.isdir("./saves/%s/%s" % (name, world_name)):
|
||||
os.makedirs("./saves/%s/%s" % (name, world_name))
|
||||
all_world_data[world_name] = {}
|
||||
all_world_data[world_name]["targets"] = list()
|
||||
all_world_data[world_name]["station"] = dict()
|
||||
for target in settings.localmap[world_name].targets:
|
||||
all_world_data[world_name]["targets"].append(target.unique_relevant_data())
|
||||
station_data = settings.localmap[world_name].warp1.unique_relevant_data()
|
||||
all_world_data[world_name]["station"] = station_data
|
||||
world_image[world_name] = settings.localmap[world_name].background
|
||||
|
||||
data = {"fullscreen": settings.fullscreen,
|
||||
"screenx_current": settings.screenx_current,
|
||||
"screeny_current": settings.screeny_current,
|
||||
"debugmode": settings.debugmode,
|
||||
"debugscreen": settings.debugscreen,
|
||||
"player.rel_x": settings.player.rel_x,
|
||||
"player.rel_y": settings.player.rel_y,
|
||||
"sounds.music.volume": sounds.music.volume,
|
||||
"player.timeplay": settings.player.timeplay,
|
||||
"world.name": settings.world.name,
|
||||
"worlds": list(settings.localmap.keys())
|
||||
}
|
||||
|
||||
settings_file = open("./saves/" + name + "/Data.json", "w")
|
||||
for world_name in settings.localmap:
|
||||
world_file = open("./saves/%s/%s/world.json" % (name, world_name), "w")
|
||||
pygame.image.save(world_image[world_name],
|
||||
"./saves/%s/%s/background.tga" % (name, world_name))
|
||||
json.dump(all_world_data[world_name], world_file, indent=12)
|
||||
json.dump(data, settings_file, indent=12)
|
||||
|
||||
|
||||
def load(self, name):
|
||||
"""Load savegame"""
|
||||
|
||||
try:
|
||||
data = json.load(open("./saves/" + unicode(name) + "/Data.json", "r"))
|
||||
settings.fullscreen = data["fullscreen"]
|
||||
settings.screenx_current = data["screenx_current"]
|
||||
settings.screeny_current = data["screeny_current"]
|
||||
settings.debugmode = data["debugmode"]
|
||||
settings.debugscreen = data["debugscreen"]
|
||||
settings.player.rel_x = data["player.rel_x"]
|
||||
settings.player.rel_y = data["player.rel_y"]
|
||||
sounds.music.volume = data["sounds.music.volume"]
|
||||
settings.player.timeplay = data["player.timeplay"]
|
||||
world_names = data["worlds"]
|
||||
|
||||
from . import worlds
|
||||
localmap = {}
|
||||
for world_name in world_names:
|
||||
background_dir = "./saves/%s/%s/background.tga" % (name, world_name)
|
||||
background = pygame.image.load(background_dir)
|
||||
world_data = json.load(open("./saves/%s/%s/world.json"
|
||||
% (name, world_name), "r"))
|
||||
localmap[world_name] = worlds.world(world_name)
|
||||
localmap[world_name].generate(background, settings.dstars, 0)
|
||||
for target_data in world_data["targets"]:
|
||||
tmp_target = objects.target()
|
||||
tmp_target.pos_xper = target_data["pos_xper"]
|
||||
tmp_target.pos_yper = target_data["pos_yper"]
|
||||
tmp_target.timer = target_data["timer"]
|
||||
tmp_target.update()
|
||||
localmap[world_name].targets.append(tmp_target)
|
||||
tmp_station = objects.warp_station()
|
||||
tmp_station.x_pos = world_data["station"]["x_pos"]
|
||||
tmp_station.y_pos = world_data["station"]["y_pos"]
|
||||
tmp_station.update()
|
||||
localmap[world_name].warp1 = tmp_station
|
||||
settings.localmap = localmap
|
||||
settings.world = localmap[data["world.name"]]
|
||||
except Exception:
|
||||
print(("Unexpected error:", sys.exc_info()[0]))
|
||||
print((traceback.format_exc()))
|
Loading…
Reference in new issue