コード例 #1
0
ファイル: unit.py プロジェクト: yueyoum/dianjing
    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()
コード例 #2
0
    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()