// 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 { 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 & rleft, std::set & 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 m_kSet_iShowingPortalID; std::set m_kSet_strDungeonMapName; std::map m_kMap_dwTargetID_dwChrID; struct SReserveTargetEffect { int ilx; int ily; }; std::map 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_)