?? 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; // 圖素的大?。?,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 + -