253 lines
6.4 KiB
C
253 lines
6.4 KiB
C
|
#pragma once
|
|||
|
|
|||
|
#include "PythonBackground.h"
|
|||
|
|
|||
|
class CPythonMiniMap : public CScreen, public CSingleton<CPythonMiniMap>
|
|||
|
{
|
|||
|
public:
|
|||
|
enum
|
|||
|
{
|
|||
|
EMPIRE_NUM = 4,
|
|||
|
|
|||
|
MINI_WAYPOINT_IMAGE_COUNT = 12,
|
|||
|
WAYPOINT_IMAGE_COUNT = 15,
|
|||
|
TARGET_MARK_IMAGE_COUNT = 2,
|
|||
|
};
|
|||
|
enum
|
|||
|
{
|
|||
|
TYPE_OPC,
|
|||
|
TYPE_OPCPVP,
|
|||
|
TYPE_OPCPVPSELF,
|
|||
|
TYPE_NPC,
|
|||
|
TYPE_MONSTER,
|
|||
|
TYPE_WARP,
|
|||
|
TYPE_WAYPOINT,
|
|||
|
TYPE_PARTY,
|
|||
|
TYPE_EMPIRE,
|
|||
|
TYPE_EMPIRE_END = TYPE_EMPIRE + EMPIRE_NUM,
|
|||
|
TYPE_TARGET,
|
|||
|
TYPE_COUNT,
|
|||
|
};
|
|||
|
|
|||
|
public:
|
|||
|
CPythonMiniMap();
|
|||
|
virtual ~CPythonMiniMap();
|
|||
|
|
|||
|
void Destroy();
|
|||
|
bool Create();
|
|||
|
|
|||
|
bool IsAtlas();
|
|||
|
bool CanShow();
|
|||
|
bool CanShowAtlas();
|
|||
|
|
|||
|
void SetMiniMapSize(float fWidth, float fHeight);
|
|||
|
void SetScale(float fScale);
|
|||
|
void ScaleUp();
|
|||
|
void ScaleDown();
|
|||
|
|
|||
|
void SetCenterPosition(float fCenterX, float fCenterY);
|
|||
|
|
|||
|
void Update(float fCenterX, float fCenterY);
|
|||
|
void Render(float fScreenX, float fScreenY);
|
|||
|
|
|||
|
void Show();
|
|||
|
void Hide();
|
|||
|
|
|||
|
bool GetPickedInstanceInfo(float fScreenX, float fScreenY, std::string & rReturnName, float * pReturnPosX, float * pReturnPosY, DWORD * pdwTextColor);
|
|||
|
|
|||
|
// Atlas
|
|||
|
bool LoadAtlas();
|
|||
|
void UpdateAtlas();
|
|||
|
void RenderAtlas(float fScreenX, float fScreenY);
|
|||
|
void ShowAtlas();
|
|||
|
void HideAtlas();
|
|||
|
|
|||
|
bool GetAtlasInfo(float fScreenX, float fScreenY, std::string & rReturnString, float * pReturnPosX, float * pReturnPosY, DWORD * pdwTextColor, DWORD * pdwGuildID);
|
|||
|
bool GetAtlasSize(float * pfSizeX, float * pfSizeY);
|
|||
|
|
|||
|
void AddObserver(DWORD dwVID, float fSrcX, float fSrcY);
|
|||
|
void MoveObserver(DWORD dwVID, float fDstX, float fDstY);
|
|||
|
void RemoveObserver(DWORD dwVID);
|
|||
|
|
|||
|
// WayPoint
|
|||
|
void AddWayPoint(BYTE byType, DWORD dwID, float fX, float fY, std::string strText, DWORD dwChrVID=0);
|
|||
|
void RemoveWayPoint(DWORD dwID);
|
|||
|
|
|||
|
// SignalPoint
|
|||
|
void AddSignalPoint(float fX, float fY);
|
|||
|
void ClearAllSignalPoint();
|
|||
|
|
|||
|
void RegisterAtlasWindow(PyObject* poHandler);
|
|||
|
void UnregisterAtlasWindow();
|
|||
|
void OpenAtlasWindow();
|
|||
|
void SetAtlasCenterPosition(int x, int y);
|
|||
|
|
|||
|
// NPC List
|
|||
|
void ClearAtlasMarkInfo();
|
|||
|
void RegisterAtlasMark(BYTE byType, const char * c_szName, long lx, long ly);
|
|||
|
|
|||
|
// Guild
|
|||
|
void ClearGuildArea();
|
|||
|
void RegisterGuildArea(DWORD dwID, DWORD dwGuildID, long x, long y, long width, long height);
|
|||
|
DWORD GetGuildAreaID(DWORD x, DWORD y);
|
|||
|
|
|||
|
// Target
|
|||
|
void CreateTarget(int iID, const char * c_szName);
|
|||
|
void CreateTarget(int iID, const char * c_szName, DWORD dwVID);
|
|||
|
void UpdateTarget(int iID, int ix, int iy);
|
|||
|
void DeleteTarget(int iID);
|
|||
|
|
|||
|
protected:
|
|||
|
void __Initialize();
|
|||
|
void __SetPosition();
|
|||
|
void __LoadAtlasMarkInfo();
|
|||
|
|
|||
|
void __RenderWayPointMark(int ixCenter, int iyCenter);
|
|||
|
void __RenderMiniWayPointMark(int ixCenter, int iyCenter);
|
|||
|
void __RenderTargetMark(int ixCenter, int iyCenter);
|
|||
|
|
|||
|
void __GlobalPositionToAtlasPosition(long lx, long ly, float * pfx, float * pfy);
|
|||
|
|
|||
|
protected:
|
|||
|
// Atlas
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
BYTE m_byType;
|
|||
|
DWORD m_dwID; // For WayPoint
|
|||
|
float m_fX;
|
|||
|
float m_fY;
|
|||
|
float m_fScreenX;
|
|||
|
float m_fScreenY;
|
|||
|
float m_fMiniMapX;
|
|||
|
float m_fMiniMapY;
|
|||
|
DWORD m_dwChrVID;
|
|||
|
std::string m_strText;
|
|||
|
} TAtlasMarkInfo;
|
|||
|
|
|||
|
// GuildArea
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
DWORD dwGuildID;
|
|||
|
long lx, ly;
|
|||
|
long lwidth, lheight;
|
|||
|
|
|||
|
float fsxRender, fsyRender;
|
|||
|
float fexRender, feyRender;
|
|||
|
} TGuildAreaInfo;
|
|||
|
|
|||
|
struct SObserver
|
|||
|
{
|
|||
|
float fCurX;
|
|||
|
float fCurY;
|
|||
|
float fSrcX;
|
|||
|
float fSrcY;
|
|||
|
float fDstX;
|
|||
|
float fDstY;
|
|||
|
|
|||
|
DWORD dwSrcTime;
|
|||
|
DWORD dwDstTime;
|
|||
|
};
|
|||
|
|
|||
|
// ij<><C4B3><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>Ʈ
|
|||
|
typedef struct
|
|||
|
{
|
|||
|
float m_fX;
|
|||
|
float m_fY;
|
|||
|
UINT m_eNameColor;
|
|||
|
} TMarkPosition;
|
|||
|
|
|||
|
typedef std::vector<TMarkPosition> TInstanceMarkPositionVector;
|
|||
|
typedef TInstanceMarkPositionVector::iterator TInstancePositionVectorIterator;
|
|||
|
|
|||
|
protected:
|
|||
|
bool __GetWayPoint(DWORD dwID, TAtlasMarkInfo ** ppkInfo);
|
|||
|
void __UpdateWayPoint(TAtlasMarkInfo * pkInfo, int ix, int iy);
|
|||
|
|
|||
|
protected:
|
|||
|
float m_fWidth;
|
|||
|
float m_fHeight;
|
|||
|
|
|||
|
float m_fScale;
|
|||
|
|
|||
|
float m_fCenterX;
|
|||
|
float m_fCenterY;
|
|||
|
|
|||
|
float m_fCenterCellX;
|
|||
|
float m_fCenterCellY;
|
|||
|
|
|||
|
float m_fScreenX;
|
|||
|
float m_fScreenY;
|
|||
|
|
|||
|
float m_fMiniMapRadius;
|
|||
|
|
|||
|
// <20><> <20><EFBFBD>...
|
|||
|
LPDIRECT3DTEXTURE8 m_lpMiniMapTexture[AROUND_AREA_NUM];
|
|||
|
|
|||
|
// <20>̴ϸ<CCB4> Ŀ<><C4BF>
|
|||
|
CGraphicImageInstance m_MiniMapFilterGraphicImageInstance;
|
|||
|
CGraphicExpandedImageInstance m_MiniMapCameraraphicImageInstance;
|
|||
|
|
|||
|
// ij<><C4B3><EFBFBD><EFBFBD> <20><>ũ
|
|||
|
CGraphicExpandedImageInstance m_PlayerMark;
|
|||
|
CGraphicImageInstance m_WhiteMark;
|
|||
|
|
|||
|
TInstanceMarkPositionVector m_PartyPCPositionVector;
|
|||
|
TInstanceMarkPositionVector m_OtherPCPositionVector;
|
|||
|
TInstanceMarkPositionVector m_NPCPositionVector;
|
|||
|
TInstanceMarkPositionVector m_MonsterPositionVector;
|
|||
|
TInstanceMarkPositionVector m_WarpPositionVector;
|
|||
|
std::map<DWORD, SObserver> m_kMap_dwVID_kObserver;
|
|||
|
|
|||
|
bool m_bAtlas;
|
|||
|
bool m_bShow;
|
|||
|
|
|||
|
CGraphicVertexBuffer m_VertexBuffer;
|
|||
|
CGraphicIndexBuffer m_IndexBuffer;
|
|||
|
|
|||
|
D3DXMATRIX m_matIdentity;
|
|||
|
D3DXMATRIX m_matWorld;
|
|||
|
D3DXMATRIX m_matMiniMapCover;
|
|||
|
|
|||
|
bool m_bShowAtlas;
|
|||
|
CGraphicImageInstance m_AtlasImageInstance;
|
|||
|
D3DXMATRIX m_matWorldAtlas;
|
|||
|
CGraphicExpandedImageInstance m_AtlasPlayerMark;
|
|||
|
|
|||
|
float m_fAtlasScreenX;
|
|||
|
float m_fAtlasScreenY;
|
|||
|
|
|||
|
DWORD m_dwAtlasBaseX;
|
|||
|
DWORD m_dwAtlasBaseY;
|
|||
|
|
|||
|
float m_fAtlasMaxX;
|
|||
|
float m_fAtlasMaxY;
|
|||
|
|
|||
|
float m_fAtlasImageSizeX;
|
|||
|
float m_fAtlasImageSizeY;
|
|||
|
|
|||
|
typedef std::vector<TAtlasMarkInfo> TAtlasMarkInfoVector;
|
|||
|
typedef TAtlasMarkInfoVector::iterator TAtlasMarkInfoVectorIterator;
|
|||
|
typedef std::vector<TGuildAreaInfo> TGuildAreaInfoVector;
|
|||
|
typedef TGuildAreaInfoVector::iterator TGuildAreaInfoVectorIterator;
|
|||
|
TAtlasMarkInfoVectorIterator m_AtlasMarkInfoVectorIterator;
|
|||
|
TAtlasMarkInfoVector m_AtlasNPCInfoVector;
|
|||
|
TAtlasMarkInfoVector m_AtlasWarpInfoVector;
|
|||
|
|
|||
|
// WayPoint
|
|||
|
CGraphicExpandedImageInstance m_MiniWayPointGraphicImageInstances[MINI_WAYPOINT_IMAGE_COUNT];
|
|||
|
CGraphicExpandedImageInstance m_WayPointGraphicImageInstances[WAYPOINT_IMAGE_COUNT];
|
|||
|
CGraphicExpandedImageInstance m_TargetMarkGraphicImageInstances[TARGET_MARK_IMAGE_COUNT];
|
|||
|
CGraphicImageInstance m_GuildAreaFlagImageInstance;
|
|||
|
TAtlasMarkInfoVector m_AtlasWayPointInfoVector;
|
|||
|
TGuildAreaInfoVector m_GuildAreaInfoVector;
|
|||
|
|
|||
|
// SignalPoint
|
|||
|
struct TSignalPoint
|
|||
|
{
|
|||
|
D3DXVECTOR2 v2Pos;
|
|||
|
unsigned int id;
|
|||
|
};
|
|||
|
std::vector<TSignalPoint> m_SignalPointVector;
|
|||
|
|
|||
|
PyObject* m_poHandler;
|
|||
|
};
|