ActivityModel
项目确实将原来 7476行 的 NewActivityModel.lua 大文件拆分成了 门面模式 + 17个子Model 的架构:
门面类:
ActivityModel.lua(278行)子Model数量: 17个核心功能模块 + 大量活动实例Model
总Model数量: 约 120+ 个活动相关Model
🔧 核心设计机制
1. 子模块注册系统
1 | -- 批量注册事件常量到类表 |
2. 动态方法注册
1 | -- 外部事件 → 门面类 → 对应子模块 |
🎯 各子模块职责分工
通过映射表实现
1 | -- ==================== 子模块映射表 ==================== |
| 子模块 | 字段名 | 主要职责 |
|---|---|---|
ActivityModel_TabData |
m_tabData |
活动标签数据管理 |
ActivityModel_RedDot |
m_redDot |
红点系统管理 |
ActivityModel_FeatureMgr |
m_featureMgr |
功能特性管理 |
ActivityModel_DataQuery |
m_dataQuery |
数据查询接口 |
ActivityModel_Protocol |
m_protocol |
网络协议处理 |
ActivityModel_ViewMgr |
m_viewMgr |
视图管理 |
ActivityModel_NoticeData |
m_noticeData |
公告数据管理 |
ActivityModel_ActivityDisplay |
m_activityDisplay |
活动展示逻辑 |
ActivityModel_JumpHelper |
m_jumpHelper |
页面跳转辅助 |
ActivityModel_LuckBuy |
m_luckBuy |
幸运购买功能 |
ActivityModel_Pilot |
m_pilot |
导航功能 |
ActivityModel_Takeaway |
m_takeaway |
外卖功能 |
ActivityModel_SuperLinear |
m_superLinear |
超级线性活动 |
ActivityModel_KongFuPanda |
m_kongFuPanda |
功夫熊猫活动 |
ActivityModel_Conan |
m_conan |
柯南活动 |
ActivityModel_MiscActivity |
m_miscActivity |
杂项活动管理 |
ActivityModel_EventConstants |
Events | 事件常量定义 |
🔄 事件系统设计
事件常量管理
-- 批量注册事件常量到类表 ActivityModel.Events = ActivityModel_EventConstants _RegisterEventConstants() -- 自动挂载所有非函数属性
事件转发机制
-- 外部事件 → 门面类 → 对应子模块 function ActivityModel:RegisterEvents() self:AddListener(_MOE.EventEnum.ON_PANDORA_RED_POINT_STATE_UPDATED, self, function(self, appId) self.m_redDot.OnPandoraRedPointStateUpdate(self, appId) -- 转发到红点子模块 end) end
🌟 懒加载与缓存机制
1. 子模块懒加载
1 | -- 通过元表实现按需加载 |
2. AnimSkipReason 懒加载
1 | -- 依赖 _MOE.ServerEnum,首次访问时初始化 |
🎨 个性化展示系统
1 | ActivityModel.ActivityCustomCodData = { |
🔄 生命周期管理
初始化顺序
1 | function ActivityModel:OnInit() |
清理机制
1 | function ActivityModel:OnClear() |
各子模块职责分工详解
1. ActivityModel_TabData (39.38KB)
职责:活动页签数据管理
核心功能:
活动列表请求与缓存
页签初始化与排序逻辑
活动数据映射构建
多语言适配支持
失败重试机制
2. ActivityModel_RedDot (100.80KB)
职责:红点系统全生命周期管理
核心功能:
红点类型判定(数字/圆点)
红点数据维护与更新
飞鹰/无极公告红点处理
Pandora/PixUI红点管理
红点点击上报与清除
3. ActivityModel_FeatureMgr (17.69KB)
职责:活动分组过滤与玩法隔离
核心功能:
活动分组判断(COC/StarP/Rich/Farm等)
查询条件设置与清理
副玩法活动显示控制
UGC活动TagId修正
4. ActivityModel_DataQuery (28.00KB)
职责:活动数据查询统一接口
核心功能:
活动信息获取(ID/名称/类型)
可见性检查(时间/暂停状态)
活动有效性验证
隐藏活动处理逻辑
5. ActivityModel_ViewMgr (31.09KB)
职责:界面视图管理与导航
核心功能:
主界面打开与关闭控制
子视图跳转逻辑
AB测试视图选择
视图锁定/解锁机制
UGC活动中心参数构建
🔄 数据流与事件传递机制
本文从 LearnByCompany 原始文档 自动同步。
