/** * @file CardController.ts * @description 卡牌控制器组件(UI 视图层) * * 职责: * 1. 作为卡牌系统的顶层控制器容器节点对应的脚本。 * 2. 管理 "任务主页" 与 "任务中" 两个子界面的激活切换。 * 3. 在 ECS 实体挂载后隐藏 loading 遮罩,标志地图加载完毕。 * * 设计说明: * - 本组件挂载在 CardController 预制体根节点上, * 子节点 `mission_home` 与 `mission` 分别对应主页和战斗界面。 * - update 中检查全局暂停 / 结束标志,预留帧逻辑扩展点。 * * 依赖: * - smc.map.MapView.scene.mapLayer —— 获取地图层以隐藏 loading 节点 * - smc.vmdata —— 读取全局游戏状态(game_over / game_pause) */ import { _decorator,Button,EventHandler,EventTouch,Label,NodeEventType,resources,Sprite,SpriteAtlas,tween,UITransform,v3 } from "cc"; import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; import { smc } from "../common/SingletonModuleComp"; import { mLogger } from "../common/Logger"; const { ccclass, property } = _decorator; /** * CardControllerComp —— 卡牌系统控制器视图组件 * * 负责初始化卡牌界面的顶层布局切换(主页 vs 战斗), * 并在 ECS 实体加入场景时处理 loading 状态。 */ @ccclass('CardControllerComp') @ecs.register('CardController', false) export class CardControllerComp extends CCComp { /** 是否启用调试日志 */ @property({ tooltip: "是否启用调试日志" }) private debugMode: boolean = false; /** 触控计时器(预留,可用于长按等交互逻辑) */ touch_time:number = 0 /** 是否正在触控中(预留) */ in_touch:boolean = false /** 底部背景引用(预留) */ bbg:any=null /** 底部背景 Y 坐标(预留) */ bbg_y:number=40 /** 卡牌槽位 X 坐标数组(5 个位置,预留) */ bbg_x:any=[-300,-150,0,150,300] protected onLoad(): void { } /** * start:组件启动时打印日志并初始化页面。 * 默认显示任务主页(mission_home),隐藏战斗界面(mission)。 */ start() { mLogger.log(this.debugMode, 'CardController', "CardControllerComp start",this.node) this.page_init() } /** * onAdded:当本组件对应的 ECS 实体被挂载到场景后触发。 * 主要作用:关闭地图层上的 loading 遮罩。 * @param args ECS 实体附加参数 */ onAdded(args:any){ mLogger.log(this.debugMode, 'CardController', "CardControllerComp onAdded",args) smc.map.MapView.scene.mapLayer.node.getChildByName("loading").active=false; } /** * update:每帧更新。 * 若全局标记 game_over 或 game_pause 时直接跳过(预留扩展位)。 */ protected update(dt: number): void { if(smc.vmdata.game_over||smc.vmdata.game_pause){ return } } /** * 页面初始化: * - 显示任务主页(mission_home) * - 隐藏任务战斗界面(mission) */ page_init(){ this.node.getChildByName("mission_home").active=true; this.node.getChildByName("mission").active=false; } /** ECS 组件移除时销毁节点 */ reset() { this.node.destroy(); } }