⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cbmap.h

📁 赤壁之战(游戏原码)
💻 H
📖 第 1 页 / 共 2 页
字号:
/////////////////
// 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 + -