Mercurial > skaapsteker
view skaapsteker/gamestate.py @ 134:4713a2a3b0be
Initial cutscene screen
author | Stefano Rivera <stefano@rivera.za.net> |
---|---|
date | Tue, 05 Apr 2011 00:06:07 +0200 |
parents | e1dd3b785269 |
children | 9d08f99b5ddf |
line wrap: on
line source
import json from skaapsteker import data from skaapsteker.sprites.base import find_sprite class struct(dict): def __getattr__(self, key): try: return self[key] except KeyError: raise AttributeError def __setattr__(self, key, value): self[key] = value class GameState(object): def __init__(self, game_file=None): if game_file is None: game_file = 'game.json' self.data = json.loads(data.load(game_file).read()) self.build_mission_data() self.build_item_data() self.build_level_data() print self.missions print self.items print self.levels def build_mission_data(self): self.missions = struct() for name, mission in self.data['missions'].items(): self.missions[name] = struct(mission) def build_item_data(self): self.items = struct() for item in self.data['items']: istruct = struct(item) istruct.missions = struct() self.items[item['type']] = istruct for mission_name, mission in self.missions.items(): for name, item in mission['items'].items(): self.items[name].missions[mission_name] = item def build_level_data(self): self.levels = struct() for item in self.items.values(): item_level = item.pop('level') self.levels.setdefault(item_level, []).append(find_sprite(item, 'items'))