#include "SunClientPrecompiledHeader.h" #include "AppearanceResourceCode.h" #include "ItemInfoParser.h" namespace { const int kNumberOfClass = (eCHAR_TYPE_MAX - 1); const int kNumberOfBodyParts = BP_COUNT; const int kGenderMax = GenderType::kFemale; // °¢ Ŭ·¡½ºÀÇ ±âº» ¼ºº° const GenderType::Value kBaseGenderOfClass[kNumberOfClass] = { GenderType::kMale, GenderType::kMale, GenderType::kMale, GenderType::kFemale, GenderType::kFemale, GenderType::kFemale, //_NA_004965_20120613_NEW_CHARACTER_MYSTIC GenderType::kMale, //_NA_000000_20130812_NEW_CHARACTER_HELLROID GenderType::kFemale, //_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE }; // °¢ Ŭ·¡½º/¼ºº°¿¡ ´ëÇÑ ¿ÜÇüŬ·¡½º(*) const eCHAR_TYPE kImageClassType[kNumberOfClass][kGenderMax] = { {eCHAR_BERSERKER, eCHAR_VALKYRIE}, {eCHAR_DRAGON, eCHAR_VALKYRIE}, {eCHAR_SHADOW, eCHAR_ELEMENTALIST}, {eCHAR_DRAGON, eCHAR_VALKYRIE}, {eCHAR_SHADOW, eCHAR_ELEMENTALIST}, {eCHAR_MYSTIC, eCHAR_MYSTIC}, //_NA_004965_20120613_NEW_CHARACTER_MYSTIC {eCHAR_HELLROID, eCHAR_HELLROID}, //_NA_000000_20130812_NEW_CHARACTER_HELLROID {eCHAR_WITCHBLADE, eCHAR_WITCHBLADE}, //_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE }; // ±âº» º£À̽º ¸®¼Ò½ºÄÚµå const DWORD kClassSkinCode[kNumberOfClass][kGenderMax] = { {40001, 40006}, // ¹ö¼­Ä¿ ³² ¿© eCHAR_BERSERKER {40002, 40007}, // µå·¡°ï ³² ¿© eCHAR_DRAGON {40003, 40008}, // ¼¨µµ¿ì ³² ¿© eCHAR_SHADOW {40009, 40004}, // ¹ß۸® ³² ¿© eCHAR_VALKYRIE {40010, 40005}, // ¿¤¸® ³² ¿© eCHAR_ELEMENTALIST {40011, 40012}, // ¹Ì½ºÆ½ ³² ¿© eCHAR_MYSTIC //_NA_004965_20120613_NEW_CHARACTER_MYSTIC {40013, 40014}, // Çï·ÎÀÌµå ³² ¿© eCHAR_HELLROID //_NA_000000_20130812_NEW_CHARACTER_HELLROID {40015, 40016}, // À§ºí ³² ¿© eCHAR_WITCHBLADE //_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE }; // ±âº»ÆÄÃ÷¿ÜÇüÁ¤º¸ GetDefaultSkinCode const DWORD kPartCodeOfBaseSkin[kNumberOfClass][kGenderMax] = { {60001, 60025}, // ¹ö¼­Ä¿ ³² ¿© eCHAR_BERSERKER {60009, 60025}, // µå·¡°ï ³² ¿© eCHAR_DRAGON {60017, 60033}, // ¼¨µµ¿ì ³² ¿© eCHAR_SHADOW {60009, 60025}, // ¹ß۸® ³² ¿© eCHAR_VALKYRIE {60017, 60033}, // ¿¤¸® ³² ¿© eCHAR_ELEMENTALIST {60121, 60121}, // ¹Ì½ºÆ½ ³² ¿© eCHAR_MYSTIC //_NA_004965_20120613_NEW_CHARACTER_MYSTIC {60129, 60129}, // Çï·ÎÀÌµå ³² ¿© eCHAR_HELLROID //_NA_000000_20130812_NEW_CHARACTER_HELLROID {60137, 60137}, // À§ºí ³² ¿© eCHAR_WITCHBLADE //_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE }; #ifdef _NA_008633_20160104_ADD_DECORATECOSTUME // Ÿ¶ôÇÑ »ç¿ø Àåºñ ¸®¼Ò½º ÄÚµå const DWORD kPartCodeForTemple[kNumberOfClass][kNumberOfBodyParts] = { 0, 0, 0, 11540, 11541, 11543, 11542, 11544, 0, 0, 0, 0, 0, 0, 0, 0, 11545, 11546, 11548, 11547, 11549, 0, 0, 0, 0, 0, 0, 0, 0, 11550, 11551, 11552, 11553, 11554, 0, 0, 0, 0, 0, 0, 0, 0, 11555, 11556, 11558, 11557, 11559, 0, 0, 0, 0, 0, 0, 0, 0, 11560, 11561, 11563, 11562, 11564, 0, 0, 0, 0, 0, 0, 0, 0, 11613, 11614, 11616, 11615, 11617, 0, 0, 0, 0, 0, //_NA_004965_20120613_NEW_CHARACTER_MYSTIC 0, 0, 0, 14708, 14709, 14710, 14711, 14712, 0, 0, 0, 0, 0, //_NA_000000_20130812_NEW_CHARACTER_HELLROID 0, 0, 0, 14883, 14884, 14885, 14886, 14887, 0, 0, 0, 0, 0, //_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE }; #else // Ÿ¶ôÇÑ »ç¿ø Àåºñ ¸®¼Ò½º ÄÚµå const DWORD kPartCodeForTemple[kNumberOfClass][kNumberOfBodyParts] = { 0, 0, 0, 11540, 11541, 11543, 11542, 11544, 0, 0, 0, 0, 0, 0, 0, 11545, 11546, 11548, 11547, 11549, 0, 0, 0, 0, 0, 0, 0, 11550, 11551, 11552, 11553, 11554, 0, 0, 0, 0, 0, 0, 0, 11555, 11556, 11558, 11557, 11559, 0, 0, 0, 0, 0, 0, 0, 11560, 11561, 11563, 11562, 11564, 0, 0, 0, 0, 0, 0, 0, 11613, 11614, 11616, 11615, 11617, 0, 0, 0, 0, //_NA_004965_20120613_NEW_CHARACTER_MYSTIC 0, 0, 0, 14708, 14709, 14710, 14711, 14712, 0, 0, 0, 0, //_NA_000000_20130812_NEW_CHARACTER_HELLROID 0, 0, 0, 14883, 14884, 14885, 14886, 14887, 0, 0, 0, 0, //_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE }; #endif // _NA_008633_20160104_ADD_DECORATECOSTUME // Ÿ¶ôÇÑ »ç¿ø ¹«±â ¸®¼Ò½º ÄÚµå const DWORD kWeaponCodeForTemple[eWEAPONTYPE_MAX] = { 0, //eWEAPONTYPE_INVALID 11565, //eWEAPONTYPE_TWOHANDAXE 11566, //eWEAPONTYPE_TWOHANDSWORD 11567, //eWEAPONTYPE_ONEHANDSWORD 11568, //eWEAPONTYPE_SPEAR 11569, //eWEAPONTYPE_DAGGER 11570, //eWEAPONTYPE_WHIP 11571, //eWEAPONTYPE_ONEHANDCROSSBOW 11572, //eWEAPONTYPE_ETHERWEAPON 0, //eWEAPONTYPE_SCIMITAR 11573, //eWEAPONTYPE_STAFF 11574, //eWEAPONTYPE_ORB 0, //eWEAPONTYPE_FISHING_POLE 0, //eWEAPONTYPE_PUNCH 11618, //eWEAPONTYPE_GUNTLET //_NA_004965_20120613_NEW_CHARACTER_MYSTIC 11619, //eWEAPONTYPE_POLEARM //_NA_004965_20120613_NEW_CHARACTER_MYSTIC 1080, //eWEAPONTYPE_HELLROID_1 //_NA_000000_20130812_NEW_CHARACTER_HELLROID 3111, //eWEAPONTYPE_ARCBLADE //_NA_007514_20140828_NEW_CHARACTER_WITCHBLADE // 3112 }; const DWORD kCinematicCameraInCharacterScene = 888888; } int ResourceCode::GetNumberOfClass() { return kNumberOfClass; } int ResourceCode::GetNumberOfParts() { return BP_COUNT; } GenderType::Value ResourceCode::GetBaseGenderOfClass(eCHAR_TYPE class_type) { #if defined(_JAPAN) if ((class_type <= eCHAR_NONE) || (class_type >= eCHAR_TYPE_MAX)) { class_type = eCHAR_ELEMENTALIST; // ¹è¿­ ¹üÀ§ Ãʰú ½Ã µðÆúÆ®¸¦ °¡Àå ¸¹Àº ¿¤¸®·Î ÇÔ } #endif return kBaseGenderOfClass[class_type - 1]; } eCHAR_TYPE ResourceCode::GetSecondSkinClassType(eCHAR_TYPE base_class) { return kImageClassType[base_class-1][1]; } eCHAR_TYPE ResourceCode::GetImageClassType(eCHAR_TYPE class_type, GenderType::Value class_gender) { //#if defined(_JAPAN) if ((class_type <= eCHAR_NONE) || (class_type >= eCHAR_TYPE_MAX)) { class_type = eCHAR_ELEMENTALIST; // ¹è¿­ ¹üÀ§ Ãʰú ½Ã µðÆúÆ®¸¦ °¡Àå ÈçÇÑ ¿¤¸®·Î ÇÔ } //#endif class_gender = CheckValidGender(class_type, class_gender); return kImageClassType[class_type - 1][class_gender - 1]; } DWORD ResourceCode::GetBaseSkinOfClass(eCHAR_TYPE class_type, GenderType::Value class_gender) { #if defined(_JAPAN) if ((class_type <= eCHAR_NONE) || (class_type >= eCHAR_TYPE_MAX)) { class_type = eCHAR_ELEMENTALIST; // ¹è¿­ ¹üÀ§ Ãʰú ½Ã µðÆúÆ®¸¦ °¡Àå ÈçÇÑ ¿¤¸®·Î ÇÔ } #endif class_gender = CheckValidGender(class_type, class_gender); return kClassSkinCode[class_type - 1][class_gender - 1]; } DWORD ResourceCode::GetBasePartCodeOfClass( eCHAR_TYPE class_type, GenderType::Value class_gender) { #if defined(_JAPAN) if ((class_type <= eCHAR_NONE) || (class_type >= eCHAR_TYPE_MAX)) { class_type = eCHAR_ELEMENTALIST; // ¹è¿­ ¹üÀ§ Ãʰú ½Ã µðÆúÆ®¸¦ °¡Àå ÈçÇÑ ¿¤¸®·Î ÇÔ } #endif class_gender = CheckValidGender(class_type, class_gender); return kPartCodeOfBaseSkin[class_type - 1][class_gender - 1]; } DWORD ResourceCode::GetPartCodeForTemple(eCHAR_TYPE class_type, GenderType::Value class_gender, BodyPart body_part) { #if defined(_JAPAN) if ((class_type <= eCHAR_NONE) || (class_type >= eCHAR_TYPE_MAX)) { class_type = eCHAR_ELEMENTALIST; // ¹è¿­ ¹üÀ§ Ãʰú ½Ã µðÆúÆ®¸¦ °¡Àå ÈçÇÑ ¿¤¸®·Î ÇÔ } #endif class_gender = CheckValidGender(class_type, class_gender); class_type = GetImageClassType(class_type, class_gender); return kPartCodeForTemple [class_type -1][body_part]; } DWORD ResourceCode::GetWeaponCodeForTemple(eWEAPONTYPE weapon_type) { return kWeaponCodeForTemple[weapon_type]; } GenderType::Value ResourceCode::CheckValidGender(eCHAR_TYPE class_type, GenderType::Value class_gender) { if ((class_gender != GenderType::kMale) && (class_gender != GenderType::kFemale)) { class_gender = GetBaseGenderOfClass(class_type); } return class_gender; } DWORD ResourceCode::GetItemSkinImageCodeByGender(BASE_ITEMINFO* item_info, GenderType::Value class_gender) { RESOURCECODE resource_code = 0; if (class_gender == GenderType::kMale) { resource_code = item_info->m_wWICode; } else if (class_gender == GenderType::kFemale) { resource_code = item_info->m_wWICode2; } return resource_code; } DWORD ResourceCode::GetCinematicCameraInCharacterScene() { return kCinematicCameraInCharacterScene; }