def load_units(self): from core.formation import Formation units = {} """:type: dict[int, Unit]""" doc = MongoUnit.db(self.server_id).find_one({'_id': self.char_id}) for _id, _data in doc['units'].iteritems(): u = Unit(self.server_id, self.char_id, int(_id), _data) u.calculate() u.make_cache() units[int(_id)] = u race = { 1: {'level': 0, 'step': 0}, 2: {'level': 0, 'step': 0}, 3: {'level': 0, 'step': 0}, } for _, u in units.iteritems(): race[u.config.race]['level'] += u.level race[u.config.race]['step'] += u.step additions = { 1: UnitAddition(), 2: UnitAddition(), 3: UnitAddition(), } for k, v in additions.iteritems(): _level_addition = ConfigUnitAddition.get_level_addition(k, race[k]['level']) _step_addition = ConfigUnitAddition.get_step_addition(k, race[k]['step']) if _level_addition: for attr in UnitAddition.__slots__: v.add_property(attr, getattr(_level_addition, attr)) if _step_addition: for attr in UnitAddition.__slots__: v.add_property(attr, getattr(_step_addition, attr)) # 只作用于上阵兵种 in_format_staffs = Formation(self.server_id, self.char_id).in_formation_staffs() for k, v in in_format_staffs.iteritems(): if not v['unit_id']: continue u = units[v['unit_id']] _add = additions[u.config.race] for attr in UnitAddition.__slots__: _old_value = getattr(u, attr) _new_value = _old_value + getattr(_add, attr) setattr(u, attr, _new_value) u.make_cache()
def load_units(self): from core.formation import Formation units = {} """:type: dict[int, Unit]""" doc = MongoUnit.db(self.server_id).find_one({'_id': self.char_id}) for _id, _data in doc['units'].iteritems(): u = Unit(self.server_id, self.char_id, int(_id), _data) u.calculate() u.make_cache() units[int(_id)] = u race = { 1: { 'level': 0, 'step': 0 }, 2: { 'level': 0, 'step': 0 }, 3: { 'level': 0, 'step': 0 }, } for _, u in units.iteritems(): race[u.config.race]['level'] += u.level race[u.config.race]['step'] += u.step additions = { 1: UnitAddition(), 2: UnitAddition(), 3: UnitAddition(), } for k, v in additions.iteritems(): _level_addition = ConfigUnitAddition.get_level_addition( k, race[k]['level']) _step_addition = ConfigUnitAddition.get_step_addition( k, race[k]['step']) if _level_addition: for attr in UnitAddition.__slots__: v.add_property(attr, getattr(_level_addition, attr)) if _step_addition: for attr in UnitAddition.__slots__: v.add_property(attr, getattr(_step_addition, attr)) # 只作用于上阵兵种 in_format_staffs = Formation(self.server_id, self.char_id).in_formation_staffs() for k, v in in_format_staffs.iteritems(): if not v['unit_id']: continue u = units[v['unit_id']] _add = additions[u.config.race] for attr in UnitAddition.__slots__: _old_value = getattr(u, attr) _new_value = _old_value + getattr(_add, attr) setattr(u, attr, _new_value) u.make_cache()