184 lines
4.3 KiB
C++
184 lines
4.3 KiB
C++
// PythonBackground.h: interface for the CPythonBackground class.
|
|
//
|
|
//////////////////////////////////////////////////////////////////////
|
|
|
|
#if !defined(AFX_PYTHONBACKGROUND_H__A202CB18_9553_4CF3_8500_5D7062B55432__INCLUDED_)
|
|
#define AFX_PYTHONBACKGROUND_H__A202CB18_9553_4CF3_8500_5D7062B55432__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#include "../gamelib/MapManager.h"
|
|
#include "../gamelib/TerrainDecal.h"
|
|
#include "../gamelib/SnowEnvironment.h"
|
|
|
|
class CInstanceBase;
|
|
|
|
class CPythonBackground : public CMapManager, public CSingleton<CPythonBackground>
|
|
{
|
|
public:
|
|
enum
|
|
{
|
|
SHADOW_NONE,
|
|
SHADOW_GROUND,
|
|
SHADOW_GROUND_AND_SOLO,
|
|
SHADOW_ALL,
|
|
SHADOW_ALL_HIGH,
|
|
SHADOW_ALL_MAX,
|
|
};
|
|
|
|
enum
|
|
{
|
|
DISTANCE0,
|
|
DISTANCE1,
|
|
DISTANCE2,
|
|
DISTANCE3,
|
|
DISTANCE4,
|
|
NUM_DISTANCE_SET
|
|
};
|
|
|
|
enum
|
|
{
|
|
DAY_MODE_LIGHT,
|
|
DAY_MODE_DARK,
|
|
};
|
|
|
|
typedef struct SVIEWDISTANCESET
|
|
{
|
|
float m_fFogStart;
|
|
float m_fFogEnd;
|
|
float m_fFarClip;
|
|
D3DXVECTOR3 m_v3SkyBoxScale;
|
|
} TVIEWDISTANCESET;
|
|
|
|
public:
|
|
CPythonBackground();
|
|
virtual ~CPythonBackground();
|
|
|
|
void Initialize();
|
|
|
|
void Destroy();
|
|
void Create();
|
|
|
|
void GlobalPositionToLocalPosition(LONG& rGlobalX, LONG& rGlobalY);
|
|
void LocalPositionToGlobalPosition(LONG& rLocalX, LONG& rLocalY);
|
|
|
|
void EnableTerrainOnlyForHeight();
|
|
bool SetSplatLimit(int iSplatNum);
|
|
bool SetVisiblePart(int ePart, bool isVisible);
|
|
bool SetShadowLevel(int eLevel);
|
|
void RefreshShadowLevel();
|
|
void SelectViewDistanceNum(int eNum);
|
|
void SetViewDistanceSet(int eNum, float fFarClip);
|
|
float GetFarClip();
|
|
|
|
DWORD GetRenderShadowTime();
|
|
void GetDistanceSetInfo(int * peNum, float * pfStart, float * pfEnd, float * pfFarClip);
|
|
|
|
bool GetPickingPoint(D3DXVECTOR3 * v3IntersectPt);
|
|
bool GetPickingPointWithRay(const CRay & rRay, D3DXVECTOR3 * v3IntersectPt);
|
|
bool GetPickingPointWithRayOnlyTerrain(const CRay & rRay, D3DXVECTOR3 * v3IntersectPt);
|
|
BOOL GetLightDirection(D3DXVECTOR3 & rv3LightDirection);
|
|
|
|
void Update(float fCenterX, float fCenterY, float fCenterZ);
|
|
|
|
void CreateCharacterShadowTexture();
|
|
void ReleaseCharacterShadowTexture();
|
|
void Render();
|
|
void RenderSnow();
|
|
void RenderPCBlocker();
|
|
void RenderCollision();
|
|
void RenderCharacterShadowToTexture();
|
|
void RenderSky();
|
|
void RenderCloud();
|
|
void RenderWater();
|
|
void RenderEffect();
|
|
void RenderBeforeLensFlare();
|
|
void RenderAfterLensFlare();
|
|
|
|
bool CheckAdvancing(CInstanceBase * pInstance);
|
|
|
|
void SetCharacterDirLight();
|
|
void SetBackgroundDirLight();
|
|
|
|
void ChangeToDay();
|
|
void ChangeToNight();
|
|
void EnableSnowEnvironment();
|
|
void DisableSnowEnvironment();
|
|
void SetXMaxTree(int iGrade);
|
|
|
|
void ClearGuildArea();
|
|
void RegisterGuildArea(int isx, int isy, int iex, int iey);
|
|
|
|
void CreateTargetEffect(DWORD dwID, DWORD dwChrVID);
|
|
void CreateTargetEffect(DWORD dwID, long lx, long ly);
|
|
void DeleteTargetEffect(DWORD dwID);
|
|
|
|
void CreateSpecialEffect(DWORD dwID, float fx, float fy, float fz, const char * c_szFileName);
|
|
void DeleteSpecialEffect(DWORD dwID);
|
|
|
|
void Warp(DWORD dwX, DWORD dwY);
|
|
|
|
void VisibleGuildArea();
|
|
void DisableGuildArea();
|
|
|
|
void RegisterDungeonMapName(const char * c_szMapName);
|
|
TMapInfo* GlobalPositionToMapInfo(DWORD dwGlobalX, DWORD dwGlobalY);
|
|
const char* GetWarpMapName();
|
|
|
|
protected:
|
|
void __CreateProperty();
|
|
bool __IsSame(std::set<int> & rleft, std::set<int> & rright);
|
|
|
|
protected:
|
|
std::string m_strMapName;
|
|
|
|
private:
|
|
CSnowEnvironment m_SnowEnvironment;
|
|
|
|
int m_iDayMode;
|
|
int m_iXMasTreeGrade;
|
|
|
|
int m_eShadowLevel;
|
|
int m_eViewDistanceNum;
|
|
|
|
BOOL m_bVisibleGuildArea;
|
|
|
|
DWORD m_dwRenderShadowTime;
|
|
|
|
DWORD m_dwBaseX;
|
|
DWORD m_dwBaseY;
|
|
|
|
TVIEWDISTANCESET m_ViewDistanceSet[NUM_DISTANCE_SET];
|
|
|
|
std::set<int> m_kSet_iShowingPortalID;
|
|
std::set<std::string> m_kSet_strDungeonMapName;
|
|
std::map<DWORD, DWORD> m_kMap_dwTargetID_dwChrID;
|
|
|
|
struct SReserveTargetEffect
|
|
{
|
|
int ilx;
|
|
int ily;
|
|
};
|
|
std::map<DWORD, SReserveTargetEffect> m_kMap_dwID_kReserveTargetEffect;
|
|
|
|
struct FFindWarpMapName
|
|
{
|
|
DWORD m_dwX, m_dwY;
|
|
FFindWarpMapName::FFindWarpMapName(DWORD dwX, DWORD dwY)
|
|
{
|
|
m_dwX = dwX;
|
|
m_dwY = dwY;
|
|
}
|
|
bool operator() (TMapInfo & rMapInfo)
|
|
{
|
|
if (m_dwX < rMapInfo.m_dwBaseX || m_dwX >= rMapInfo.m_dwEndX || m_dwY < rMapInfo.m_dwBaseY || m_dwY >= rMapInfo.m_dwEndY)
|
|
return false;
|
|
return true;
|
|
}
|
|
};
|
|
};
|
|
|
|
#endif // !defined(AFX_PYTHONBACKGROUND_H__A202CB18_9553_4CF3_8500_5D7062B55432__INCLUDED_)
|