📄 cbmap.h
字号:
/////////////////
// CBMap.h : 《赤壁》地图图素全局数据结构
// CBMap.h : << chibi >> global map data structure
//
// v0010 : Sep.18.1996
// v0011 : Oct.16.1996
// v0012 : Nov.7.1996
// v0013 : Nov.22.1996
// v0014 : Feb.5.1997
// v0020 : Feb.28.1997
// v0030 : May.14.1997, changed so many things, especialy for testregion
//
// 编写 : 刘刚
// written by : Liu Gang
//
// 编译器 : Visual C++ 4.2
// Compiler : Visual C++ 4.2
//
// 版权 : 北京前导软件有限公司 1996-1997
// Copyright : WayAhead Software Co.Ltd. 1996-1997
/////////////////
// 此文件包所有对地形和单元图素的操作
#ifndef __CBMAP_H__
#define __CBMAP_H__
#include "CBGame.h" // for struct UNIT_STRUCT and struct CTRL_FRAME_STRUCT (in CBCTrl.h)
///////////
// 宏定义
// 错误代码全局ID
#define MAP_ERROR_ID 500
#define _MAP_COMPRESS_
// 战场图的层
#define MAP_DATA_THICK 3
// 战场图的宽
#define MAP_DATA_WIDTH 120
// 战场图的高
#define MAP_DATA_HEIGHT 360
// 无效图素编号
#define MAP_DATA_NONE 0xFFFF
// 图素的宽
#define MAP_ITEM_WIDTH 44
// 图素的高
#define MAP_ITEM_HEIGHT 22
///////////
///////////
// 地形
// 地形图素库的最大数量
#define MAP_GROUND_LIB_NUM 16
// 无效地形类型
#define MAP_GROUND_TYPE_NONE 0
// 地形类型是一般
#define MAP_GROUND_TYPE_GENERAL 1
// 地形类型是小山
#define MAP_GROUND_TYPE_HILL 2
// 地形类型是城墙
#define MAP_GROUND_TYPE_CITY 3
// 地形类型是其它
#define MAP_GROUND_TYPE_OTHER 4
// 地形图素在库中的最大列数
#define MAP_GROUND_ITEM_COL 16
// 地形图素在库中的最大行数
#define MAP_GROUND_ITEM_ROW 8
// 地形图素代码结构(展开)
struct MAP_GROUND_CODE_STRUCT // 图素存储格式
{
int nAttr; // 图素的属性
int nFile; // 图素的文件号
int nCol; // 图素在文件中的列数
int nRow; // 图素在文件中的行数
};
//- Tian Yue
#ifndef TNEBUG
// 地形图素库结构
struct MAP_GROUND_LIB_STRUCT
{
char strWnd[33]; // 图素库窗口名字
RECT rcWnd; // 图素库窗口的矩形坐标
SIZE szView; // 图素库的点阵大小=每一图素的点阵大小*图素的行数和列数
int nID; // 图素库ID,地图编辑器无效
char strFile[33]; // 图素库源码文件名
char strMaskFile[33]; // 图素库掩码文件名
SIZE szItem; // 图素的点阵大小
int nHeight; // 图素的点阵高度
SIZE szNum; // 图素库内放置的图素的行数和列数
int nFile; // 图素的文件号
int nLayer; // 图素的层
int nType; // 图素的类型(0:无用,1:一般,2:山,3:城)
int nItemHeights[MAP_GROUND_ITEM_COL]; // 每一列图素的个数
WORD nItems[MAP_GROUND_ITEM_COL][MAP_GROUND_ITEM_ROW]; // 图素库数据
};
///////////
//- Tian Yue
#endif // TNEBUG
///////////
// 单元
// 单元图素库的最大数量
#define MAP_UNIT_LIB_NUM 56
// 无效单元类型
#define MAP_UNIT_TYPE_NONE 0
// 单元类型是建筑
#define MAP_UNIT_TYPE_BUILDING 1
// 单元类型是资源
#define MAP_UNIT_TYPE_RESOURCE 2
// 单元类型是士兵
#define MAP_UNIT_TYPE_SOLDIER 3
// 单元类型是特殊图素
#define MAP_UNIT_TYPE_SPECIAL 4
// 单元类型是大旗
#define MAP_UNIT_TYPE_FLAG 5
// 单元类型是船坞
#define MAP_UNIT_TYPE_SHIPYARD 6
// 单元类型是船只
#define MAP_UNIT_TYPE_SHIP 7
// 单元类型是云梯
#define MAP_UNIT_TYPE_LADDER 8
// 单元类型是战斗部队将领
#define MAP_UNIT_TYPE_GEN 9
/*
* --- ADDED BY TIAN YUE ---
*/
// 工人
#define MAP_UNIT_TYPE_WORKER 10
// 平民
#define MAP_UNIT_TYPE_MAN 11
// 单元类型是工人将领,文将
#define MAP_UNIT_TYPE_WGEN 12
// 单元类型是水军将领
#define MAP_UNIT_TYPE_SGEN 13
// 单元图素的最大行数
#define MAP_UNIT_ITEM_ROW 64
// 单元图素的最大列数
#define MAP_UNIT_ITEM_COL 20
// 单元图素的最大状态
#define MAP_UNIT_STATE_MAX 48
// 单元图素的最大列数
#define MAP_UNIT_ITEM_MAX 24
// 单元图素代码结构(展开)
struct MAP_UNIT_CODE_STRUCT
{
// nearly same as CTRL_FRAME_STRUCT
int nPlayer; // 图素的归属
int nFile; // 文件号
int nCol; // 某帧的坐标(行,列)
int nRow;
int nLayer; // 所在图层
int nFrame; // 当前帧,为特殊图素准备
};
//- Tian Yue
#ifndef TNEBUG
// 单元图素库结构
struct MAP_UNIT_LIB_STRUCT
{
SIZE szView; // 图素库的点阵大小=每一图素的点阵大小*图素的行数和列数
int nID; // 图素库ID, 地图编辑器无效
char strFile[33]; // 图素库源码文件名
char strMaskFile[33]; // 图素库掩码文件名
SIZE szItem; // 图素的点阵大小
//int nHeight; // 图素的点阵高度
SIZE szNum; // 图素库内实际放置的图素的行数和列数
int nFile; // 图素的文件号
//int nLayer; // 图素的层
int nType; // 类型
int nLocationSize; // 图素的大小(1,4,6,9)
int nItemWidths[MAP_UNIT_ITEM_ROW]; // 每一列图素的个数,最大帧
DWORD nItems[MAP_UNIT_ITEM_ROW]; // 图素库数据
};
// 单元动画序列数据结构
struct MAP_ANISEQ_STRUCT2
{
int nMaxState;
int nMaxSequence[MAP_UNIT_STATE_MAX];
//
POINT ptAniSeq[MAP_UNIT_STATE_MAX][MAP_UNIT_ITEM_COL];
};
// 最大事件数
#define MAP_UNIT_ANI_EVENT_MAX 6
// 单元动画序列数据结构
struct MAP_ANISEQ_STRUCT
{
// 最大状态数
int nMaxState;
// 每个状态的最大帧数
int nMaxSequence[MAP_UNIT_STATE_MAX];
#ifdef _MAP_COMPRESS_
int nOffset; // 本兵种在整个压缩包中的偏移量
// 帧号
BYTE nAniSeq[MAP_UNIT_STATE_MAX][MAP_UNIT_ITEM_MAX];
// 各个事件的开始状态号
int nEventBegin[MAP_UNIT_ANI_EVENT_MAX];
// 死亡的方向数,骑兵和水兵死亡的方向是8个,其余是一个
int nDeadDir;
#else
// 帧号
POINT ptAniSeq[MAP_UNIT_STATE_MAX][MAP_UNIT_ITEM_COL];
#endif
};
////////////
///////////
// 区域
// 无效游戏者编号
#define MAP_PLAYER_NONE 0x00
// 无阴影编号
#define MAP_SHADOW_NONE 0x0F
// 区域代码结构(展开)
struct MAP_REGION_CODE_STRUCT
{
WORD nPlayer; // 占有该点的君主编号
BYTE nShadow; // 该点上的阴影类型1,实心阴影
BYTE nShadowEx; // 该点上的阴影类型2,网状阴影
};
///////////
// 特殊
///////////
// 特殊图素的最大数量
#define MAP_SPECIAL_MAX 4
// 无效特殊图素代码
#define MAP_SPECIAL_NONE 0x0F
#define MAP_SPECIAL_WOOD 0
#define MAP_SPECIAL_WHEAT 1
#define MAP_SPECIAL_TRAP 2
#define MAP_SPECIAL_DO_WOOD 4
#define MAP_SPECIAL_DO_WHEAT 5
#define MAP_SPECIAL_DO_TRAP 6
#define MAP_SPECIAL_CUT_WOOD 8
#define MAP_SPECIAL_CUT_WHEAT 9
#define MAP_SPECIAL_CUT_TRAP 10
///////////
// 缩略图
///////////
#define MAP_MINI_TYPE_MAX 6
#define MAP_MINI_COLOR_MAX 24
struct MAP_MINI_LIB_STRUCT
{
// 当前缩略图的类型
int nType; // type of minimap, always be 0,1,2
// 缩略图的大小和位置
RECT rcMap[MAP_MINI_TYPE_MAX]; // minimap size and position
// 缩略图的颜色表
int nColorTable[MAP_MINI_COLOR_MAX]; // minimap color table
// 战场显示区域的大小和位置
RECT rcScreen; // rectangle of the battlefield window
};
// 其它图素
#define MAP_OTHER_NUM 16
struct MAP_OTHER_STRUCT
{
int nID; // 图素库ID
int nMaxFrame; // 行数,也就是最大帧数
SIZE szItem; // 图素的大小
char strFile[33]; // 文件名
int nFrame; // 当前帧
};
///////////
// 全局
// 图素库结构
struct MAP_LIB_STRUCT // 存放图素编辑器缺省设置的结构
{
RECT rcMain; // 主窗口的矩形坐标
SIZE szItem; // 每一图素的点阵大小
SIZE szNum; // 视图内可放置的图素的行数和列数
SIZE szView; // 视图的点阵大小=每一图素的点阵大小*图素的行数和列数
int nHeight[MAP_DATA_THICK+1]; // 每层图素距离地面的高度
float fVersion; // 地图的版本号
int nGLibNum; // 地形图素库文件的个数
struct MAP_GROUND_LIB_STRUCT Ground[MAP_GROUND_LIB_NUM];// 地形图素库结构
int nULibNum; // 单元图素库文件的个数
struct MAP_UNIT_LIB_STRUCT Unit[MAP_UNIT_LIB_NUM];// 单元图素库结构
// 单元动画数据
struct MAP_ANISEQ_STRUCT AniSeq[MAP_UNIT_LIB_NUM];
// 存放特殊地形图素,(该图素是以单元格式存储的)
int nSpec;
DWORD Special[MAP_SPECIAL_MAX];
// 其它图素数据
int nOtherNum; // 其它图素数据文件的个数
struct MAP_OTHER_STRUCT Other[MAP_OTHER_NUM]; // 其它图素数据文件
// 阴影文件名
// char strShadow[_MAX_FNAME];
// 建造文件名
// char strBuild[_MAX_FNAME];
// 图像压缩文件名,以压缩的状态来存放所有单元的图素
char strBMP[_MAX_FNAME];
};
///////////
// 全局量
///////////
// 地形图素总库
extern struct MAP_LIB_STRUCT MAP_Lib;
///////////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -