后端 game_base: - 货币并入 game.rule(rate/note 字段),新增可配置规则类别 game.rule.category(world/faction/character/currency) - 新增「配置」菜单与规则类别配置子项 - /game/api/rules 按类别分组返回,/game/api/currencies 保持兼容 - 列表分组取消等级累计(aggregator=False,适配 Odoo18) - 1.2 pre-migrate 清理旧 game.currency 记录,避免外部ID冲突 前端/官网: - 世界数据大报表(index.html + .wd-* 样式) - 背景 5 板块同步、论坛汉化、过渡资源与 views 拆分(announcement/codex/forum/page/rule/story)
186 lines
5.6 KiB
XML
186 lines
5.6 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
||
<odoo>
|
||
|
||
<!-- ============ 玩家世界 ============ -->
|
||
<record id="action_yt_world" model="ir.actions.act_window">
|
||
<field name="name">玩家世界</field>
|
||
<field name="res_model">yt.world</field>
|
||
<field name="view_mode">list,form</field>
|
||
</record>
|
||
|
||
<record id="view_yt_world_list" model="ir.ui.view">
|
||
<field name="name">yt.world.list</field>
|
||
<field name="model">yt.world</field>
|
||
<field name="arch" type="xml">
|
||
<list>
|
||
<field name="name"/>
|
||
<field name="user_id"/>
|
||
<field name="last_active"/>
|
||
</list>
|
||
</field>
|
||
</record>
|
||
|
||
<record id="view_yt_world_form" model="ir.ui.view">
|
||
<field name="name">yt.world.form</field>
|
||
<field name="model">yt.world</field>
|
||
<field name="arch" type="xml">
|
||
<form>
|
||
<sheet>
|
||
<group>
|
||
<field name="name"/>
|
||
<field name="user_id"/>
|
||
<field name="settings" widget="json"/>
|
||
<field name="last_active"/>
|
||
</group>
|
||
<notebook>
|
||
<page string="地表地块">
|
||
<field name="tile_ids">
|
||
<list>
|
||
<field name="q"/>
|
||
<field name="r"/>
|
||
<field name="terrain"/>
|
||
<field name="height"/>
|
||
<field name="micro_world_id"/>
|
||
</list>
|
||
</field>
|
||
</page>
|
||
</notebook>
|
||
</sheet>
|
||
</form>
|
||
</field>
|
||
</record>
|
||
|
||
<!-- ============ 地表地块 ============ -->
|
||
<record id="action_yt_world_tile" model="ir.actions.act_window">
|
||
<field name="name">地表地块</field>
|
||
<field name="res_model">yt.world.tile</field>
|
||
<field name="view_mode">list,form</field>
|
||
</record>
|
||
|
||
<record id="view_yt_world_tile_list" model="ir.ui.view">
|
||
<field name="name">yt.world.tile.list</field>
|
||
<field name="model">yt.world.tile</field>
|
||
<field name="arch" type="xml">
|
||
<list>
|
||
<field name="world_id"/>
|
||
<field name="q"/>
|
||
<field name="r"/>
|
||
<field name="terrain"/>
|
||
<field name="height"/>
|
||
<field name="micro_world_id"/>
|
||
<field name="updated_at"/>
|
||
</list>
|
||
</field>
|
||
</record>
|
||
|
||
<record id="view_yt_world_tile_form" model="ir.ui.view">
|
||
<field name="name">yt.world.tile.form</field>
|
||
<field name="model">yt.world.tile</field>
|
||
<field name="arch" type="xml">
|
||
<form>
|
||
<sheet>
|
||
<group>
|
||
<field name="world_id"/>
|
||
<field name="q"/>
|
||
<field name="r"/>
|
||
<field name="terrain"/>
|
||
<field name="height"/>
|
||
<field name="flags" widget="json"/>
|
||
<field name="micro_world_id"/>
|
||
<field name="updated_at"/>
|
||
</group>
|
||
</sheet>
|
||
</form>
|
||
</field>
|
||
</record>
|
||
|
||
<!-- ============ 微观世界(每个地块 1:1) ============ -->
|
||
<record id="action_yt_world_tile_micro" model="ir.actions.act_window">
|
||
<field name="name">微观世界</field>
|
||
<field name="res_model">yt.world.tile.micro</field>
|
||
<field name="view_mode">list,form</field>
|
||
</record>
|
||
|
||
<record id="view_yt_world_tile_micro_list" model="ir.ui.view">
|
||
<field name="name">yt.world.tile.micro.list</field>
|
||
<field name="model">yt.world.tile.micro</field>
|
||
<field name="arch" type="xml">
|
||
<list>
|
||
<field name="tile_id"/>
|
||
<field name="name"/>
|
||
</list>
|
||
</field>
|
||
</record>
|
||
|
||
<record id="view_yt_world_tile_micro_form" model="ir.ui.view">
|
||
<field name="name">yt.world.tile.micro.form</field>
|
||
<field name="model">yt.world.tile.micro</field>
|
||
<field name="arch" type="xml">
|
||
<form>
|
||
<sheet>
|
||
<group>
|
||
<field name="tile_id"/>
|
||
<field name="name"/>
|
||
</group>
|
||
</sheet>
|
||
</form>
|
||
</field>
|
||
</record>
|
||
|
||
<!-- ============ 资源(框架) ============ -->
|
||
<record id="action_yt_resource" model="ir.actions.act_window">
|
||
<field name="name">资源</field>
|
||
<field name="res_model">yt.resource</field>
|
||
<field name="view_mode">list,form</field>
|
||
</record>
|
||
|
||
<record id="view_yt_resource_list" model="ir.ui.view">
|
||
<field name="name">yt.resource.list</field>
|
||
<field name="model">yt.resource</field>
|
||
<field name="arch" type="xml">
|
||
<list>
|
||
<field name="tile_id"/>
|
||
<field name="micro_id"/>
|
||
<field name="type"/>
|
||
<field name="amount"/>
|
||
<field name="capacity"/>
|
||
</list>
|
||
</field>
|
||
</record>
|
||
|
||
<record id="view_yt_resource_form" model="ir.ui.view">
|
||
<field name="name">yt.resource.form</field>
|
||
<field name="model">yt.resource</field>
|
||
<field name="arch" type="xml">
|
||
<form>
|
||
<sheet>
|
||
<group>
|
||
<field name="tile_id"/>
|
||
<field name="micro_id"/>
|
||
<field name="type"/>
|
||
<field name="amount"/>
|
||
<field name="capacity"/>
|
||
</group>
|
||
</sheet>
|
||
</form>
|
||
</field>
|
||
</record>
|
||
|
||
<!-- ============ 菜单(全部 record 之后,确保 action 已存在) ============ -->
|
||
<menuitem id="menu_yt_world_root"
|
||
name="宇森世界"
|
||
sequence="20"
|
||
action="action_yt_world"
|
||
web_icon="yt_world,static/description/icon.png"/>
|
||
|
||
<menuitem id="menu_yt_world_tile" name="地表地块"
|
||
parent="menu_yt_world_root" action="action_yt_world_tile" sequence="10"/>
|
||
|
||
<menuitem id="menu_yt_world_tile_micro" name="微观世界"
|
||
parent="menu_yt_world_root" action="action_yt_world_tile_micro" sequence="20"/>
|
||
|
||
<menuitem id="menu_yt_resource" name="资源"
|
||
parent="menu_yt_world_root" action="action_yt_resource" sequence="30"/>
|
||
|
||
</odoo>
|