/** * @file MapViewComp.ts * @description 地图视图组件(ECS 视图层) * * 职责: * 1. 作为地图的顶层 **视图逻辑控制器**,挂载在地图预制体的 "map" 子节点上。 * 2. 持有 MapViewScene 引用,用于访问场景中的各图层(实体层、技能层、地图层)。 * 3. 提供全局事件监听接口(当前已注释,预留扩展)。 * 4. 管理游戏内计时器(game_timer,预留 1 秒间隔周期逻辑)。 * * 关键设计: * - start() 时获取同节点上的 MapViewScene 组件引用。 * - reset() 在 ECS 实体移除时取消全局事件监听。 * - 当前 update / onLoad 为空实现,预留帧更新和初始化扩展位。 * * 依赖: * - MapViewScene(view/MapViewScene.ts)—— 场景图层管理 * - Timer(oops-framework)—— 周期计时器 * - smc —— 全局单例模块 * - BoxSet —— 游戏常量配置 */ import { v3, Vec3, _decorator ,Prefab,instantiate,JsonAsset} 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 { BoxSet } from "../../common/config/GameSet"; import { MapViewScene } from "./MapViewScene"; import { Timer } from "../../../../../extensions/oops-plugin-framework/assets/core/common/timer/Timer"; import { oops } from "../../../../../extensions/oops-plugin-framework/assets/core/Oops"; const { ccclass, property } = _decorator; /** * MapViewComp —— 地图视图逻辑组件 * * ECS 视图层入口,通过 scene 属性访问场景中各图层。 */ @ccclass('MapViewComp') @ecs.register('MapView', false) export class MapViewComp extends CCComp { /** 场景图层管理器引用(start 时初始化) */ scene: MapViewScene = null!; /** 游戏内周期计时器(预留,间隔 1 秒) */ private game_timer: Timer = new Timer(1); /** 地图加载完成回调(预留) */ private mapLoaded() { } /** 初始化:预留全局事件监听位 */ async onLoad(){ // 监听全局事件 } /** ECS 组件移除时取消全局事件监听 */ reset(): void { //撤销监听 // oops.message.off("do_add_hero", this.on_do_add_hero, this); } /** 启动时获取同节点上的 MapViewScene 组件 */ start() { this.scene = this.getComponent(MapViewScene); } /** 预留:加载游戏数据 */ load_data(){ // let heros = oops.res.get("config/game/heros") } /** 帧更新(预留扩展) */ protected update(dt: number): void { } // 刷新怪物 }