Files
Client/Server/AdminTool/AdminToolClient/GlobalFunctions.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

594 lines
20 KiB
C++

#include "stdafx.h"
#include "GlobalFunctions.h"
#include "AdminToolClient.h"
#include "CharacterDoc.h"
#include "Clipboard.h"
#include "CheckComboBox.h"
#include "WindowMgr.h"
#include "AdminStoreDlgBar.h"
#include <Item/Item.h>
#include <Log/ServerLog.h>
#include <Creature/CreatureStructure.h>
#include <Creature/Character/CharacterClass.h>
#include <Network/Packet/PacketStruct/ServerInfo.h>
#include <Community/Guild/GuildConstants.h>
#include <Creature/Siege/SiegeConstants.h>
#include <Item/ItemConstants.h>
static const char* szSetupFileName = _T("./AdminToolClientSetup.ini");
// 리스트 컨트롤에서 선택한 내용을 엑셀 포맷으로 클립핑하기
// 매개변수 : ctrlList - 클립핑 할 리스트 컨트롤, nColCount - 컬럼 수
bool ClippingListCtrl(CListCtrl& ctrlList, int nColCount, bool bIsAllSel)
{
CString strBuffer;
strBuffer.Empty();
if(bIsAllSel)
{
for(int nRow = 0; nRow < ctrlList.GetItemCount(); ++nRow)
{
for(int nCol = 0; nCol < nColCount; ++nCol)
{
strBuffer.AppendFormat(_T("%s"), ctrlList.GetItemText(nRow, nCol));
strBuffer.AppendFormat(_T("\t"));
}
strBuffer.AppendFormat(_T("\r\n"));
}
}
else
{
POSITION pos = ctrlList.GetFirstSelectedItemPosition();
while(pos)
{
int nSelIndex = ctrlList.GetNextSelectedItem(pos);
for(int nCol = 0; nCol < nColCount; ++nCol)
{
strBuffer.AppendFormat(_T("%s"), ctrlList.GetItemText(nSelIndex, nCol));
strBuffer.AppendFormat(_T("\t"));
}
strBuffer.AppendFormat(_T("\r\n"));
}
}
return CClipboard::SetText(strBuffer);
}
void CustomPeekMessage()
{
MSG msg;
if(PeekMessage(&msg, NULL, 0, 0, PM_NOREMOVE))
{
AfxGetApp()->PumpMessage();
}
}
int SearchListCtrlCol(CListCtrl& ctrlList, CString strSearchValue, int nColIndex)
{
CString strGetString;
for(int nIndex = 0; nIndex < ctrlList.GetItemCount(); ++nIndex)
{
strGetString = ctrlList.GetItemText(nIndex, nColIndex);
if(0 == strGetString.Compare(strSearchValue))
return nIndex;
}
return -1;
}
void ServerGroupComboSet(CComboBox &Cb)
{
CCharacterDoc::listServerInfoPos nEndPos = CCharacterDoc::GetInstance().GetServerInfoEnd();
CCharacterDoc::listServerInfoPos nPos = CCharacterDoc::GetInstance().GetServerInfoBegin();
int ComboIdx = 0;
while(nPos != nEndPos)
{
CCharacterDoc::ServerInfo& Info = (*nPos);
Cb.InsertString(ComboIdx++, Info.m_strServerName);
++nPos;
}
}
void ServerGroupComboSet(CCheckComboBox &Cb, bool bIsCheck)
{
CCharacterDoc::listServerInfoPos nEndPos = CCharacterDoc::GetInstance().GetServerInfoEnd();
CCharacterDoc::listServerInfoPos nPos = CCharacterDoc::GetInstance().GetServerInfoBegin();
int ComboIdx = 0;
while(nPos != nEndPos)
{
CCharacterDoc::ServerInfo& Info = (*nPos);
Cb.InsertString(ComboIdx++, Info.m_strServerName);
++nPos;
}
for(int nIdx = 0; nIdx < Cb.GetCount(); ++nIdx)
{
Cb.SetCheck(nIdx, bIsCheck);
}
}
CString GetRaceString(int nRaceIndex)
{
switch(nRaceIndex)
{
case CClass::HUMAN: return GetLocalString("HUMAN");
case CClass::AKHAN: return GetLocalString("AKHAN");
default: return _T("UNKNOWN");
}
}
CString GetNationString(int nNationIndex)
{
switch(nNationIndex)
{
case Creature::KARTERANT: return GetLocalString("NATION_001");
case Creature::MERKADIA: return GetLocalString("NATION_002");
case Creature::STATELESS: return GetLocalString("NATION_003");
case Creature::ALMIGHTY_PIRATE: return GetLocalString("NATION_004");
}
return _T("UNKNOWN");
}
CString GetSiegeObjectTypeString(int nSiegeObjectTypeIndex)
{
using namespace Siege;
switch(nSiegeObjectTypeIndex)
{
case Siege::EMBLEM: return GetLocalString("ADDED_STRING_120");
case Siege::GATE: return GetLocalString("ADDED_STRING_121");
case Siege::BACKDOOR: return GetLocalString("ADDED_STRING_122");
case Siege::CAMP: return GetLocalString("ADDED_STRING_123");
case Siege::CASTLE_ARMS_NPC: return GetLocalString("ADDED_STRING_124");
case Siege::GUARD: return GetLocalString("ADDED_STRING_125");
case Siege::SHORT_RANGE_CASTLE_ARMS: return GetLocalString("ADDED_STRING_126");
case Siege::LONG_RANGE_CASTLE_ARMS: return GetLocalString("ADDED_STRING_127");
case Siege::SHORT_RANGE_SIEGE_ARMS: return GetLocalString("ADDED_STRING_128");
case Siege::LONG_RANGE_SIEGE_ARMS: return GetLocalString("ADDED_STRING_129");
case Siege::AIRSHIP: return GetLocalString("ADDED_STRING_130");
case Siege::MINING_CAMP: return GetLocalString("ADDED_STRING_131");
case Siege::CAMP_SHOP: return GetLocalString("ADDED_STRING_132");
case Siege::KARTERANT_WEAPON: return GetLocalString("ADDED_STRING_133");
case Siege::MERKADIA_WEAPON: return GetLocalString("ADDED_STRING_134");
case Siege::DEFAULT_TYPE: return GetLocalString("ADDED_STRING_135");
}
return _T("UNKNOWN");
}
int GetSiegeObjectTypeIndex(char* szSiegeObjectType)
{
CString strEMBLEM = GetLocalString("ADDED_STRING_120");
CString strGATE = GetLocalString("ADDED_STRING_121");
CString strBACKDOOR = GetLocalString("ADDED_STRING_122");
CString strCAMP = GetLocalString("ADDED_STRING_123");
CString strCASTLE_ARMS_NPC = GetLocalString("ADDED_STRING_124");
CString strGUARD = GetLocalString("ADDED_STRING_125");
CString strSHORT_RANGE_CASTLE_ARMS = GetLocalString("ADDED_STRING_126");
CString strLONG_RANGE_CASTLE_ARMS = GetLocalString("ADDED_STRING_127");
CString strSHORT_RANGE_SIEGE_ARMS = GetLocalString("ADDED_STRING_128");
CString strLONG_RANGE_SIEGE_ARMS = GetLocalString("ADDED_STRING_129");
CString strAIRSHIP = GetLocalString("ADDED_STRING_130");
CString strMINING_CAMP = GetLocalString("ADDED_STRING_131");
CString strCAMP_SHOP = GetLocalString("ADDED_STRING_132");
CString strKARTERANT_WEAPON = GetLocalString("ADDED_STRING_133");
CString strMERKADIA_WEAPON = GetLocalString("ADDED_STRING_134");
CString strDEFAULT_TYPE = GetLocalString("ADDED_STRING_135");
if (0 == strEMBLEM.CompareNoCase(szSiegeObjectType)) return Siege::EMBLEM;
else if (0 == strGATE.CompareNoCase(szSiegeObjectType)) return Siege::GATE;
else if (0 == strBACKDOOR.CompareNoCase(szSiegeObjectType)) return Siege::BACKDOOR;
else if (0 == strCAMP.CompareNoCase(szSiegeObjectType)) return Siege::CAMP;
else if (0 == strCASTLE_ARMS_NPC.CompareNoCase(szSiegeObjectType)) return Siege::CASTLE_ARMS_NPC;
else if (0 == strGUARD.CompareNoCase(szSiegeObjectType)) return Siege::GUARD;
else if (0 == strSHORT_RANGE_CASTLE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::SHORT_RANGE_CASTLE_ARMS;
else if (0 == strLONG_RANGE_CASTLE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::LONG_RANGE_CASTLE_ARMS;
else if (0 == strSHORT_RANGE_SIEGE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::SHORT_RANGE_SIEGE_ARMS;
else if (0 == strLONG_RANGE_SIEGE_ARMS.CompareNoCase(szSiegeObjectType)) return Siege::LONG_RANGE_SIEGE_ARMS;
else if (0 == strAIRSHIP.CompareNoCase(szSiegeObjectType)) return Siege::AIRSHIP;
else if (0 == strMINING_CAMP.CompareNoCase(szSiegeObjectType)) return Siege::MINING_CAMP;
else if (0 == strCAMP_SHOP.CompareNoCase(szSiegeObjectType)) return Siege::CAMP_SHOP;
else if (0 == strKARTERANT_WEAPON.CompareNoCase(szSiegeObjectType)) return Siege::KARTERANT_WEAPON;
else if (0 == strMERKADIA_WEAPON.CompareNoCase(szSiegeObjectType)) return Siege::MERKADIA_WEAPON;
else return Siege::DEFAULT_TYPE;
}
CString GetStateString(int nStateIndex)
{
switch(nStateIndex)
{
case Siege::COMPLETE: return GetLocalString("ADDED_STRING_136");
case Siege::UPGRADING: return GetLocalString("ADDED_STRING_137");
case Siege::REPARING: return GetLocalString("ADDED_STRING_138");
case Siege::DESTROYING: return GetLocalString("ADDED_STRING_139");
case Siege::CHANGING: return GetLocalString("ADDED_STRING_140");
case Siege::DEVELOPING: return GetLocalString("ADDED_STRING_141");
case Siege::CANCELING: return GetLocalString("ADDED_STRING_142");
case Siege::RESTORING: return GetLocalString("ADDED_STRING_143");
case Siege::DESTROYED: return GetLocalString("ADDED_STRING_144");
}
return _T("UNKNOWN");
}
CString GetSubStateString(int nSiegeObjectTypeIndex, int nSubStateIndex)
{
switch(nSiegeObjectTypeIndex)
{
case Siege::EMBLEM:
{
switch(nSubStateIndex)
{
case Siege::MINE: return GetLocalString("ADDED_STRING_146");
case Siege::ENEMY: return GetLocalString("ADDED_STRING_147");
}
}
case Siege::GATE:
{
switch(nSubStateIndex)
{
case Siege::OPENED: return GetLocalString("ADDED_STRING_148");
case Siege::CLOSED: return GetLocalString("ADDED_STRING_149");
}
}
case Siege::BACKDOOR:
{
switch(nSubStateIndex)
{
case Siege::OPENED: return GetLocalString("ADDED_STRING_148");
case Siege::CLOSED: return GetLocalString("ADDED_STRING_149");
}
}
case Siege::MINING_CAMP:
{
switch(nSubStateIndex)
{
case Siege::MINING_OFF: return GetLocalString("ADDED_STRING_150");
case Siege::MINING_ON: return GetLocalString("ADDED_STRING_151");
case Siege::MINING_READY: return GetLocalString("ADDED_STRING_152");
}
}
case Siege::KARTERANT_WEAPON:
{
switch(nSubStateIndex)
{
case Siege::WEAPON_EMPTY: return GetLocalString("ADDED_STRING_153");
case Siege::WEAPON_CHARGE: return GetLocalString("ADDED_STRING_154");
case Siege::WEAPON_READY: return GetLocalString("ADDED_STRING_155");
case Siege::WEAPON_FIRE: return GetLocalString("ADDED_STRING_156");
}
}
case Siege::MERKADIA_WEAPON:
{
switch(nSubStateIndex)
{
case Siege::WEAPON_EMPTY: return GetLocalString("ADDED_STRING_153");
case Siege::WEAPON_CHARGE: return GetLocalString("ADDED_STRING_154");
case Siege::WEAPON_READY: return GetLocalString("ADDED_STRING_155");
case Siege::WEAPON_FIRE: return GetLocalString("ADDED_STRING_156");
}
}
default : return GetLocalString("ADDED_STRING_145");
}
return _T("UNKNOWN");
}
CString GetJewelString(int nJewelIndex)
{
switch(nJewelIndex)
{
case Siege::NO_JEWEL: return GetLocalString("");
case Siege::RUBY: return GetLocalString("");
case Siege::EMERALD: return GetLocalString("");
case Siege::SAPPHIRE: return GetLocalString("");
case Siege::DIAMOND: return GetLocalString("");
case Siege::BLACKMOON: return GetLocalString("");
}
return _T("UNKNOWN");
}
unsigned char GetNationIndex(char* szNation)
{
CString strKarterant = GetLocalString("NATION_001");
CString strMerkadia = GetLocalString("NATION_002");
CString strStateless = GetLocalString("NATION_003");
CString strThirdNation = GetLocalString("NATION_004");
if (0 == strKarterant.CompareNoCase(szNation)) return Creature::KARTERANT;
else if (0 == strMerkadia.CompareNoCase(szNation)) return Creature::MERKADIA;
else if (0 == strStateless.CompareNoCase(szNation)) return Creature::STATELESS;
else if (0 == strThirdNation.CompareNoCase(szNation)) return Creature::ALMIGHTY_PIRATE;
else return Creature::STATELESS;
}
CString GetSkillTypeString(unsigned char SkillType)
{
switch(SkillType)
{
case Skill::Type::NONE: return _T("NONE");
case Skill::Type::PASSIVE: return _T("PASSIVE");
case Skill::Type::INSTANCE: return _T("INSTANCE");
case Skill::Type::CAST: return _T("CAST");
case Skill::Type::CHANT: return _T("CHANT");
case Skill::Type::ENCHANT: return _T("ENCHANT");
case Skill::Type::ITEM: return _T("ITEM");
}
return _T("UNKNOWN");
}
CString GetZoneString(unsigned char cZoneIdx)
{
switch(cZoneIdx)
{
case SERVER_ID::ZONE1: return GetLocalString("ZONE_001");
case SERVER_ID::ZONE2: return GetLocalString("ZONE_002");
case SERVER_ID::ZONE4: return GetLocalString("ZONE_004");
case SERVER_ID::ZONE5: return GetLocalString("ZONE_005");
case SERVER_ID::CAPITAL: return GetLocalString("ZONE_008");
case SERVER_ID::ZONE9: return GetLocalString("ZONE_009");
case SERVER_ID::ZONE12: return GetLocalString("ZONE_012");
case SERVER_ID::STONE_WAR1: return GetLocalString("ZONE_016");
case SERVER_ID::STONE_WAR2: return GetLocalString("ZONE_017");
case SERVER_ID::STONE_WAR3: return GetLocalString("ZONE_018");
}
return _T("NONE");
}
CString GetClassString(int nClassIndex)
{
CString strClassName, strKey;
strKey.Format("CLASS_%03d", nClassIndex);
strClassName = GetLocalString(strKey);
if(false == strClassName.IsEmpty())
{
return strClassName;
}
return _T("NONE");
}
CString GetSetupString(CString Section, CString key)
{
TCHAR value[255];
GetPrivateProfileString(Section, key, _T("default"), value, 255, szSetupFileName);
return value;
}
CString GetSTableString(unsigned int nIDS)
{
CString strString;
strString.LoadString(nIDS);
return strString;
}
int GetSetupInt(CString Section, CString key)
{
return GetPrivateProfileInt(Section, key, 255, szSetupFileName);
}
void Report(CString report, REPORT_TYPE eType)
{
CAdminStoreDlgBar* StoreBar = static_cast<CAdminStoreDlgBar*>(GET_WINDOW(IDD_STATUS_DLGBAR));
if(NULL != StoreBar)
{
StoreBar->WorkReport(report, eType);
}
}
void Report(UINT nID, REPORT_TYPE eType)
{
CAdminStoreDlgBar* StoreBar = static_cast<CAdminStoreDlgBar*>(GET_WINDOW(IDD_STATUS_DLGBAR));
CString strStringTable;
strStringTable.LoadString(nID);
StoreBar->WorkReport(strStringTable, eType);
}
COLORREF GetItemTypeColor(Item::ItemType::Type ItemTypeIndex)
{
COLORREF ItemTypeColor;
using namespace Item::ItemType;
switch (ItemTypeIndex)
{
case SHIRT: ItemTypeColor = RGB(0, 221, 111); break;
case TUNIC: ItemTypeColor = RGB(0, 221, 111); break;
case CON_ARMOUR: ItemTypeColor = RGB(0, 221, 111); break;
case CON_HELM: ItemTypeColor = RGB(0, 221, 111); break;
case CON_GLOVE: ItemTypeColor = RGB(0, 221, 111); break;
case CON_BOOTS: ItemTypeColor = RGB(0, 221, 111); break;
case DEX_ARMOUR: ItemTypeColor = RGB(255, 74, 74); break;
case DEX_HELM: ItemTypeColor = RGB(255, 74, 74); break;
case DEX_GLOVE: ItemTypeColor = RGB(255, 74, 74); break;
case DEX_BOOTS: ItemTypeColor = RGB(255, 74, 74); break;
case ONEHANDED_SWORD: ItemTypeColor = RGB(255, 74, 74); break;
case TWOHANDED_SWORD: ItemTypeColor = RGB(255, 74, 74); break;
case ONEHANDED_AXE: ItemTypeColor = RGB(255, 74, 74); break;
case TWOHANDED_AXE: ItemTypeColor = RGB(255, 74, 74); break;
case ONEHANDED_BLUNT: ItemTypeColor = RGB(255, 74, 74); break;
case TWOHANDED_BLUNT: ItemTypeColor = RGB(255, 74, 74); break;
case BOW: ItemTypeColor = RGB(0, 221, 111); break;
case CROSSBOW: ItemTypeColor = RGB(0, 221, 111); break;
case STAFF: ItemTypeColor = RGB(255, 0, 255); break;
case DAGGER: ItemTypeColor = RGB(255, 0, 255); break;
case SHIELD: ItemTypeColor = RGB(77, 255, 255); break;
case CON_BODY: ItemTypeColor = RGB(77, 255, 255); break;
case CON_HEAD: ItemTypeColor = RGB(77, 255, 255); break;
case CON_PELVIS: ItemTypeColor = RGB(255, 128, 192); break;
case CON_PROTECT_A: ItemTypeColor = RGB(255, 255, 128); break;
case DEX_BODY: ItemTypeColor = RGB(255, 255, 128); break;
case DEX_HEAD: ItemTypeColor = RGB(255, 255, 128); break;
case DEX_PELVIS: ItemTypeColor = RGB(77, 255, 255); break;
case DEX_PROTECT_A: ItemTypeColor = RGB(255, 188, 155); break;
case COM_BLUNT: ItemTypeColor = RGB(0, 221, 111); break;
case COM_SWORD: ItemTypeColor = RGB(0, 221, 111); break;
case OPP_HAMMER: ItemTypeColor = RGB(0, 221, 111); break;
case OPP_AXE: ItemTypeColor = RGB(0, 221, 111); break;
case OPP_SLUSHER: ItemTypeColor = RGB(255, 74, 74); break;
case OPP_TALON: ItemTypeColor = RGB(255, 74, 74); break;
case OPP_SYTHE: ItemTypeColor = RGB(255, 74, 74); break;
case SKILL_A_GUARD: ItemTypeColor = RGB(255, 74, 74); break;
case SKILL_A_ATTACK: ItemTypeColor = RGB(255, 74, 74); break;
case SKILL_A_GUN: ItemTypeColor = RGB(255, 74, 74); break;
case SKILL_A_KNIFE: ItemTypeColor = RGB(255, 74, 74); break;
case ARROW: ItemTypeColor = RGB(0, 221, 111); break;
case BOLT: ItemTypeColor = RGB(255, 74, 74); break;
case AMMO: ItemTypeColor = RGB(255, 74, 74); break;
case POTION: ItemTypeColor = RGB(255, 74, 74); break;
case EXP_BOOK: ItemTypeColor = RGB(128, 255, 255); break;
case CASH_BOOK: ItemTypeColor = RGB(0, 250, 0); break;
case EVENT_LOTTERY: ItemTypeColor = RGB(0, 0, 255); break;
case PORTAL: ItemTypeColor = RGB(218, 218, 180); break;
case FIRE_CRACKER: ItemTypeColor = RGB(255, 0, 128); break;
case SKILL_BOOK: ItemTypeColor = RGB(255, 162, 68); break;
case GEM: ItemTypeColor = RGB(77, 255, 255); break;
case ORE: ItemTypeColor = RGB(77, 255, 255); break;
case ETC: ItemTypeColor = RGB(255, 20, 20); break;
// case EVENT_DROP: ItemTypeColor = RGB(77, 255, 255); break;
case CAMP_KIT: ItemTypeColor = RGB(77, 255, 255); break;
case SHORT_RANGE_ARMS_KIT: ItemTypeColor = RGB(255, 20, 20); break;
case LONG_RANGE_ARMS_KIT: ItemTypeColor = RGB(77, 255, 255); break;
case AIRSHIP_KIT: ItemTypeColor = RGB(77, 255, 255); break;
case QUEST_ITEM: ItemTypeColor = RGB(239, 213, 192); break;
default: ItemTypeColor = RGB(100, 100, 100); break;
}
return ItemTypeColor;
}
void SetAdminLevelCb(CComboBox& ctrlLevelCb)
{
ctrlLevelCb.InsertString(0, _T("Supporter"));
ctrlLevelCb.InsertString(1, _T("GM"));
ctrlLevelCb.InsertString(2, _T("Master"));
ctrlLevelCb.InsertString(3, _T("Developer"));
}
unsigned char GetAdminLVInitial(CString strAdminLVName)
{
if(strAdminLVName == _T("Developer")) return 'D';
if(strAdminLVName == _T("Master")) return 'M';
if(strAdminLVName == _T("GM")) return 'G';
if(strAdminLVName == _T("Supporter")) return 'S';
return 'X';
}
unsigned char SetAuthorityMask(unsigned char cLV)
{
switch(cLV){
case 'D': return PktAdminMgr::AuthorityMask::DEVELOPER;
case 'M': return PktAdminMgr::AuthorityMask::MASTER;
case 'G': return PktAdminMgr::AuthorityMask::GM;
case 'S': return PktAdminMgr::AuthorityMask::SUPPORTER;
default: return PktAdminMgr::AuthorityMask::QUEST_MODE;
}
}
CString GetAdminLVName(unsigned char Initial)
{
CString strLevelName = _T("UNKNOWN");
switch(Initial){
case 'D': strLevelName = _T("Developer"); break;
case 'M': strLevelName = _T("Master"); break;
case 'G': strLevelName = _T("GM"); break;
case 'S': strLevelName = _T("Supporter"); break;
}
return strLevelName;
}
int GetAdminLVIconIndex(unsigned char Initial)
{
switch(Initial){
case 'D': return 0; break; // Developer
case 'M': return 1; break; // Master
case 'G': return 2; break; // GM
case 'S': return 3; break; // Supporter
default: return 4; break; // Unknown Level
}
}
CString GetExtraSpacePosString(unsigned char cType)
{
switch(cType)
{
case Item::ExtraSpacePos::UPGRADE_EQUIPMENT_POS: return _T("UPGRADE_EQUIPMENT_POS"); break;
case Item::ExtraSpacePos::UPGRADE_MATERIAL_POS: return _T("UPGRADE_MATERIAL_POS"); break;
case Item::ExtraSpacePos::HOLDITEM_POS: return _T("HOLDITEM_POS"); break;
case Item::ExtraSpacePos::KIT_MATERIAL_POS: return _T("KIT_MATERIAL_POS"); break;
case Item::ExtraSpacePos::CAMP_MATERIAL_POS: return _T("CAMP_MATERIAL_POS"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS1: return _T("EMBLEM_JEWEL_POS1"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS2: return _T("EMBLEM_JEWEL_POS2"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS3: return _T("EMBLEM_JEWEL_POS3"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS4: return _T("EMBLEM_JEWEL_POS4"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS5: return _T("EMBLEM_JEWEL_POS5"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS6: return _T("EMBLEM_JEWEL_POS6"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS7: return _T("EMBLEM_JEWEL_POS7"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS8: return _T("EMBLEM_JEWEL_POS8"); break;
case Item::ExtraSpacePos::EMBLEM_JEWEL_POS9: return _T("EMBLEM_JEWEL_POS9"); break;
case Item::ExtraSpacePos::GRAFT_ORIGINAL_POS: return _T("GRAFT_ORIGINAL_POS"); break;
case Item::ExtraSpacePos::GRAFT_SACRIFICE_POS: return _T("GRAFT_SACRIFICE_POS"); break;
case Item::ExtraSpacePos::GRAFT_RESULT_POS: return _T("GRAFT_RESULT_POS"); break;
case Item::ExtraSpacePos::COMPENSATION_POS: return _T("COMPENSATION_POS"); break;
default: return _T("UNKNOWN"); break;
}
}
CString GetLocalString(CString strKey)
{
char szReturned[256] = "";
GetPrivateProfileString("LOCAL_STRING", strKey, NULL, szReturned, 256, szSetupFileName);
if(NULL == szReturned)
{
return _T("UNKNOWN");
}
else
{
return static_cast<LPCTSTR>(szReturned);
}
}
void SetUIString(HWND hWnd, int nResID, char* szKey)
{
CString strFormat;
strFormat.Format(" %s ", GetLocalString(szKey));
if(FALSE == SetDlgItemText(hWnd, nResID, strFormat))
{
ERRLOG2(g_Log, "Local string set failed: err - %u, key - %s", GetLastError(), szKey);
}
}