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'))