def from_valid_json(json_dic, *args): """ Create a state from a type-checked dic """ state = TrackerState(json_dic['seed'], json_dic['tracker_version'], json_dic['game_version']) # The order is important, we want a list of legal floors the item can # be picked up on before parsing items for floor_dic in json_dic['floor_list']: floor = Floor.from_json(floor_dic) if not floor: return None state.add_floor(floor) for bossstr in json_dic['bosses']: # TODO create a serializable boss class that would create # a boss object with description from a bossid # In any case it's sufficient to (de)serialize only bossids if not isinstance(bossstr, basestring): return None state.add_boss(bossstr) for item_dic in json_dic['item_list']: item = Item.from_json(item_dic, state.floor_list) if not item: return None state.add_item(item) return state
def from_valid_json(json_dic, *args): """ Create a state from a type-checked dic """ state = TrackerState(json_dic['seed'], json_dic['tracker_version'], json_dic['game_version']) # The order is important, we want a list of legal floors the item can # be picked up on before parsing items for floor_dic in json_dic['floor_list']: floor = Floor.from_json(floor_dic) if not floor: return None state.add_floor(floor) for item_dic in json_dic['item_list']: item = Item.from_json(item_dic, state.floor_list) if not item: return None state.add_item(item) return state
def from_valid_json(json_dic, *args): """ Create a state from a type-checked dic """ state = TrackerState(json_dic['seed'], json_dic['tracker_version']) # The order is important, we want a list of legal floors the item can # be picked up on before parsing items for floor_dic in json_dic['floor_list']: floor = Floor.from_json(floor_dic) if not floor: return None state.add_floor(floor) for bossstr in json_dic['bosses']: # TODO create a serializable boss class that would create # a boss object with description from a bossid # In any case it's sufficient to (de)serialize only bossids if not isinstance(bossstr, basestring): return None state.add_boss(bossstr) for item_dic in json_dic['item_list']: item = Item.from_json(item_dic, state.floor_list) if not item: return None state.add_item(item) return state