from inventory import inventory
import pickle
class Game:
def __init__(self):
self.actors = {}
self.scene_transition = False
self.hidden_inventory = False
def setup(self, stage, cast):
self.inventory = inventory
self.stage = stage
self.cast = cast
self.player = self.cast[Player_ID]
self.load_dialogs(Language_ID)
set_scene(Start_Scene_ID)
def save(self):
filter = [
'_Sprite__g',
'rect',
'act_pos',
'behaviors',
'image',
'image_path',
'images',
'path',
'sequences',
'animation',
'uid']
savedata = {}
savedata['current_scene'] = self.scene.uid
savedata['hidden_inventory'] = self.hidden_inventory
savedata['inventory'] = []
for item in self.inventory.items:
savedata['inventory'].append(item.uid)
savedata['actors'] = {}
for actor in (self.actors.values()):
savedata['actors'][actor.uid] = {}
for var in vars(actor):
if not var in filter:
savedata['actors'][actor.uid][var] = actor.__dict__[var]
savedata['scene_walkmaps'] = {}
for scene in self.stage.values():
savedata['scene_walkmaps'][scene.uid] = scene.walkmap.name
savegame = open('savegame.txt', 'w')
translator = pickle.Pickler(savegame)
translator.dump(savedata)
savegame.close()
def load(self):
savegame = open('savegame.txt', 'r')
translator = pickle.Unpickler(savegame)
savedata = translator.load()
savegame.close()
for actor in savedata['actors']:
if actor in self.actors:
for var in savedata['actors'][actor]:
if not var in filter:
self.actors[actor].__dict__[var] = savedata['actors'][actor][var]
self.actors[actor].set_image(savedata['actors'][actor]['image_id'])
self.inventory.clear()
for item in savedata['inventory']:
self.inventory.add(get_actor(item))
for scene_id in savedata['scene_walkmaps']:
set_walkmap(scene_id, savedata['scene_walkmaps'][scene_id])
self.hidden_inventory = savedata['hidden_inventory']
set_scene(savedata['current_scene'])
I'm currently part of a group developing a FOSS point-and-click
adventure game using Python and Pygame. The game engine is actually a
fork of the engine used in the game Colonel Wiljafjord and the
Tarbukas Tyranny, and entry in Pyweek #3. Right now we're working on
improving the engine in whatever way we can. If you're interested, the
source is available here: http://github.com/kallepersson/subterranean/tree/master.
So now I'd like to implement a save/load feature, but I don't really
know where to start. I have no idea how game save systems are usually
constructed, so I'm kind of lost. If anyone has any ideas, links to
resources, or pointers on how to best do this, please share.
Thank you!
Tommy Brunn
http://www.blastfromthepast.se/blabbermouth