/* ========================================================================== * ÆÄ ÀÏ : SmallMiniMapWindow.h * ¸ñ Àû : * ÀÛ ¼º ÀÚ : ±è°¡¶÷ * ÀÛ ¼º ÀÏ : 2007-05-21 * ÁÖÀÇ»çÇ× : *===========================================================================*/ #pragma once #include "UIWindow.h" #include "Npc_Common.h" class cUIImage; struct sNpcData; struct sPartyUserData; struct sUnionUserData; struct sAniParam; class cLabel; struct sBaseImageData { cUIImage* mpImage; cUIPos mPos; /// µ¥ÀÌÅÍÁÂÇ¥ cUIPos mScreenPos; /// ½ºÅ©¸°ÁÂÇ¥ cUISize mSize; bool mShow; bool mEnableShow; cStringT mName; sBaseImageData() { mpImage = 0; mPos.mX = 0; mPos.mY = 0; mScreenPos.mX = 0; mScreenPos.mY = 0; mSize.mWidth = 0; mSize.mHeight = 0; mEnableShow = true; mShow = true; } virtual ~sBaseImageData(){} }; struct sAniImageData : sBaseImageData { sAniParam* mAniParam; sAniImageData() { mAniParam = 0; } ~sAniImageData(){} }; /// npc À̹ÌÁö µ¥ÀÌÅÍ struct sNpcImageData : sBaseImageData { unsigned long mClassIndex; eNpcQuestEffect mQuestEffect; /// Äù½ºÆ® °ü·Ã »óÅ sAniParam* mAniParam; cUIImage* mpAniImage; cStringT mJobName; sNpcImageData() { mClassIndex = 0; mQuestEffect = eNPCQUEST_EFFECT_NONE; mAniParam = 0; mpAniImage = 0; } ~sNpcImageData(){} }; /// Æ÷Å» À̹ÌÁö µ¥ÀÌÅÍ struct sPortalImageData : sBaseImageData { int mTargetMapNum; sPortalImageData() { mTargetMapNum = 0; } ~sPortalImageData(){} }; /// À¯Àú µ¥ÀÌÅÍ struct sUserImageData : sBaseImageData { int mOldX; int mOldY; unsigned short mMapNum; unsigned short mRoomNum; DWORD mChannelNum; unsigned long mUserIndex; sUserImageData() { mOldX = 0; mOldY = 0; mMapNum = 0; mRoomNum = 0; mChannelNum = 0; } ~sUserImageData(){} }; // ¹Ì´ÏÀ©µµ¿ì¿¡¼­ ¸Ê À̹ÌÁö°¡ ½ÃÀ۵ǾßÇÏ´Â ÁÂÇ¥ & ¸Ê À̹ÌÁö Àû¿ëµÉ »çÀÌÁî const int MAP_X = 10; const int MAP_Y = 34; const int MAP_W = 150; const int MAP_H = 150; // ¸Ê ÅØ½ºÃÄ »çÀÌÁî const unsigned short MAPTEX_W = 512; const unsigned short MAPTEX_H = 512; /// Ãß°¡ °¨¼ÒµÇ´Â °ª const float MAX_PERCENT = 50.f; const float MIN_PERCENT = 20.f; const float ADD_PERCENT = 20.f; const int NPCICON_SIZE = 16; /// »çÀÌÁî const int POSTICON_SIZE = 16; /// »çÀÌÁî const int PIXNPCANI_X = 2; // NPC ¾Ö´Ï¸ÞÀÌ¼Ç À̹ÌÁö ÁÂÇ¥ º¸Á¤ const int PIXNPCANI_Y = 8; // ¹Ì´Ï¸Ê class cSmallMiniMapWindow : public cUIWindow { public: cSmallMiniMapWindow(); virtual ~cSmallMiniMapWindow(); virtual void Open(); virtual void Close(); virtual void Clear(); // ¸Ê Æ÷Å» Á¤º¸ ¼¼ÆÃ virtual void SetMapData(); virtual void ClearNpc(); // Àüü »èÁ¦ virtual void AddNpc( sNpcData* data ); virtual void DeleteNpc( unsigned long npcIdx ); virtual void UpdateNpcEffect( unsigned long npcIdx, eNpcQuestEffect status ); virtual void ClearParty(); // Àüü »èÁ¦ virtual void AddParty( sPartyUserData* data ); virtual void DeleteParty( unsigned long userIdx ); virtual void UpdatePartyPos( unsigned long userIdx, float posX, float posY ); virtual void UpdatePartyMap( unsigned long userIdx, unsigned short mapnum, unsigned short roomnum, DWORD channelnum ); virtual void AddUnion( sUnionUserData* data ); virtual void DeleteUnion( unsigned long userIdx ); virtual void UpdateUnion( unsigned long userIdx, float posX, float posY ); virtual void AddPortal( unsigned long index ); // ã¾Æ°¡±â ±â´É virtual void AddFindPosition( float xpos, float ypos ); virtual void DeleteFindPsotion(); // ±ê¹ß ±â´É virtual void ClearFlag(); virtual void AddFlag( unsigned long objectIdx, unsigned long userIdx, float xpos, float ypos ); virtual void DeleteFlag( unsigned long objectIdx ); // °Ô¾ç Æ÷ÀÎÆ® virtual void ClearFlagPoint(); virtual void AddFlagPoint( unsigned long objectIdx, float xpos, float ypos ); virtual void DeleteFlagPoint( unsigned long objectIdx ); // void SetImagePercent( float per ); float GetImagePercent() { return mPercent; } ///ÆÀ¿ø ¼öÀå Ç¥½Ã void SetPvpLeader( unsigned long userIdx ); ///¼®»ó Ç¥½Ã void ClearStone(); void AddStone( float posX, float posY, unsigned char teamType ); void DeleteStone( unsigned char teamType ); protected: virtual bool OnCreate( cUINodeProperty* pproperty ); virtual void OnRender( cUIFontItemKeeper* pKeeper ); virtual void OnProcess( unsigned long deltaTime, unsigned long accumTime ); virtual void OnCommand( cUINode*, unsigned int id ); virtual void OnMouseMove( const cUIPos& pos ); virtual void OnMouseLeft( const cUIPos& pos ); virtual void UpdateRect(); virtual void UpdateSkin(); virtual void OnHide(); virtual bool ContainPoint( const cUIPos& pos ) const; /// À̸§Á¤º¸ À§Ä¡ ¾÷µ¥ÀÌÆ® virtual void UpdateNamePos(); // ¾Ö´Ï¸ÞÀÌ¼Ç ¾÷µ¥ÀÌÆ® void UpdateAni( unsigned long accumTime, sAniParam* p, cUIImage* image ); // void UpdateNpc( short tl, short tt, unsigned short tr, unsigned short tb ); void UpdateParty( short tl, short tt, unsigned short tr, unsigned short tb, double xr, double yr, short heroScreenX, short heroScreenY ); void UpdatePortal( short tl, short tt, unsigned short tr, unsigned short tb ); void UpdatePartyUnion( short tl, short tt, unsigned short tr, unsigned short tb ); void UpdateFindPos( short tl, short tt, unsigned short tr, unsigned short tb ); void UpdateFlag( short tl, short tt, unsigned short tr, unsigned short tb ); void UpdateFlagPoint( short tl, short tt, unsigned short tr, unsigned short tb ); void UpdateStone( short tl, short tt, unsigned short tr, unsigned short tb ); protected: // °ü¸®¸Ê typedef tPointerHashMap cDataHashMap; // npc cDataHashMap mNpcHashMap; // portal cDataHashMap mPortalHashMap; // party cDataHashMap mPartyHashMap; // partyUnion cDataHashMap mPartyUnionHashMap; // flag cDataHashMap mFlagMap; // flag °Ô¾ç Æ÷ÀÎÆ® cDataHashMap mFlagPointMap; // ¼®»ó À̹ÌÁö cDataHashMap mPvPStoneMap; // ±ê¹ß //sUserImageData* mpFlagData; // ±ê¹ß °Ô¾ç Æ÷ÀÎÆ® //sAniImageData* mpFlagPointData; // ã¾Æ°¡±â ±â´É sAniImageData* mpPositionData; protected: /// ¾÷µ¥ÀÌÆ® ¿©ºÎ bool mNeedUpdate; /// Å« ¹Ì´Ï¸Ê ¿©ºÎ bool mIsWidMap; // cUIImage* mpMapImage; cUIImage* mpPosBackImage; // ÁÂÇ¥ºÎºÐ ¹è°æÀ̹ÌÁö cUIPos mPos; // ÁÂÇ¥ºÎºÐ ½ºÅ©¸°ÁÂÇ¥ /// ¸Ê ºä ÆÛ¼¾Æ®¿¡ µû¸¥ ÅØ½ºÃÄ »çÀÌÁî Á¶Á¤ double mPerTexW, mPerTexH; /// Ãà¼Ò ÆÛ¼¾Æ® ( 100 % Ãà¼Ò : Àüü Áöµµ ) float mPercent; /// È­¸é Ãâ·Â hero À§Ä¡ float mOldX, mOldY; /// hero µ¥ÀÌÅÍ cUIImage* mpHeroImage; NiPoint3 mHeroDir; cUISize mHeroSize; /// Ä«¸Þ¶ó µ¥ÀÌÅÍ cUIImage* mpCameraImage; NiPoint3 mCameraDir; cUISize mCameraSize; // ¸¶¿ì½º ¿À¹ö sBaseImageData* mpHoverData; /// Äù½ºÆ® À̹ÌÁö ½ºÅ² cUINodeSkin* mpQuestNew; cUINodeSkin* mpQuestPlay; cUINodeSkin* mpQuestComplete; cUINodeSkin* mpNexLevelQuestNew; cUINodeSkin* mpThemeQuestNew; cUINodeSkin* mpThemeQuestComplete; cUINodeSkin* mpRepeatQuestNew; cUINodeSkin* mpRepeatQuestComplete; cUINodeSkin* mPartyInSkin; cUINodeSkin* mPartyOutSkin; cUINodeSkin* mPvpPartyLeader; /// µ¥½º¸ÅÄ¡ ÀüÀå ¼öÀåÇ¥½Ã cUINodeSkin* mPvpTeamAStone; /// µ¥½º¸ÅÄ¡ ÀüÀå TeamA ¼®»óÇ¥½Ã cUINodeSkin* mPvpTeamBStone; /// µ¥½º¸ÅÄ¡ ÀüÀå TeamB ¼®»óÇ¥½Ã cLabel* mpMapName; cLabel* mpChannelNum; //À̸§ Ãâ·Â cStringT mName; cStringT mJobName; cUIPos mNamePos; cUIPos mJobPos; // ÀÌÀü ¼öÀå ÀúÀå. unsigned long mOldPvpLeaderIndex; }; inline void cSmallMiniMapWindow::SetImagePercent( float per ) { mPercent = per; if( mPercent > MAX_PERCENT ) mPercent = MAX_PERCENT; if( mPercent < MIN_PERCENT ) mPercent = MIN_PERCENT; }