ceshi 1
This commit is contained in:
1 parent
9eb9edbb8a
commit
b768ff1555
10 files changed
+618
-15
No files matched your search
+76
-4
@@ -73,17 +73,35 @@ except Exception:
|
||||
|
||||
# ---- 炒锅: 盖饭双向 + 蛋炒饭 (itemUseOn, surface=米饭/成品菜) ----
|
||||
try:
|
||||
from ..chaoguo.ChaoguoData import ITEM_USE_ON_RULES as CHAOGUO_USON
|
||||
from ..chaoguo.ChaoguoData import (
|
||||
ITEM_USE_ON_RULES as CHAOGUO_USON,
|
||||
SWITCH_RULES as CHAOGUO_SWITCH,
|
||||
PLATE as CHAOGUO_PLATE,
|
||||
)
|
||||
_ALL_RULE_TABLES.append(CHAOGUO_USON)
|
||||
except Exception:
|
||||
pass
|
||||
CHAOGUO_SWITCH, CHAOGUO_PLATE = None, None
|
||||
|
||||
# ---- 汤锅: 手持锅态汤右键 熟面条 (itemUseOn) ----
|
||||
try:
|
||||
from ..tangguo.TangguoData import ITEM_USE_ON_RULES as TANGGUO_USON
|
||||
from ..tangguo.TangguoData import (
|
||||
ITEM_USE_ON_RULES as TANGGUO_USON,
|
||||
SWITCH_RULES as TANGGUO_SWITCH,
|
||||
BOWL as TANGGUO_BOWL,
|
||||
PLATE as TANGGUO_PLATE,
|
||||
)
|
||||
_ALL_RULE_TABLES.append(TANGGUO_USON)
|
||||
except Exception:
|
||||
pass
|
||||
TANGGUO_SWITCH, TANGGUO_BOWL, TANGGUO_PLATE = None, None, None
|
||||
|
||||
# ---- 油锅: 手持盘子 出锅 (take_out) ----
|
||||
try:
|
||||
from ..youguo.YouguoData import (
|
||||
SWITCH_RULES as YOUGUO_SWITCH,
|
||||
PLATE as YOUGUO_PLATE,
|
||||
)
|
||||
except Exception:
|
||||
YOUGUO_SWITCH, YOUGUO_PLATE = None, None
|
||||
|
||||
# ---- 原版放置/盘子转换 (itemUseOn, surface=相邻放置 / source=盘子) ----
|
||||
try:
|
||||
@@ -117,6 +135,57 @@ def _as_list(value):
|
||||
# ---- 由各 Data 规则表自动派生 ----
|
||||
AUTO_CANCEL = _collect_all()
|
||||
|
||||
# ============================================================================
|
||||
# 三之A、"盛出/出锅"专用: 手持容器(木碗/盘子) 右键 成品方块 -> 客户端拦截
|
||||
# 放置预览(消闪) + 显式通知服务端执行盛出(见 ClientFeatureDispatcher /
|
||||
# FeatureDispatcher TakeoutRequest). 从 汤锅/炒锅/油锅 的 SWITCH_RULES 里
|
||||
# action=="take_out" 且 item 是容器(木碗/盘子) 的规则自动派生.
|
||||
# 空手(item=None)取饭团/水煮蛋/煎饼、菜刀切豆腐 不在此列, 走旧路径.
|
||||
# ============================================================================
|
||||
TAKEOUT_CANCEL = set()
|
||||
|
||||
|
||||
def _derive_takeout(switch_rules, *container_items):
|
||||
"""从一段 SWITCH_RULES 派生 take_out 且 item 是容器的 (item, block) 组合"""
|
||||
if not switch_rules:
|
||||
return set()
|
||||
out = set()
|
||||
for _r in switch_rules:
|
||||
if not isinstance(_r, dict):
|
||||
continue
|
||||
if _r.get("action") != "take_out":
|
||||
continue
|
||||
_it = _r.get("item")
|
||||
_bk = _r.get("block")
|
||||
if _it in container_items and isinstance(_bk, basestring) and _bk:
|
||||
out.add((_it, _bk))
|
||||
return out
|
||||
|
||||
|
||||
# 汤锅: 木碗/盘子 盛出碗装成品
|
||||
TAKEOUT_CANCEL |= _derive_takeout(TANGGUO_SWITCH, TANGGUO_BOWL, TANGGUO_PLATE)
|
||||
# 炒锅: 手持盘子 出锅盘装成品(空手出锅的煎饼/馍不在此列)
|
||||
TAKEOUT_CANCEL |= _derive_takeout(CHAOGUO_SWITCH, CHAOGUO_PLATE)
|
||||
# 油锅: 手持盘子 出锅炸物
|
||||
TAKEOUT_CANCEL |= _derive_takeout(YOUGUO_SWITCH, YOUGUO_PLATE)
|
||||
|
||||
# ============================================================================
|
||||
# 三之B、"盖饭/蛋炒饭"(itemUseOn) 专用: 手持 成品菜/米饭 右键 米饭/成品菜/炒锅蛋炒饭
|
||||
# -> 客户端拦截放置预览(消闪) + 显式通知服务端执行转换(同 TakeoutRequest 机制).
|
||||
# 从炒锅 ITEM_USE_ON_RULES(surface 字段) 自动派生: 盖饭双向 + 蛋炒饭.
|
||||
# 若不单独抽出, 这些组合会被 ITEM_USE_ON_CANCEL 以纯 ret=True 吞掉,
|
||||
# 导致服务端 ServerItemUseOnEvent 不触发 -> 盖饭"点无反应"(服务端 owners 修复无效).
|
||||
# ============================================================================
|
||||
GAI_FAN_CANCEL = set()
|
||||
if CHAOGUO_USON:
|
||||
for _r in CHAOGUO_USON:
|
||||
if not isinstance(_r, dict):
|
||||
continue
|
||||
_it = _r.get("item")
|
||||
_bk = _r.get("surface")
|
||||
if isinstance(_it, basestring) and _it and isinstance(_bk, basestring) and _bk:
|
||||
GAI_FAN_CANCEL.add((_it, _bk))
|
||||
|
||||
# ---- Chuju 锅铲/油罐 inline 转换(在 ChujuService.handleItemUseOn 内联, 不在数据表) ----
|
||||
# 手持 锅铲/带油锅铲 右键 油罐(oilcan)/炒锅(wok) 蘸油/还油/上油 -> 取消默认
|
||||
CHUJU_INLINE_CANCEL = {
|
||||
@@ -206,4 +275,7 @@ ITEM_USE_ON_CANCEL_BY_ITEM = PLACE_ITEMS | EAT_ITEMS
|
||||
if __name__ == "__main__":
|
||||
print "=== 自动派生转换对 数量:", len(AUTO_CANCEL), "==="
|
||||
for _it, _bk in sorted(AUTO_CANCEL):
|
||||
print " ", _it, "->", _bk
|
||||
print "=== 汤锅盛出(TAKEOUT_CANCEL) 数量:", len(TAKEOUT_CANCEL), "==="
|
||||
for _it, _bk in sorted(TAKEOUT_CANCEL):
|
||||
print " ", _it, "->", _bk
|
||||
Reference in new issue
Block a user