📄 map.h
字号:
#pragma once
#include <vector>
using namespace std;
#include "../GameLib/CSurface.h"
const char MAP_HEAD[]="MhSoft MapFile V1.1 (2005)"; //V1.1的地图头文件
//阻碍标志定义(Block)
#define ID_BLOCK_F 0 //该CELL没有阻碍
#define ID_BLOCK_T 1 // 该CELL有阻碍
//陷阱标志定义(Hook)
#define ID_HOOK_F 0 //此格无陷阱
#define ID_HOOK_T 1 //此格有陷阱
class CMap
{
private:
CFont MapFont; //字体引擎
public:
int ID; //地图编号
char Name[32]; //地图名称(地图文件名)
int Width; //宽度(以格子为坐标) 斜
int Height; //高度(以格子为坐标) 斜
int MapStartX,MapStartY; //左上角坐标
stCell **Cell; //动态格子
char FileName[32]; //当前地图文件名
char ScrFName[32]; //地图初始化脚本文件名
char Reserve[4]; //保留位,(我估计我们肯定还有想不到的一些信息,以后可以在这里添加,以免地图编辑完成之后,再修改Map_struct格式,破坏原先编好的地图文件)
LPDIRECTDRAWSURFACE7 lpDDS_MapBack; //地图临时保存点
LPDIRECTDRAWSURFACE7 lpDDS_TMouse; //Tile鼠标
int MapBx,MapBy; //用来优化机器
static int MapDMX;
static int MapDMY; //最大画出点Y
static int MapDSY; //最大画小点Y,为什么不画X点,因为Y点特殊
public:
~CMap(); //只需要它
int GetMapID(); //获取地图ID
bool SetMapID();//设定地图ID
bool LoadMap(char *Filename);
bool NewMap(char *XName,int XID,int XWidth,int XHeight,char *ScrFNameX);
bool SaveMap(char *Filename);
bool ShowMap(LPDIRECTDRAWSURFACE7 MapDDS);
//默认为天空层(2)
void ShowTile(int ZC,int x,int y,LPDIRECTDRAWSURFACE7 MapDDS); //显示一个Tile
bool IsBlock(int x,int y);
void CBlockOn(bool FT,int x,int y);
bool IsHook(int x,int y); //判断是否有陷阱
void CHookOn(bool FT,char SName[32],int x,int y); //给一个位置加陷阱
void CreateAPic(int Wei,int x,int y,int PicI,int x1,int y1); //设定一个图块
void ShowTileCPic(LPDIRECTDRAWSURFACE7 DDS,int CurposX,int CurposY);
bool SetTileMouse(char *FileName); //设定鼠标Tile
public:
POINT GetStartXY(int *x=NULL,int *y=NULL); //获取坐标
BOOL SetStartXY(int x,int y); //设定坐标
};
void MDToMI(int Dx,int Dy,int &Ix,int &Iy);
void MIToMD(int Ix,int Iy,int &Dx,int &Dy);//坐标转换
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -