added loading and expanded saving method to save nearly everything

JSON-implementation
Max Lange 8 years ago
parent 07320318b2
commit f95b95064e

@ -0,0 +1,501 @@
{
"world.name": "1",
"player.timeplay": 16907,
"player.rel_y": 0.601613395219393,
"all_world_data": {
"1": {
"station": {
"y_pos": 0.3669155545424203,
"anchorx": 1089,
"x_pos": 0.6307628102672629,
"anchory": 325
},
"targets": [
{
"pos_x": 1884.389351081251,
"pos_y": 7.788475989151822,
"pos_xper": 0.9970314026884927,
"chooser": true,
"kill_entity": false,
"timer": 23764,
"pos_yper": 0.007417596180144592,
"inscreen": false,
"gothit": false
},
{
"pos_x": 1124.6948699390473,
"pos_y": 778.2365647271058,
"pos_xper": 0.5950766507614007,
"chooser": true,
"kill_entity": false,
"timer": 23468,
"pos_yper": 0.7411776806924817,
"inscreen": true,
"gothit": false
}
]
},
"3": {
"station": {
"y_pos": 0.26387794637443496,
"anchorx": 1496,
"x_pos": 0.8661052458189932,
"anchory": 234
},
"targets": [
{
"pos_x": 1663.2855131074136,
"pos_y": 131.17599487722327,
"pos_xper": 0.8800452450303776,
"chooser": false,
"kill_entity": false,
"timer": 2416,
"pos_yper": 0.12492951893068882,
"inscreen": true,
"gothit": false
},
{
"pos_x": 899.2633546992636,
"pos_y": 340.0575970469331,
"pos_xper": 0.4758007167720971,
"chooser": false,
"kill_entity": false,
"timer": 2828,
"pos_yper": 0.3238643781399363,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1178.3136228705878,
"pos_y": 672.827439667347,
"pos_xper": 0.6234463613071893,
"chooser": false,
"kill_entity": false,
"timer": 2988,
"pos_yper": 0.6407880377784257,
"inscreen": true,
"gothit": false
},
{
"pos_x": 91.35163479101801,
"pos_y": 139.94798568598696,
"pos_xper": 0.04833419830212593,
"chooser": false,
"kill_entity": false,
"timer": 3053,
"pos_yper": 0.13328379589141615,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1602.4258379230143,
"pos_y": 745.8815146160823,
"pos_xper": 0.8478443586894255,
"chooser": false,
"kill_entity": false,
"timer": 2798,
"pos_yper": 0.7103633472534118,
"inscreen": true,
"gothit": false
}
]
},
"2": {
"station": {
"y_pos": 0.9841056700482504,
"anchorx": 607,
"x_pos": 0.35149935239658747,
"anchory": 873
},
"targets": [
{
"pos_x": 1168.5306102856032,
"pos_y": 735.8793758271803,
"pos_xper": 0.6182701641722768,
"chooser": false,
"kill_entity": false,
"timer": 2553,
"pos_yper": 0.7008375007877907,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1614.0084876433373,
"pos_y": 662.5068039630249,
"pos_xper": 0.8539727447848345,
"chooser": false,
"kill_entity": false,
"timer": 3036,
"pos_yper": 0.6309588609171666,
"inscreen": true,
"gothit": false
},
{
"pos_x": 127.50158393442281,
"pos_y": 836.8992540048384,
"pos_xper": 0.06746115552085863,
"chooser": false,
"kill_entity": false,
"timer": 2362,
"pos_yper": 0.7970469085760367,
"inscreen": true,
"gothit": false
},
{
"pos_x": 521.6909881847196,
"pos_y": 965.0943580002505,
"pos_xper": 0.276026977875513,
"chooser": false,
"kill_entity": false,
"timer": 2760,
"pos_yper": 0.9191374838097623,
"inscreen": true,
"gothit": false
},
{
"pos_x": 994.3765665437504,
"pos_y": 247.3678932858442,
"pos_xper": 0.5261251674834658,
"chooser": false,
"kill_entity": false,
"timer": 2694,
"pos_yper": 0.2355884697960421,
"inscreen": true,
"gothit": false
}
]
},
"5": {
"station": {
"y_pos": 0.0899271252683781,
"anchorx": 1650,
"x_pos": 0.954924201418354,
"anchory": 79
},
"targets": [
{
"pos_x": 475.80329414308505,
"pos_y": 230.49364576105597,
"pos_xper": 0.251747774678881,
"chooser": false,
"kill_entity": false,
"timer": 3670,
"pos_yper": 0.21951775786767236,
"inscreen": true,
"gothit": false
},
{
"pos_x": 371.920135996772,
"pos_y": 644.2175813322045,
"pos_xper": 0.1967831407390328,
"chooser": false,
"kill_entity": false,
"timer": 3743,
"pos_yper": 0.6135405536497186,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1792.2582837291736,
"pos_y": 683.8044238301012,
"pos_xper": 0.9482848062059119,
"chooser": false,
"kill_entity": false,
"timer": 3727,
"pos_yper": 0.6512423084096202,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1007.371958649403,
"pos_y": 570.1785746621949,
"pos_xper": 0.5330010363224355,
"chooser": false,
"kill_entity": false,
"timer": 3660,
"pos_yper": 0.5430272139639952,
"inscreen": true,
"gothit": false
},
{
"pos_x": 445.99340984460673,
"pos_y": 978.0410705706773,
"pos_xper": 0.23597534912413054,
"chooser": false,
"kill_entity": false,
"timer": 3282,
"pos_yper": 0.931467686257788,
"inscreen": true,
"gothit": false
}
]
},
"4": {
"station": {
"y_pos": 0.37173830152490306,
"anchorx": 877,
"x_pos": 0.5075353520232389,
"anchory": 330
},
"targets": [
{
"pos_x": 1184.1939537529402,
"pos_y": 414.3613653057574,
"pos_xper": 0.6265576474883281,
"chooser": false,
"kill_entity": false,
"timer": 2867,
"pos_yper": 0.39462987171976893,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1058.1816264327838,
"pos_y": 192.37511681330335,
"pos_xper": 0.5598844584300443,
"chooser": false,
"kill_entity": false,
"timer": 3189,
"pos_yper": 0.18321439696505082,
"inscreen": true,
"gothit": false
},
{
"pos_x": 723.8828028797456,
"pos_y": 646.7826809617253,
"pos_xper": 0.38300677401044736,
"chooser": false,
"kill_entity": false,
"timer": 3233,
"pos_yper": 0.6159835056778337,
"inscreen": true,
"gothit": false
},
{
"pos_x": 822.6864213405885,
"pos_y": 570.7450950312501,
"pos_xper": 0.4352838208151262,
"chooser": false,
"kill_entity": false,
"timer": 2843,
"pos_yper": 0.5435667571726192,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1417.0925998692069,
"pos_y": 836.0579481428429,
"pos_xper": 0.7497844443752417,
"chooser": false,
"kill_entity": false,
"timer": 2860,
"pos_yper": 0.7962456648979456,
"inscreen": true,
"gothit": false
}
]
},
"7": {
"station": {
"y_pos": 0.2432539051175645,
"anchorx": 112,
"x_pos": 0.06528652172453053,
"anchory": 216
},
"targets": [
{
"pos_x": 567.6098453029019,
"pos_y": 717.4516047379565,
"pos_xper": 0.3003226694724349,
"chooser": false,
"kill_entity": false,
"timer": 4684,
"pos_yper": 0.6832872426075776,
"inscreen": true,
"gothit": false
},
{
"pos_x": 2.0022107004143317,
"pos_y": 412.8832771386911,
"pos_xper": 0.001059370740959964,
"chooser": false,
"kill_entity": false,
"timer": 3888,
"pos_yper": 0.39322216870351534,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1003.6459337964061,
"pos_y": 376.25625795008665,
"pos_xper": 0.5310295946012731,
"chooser": false,
"kill_entity": false,
"timer": 4458,
"pos_yper": 0.35833929328579683,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1107.8950992597586,
"pos_y": 518.4345777983098,
"pos_xper": 0.5861878832062215,
"chooser": false,
"kill_entity": false,
"timer": 4411,
"pos_yper": 0.4937472169507712,
"inscreen": true,
"gothit": false
},
{
"pos_x": 236.8658148831676,
"pos_y": 591.8538893457957,
"pos_xper": 0.12532582798051195,
"chooser": false,
"kill_entity": false,
"timer": 3837,
"pos_yper": 0.5636703708055196,
"inscreen": true,
"gothit": false
}
]
},
"6": {
"station": {
"y_pos": 0.8505896390251021,
"anchorx": 749,
"x_pos": 0.43352641300414263,
"anchory": 755
},
"targets": [
{
"pos_x": 125.11534955115089,
"pos_y": 302.3585102906508,
"pos_xper": 0.06619859764611158,
"chooser": false,
"kill_entity": false,
"timer": 3803,
"pos_yper": 0.287960485991096,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1802.3864020552307,
"pos_y": 274.0887468938555,
"pos_xper": 0.9536435989710216,
"chooser": false,
"kill_entity": false,
"timer": 3754,
"pos_yper": 0.2610369018036719,
"inscreen": true,
"gothit": false
},
{
"pos_x": 298.7038566877533,
"pos_y": 715.6406451701683,
"pos_xper": 0.15804436861785887,
"chooser": false,
"kill_entity": false,
"timer": 3683,
"pos_yper": 0.6815625192096841,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1451.4075600409064,
"pos_y": 992.2202834128832,
"pos_xper": 0.7679405079581516,
"chooser": false,
"kill_entity": false,
"timer": 3926,
"pos_yper": 0.9449716984884602,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1805.8165939754904,
"pos_y": 448.9011086225404,
"pos_xper": 0.9554585153309473,
"chooser": false,
"kill_entity": false,
"timer": 4081,
"pos_yper": 0.4275248653548004,
"inscreen": true,
"gothit": false
}
]
},
"8": {
"station": {
"y_pos": 0.6987066053340295,
"anchorx": 1477,
"x_pos": 0.8552508660794707,
"anchory": 620
},
"targets": [
{
"pos_x": 702.5529977439395,
"pos_y": 828.7499735416984,
"pos_xper": 0.37172116282748124,
"chooser": false,
"kill_entity": false,
"timer": 4762,
"pos_yper": 0.7892856890873318,
"inscreen": true,
"gothit": false
},
{
"pos_x": 240.89441571503534,
"pos_y": 805.7546645667112,
"pos_xper": 0.127457362812188,
"chooser": false,
"kill_entity": false,
"timer": 4543,
"pos_yper": 0.7673853948254392,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1729.9660920247186,
"pos_y": 145.45518597483522,
"pos_xper": 0.9153259746162532,
"chooser": false,
"kill_entity": false,
"timer": 4226,
"pos_yper": 0.1385287485474621,
"inscreen": true,
"gothit": false
},
{
"pos_x": 1711.0491371228404,
"pos_y": 497.0205766326791,
"pos_xper": 0.9053170037686986,
"chooser": false,
"kill_entity": false,
"timer": 4928,
"pos_yper": 0.47335293012636104,
"inscreen": true,
"gothit": false
},
{
"pos_x": 216.3003160986594,
"pos_y": 748.0192901242882,
"pos_xper": 0.11444461169241238,
"chooser": false,
"kill_entity": false,
"timer": 4800,
"pos_yper": 0.7123993239278935,
"inscreen": true,
"gothit": false
}
]
}
},
"fullscreen": false,
"debugscreen": false,
"screeny_current": 540,
"player.rel_x": 0.9895833333333334,
"screenx_current": 960,
"debugmode": true,
"sounds.music.volume": 0.0
}

@ -1,11 +0,0 @@
{
"screeny_current": 540,
"Fullscreen": false,
"debugscreen": false,
"volume": 0.5,
"player.pos.y": 0,
"screenx_current": 960,
"player.timeplay": 513,
"debugmode": false,
"player.pos.x": 0
}

@ -195,7 +195,9 @@ def main():
if event == "Load Game":
savegame = savegames()
if savegame is not None:
settings.load(savegame)
saver = settings.data()
saver.load(savegame)
settings.player.move_rel()
sounds.music.play("next", 0)
settings.upd("get_saves")
settings.upd("adjust_screen")

@ -138,7 +138,6 @@ class target():
self.kill_entity = False
self.inscreen = True
self.move(settings.player.pos.x, settings.player.pos.y)
self.test = 0
def update(self):
"""Adjusts position according to screen size"""
@ -251,13 +250,13 @@ class warp_station():
settings.right = False
while test_collide():
if settings.player.pos.center[0] < self.pos.center[0]:
settings.player.move_ip(-20, 0)
settings.player.move_pix_ip(-20, 0)
else:
settings.player.move_ip(20, 0)
settings.player.move_pix_ip(20, 0)
if settings.player.pos.center[1] < self.pos.center[1]:
settings.player.move_ip(0, -20)
settings.player.move_pix_ip(0, -20)
else:
settings.player.move_ip(0, 20)
settings.player.move_pix_ip(0, 20)
playerpos = settings.player.pos
def blit(self):

@ -70,7 +70,7 @@ class player():
if self.rotation == 315:
self.img = self.playeruple
def move_ip(self, addx, addy):
def move_pix_ip(self, addx, addy):
#lint:disable
self.rel_x = (self.pos.x + addx) / float(settings.screenx_current)
self.rel_y = (self.pos.y + addy) / float(settings.screeny_current)
@ -78,6 +78,15 @@ class player():
self.pos.left = int(self.rel_x * settings.screenx_current)
#lint:enable
def move_rel(self, *args):
if len(args):
self.rel_x = args[0]
self.rel_y = args[1]
#lint:disable
self.pos.top = int(self.rel_y * settings.screeny_current)
self.pos.left = int(self.rel_x * settings.screenx_current)
#lint:enable
def move(self):
"""Handle the movement and collisions"""
#lint:disable

@ -1,7 +1,6 @@
# -*- coding: utf-8 -*-
import pygame
from pygame.locals import *
from ConfigParser import SafeConfigParser
from libs.pyganim import pyganim
import os
import shutil
@ -110,7 +109,7 @@ def init():
konstspeed = 0.0025
fullscreen = False
debugscreen = False
debugmode = False
debugmode = True
dstars = 500
isnear = "False"
code = ""
@ -164,11 +163,7 @@ def init():
explosions = [explosion9, explosion10, explosion11]
explosions_disp = []
saves = []
for filename in os.listdir("./saves"):
if filename.endswith(".ini"):
filename = filename[:-4].decode("utf-8")
saves.append(filename)
upd("get_saves")
if fullscreen:
screen = pygame.display.set_mode(
@ -242,8 +237,8 @@ def upd(level):
global saves
saves = []
for filename in os.listdir("./saves"):
if filename.endswith(".ini"):
filename = filename[:-4]
if filename.endswith(".json"):
filename = filename[:-5]
if filename not in ("default"):
saves.append(filename)
return
@ -302,73 +297,92 @@ class data():
def save(self, name):
from . import sounds
name = name.encode("utf-8")
# removes invalid characters
if "/" in name:
name = name.replace("/", "\\")
if "%" in name:
name = name.replace("%", "")
data = {"Fullscreen": fullscreen,
all_world_data = {}
for world_name in localmap:
all_world_data[world_name] = {}
all_world_data[world_name]["targets"] = []
all_world_data[world_name]["station"] = {}
for target in localmap[world_name].targets:
savable_vars = {}
for inst_var in target.__dict__:
if type(target.__dict__[inst_var]) in [list, str, int, float, bool]:
savable_vars[inst_var] = target.__dict__[inst_var]
all_world_data[world_name]["targets"].append(savable_vars)
savable_vars = {}
station_vars = localmap[world_name].warp1.__dict__
for inst_var in station_vars:
if type(station_vars[inst_var]) in [list, str, int, float, bool]:
savable_vars[inst_var] = station_vars[inst_var]
all_world_data[world_name]["station"] = (savable_vars)
data = {"fullscreen": fullscreen,
"screenx_current": screenx_current,
"screeny_current": screeny_current,
"debugmode": debugmode,
"debugscreen": debugscreen,
"player.pos.x": player.pos.x,
"player.pos.y": player.pos.y,
"volume": volume,
"player.timeplay": player.timeplay
"player.rel_x": player.rel_x,
"player.rel_y": player.rel_y,
"sounds.music.volume": sounds.music.volume,
"player.timeplay": player.timeplay,
"world.name": world.name,
"all_world_data": all_world_data
}
file_obj = open("./saves/" + name + ".json", "w")
json.dump(data, file_obj, indent=12)
def load(name):
def load(self, name):
"""Load savegame"""
from . import sounds
from . import objects
global fullscreen
global screenx_current
global screeny_current
global debugscreen
global debugmode
global config
global skip
global pos_x
global pos_y
global volume
global saves
global screen
upd("get_saves")
config = SafeConfigParser()
for a in saves:
if a == name.encode("utf-8"):
config.read("./saves/" + a + ".ini")
if not (saves == []):
# tries to load and returns values in terminal that couldnt be loaded
import ConfigParser
try:
from . import sounds
#lint:disable
fullscreen = config.getboolean("main", "fullscreen")
screenx_current = int(config.getfloat("main", "screenx_current"))
screeny_current = int(config.getfloat("main", "screeny_current"))
debugscreen = config.getboolean("main", "debugscreen")
debugmode = config.getboolean("main", "debugmode")
skip = config.getboolean("main", "skip")
pos_x = config.getfloat("main", "posy")
pos_y = config.getfloat("main", "posx")
sounds.music.volume = config.getfloat("main", "volume")
#lint:enable
except ConfigParser.NoOptionError as test:
print(("Saved game couldn't be loaded completly: " + str(test)))
except Exception:
print(("Unexpected error:", sys.exc_info()[0]))
print((traceback.format_exc()))
screen = pygame.display.set_mode((screenx_current, screeny_current))
global debugscreen
global localmap
global world
try:
data = json.load(open("./saves/" + unicode(name) + ".json", "r"))
fullscreen = data["fullscreen"]
screenx_current = data["screenx_current"]
screeny_current = data["screeny_current"]
debugmode = data["debugmode"]
debugscreen = data["debugscreen"]
player.rel_x = data["player.rel_x"]
player.rel_y = data["player.rel_y"]
sounds.music.volume = data["sounds.music.volume"]
player.timeplay = data["player.timeplay"]
from . import worlds
localmap = {}
for world_data in data["all_world_data"]:
localmap[world_data] = worlds.world(world_data)
localmap[world_data].generate(background, dstars, 0)
for target_data in data["all_world_data"][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_data].targets.append(tmp_target)
tmp_station = objects.warp_station()
tmp_station.x_pos = data["all_world_data"][world_data]["station"]["x_pos"]
tmp_station.y_pos = data["all_world_data"][world_data]["station"]["y_pos"]
tmp_station.update()
localmap[world_data].warp1 = tmp_station
world = localmap[data["world.name"]]
except Exception:
print(("Unexpected error:", sys.exc_info()[0]))
print((traceback.format_exc()))
def quit():

@ -11,4 +11,4 @@ file_obj.close()
file_obj = open("test1.json", "r")
read_data = json.load(file_obj)
print type(read_data["Fullscreen"])
print read_data
Loading…
Cancel
Save