Files
2022-10-26 12:25:11 +08:00

234 lines
6.7 KiB
C++

//---------------------------------------------------------------------------------------
//
// 2005년 11월 23일 임대진
//
// *. 레이더 다이얼로그에 사용되는 택스쳐 이미지가 한 장으로 교체됨에 따라
// 각 부분별로 UV 용 좌표 정보가 필요합니다.
//
// *. 각 좌표들을 택스트 스크립트로 처리하여 수정할 경우 이미지 파일과
// 택스트 스크립트 파일만 수정하면 되게 작업
//
//---------------------------------------------------------------------------------------
#pragma once
#include <SolarHashTable.h>
#include <Singleton.h>
using namespace std;
#define ARROW_DISTANCE 10.0f
#define ARROW_SCALE 0.10f
enum eRADAR_POINT_COLOR
{
eRADAR_NOT_FOUND_OBJECT = -1,
eRADAR_PC_POINT=0,
eRADAR_PARTY_POINT,
eRADAR_NPC_POINT,
eRADAR_MONSTER_POINT,
eRADAR_HERO_ARROW,
eRADAR_MONSTER_DEAD_POINT,
eRADAR_PARTY_POINT_01,
eRADAR_PARTY_POINT_02,
eRADAR_PARTY_POINT_03,
eRADAR_PARTY_POINT_04,
eRADAR_PARTY_POINT_05,
eRADAR_PARTY_POINT_06,
eRADAR_PARTY_POINT_07,
eRADAR_PARTY_POINT_08,
eRADAR_PARTY_POINT_09,
eRADAR_PARTY_POINT_10,
eRADAR_CLICK_POINT_01,
eRADAR_CLICK_POINT_02,
eRADAR_CLICK_POINT_03,
eRADAR_CLICK_POINT_04,
eRADAR_CLICK_POINT_05,
eRADAR_CLICK_POINT_06,
eRADAR_CLICK_POINT_07,
eRADAR_CLICK_POINT_08,
eRADAR_CLICK_POINT_09,
eRADAR_CLICK_POINT_10,
eRADAR_CLICK_POINT_11,
eRADAR_NORMAL_QUEST_ACCEPT,// 일반 퀘스트수락(노랑)
eRADAR_REPEAT_QUEST_REWARD,// 반복 퀘스트완료(녹색)
eRADAR_TIMEATTACK,
eRADAR_NPC_START = 30 ,
eRADAR_NPC_END = 49,
eRADAR_SAME_PARTY_MEMBER = 50 ,
eRADAR_TARGET_PLAYER = 51,
eRADAR_NAVI_POINT_YELLOW = 52,
eRADAR_NAVI_POINT_RED = 53,
eRADAR_NAVI_POINT_GREEN = 54,
eRADAR_NAVI_POINT_BLUE = 55,
eRADAR_NAVI_POINT_PERPLE = 56,
eRADAR_NAVI_ARROW_YELLOW = 57,
eRADAR_NAVI_ARROW_RED = 58,
eRADAR_NAVI_ARROW_GREEN = 59,
eRADAR_NAVI_ARROW_BLUE = 60,
eRADAR_NAVI_ARROW_PERPLE = 61,
eRADAR_CONTINENT_MAP_HERO_POS = 62,
eRADAR_NORMAL_PORTAL = 63,
eRADAR_MISSION_PORTAL = 64,
eRADAR_WAY_POINT = 65,
eRADAR_DEACTIVE_QUEST_NPC = 66,
eRADAR_REPEAT_QUEST_ACCEPT = 67,//반복 퀘스트수락(녹색)
eRADAR_CRYSTAL_WARP = 68,
eRADAR_BLAST = 69,
eRADAR_AIRSHIP = 70,
// _YMS_ADD_RADAR_ICON_100622
//71 0 576 32 32 //타겟팅 에니메이션_대_01
//72 32 576 32 32 //타겟팅 에니메이션_대_02
//73 64 576 32 32 //타겟팅 에니메이션_대_03
//74 96 576 32 32 //타겟팅 에니메이션_대_04
//75 128 576 32 32 //타겟팅 에니메이션_대_05
//76 160 576 32 32 //타겟팅 에니메이션_대_06
//77 192 576 32 32 //타겟팅 에니메이션_소_01
//78 224 576 32 32 //타겟팅 에니메이션_소_02
//79 256 576 32 32 //타겟팅 에니메이션_소_03
//80 288 576 32 32 //타겟팅 에니메이션_소_04
//81 320 576 32 32 //타겟팅 에니메이션_소_05
//82 352 576 32 32 //타겟팅 에니메이션_소_06
//83 96 608 32 32 //몬스터_소
//84 128 608 32 32 //몬스터_대/경쟁헌팅 적군/카오
//85 192 608 32 32 //몬스터사망_대
//86 224 608 32 32 //경쟁헌팅 아군사망
//87 256 608 32 32 //경쟁헌팅 적군사망/카오사망
eRADAR_TARGET_BOSS_MONSTER_ANI_POINT_0 = 71,
eRADAR_TARGET_BOSS_MONSTER_ANI_POINT_1 = 72,
eRADAR_TARGET_BOSS_MONSTER_ANI_POINT_2 = 73,
eRADAR_TARGET_BOSS_MONSTER_ANI_POINT_3 = 74,
eRADAR_TARGET_BOSS_MONSTER_ANI_POINT_4 = 75,
eRADAR_TARGET_BOSS_MONSTER_ANI_POINT_5 = 76,
eRADAR_TARGET_NORMAL_MONSTER_ANI_POINT_0 = 77,
eRADAR_TARGET_NORMAL_MONSTER_ANI_POINT_1 = 78,
eRADAR_TARGET_NORMAL_MONSTER_ANI_POINT_2 = 79,
eRADAR_TARGET_NORMAL_MONSTER_ANI_POINT_3 = 80,
eRADAR_TARGET_NORMAL_MONSTER_ANI_POINT_4 = 81,
eRADAR_TARGET_NORMAL_MONSTER_ANI_POINT_5 = 82,
eRADAR_NORMAL_MONSTER_POINT = eRADAR_MONSTER_POINT,
eRADAR_NORMAL_MONSTER_DEAD_POINT= eRADAR_MONSTER_DEAD_POINT,
eRADAR_BOSS_MONSTER_POINT = 84,
eRADAR_BOSS_MONSTER_DEAD_POINT = 85,
eRADAR_TEAM_PLAYER_DEAD_POINT = 86,
eRADAR_ENEMY_PLAYER_DEAD_POINT = 87,
eRADAR_AIRSHIP_ON = 88,
eRADAR_AIRSHIP_OVER = 89,
eRADAR_AIRSHIP_PORTAL= 90, //EP2 비공정이동포탈
eRADAR_DAILY_QUEST_ACCEPT = 91, // 일일퀘스트수락(빨강) _NA_003027_20111013_HONOR_SYSTEM
//_NA_0_20110327_DISPLAY_COLLECTABLE_OBJECT_IN_RADAR
eRADAR_COLLECT_TARGET = 92,
eRADAR_COLLECT_TARGET_ANIMATION = 93,
// 미션 네비게이션 예약 94~102
// 일일/길드퀘스트 수락/완료 아이콘
eRADAR_NORMAL_QUEST_REWARD = 103,// 일반퀘스트완료(노랑)
eRADAR_DAILY_QUEST_REWARD = 104,// 일일퀘스트완료(빨강)
eRADAR_GUILD_QUEST_REWARD = 105,// 길드퀘스트완료(보라)
eRADAR_GUILD_QUEST_ACCEPT = 106,// 길드퀘스트수락(보라)
// 퀘스트 대륙맵 네비게이션
eRADAR_NAVI_CIRCLE_RED = 107,
eRADAR_NAVI_CIRCLE_GREEN = 108,
eRADAR_NAVI_CIRCLE_BLUE = 109,
eRADAR_NAVI_CIRCLE_PERPLE = 110,
eRADAR_BATTLE_GROUND_STRONGPOINT_NORMAL = 111, // 전장 거점 아이콘(흰)
eRADAR_BATTLE_GROUND_STRONGPOINT_HALFRED = 112, // 전장 거점 아이콘(흐린빨)
eRADAR_BATTLE_GROUND_STRONGPOINT_RED = 113, // 전장 거점 아이콘(빨)
eRADAR_BATTLE_GROUND_STRONGPOINT_HALFBLUE = 114, // 전장 거점 아이콘(흐린파)
eRADAR_BATTLE_GROUND_STRONGPOINT_BLUE = 115, // 전장 거점 아이콘(파)
eRADAR_MAP_ANIMATION = 116, // 대륙맵 애니메이션
eRADAR_NPC_START2 = 117 ,
eRADAR_NPC_END2 = 130,
eRADAR_NPC_DOMINATION_END = 131, // 점령전 진행단계(점령완료)
eRADAR_NPC_DOMINATION_YELLOW = 132, // 점령전 진행단계(노랑)
eRADAR_NPC_DOMINATION_GREEN = 133, // 점령전 진행단계(녹)
eRADAR_NPC_DOMINATION_ORANGE = 134, // 점령전 진행단계(주황)
eRADAR_NPC_DOMINATION_RED = 135, // 점령전 진행단계(빨강)
#ifdef _NA_007407_20140710_CHALLENGE_DAILY_QUEST
eRADAR_CHALLENGE_DAILY_QUEST_REWARD = 136, // 도전일퀘 물음표
eRADAR_CHALLENGE_DAILY_QUEST_ACCEPT = 137, // 도전일퀘 느낌표
#endif // _NA_007407_20140710_CHALLENGE_DAILY_QUEST
eRADAR_POINT_COUNT,
};
struct RADAR_POINT
{
DWORD dwObjectKey;
eRADAR_POINT_COLOR eRadarPointColor;
float fPosX, fPosY;
TCHAR szName[MAX_PATH];
};
typedef std::vector<RADAR_POINT *> RadarPoint_vector;
typedef RadarPoint_vector::iterator RadarPoint_vector_Itr;
class RadarInfoParser : public Singleton<RadarInfoParser> ,public IParser
{
public:
RadarInfoParser();
~RadarInfoParser();
VOID Init(DWORD dwPoolSize);
VOID Init(DWORD dwPoolSize , char *szPackfileName);
VOID Release();
virtual BOOL LoadScript(eSCRIPT_CODE ScriptCode, BOOL bReload);
POINT GetTextureSize(void);
RECT* GetRadarImgInfo(int iIndex);
HANDLE GetTexture(void) { return m_hRadarTexture; }
private:
VOID Unload();
util::SolarHashTable<RECT*>* m_pDataTable;
//-----------------------------------------
// 텍스쳐 핸들
//-----------------------------------------
HANDLE m_hRadarTexture;
POINT m_RadarTextureSize;
St_TextureContainer* m_pRadarTextureInfo[eRADAR_POINT_COUNT];
};