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

📄 mhmap.h

📁 墨香最新私服
💻 H
字号:
// MHMap.h: interface for the CMHMap class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_MHMAP_H__444BAED6_A7A5_4CB6_B1BF_027999B116FE__INCLUDED_)
#define AFX_MHMAP_H__444BAED6_A7A5_4CB6_B1BF_027999B116FE__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include ".\Engine\EngineMap.h"
#include ".\Engine\EngineSky.h"
#include ".\Engine\EngineLight.h"
#include ".\Engine\EngineObject.h"
#include "EngineCloud.h"

class CTileManager;
class CMHFile;

#define MAP		USINGTON(CMHMap)

struct MAPDESC
{
	MAPDESC()
	{
		DefaultSight = 8000;
		Fov = 45;

		fogdesc.bEnable = TRUE;
		fogdesc.dwColor = 0xaaaaaaaa;
		fogdesc.fDensity = 0.5f;
		fogdesc.fStart = 20000;
		fogdesc.fEnd = 80000;
		BGMSoundNum = 0;
		
		strcpy(MapFileName,"new_gae_002.map");
		strcpy(TileFileName,"");
		strcpy(SkyMod,"SkyBox.MOD");
		strcpy(SkyAnm,"SkyBox.ANM");
		
		strcpy(SunObject,"bg_login.mp3");

		bSun = 0;
		bSky = 1;

		Ambient = 0xaaaaaaaa;
		
		SunPos.x = 800;
		SunPos.y = 1300;
		SunPos.z = 200;		
		
		backColor = 0x00000000;

		SunDistance = 7000;

		bFixHeight = FALSE;

		CloudNum = 0;
		CloudHMin = 1500;
		CloudHMax = 2000;
		strcpy(CloudListFile,"CloudList.txt");

		
		strcpy(CameraFilter,"");
		CameraFilterDist = 20;
	}
	BOOL bFixHeight;
	float FixHeight;
	VECTOR3 SunPos;

	DWORD Ambient;

	float DefaultSight;
	float Fov;
	
	FOG_DESC fogdesc;
	
	char MapFileName[64];
	char TileFileName[64];
	
	BOOL bSky;
	char SkyMod[64];
	char SkyAnm[64];

	SNDIDX BGMSoundNum;
	float BGMVolume;
	
	BOOL bSun;
	char SunObject[64];

	DWORD backColor;

	float SunDistance;

	char CloudListFile[64];
	DWORD CloudNum;
	int CloudHMin;
	int CloudHMax;

	char CameraFilter[64];
	float CameraFilterDist;
};

class CMHMap  
{
	BOOL m_bIsInited;
	MAPTYPE m_MapNum;
	VECTOR3 m_ShadowPivotPos;

	MAPDESC* mapDesc;
	CEngineMap map;
	CEngineSky* sky;
	CTileManager* m_pTileManager;
	CEngineObject m_SunObject; 
	CEngineObject m_CameraFilterObject; 

	CEngineLight m_Shadowlight;
	
	CYHHashTable<CEngineCloud> m_CloudTable;

////
	BOOL	m_bVillage;
	VECTOR3 m_SunPosForShadow;
	
		
public:

	BOOL LoadMapDesc(BYTE MapNum);
	void ApplyMapDesc();

	CMHMap();
	~CMHMap();
	DWORD GetTileWidth();
	MAPDESC* GetMapDesc()	{	return mapDesc;	}

	void LoadStaticNpc(MAPTYPE MapNum);
	void LoadPreData(MAPTYPE MapNum);
	BOOL IsInited()	{	return m_bIsInited;	}
	void InitMap(MAPTYPE MapNum);

	void Release();
	
	void Restore();
	void Invalidate();

	void Process(DWORD tick);
	
	BOOL CollisonCheck(VECTOR3* pStart,VECTOR3* pEnd,VECTOR3* pRtCollisonPos,CObject* pObj);		// 面倒窍搁 TRUE馆券窍绊 pRtCollisonPos俊 货肺款 鸥百 汲沥

	void SetShadowPivotPos(VECTOR3* pPivotPos);
	
	CTileManager* GetTileManager()		{	return m_pTileManager;	}
	MAPTYPE GetMapNum()	{	return m_MapNum;	}
	

	void SetMapAmbient( DWORD dwAmbient ) { map.SetAmbientColor(dwAmbient); }
	

	BOOL IsInTile(int x, int y, MAPTYPE MapNum,CObject* pObject);
	BOOL CollisionTilePos(int x, int y, MAPTYPE MapNum,CObject* pObject);
	BOOL CollisionTileCell(int x, int y, MAPTYPE MapNum,CObject* pObject);

	BOOL CollisionLine(VECTOR3* pStart,VECTOR3* pEnd, VECTOR3 * Target, MAPTYPE MapNum,CObject* pObject);

	////
	BOOL IsVillage() { return m_bVillage; }
	void SetVillage( BOOL bVillage ) { m_bVillage = bVillage; }

	// quest npc
	DWORD	m_dwQuestNpcId;
	void	AddQuestNpc( QUESTNPCINFO* pInfo );
};

EXTERNGLOBALTON(CMHMap)

#endif // !defined(AFX_MHMAP_H__444BAED6_A7A5_4CB6_B1BF_027999B116FE__INCLUDED_)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -