- 积分
- 157
- 威望
- 0
- 魅力
- 0
- 经验
- 136
- 热心度
- 0
- 注册时间
- 2015-5-16
- 最后登录
- 2021-7-16
- 主题
- 1
- 回帖
- 7
- 精华
- 0
- 阅读权限
- 10
TA的每日心情 | 郁闷 2021-7-16 13:44 |
---|
签到天数: 15 天 连续签到: 5 天 [LV.4]狂狼人
1级 Hired Hero
- 积分
- 157
|
楼主 |
发表于 2021-7-12 18:38:52
|
显示全部楼层
21年7月12日
CMapService //工厂类,负责地图的加载(注释说还支持保存),调用CResourceHandler将地图文件加载到内存
CMap //地图的对象,似乎是可以从两种文件中加载,一种是原版的H3M文件,另一种是从json中读取,应该是VCMI自己的格式
CMapHeader //地图信息以及要求,玩家数量、地图名字(本地化文本,汉化文字从这里读取)、地图大小之类的.
原注释: The map header holds information about loss/victory condition,map format, version, players, height, width,...
CCampaign //里面实质上是有一堆CMap,只是需要的时候才转换出来,平时是用二进制存储在内存的
CCampaignHeader //战役,其余同上
CMapInfo //同时存了CMapHeader和CCampaignHeader,按照类型调用不同的对象,不太合适的设计
这里对深渊号角的支持注掉了,永不读取深渊号角的地图
enum EMapFormat: ui8
{
INVALID = 0,
// HEX DEC
ROE = 0x0e, // 14
AB = 0x15, // 21
SOD = 0x1c, // 28
// HOTA = 0x1e ... 0x20 // 28 ... 30
WOG = 0x33, // 51
VCMI = 0xF0
};
SelectionTab //可显示的地图信息与UI,管理一堆CMapInfo,单人场景、战役、读取存盘都会用到
这边的设计上也不太合适,把UI和数据混合在一块了,这也是在打开战役的时候会弹出几帧类似于自定义战役的选择列表的原因
注意到比起原版,vcmi在调用单人场景的选择界面时,cpu使用很低,比原版强大很多,以后再对比下其它场景
|
|