Files
game/addons/yt_world/__init__.py
T

28 lines
1.1 KiB
Python

from . import models
from . import controllers
def sync_specs_from_code(cr, registry):
"""模块安装/升级后:把代码里的建筑产出规格刷进 build.item 字段,
并对所有世界做全量对账(速率 + 即时属性)。
彻底消除「noupdate XML 记录升级不重放 → 必须手动补写 DB」的坑:
改任何建筑产出,只需改 build_spec.BUILD_SPECS + 升级模块。
"""
from odoo import api
import odoo
env = api.Environment(cr, odoo.SUPERUSER_ID, {})
from odoo.addons.yt_world.build_spec import BUILD_SPECS
Item = env['yt.world.build.item'].sudo()
for code, spec in BUILD_SPECS.items():
items = Item.search([('code', '=', code)])
if items:
items.write({
'stat_yield_instant': spec.get('stat_yield_instant', {}) or {},
'stat_yield_tick': spec.get('stat_yield_tick', {}) or {},
})
# 全量对账:速率(tick)与即时属性(instant)都从实例重新计算,幂等 SET
for world in env['yt.world'].search([]):
world._recalc_rates()
world._reconcile_instant()