780 lines
35 KiB
C++
780 lines
35 KiB
C++
#include "stdafx.h"
|
|
//#include "SGameMessageUI.h"
|
|
#include "SGameWorldKeymapping.h"
|
|
#include "SStringDB.h"
|
|
|
|
#include "KUIControlEdit.h"
|
|
|
|
|
|
//sfreer 키맵핑 기능 추가 2009.03.16
|
|
const int VK_I_SPACE = 300;
|
|
|
|
SGameWorldKeymapping::SGameWorldKeymapping()
|
|
{
|
|
Clear();
|
|
//SetDefaultKeymapping();
|
|
setBasickeyInit();
|
|
}
|
|
|
|
|
|
SGameWorldKeymapping::~SGameWorldKeymapping()
|
|
{
|
|
m_BasicKeyMapList.clear();
|
|
}
|
|
|
|
|
|
void SGameWorldKeymapping::Clear()
|
|
{
|
|
for(int i=0;i<HOTKEYCODE::MAX;i++)
|
|
{
|
|
m_CurKeyMapTable[i] = KEYEX(false,false,false,0);
|
|
m_StateHotKeyList[i] = KEYSTATE::NONE;
|
|
m_PushedHotKeyList[i] = false;
|
|
m_HotKeyStringInfo[i] = "";
|
|
}
|
|
|
|
m_SkipMode = false;
|
|
m_EnterChat = true;
|
|
}
|
|
|
|
void SGameWorldKeymapping::eraseKey(int index)
|
|
{
|
|
m_CurKeyMapTable[index] = KEYEX(false,false,false,0);
|
|
m_StateHotKeyList[index] = KEYSTATE::NONE;
|
|
m_PushedHotKeyList[index] = false;
|
|
m_HotKeyStringInfo[index] = "";
|
|
}
|
|
|
|
void SGameWorldKeymapping::SetDefaultKeymapping() //기본키설정으로
|
|
{
|
|
Clear();
|
|
|
|
/// 2011.11.01 alt기반을 엔터 채팅 기반으로 수정 - prodongi
|
|
SetKeymapping(HOTKEYCODE::CROWSHOP, getBasicKey(HOTKEYCODE::CROWSHOP,DEF_KEYTYPE::DEFAULT)); //CROWSHOP,
|
|
SetKeymapping(HOTKEYCODE::INVENTORY, getBasicKey(HOTKEYCODE::INVENTORY,DEF_KEYTYPE::DEFAULT)); //INVENTORY,
|
|
SetKeymapping(HOTKEYCODE::SKILL, getBasicKey(HOTKEYCODE::SKILL,DEF_KEYTYPE::DEFAULT)); //SKILL,
|
|
SetKeymapping(HOTKEYCODE::CHARACTER, getBasicKey(HOTKEYCODE::CHARACTER,DEF_KEYTYPE::DEFAULT)); //CHARACTER,
|
|
SetKeymapping(HOTKEYCODE::CREATUREFORMATION, getBasicKey(HOTKEYCODE::CREATUREFORMATION,DEF_KEYTYPE::DEFAULT)); //CREATUREFORMATION,
|
|
SetKeymapping(HOTKEYCODE::CREATURESKILL, getBasicKey(HOTKEYCODE::CREATURESKILL,DEF_KEYTYPE::DEFAULT)); //CREATURESKILL,
|
|
SetKeymapping(HOTKEYCODE::CREATUREINFO, getBasicKey(HOTKEYCODE::CREATUREINFO,DEF_KEYTYPE::DEFAULT)); //CREATUREINFO,
|
|
SetKeymapping(HOTKEYCODE::MESSENGER, getBasicKey(HOTKEYCODE::MESSENGER,DEF_KEYTYPE::DEFAULT)); //MESSENGER,
|
|
SetKeymapping(HOTKEYCODE::GUILD, getBasicKey(HOTKEYCODE::GUILD,DEF_KEYTYPE::DEFAULT)); //GUILD,
|
|
SetKeymapping(HOTKEYCODE::PARTY_FOLD, getBasicKey(HOTKEYCODE::PARTY_FOLD,DEF_KEYTYPE::DEFAULT)); //PARTY,
|
|
SetKeymapping(HOTKEYCODE::QUEST, getBasicKey(HOTKEYCODE::QUEST,DEF_KEYTYPE::DEFAULT)); //QUEST,
|
|
SetKeymapping(HOTKEYCODE::WOLRDMAP, getBasicKey(HOTKEYCODE::WOLRDMAP,DEF_KEYTYPE::DEFAULT)); //WOLRDMAP,
|
|
SetKeymapping(HOTKEYCODE::CONTROL, getBasicKey(HOTKEYCODE::CONTROL,DEF_KEYTYPE::DEFAULT)); //CONTROL,
|
|
SetKeymapping(HOTKEYCODE::HELP, getBasicKey(HOTKEYCODE::HELP,DEF_KEYTYPE::DEFAULT)); //HELP,
|
|
SetKeymapping(HOTKEYCODE::SYSTEM, getBasicKey(HOTKEYCODE::SYSTEM,DEF_KEYTYPE::DEFAULT)); //SYSTEM,
|
|
SetKeymapping(HOTKEYCODE::OPTION, getBasicKey(HOTKEYCODE::OPTION,DEF_KEYTYPE::DEFAULT)); //SYSTEM,
|
|
SetKeymapping(HOTKEYCODE::SLOTUPDOWN, getBasicKey(HOTKEYCODE::SLOTUPDOWN,DEF_KEYTYPE::DEFAULT)); //SLOTUPDOWN,
|
|
// 2010.07.05 안쓰는 키 삭제 - prodongi
|
|
SetKeymapping(HOTKEYCODE::SLOTCHANGE, getBasicKey(HOTKEYCODE::SLOTCHANGE,DEF_KEYTYPE::DEFAULT)); //SLOTCHANGE,
|
|
|
|
//SetKeymapping(HOTKEYCODE::INSTANCEGAME, getBasicKey(HOTKEYCODE::INSTANCEGAME,DEF_KEYTYPE::DEFAULT)); //INSTANCEGAME,
|
|
SetKeymapping(HOTKEYCODE::DURABILITY, getBasicKey(HOTKEYCODE::DURABILITY,DEF_KEYTYPE::DEFAULT)); // 2010.08.17. 내구도출력. bintitle.
|
|
SetKeymapping(HOTKEYCODE::DESTRUCTION, getBasicKey(HOTKEYCODE::DESTRUCTION,DEF_KEYTYPE::DEFAULT)); // 2010.09.02. 파괴창. bintitle.
|
|
SetKeymapping(HOTKEYCODE::TITLE, getBasicKey(HOTKEYCODE::TITLE,DEF_KEYTYPE::DEFAULT)); // 2012. 6. 7 - marine 호칭창
|
|
SetKeymapping(HOTKEYCODE::ARENASCORE, getBasicKey(HOTKEYCODE::ARENASCORE,DEF_KEYTYPE::DEFAULT));
|
|
|
|
SetKeymapping(HOTKEYCODE::EQUIP_WND, getBasicKey(HOTKEYCODE::EQUIP_WND,DEF_KEYTYPE::DEFAULT)); // 2010.11.03. 장착창
|
|
SetKeymapping(HOTKEYCODE::UPGRADE_WND, getBasicKey(HOTKEYCODE::UPGRADE_WND,DEF_KEYTYPE::DEFAULT)); // 강화창
|
|
SetKeymapping(HOTKEYCODE::PARTYMATCHING_WND, getBasicKey(HOTKEYCODE::PARTYMATCHING_WND,DEF_KEYTYPE::DEFAULT)); //PARTYMATCHING, 파티매칭
|
|
SetKeymapping(HOTKEYCODE::ITEMCOMBINE_WND, getBasicKey(HOTKEYCODE::ITEMCOMBINE_WND,DEF_KEYTYPE::DEFAULT)); // 조합창
|
|
SetKeymapping(HOTKEYCODE::REPAIR_WND, getBasicKey(HOTKEYCODE::REPAIR_WND,DEF_KEYTYPE::DEFAULT)); // 수리/복원/충전
|
|
|
|
SetKeymapping(HOTKEYCODE::PARTY_1, getBasicKey(HOTKEYCODE::PARTY_1,DEF_KEYTYPE::DEFAULT)); /// party 1
|
|
SetKeymapping(HOTKEYCODE::PARTY_2, getBasicKey(HOTKEYCODE::PARTY_2,DEF_KEYTYPE::DEFAULT)); /// party 2
|
|
SetKeymapping(HOTKEYCODE::PARTY_3, getBasicKey(HOTKEYCODE::PARTY_3,DEF_KEYTYPE::DEFAULT)); /// party 3
|
|
SetKeymapping(HOTKEYCODE::PARTY_4, getBasicKey(HOTKEYCODE::PARTY_4,DEF_KEYTYPE::DEFAULT)); /// party 4
|
|
SetKeymapping(HOTKEYCODE::PARTY_5, getBasicKey(HOTKEYCODE::PARTY_5,DEF_KEYTYPE::DEFAULT)); /// party 5
|
|
SetKeymapping(HOTKEYCODE::PARTY_6, getBasicKey(HOTKEYCODE::PARTY_6,DEF_KEYTYPE::DEFAULT)); /// party 6
|
|
SetKeymapping(HOTKEYCODE::PARTY_7, getBasicKey(HOTKEYCODE::PARTY_7,DEF_KEYTYPE::DEFAULT)); /// party 7
|
|
SetKeymapping(HOTKEYCODE::PARTY_8, getBasicKey(HOTKEYCODE::PARTY_8,DEF_KEYTYPE::DEFAULT)); /// party 8
|
|
|
|
//SetKeymapping(HOTKEYCODE::MOVECLICK, KEYEX(false,false,false,'J'));
|
|
//SetKeymapping(HOTKEYCODE::CAMERAMOVE, KEYEX(false,false,false,'K'));
|
|
|
|
SetKeymapping(HOTKEYCODE::EXIT, getBasicKey(HOTKEYCODE::EXIT,DEF_KEYTYPE::DEFAULT), true);
|
|
SetKeymapping(HOTKEYCODE::TARGETWINDOW, getBasicKey(HOTKEYCODE::TARGETWINDOW,DEF_KEYTYPE::DEFAULT));
|
|
SetKeymapping(HOTKEYCODE::INTERFACEHIDE, getBasicKey(HOTKEYCODE::INTERFACEHIDE,DEF_KEYTYPE::DEFAULT));
|
|
SetKeymapping(HOTKEYCODE::MINIMAPZOOMIN, getBasicKey(HOTKEYCODE::MINIMAPZOOMIN,DEF_KEYTYPE::DEFAULT));
|
|
SetKeymapping(HOTKEYCODE::MINIMAPZOOMOUT, getBasicKey(HOTKEYCODE::MINIMAPZOOMOUT,DEF_KEYTYPE::DEFAULT));
|
|
SetKeymapping(HOTKEYCODE::PKMODE, getBasicKey(HOTKEYCODE::PKMODE,DEF_KEYTYPE::DEFAULT));
|
|
SetKeymapping(HOTKEYCODE::AUTOTARGETING, getBasicKey(HOTKEYCODE::AUTOTARGETING,DEF_KEYTYPE::DEFAULT), true);
|
|
SetKeymapping(HOTKEYCODE::PICKUPITEM, getBasicKey(HOTKEYCODE::PICKUPITEM,DEF_KEYTYPE::DEFAULT));
|
|
|
|
/// 나중에 키 설정에 쓰일 예정
|
|
SetKeymapping(HOTKEYCODE::HMOVE_UP, getBasicKey(HOTKEYCODE::HMOVE_UP,DEF_KEYTYPE::DEFAULT));
|
|
SetKeymapping(HOTKEYCODE::HMOVE_DOWN, getBasicKey(HOTKEYCODE::HMOVE_DOWN,DEF_KEYTYPE::DEFAULT));
|
|
SetKeymapping(HOTKEYCODE::HMOVE_LEFT, getBasicKey(HOTKEYCODE::HMOVE_LEFT,DEF_KEYTYPE::DEFAULT));
|
|
SetKeymapping(HOTKEYCODE::HMOVE_RIGHT, getBasicKey(HOTKEYCODE::HMOVE_RIGHT,DEF_KEYTYPE::DEFAULT));
|
|
|
|
for(int i=0;i<12;i++)
|
|
{
|
|
WPARAM tempkey = '1';
|
|
switch(i)
|
|
{
|
|
case 0: tempkey = '1'; break;
|
|
case 1: tempkey = '2'; break;
|
|
case 2: tempkey = '3'; break;
|
|
case 3: tempkey = '4'; break;
|
|
case 4: tempkey = '5'; break;
|
|
case 5: tempkey = '6'; break;
|
|
case 6: tempkey = '7'; break;
|
|
case 7: tempkey = '8'; break;
|
|
case 8: tempkey = '9'; break;
|
|
case 9: tempkey = '0'; break;
|
|
case 10: tempkey = VK_OEM_MINUS; break;
|
|
case 11: tempkey = VK_OEM_PLUS; break;
|
|
}
|
|
|
|
SetKeymapping(HOTKEYCODE::SLOT1_01 + i, KEYEX(false,false,false,tempkey));
|
|
SetKeymapping(HOTKEYCODE::SLOT2_01 + i, KEYEX(false,true,false,tempkey));
|
|
SetKeymapping(HOTKEYCODE::SLOT3_01 + i, KEYEX(false,false,true,tempkey));
|
|
SetKeymapping(HOTKEYCODE::SLOT4_01 + i, KEYEX(true,false,false,tempkey));
|
|
|
|
}
|
|
|
|
//alt + '=' 키는 전각/반각 변환키 임으로 설정 변경한다. 2009.04.28 sfreer
|
|
SetKeymapping(HOTKEYCODE::SLOT4_12, getBasicKey(HOTKEYCODE::SLOT4_12,DEF_KEYTYPE::DEFAULT));
|
|
}
|
|
|
|
|
|
|
|
void SGameWorldKeymapping::SetPrevRappelzDefaultKeymapping() //이전라펠즈기본키설정으로
|
|
{
|
|
Clear();
|
|
|
|
SetKeymapping(HOTKEYCODE::CROWSHOP, getBasicKey(HOTKEYCODE::CROWSHOP,DEF_KEYTYPE::ALT_KEY)); //CROWSHOP,
|
|
SetKeymapping(HOTKEYCODE::INVENTORY, getBasicKey(HOTKEYCODE::INVENTORY,DEF_KEYTYPE::ALT_KEY)); //INVENTORY, alt +space, alt +i 둘다지원.
|
|
SetKeymapping(HOTKEYCODE::SKILL, getBasicKey(HOTKEYCODE::SKILL,DEF_KEYTYPE::ALT_KEY)); //SKILL,
|
|
SetKeymapping(HOTKEYCODE::CHARACTER, getBasicKey(HOTKEYCODE::CHARACTER,DEF_KEYTYPE::ALT_KEY)); //CHARACTER,
|
|
SetKeymapping(HOTKEYCODE::CREATUREFORMATION, getBasicKey(HOTKEYCODE::CREATUREFORMATION,DEF_KEYTYPE::ALT_KEY)); //CREATUREFORMATION,
|
|
SetKeymapping(HOTKEYCODE::CREATURESKILL, getBasicKey(HOTKEYCODE::CREATURESKILL,DEF_KEYTYPE::ALT_KEY)); //CREATURESKILL,
|
|
SetKeymapping(HOTKEYCODE::CREATUREINFO, getBasicKey(HOTKEYCODE::CREATUREINFO,DEF_KEYTYPE::ALT_KEY)); //CREATUREINFO,
|
|
SetKeymapping(HOTKEYCODE::MESSENGER, getBasicKey(HOTKEYCODE::MESSENGER,DEF_KEYTYPE::ALT_KEY)); //MESSENGER,
|
|
SetKeymapping(HOTKEYCODE::GUILD, getBasicKey(HOTKEYCODE::GUILD,DEF_KEYTYPE::ALT_KEY)); //GUILD,
|
|
SetKeymapping(HOTKEYCODE::PARTY_FOLD, getBasicKey(HOTKEYCODE::PARTY_FOLD,DEF_KEYTYPE::ALT_KEY)); //PARTY,
|
|
SetKeymapping(HOTKEYCODE::QUEST, getBasicKey(HOTKEYCODE::QUEST,DEF_KEYTYPE::ALT_KEY)); //QUEST,
|
|
SetKeymapping(HOTKEYCODE::WOLRDMAP, getBasicKey(HOTKEYCODE::WOLRDMAP,DEF_KEYTYPE::ALT_KEY)); //WOLRDMAP,
|
|
SetKeymapping(HOTKEYCODE::CONTROL, getBasicKey(HOTKEYCODE::CONTROL,DEF_KEYTYPE::ALT_KEY)); //CONTROL,
|
|
SetKeymapping(HOTKEYCODE::HELP, getBasicKey(HOTKEYCODE::HELP,DEF_KEYTYPE::ALT_KEY)); //HELP,
|
|
SetKeymapping(HOTKEYCODE::SYSTEM, getBasicKey(HOTKEYCODE::SYSTEM,DEF_KEYTYPE::ALT_KEY)); //SYSTEM,
|
|
SetKeymapping(HOTKEYCODE::OPTION, getBasicKey(HOTKEYCODE::OPTION,DEF_KEYTYPE::ALT_KEY)); //SYSTEM,
|
|
SetKeymapping(HOTKEYCODE::SLOTUPDOWN, getBasicKey(HOTKEYCODE::SLOTUPDOWN,DEF_KEYTYPE::ALT_KEY)); //SLOTUPDOWN,
|
|
// 2010.07.05 안쓰는 키 삭제 - prodongi
|
|
SetKeymapping(HOTKEYCODE::SLOTCHANGE, getBasicKey(HOTKEYCODE::SLOTCHANGE,DEF_KEYTYPE::ALT_KEY)); //SLOTCHANGE,
|
|
// SetKeymapping(HOTKEYCODE::INSTANCEGAME, getBasicKey(HOTKEYCODE::INSTANCEGAME,DEF_KEYTYPE::ALT_KEY)); //INSTANCEGAME,
|
|
|
|
SetKeymapping(HOTKEYCODE::DURABILITY, getBasicKey(HOTKEYCODE::DURABILITY,DEF_KEYTYPE::ALT_KEY)); // 2010.08.17. 내구도출력. bintitle.
|
|
SetKeymapping(HOTKEYCODE::DESTRUCTION, getBasicKey(HOTKEYCODE::DESTRUCTION,DEF_KEYTYPE::ALT_KEY)); // 2010.09.02. 파괴창. bintitle.
|
|
SetKeymapping(HOTKEYCODE::TITLE, getBasicKey(HOTKEYCODE::TITLE,DEF_KEYTYPE::ALT_KEY)); // 2012. 6. 7 - marine 호칭창
|
|
SetKeymapping(HOTKEYCODE::ARENASCORE, getBasicKey(HOTKEYCODE::ARENASCORE,DEF_KEYTYPE::ALT_KEY)); // 2012. 6. 28. 아레나 스코어
|
|
SetKeymapping(HOTKEYCODE::EQUIP_WND, getBasicKey(HOTKEYCODE::EQUIP_WND,DEF_KEYTYPE::ALT_KEY)); // 2010.11.03. 장착창
|
|
SetKeymapping(HOTKEYCODE::UPGRADE_WND, getBasicKey(HOTKEYCODE::UPGRADE_WND,DEF_KEYTYPE::ALT_KEY)); // 강화창
|
|
//SetKeymapping(HOTKEYCODE::PARTYMATCHING_WND, getBasicKey(HOTKEYCODE::PARTYMATCHING_WND,DEF_KEYTYPE::ALT_KEY)); //PARTYMATCHING,파티매칭 기존 강화/세공과 겹쳐서 지정안함
|
|
SetKeymapping(HOTKEYCODE::ITEMCOMBINE_WND, getBasicKey(HOTKEYCODE::ITEMCOMBINE_WND,DEF_KEYTYPE::ALT_KEY)); // 조합창
|
|
SetKeymapping(HOTKEYCODE::REPAIR_WND, getBasicKey(HOTKEYCODE::REPAIR_WND,DEF_KEYTYPE::ALT_KEY)); // 수리/복원/충전
|
|
|
|
///// 2012.08.06 기존 라펠즈처럼 키 설정일 경우에는 1번 키 ~ 8번키와 중복이 되므로 지정 안함으로 바꿔 준다 - prodongi
|
|
//SetKeymapping(HOTKEYCODE::PARTY_1, getBasicKey(HOTKEYCODE::PARTY_1,DEF_KEYTYPE::ALT_KEY)); /// party 1
|
|
//SetKeymapping(HOTKEYCODE::PARTY_2, getBasicKey(HOTKEYCODE::PARTY_2,DEF_KEYTYPE::ALT_KEY)); /// party 2
|
|
//SetKeymapping(HOTKEYCODE::PARTY_3, getBasicKey(HOTKEYCODE::PARTY_3,DEF_KEYTYPE::ALT_KEY)); /// party 3
|
|
//SetKeymapping(HOTKEYCODE::PARTY_4, getBasicKey(HOTKEYCODE::PARTY_4,DEF_KEYTYPE::ALT_KEY)); /// party 4
|
|
//SetKeymapping(HOTKEYCODE::PARTY_5, getBasicKey(HOTKEYCODE::PARTY_5,DEF_KEYTYPE::ALT_KEY)); /// party 5
|
|
//SetKeymapping(HOTKEYCODE::PARTY_6, getBasicKey(HOTKEYCODE::PARTY_6,DEF_KEYTYPE::ALT_KEY)); /// party 6
|
|
//SetKeymapping(HOTKEYCODE::PARTY_7, getBasicKey(HOTKEYCODE::PARTY_7,DEF_KEYTYPE::ALT_KEY)); /// party 7
|
|
//SetKeymapping(HOTKEYCODE::PARTY_8, getBasicKey(HOTKEYCODE::PARTY_8,DEF_KEYTYPE::ALT_KEY)); /// party 8
|
|
|
|
//SetKeymapping(HOTKEYCODE::MOVECLICK, KEYEX(true,false,false,'J'));
|
|
//SetKeymapping(HOTKEYCODE::CAMERAMOVE, KEYEX(true,false,false,'K'));
|
|
|
|
SetKeymapping(HOTKEYCODE::EXIT, getBasicKey(HOTKEYCODE::EXIT,DEF_KEYTYPE::ALT_KEY), true );
|
|
SetKeymapping(HOTKEYCODE::TARGETWINDOW, getBasicKey(HOTKEYCODE::TARGETWINDOW,DEF_KEYTYPE::ALT_KEY));
|
|
SetKeymapping(HOTKEYCODE::INTERFACEHIDE, getBasicKey(HOTKEYCODE::INTERFACEHIDE,DEF_KEYTYPE::ALT_KEY));
|
|
SetKeymapping(HOTKEYCODE::MINIMAPZOOMIN, getBasicKey(HOTKEYCODE::MINIMAPZOOMIN,DEF_KEYTYPE::ALT_KEY));
|
|
SetKeymapping(HOTKEYCODE::MINIMAPZOOMOUT, getBasicKey(HOTKEYCODE::MINIMAPZOOMOUT,DEF_KEYTYPE::ALT_KEY));
|
|
SetKeymapping(HOTKEYCODE::PKMODE, getBasicKey(HOTKEYCODE::PKMODE,DEF_KEYTYPE::ALT_KEY));
|
|
SetKeymapping(HOTKEYCODE::AUTOTARGETING, getBasicKey(HOTKEYCODE::AUTOTARGETING,DEF_KEYTYPE::ALT_KEY), true);
|
|
|
|
//gmpbigsun( 2013_01_03, #23769 ) : 키 디폴트 설정시 SPACE키 제거
|
|
//SetKeymapping(HOTKEYCODE::PICKUPITEM, getBasicKey(HOTKEYCODE::PICKUPITEM,DEF_KEYTYPE::ALT_KEY));
|
|
|
|
// SetKeymapping(HOTKEYCODE::WEAPON_CHANGE, KEYEX(false,false,false,VK_F1)); // 무기스왑.
|
|
/// 나중에 키 설정에 쓰일 예정
|
|
SetKeymapping(HOTKEYCODE::HMOVE_UP, getBasicKey(HOTKEYCODE::HMOVE_UP,DEF_KEYTYPE::ALT_KEY));
|
|
SetKeymapping(HOTKEYCODE::HMOVE_DOWN, getBasicKey(HOTKEYCODE::HMOVE_DOWN,DEF_KEYTYPE::ALT_KEY));
|
|
SetKeymapping(HOTKEYCODE::HMOVE_LEFT, getBasicKey(HOTKEYCODE::HMOVE_LEFT,DEF_KEYTYPE::ALT_KEY));
|
|
SetKeymapping(HOTKEYCODE::HMOVE_RIGHT, getBasicKey(HOTKEYCODE::HMOVE_RIGHT,DEF_KEYTYPE::ALT_KEY));
|
|
|
|
for(int i=0;i<12;i++)
|
|
{
|
|
WPARAM tempkey = VK_F1+i;
|
|
|
|
SetKeymapping(HOTKEYCODE::SLOT1_01 + i, KEYEX(false,false,false,tempkey));
|
|
SetKeymapping(HOTKEYCODE::SLOT2_01 + i, KEYEX(false,true,false,tempkey));
|
|
SetKeymapping(HOTKEYCODE::SLOT3_01 + i, KEYEX(false,false,true,tempkey));
|
|
SetKeymapping(HOTKEYCODE::SLOT4_01 + i, KEYEX(true,false,false,tempkey));
|
|
}
|
|
}
|
|
|
|
bool SGameWorldKeymapping::IsMovingKey(KEYEX key)
|
|
{
|
|
if ( key == GetGameKeymapping().GetKeymapping( HOTKEYCODE::HMOVE_UP ) ) return true;
|
|
if ( key == GetGameKeymapping().GetKeymapping( HOTKEYCODE::HMOVE_LEFT ) ) return true;
|
|
if ( key == GetGameKeymapping().GetKeymapping( HOTKEYCODE::HMOVE_RIGHT ) ) return true;
|
|
if ( key == GetGameKeymapping().GetKeymapping( HOTKEYCODE::HMOVE_DOWN ) ) return true;
|
|
|
|
return false;
|
|
}
|
|
|
|
void SGameWorldKeymapping::EnableMoveKey(bool bEnable)
|
|
{
|
|
// 2012.9.25 Metin 이동 키도 변경 가능하도록 수정.
|
|
return;
|
|
|
|
/*
|
|
const int FIXED_CODE_MAX = 4;
|
|
int keyCode[FIXED_CODE_MAX] = { (int)HOTKEYCODE::HMOVE_UP, (int)HOTKEYCODE::HMOVE_DOWN, (int)HOTKEYCODE::HMOVE_LEFT, (int)HOTKEYCODE::HMOVE_RIGHT,};
|
|
|
|
// 키값을 WASD로 사용 하는 키는 해당키의 기본키로 바꾼다.
|
|
if(bEnable)
|
|
{
|
|
for(int i=0 ; i<HOTKEYCODE::MAX ; ++i)
|
|
{
|
|
if( IsMovingKey(m_CurKeyMapTable[i]) )
|
|
SetKeymapping( i, getBasicKey(i) );
|
|
}
|
|
}
|
|
|
|
// WASD 키값을 해당 인덱스에 추가
|
|
for(int i=0 ; i<FIXED_CODE_MAX ; ++i)
|
|
SetKeymapping( keyCode[i], getBasicKey( keyCode[i], (bEnable)? DEF_KEYTYPE::DEFAULT : DEF_KEYTYPE::ALT_KEY ) );
|
|
*/
|
|
}
|
|
|
|
bool SGameWorldKeymapping::IsVaildUnityKey(WPARAM wParam)
|
|
{
|
|
|
|
if( (wParam >= VK_F1 && wParam <= VK_F12) // F1 F2 F3, F4, F5, F6, F7, F8, F9, F10, F11, F12
|
|
|| (wParam >= '0' && wParam <= '9') // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
|
|
|| (wParam >= 'A' && wParam <= 'Z') //A~Z
|
|
|| (wParam >= VK_OEM_1 && wParam <= VK_OEM_3) // : + , - . /? ~`
|
|
|| (wParam >= VK_OEM_4 && wParam <= VK_OEM_7) // [{ \| ]} '"
|
|
|| wParam == VK_OEM_NEC_EQUAL // =
|
|
|| wParam == VK_BACK //백커서
|
|
|| wParam == VK_CAPITAL //Caps Lock
|
|
|| (wParam >= VK_SPACE && wParam <= VK_DOWN) //(Space),(Pageup),(Pagedown),(End), (Home)
|
|
//(화살표위), (화살표아래), (화살표좌), (화살표우)
|
|
|| wParam == VK_INSERT // (Insert)
|
|
|| wParam == VK_DELETE // (Delete)
|
|
|| wParam == VK_NUMLOCK //(NumLock)
|
|
|| (wParam >= VK_NUMPAD0 && wParam <= VK_DIVIDE && wParam != VK_SEPARATOR)
|
|
//(숫자키패드/), (숫자키패드*), (숫자키패드-),
|
|
//(숫자키패드7), (숫자키패드8), (숫자키패드9),
|
|
//(숫자키패드4), (숫자키패드5), (숫자키패드6),
|
|
//(숫자키패드1), (숫자키패드2), (숫자키패드3),
|
|
//(숫자키패드0), (숫자키패드 Del), (숫자키패드+)
|
|
|| wParam == VK_I_SPACE // I or Space경우.. 기존 라펠즈처럼 인벤토리에 사용된다.
|
|
|| wParam == VK_TAB // 2010.07.08 - prodongi
|
|
|
|
)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
|
|
bool SGameWorldKeymapping::IsValidKey(const KEYEX &pKey)
|
|
{
|
|
//단축키는 한개만..
|
|
{
|
|
int fkc=0;
|
|
if(pKey.bAlt) fkc++;
|
|
if(pKey.bShift) fkc++;
|
|
if(pKey.bCtrl) fkc++;
|
|
|
|
if(fkc>1)
|
|
return false;
|
|
}
|
|
bool r = IsVaildUnityKey(pKey.wParam);
|
|
|
|
if(pKey.bAlt && (pKey.wParam == VK_OEM_PLUS)) // alt + '=' 는 전각/반각 변환키 임으로 입력을 막는다. 2009.04.28. sfreer
|
|
return false;
|
|
|
|
return r;
|
|
//return IsVaildUnityKey(pKey.wParam);
|
|
}
|
|
|
|
|
|
|
|
|
|
int SGameWorldKeymapping::SetKeymapping(int iHotKeyCode, const KEYEX &pHotKey, bool ignorevalidcheck)
|
|
{
|
|
if(iHotKeyCode>=HOTKEYCODE::MAX || iHotKeyCode < 0)
|
|
return -1;
|
|
|
|
if(!IsValidKey(pHotKey)&&!ignorevalidcheck)
|
|
{
|
|
eraseKey(iHotKeyCode); // 유효한 키값이 없으므로 지워주자.
|
|
return -1;
|
|
}
|
|
|
|
m_CurKeyMapTable[iHotKeyCode] = pHotKey;
|
|
m_HotKeyStringInfo[iHotKeyCode] = "";
|
|
m_HotKeyStringInfo2[iHotKeyCode] = "";
|
|
|
|
|
|
std::string tempsz = "";
|
|
if(pHotKey.bCtrl)
|
|
tempsz += "Ctrl";// + ";
|
|
|
|
if(pHotKey.bAlt)
|
|
{
|
|
if(tempsz.empty())
|
|
tempsz += "Alt";// + ";
|
|
else
|
|
tempsz += " + Alt";// + ";
|
|
}
|
|
|
|
if(pHotKey.bShift)
|
|
{
|
|
if(tempsz.empty())
|
|
tempsz += "Shift";// + ";
|
|
else
|
|
tempsz += " + Shift";// + ";
|
|
}
|
|
|
|
if(!tempsz.empty())
|
|
{
|
|
m_HotKeyStringInfo[iHotKeyCode] = tempsz;
|
|
m_HotKeyStringInfo[iHotKeyCode] += " + ";
|
|
m_HotKeyStringInfo2[iHotKeyCode] = tempsz;
|
|
m_HotKeyStringInfo2[iHotKeyCode] += "<br><offsety:-7>+";
|
|
}
|
|
|
|
tempsz = "";
|
|
WPARAM wParam = pHotKey.wParam;
|
|
|
|
if(wParam >= '0' && wParam <= '9' // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
|
|
|| wParam >= 'A' && wParam <= 'Z') //A~Z
|
|
{
|
|
tempsz += static_cast<char>(wParam);
|
|
}
|
|
else
|
|
{
|
|
switch(wParam)
|
|
{
|
|
case VK_F1: tempsz += "F1"; break;
|
|
case VK_F2: tempsz += "F2"; break;
|
|
case VK_F3: tempsz += "F3"; break;
|
|
case VK_F4: tempsz += "F4"; break;
|
|
case VK_F5: tempsz += "F5"; break;
|
|
case VK_F6: tempsz += "F6"; break;
|
|
case VK_F7: tempsz += "F7"; break;
|
|
case VK_F8: tempsz += "F8"; break;
|
|
case VK_F9: tempsz += "F9"; break;
|
|
case VK_F10: tempsz += "F10"; break;
|
|
case VK_F11: tempsz += "F11"; break;
|
|
case VK_F12: tempsz += "F12"; break;
|
|
case VK_OEM_1: tempsz += ":"; break;
|
|
case VK_OEM_PLUS: tempsz += "="; break;
|
|
case VK_OEM_COMMA: tempsz += ","; break;
|
|
case VK_OEM_MINUS: tempsz += "-"; break;
|
|
case VK_OEM_PERIOD: tempsz += "."; break;
|
|
case VK_OEM_2: tempsz += "/"; break;
|
|
case VK_OEM_3: tempsz += "~"; break;
|
|
case VK_OEM_4: tempsz += "["; break;
|
|
case VK_OEM_5: tempsz += "\\"; break;
|
|
case VK_OEM_6: tempsz += "]"; break;
|
|
case VK_OEM_7: tempsz += "'"; break;
|
|
case VK_OEM_NEC_EQUAL: tempsz += "'"; break;
|
|
case VK_BACK: tempsz += "BS"; break;
|
|
case VK_CAPITAL:tempsz += "CapsLock"; break;
|
|
case VK_SPACE: tempsz += "Spacebar"; break;
|
|
case VK_PRIOR: tempsz += "PgUp"; break;
|
|
case VK_NEXT: tempsz += "PgDn"; break;
|
|
case VK_END: tempsz += "End"; break;
|
|
case VK_HOME: tempsz += "Home"; break;
|
|
case VK_LEFT: tempsz += "Left"; break;
|
|
case VK_UP: tempsz += "Up"; break;
|
|
case VK_RIGHT: tempsz += "Right"; break;
|
|
case VK_DOWN: tempsz += "Down"; break;
|
|
case VK_INSERT: tempsz += "Ins"; break;
|
|
case VK_DELETE: tempsz += "Del"; break;
|
|
case VK_NUMLOCK:tempsz += "Num"; break;
|
|
case VK_NUMPAD0:tempsz += "Num 0"; break;
|
|
case VK_NUMPAD1:tempsz += "Num 1"; break;
|
|
case VK_NUMPAD2:tempsz += "Num 2"; break;
|
|
case VK_NUMPAD3:tempsz += "Num 3"; break;
|
|
case VK_NUMPAD4:tempsz += "Num 4"; break;
|
|
case VK_NUMPAD5:tempsz += "Num 5"; break;
|
|
case VK_NUMPAD6:tempsz += "Num 6"; break;
|
|
case VK_NUMPAD7:tempsz += "Num 7"; break;
|
|
case VK_NUMPAD8:tempsz += "Num 8"; break;
|
|
case VK_NUMPAD9:tempsz += "Num 9"; break;
|
|
case VK_MULTIPLY: tempsz += "Num *"; break;
|
|
case VK_ADD: tempsz += "Num +"; break;
|
|
case VK_SUBTRACT: tempsz += "Num -"; break;
|
|
case VK_DECIMAL:tempsz += "Num ."; break;
|
|
case VK_DIVIDE: tempsz += "Num /"; break;
|
|
case VK_TAB: tempsz += "Tab"; break;
|
|
case VK_I_SPACE: tempsz += "( I or Space )"; break;
|
|
}
|
|
}
|
|
|
|
m_HotKeyStringInfo[iHotKeyCode] += tempsz;
|
|
m_HotKeyStringInfo2[iHotKeyCode] += tempsz;
|
|
return iHotKeyCode;
|
|
}
|
|
|
|
|
|
std::string SGameWorldKeymapping::GetHotKeyStringInfo(int iHotKeyCode)
|
|
{
|
|
if(iHotKeyCode>=HOTKEYCODE::MAX || iHotKeyCode < 0)
|
|
return "";
|
|
|
|
if(m_HotKeyStringInfo[iHotKeyCode].empty() )
|
|
return S(6911);
|
|
|
|
return m_HotKeyStringInfo[iHotKeyCode];
|
|
}
|
|
|
|
|
|
std::string SGameWorldKeymapping::GetHotKeyStringInfo2(int iHotKeyCode)
|
|
{
|
|
if(iHotKeyCode>=HOTKEYCODE::MAX || iHotKeyCode < 0)
|
|
return "";
|
|
|
|
if(m_HotKeyStringInfo2[iHotKeyCode].empty() )
|
|
return "";//S(6911);
|
|
|
|
return m_HotKeyStringInfo2[iHotKeyCode];
|
|
}
|
|
|
|
|
|
KEYEX SGameWorldKeymapping::GetKeymapping(int iHotKeyCode)
|
|
{
|
|
if(iHotKeyCode>=HOTKEYCODE::MAX || iHotKeyCode < 0)
|
|
return KEYEX();
|
|
return m_CurKeyMapTable[iHotKeyCode];
|
|
}
|
|
|
|
|
|
int SGameWorldKeymapping::GetHotKeyState(int iHotKeyCode)
|
|
{
|
|
if(iHotKeyCode>=HOTKEYCODE::MAX || iHotKeyCode < 0)
|
|
return -1;
|
|
return m_StateHotKeyList[iHotKeyCode];
|
|
}
|
|
|
|
|
|
int SGameWorldKeymapping::GetKeymapping(const KEYEX &HotKey)
|
|
{
|
|
for(int i=0;i<HOTKEYCODE::MAX;i++)
|
|
{
|
|
if( m_CurKeyMapTable[i] == HotKey)
|
|
{
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
}
|
|
|
|
|
|
bool SGameWorldKeymapping::IsHotKeyPushed(int iHotKeyCode)
|
|
{
|
|
if(iHotKeyCode>=HOTKEYCODE::MAX || iHotKeyCode <0 )
|
|
return false;
|
|
return m_PushedHotKeyList[iHotKeyCode];
|
|
}
|
|
|
|
|
|
KEYEX SGameWorldKeymapping::GetKeymapTable(int iHotKeyCode)
|
|
{
|
|
if(iHotKeyCode>=HOTKEYCODE::MAX || iHotKeyCode <0 )
|
|
return KEYEX();
|
|
return KEYEX(m_CurKeyMapTable[iHotKeyCode]);
|
|
}
|
|
|
|
|
|
SGameWorldKeymapping& SGameWorldKeymapping::operator = ( const SGameWorldKeymapping& keymapping )
|
|
{
|
|
Clear();
|
|
|
|
for(int i=0;i<HOTKEYCODE::MAX;i++)
|
|
{
|
|
//m_HotKeyStringInfo[i] = ((SGameWorldKeymapping&)keymapping).GetHotKeyStringInfo(i);
|
|
m_StateHotKeyList[i] = ((SGameWorldKeymapping&)keymapping).GetHotKeyState(i);
|
|
m_PushedHotKeyList[i] = ((SGameWorldKeymapping&)keymapping).IsHotKeyPushed(i);
|
|
//m_CurKeyMapTable[i] = ((SGameWorldKeymapping&)keymapping).GetKeymapTable(i);
|
|
SetKeymapping(i, ((SGameWorldKeymapping&)keymapping).GetKeymapTable(i),true);
|
|
}
|
|
|
|
return *this;
|
|
}
|
|
|
|
|
|
void SGameWorldKeymapping::PreHotkey(SIMSG_HOTKEY_EX *pMsg)
|
|
{
|
|
if(m_SkipMode)
|
|
return;
|
|
|
|
SGameWorldKeymapping _tempprevrappelzstyle;
|
|
_tempprevrappelzstyle.SetPrevRappelzDefaultKeymapping();
|
|
|
|
|
|
|
|
/*if(!KUIControlEdit::IsNobodyHasFocus()
|
|
&& !pMsg->bAlt
|
|
&& !pMsg->bCtrl
|
|
&& !pMsg->bCtrlShift
|
|
&& !pMsg->bShift
|
|
&& !pMsg->bTab
|
|
&& *this != _tempprevrappelzstyle)
|
|
{
|
|
|
|
WPARAM wParam = pMsg->wParam;
|
|
if( (wParam >= '0' && wParam <= '9') // 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
|
|
|| (wParam >= 'A' && wParam <= 'Z') //A~Z
|
|
|| (wParam >= VK_OEM_1 && wParam <= VK_OEM_3) // : + , - . /? ~`
|
|
|| (wParam >= VK_OEM_4 && wParam <= VK_OEM_7) // [{ \| ]} '"
|
|
|| wParam == VK_OEM_NEC_EQUAL // =
|
|
|| wParam == VK_BACK //백커서
|
|
|| wParam == VK_SPACE //(Space)
|
|
|| wParam == VK_END //(End)
|
|
|| wParam == VK_HOME //(Home)
|
|
|| wParam == VK_LEFT //(화살표위), (화살표아래), (화살표좌), (화살표우)
|
|
|| wParam == VK_UP
|
|
|| wParam == VK_RIGHT
|
|
|| wParam == VK_DOWN
|
|
|| wParam == VK_INSERT // (Insert)
|
|
|| wParam == VK_DELETE // (Delete)
|
|
)
|
|
{
|
|
return;
|
|
}
|
|
}*/
|
|
|
|
if(!KUIControlEdit::IsNobodyHasFocus()
|
|
&& *this != _tempprevrappelzstyle)
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
for(int i=0;i<HOTKEYCODE::MAX;i++)
|
|
{
|
|
if( m_CurKeyMapTable[i] == (*pMsg) )
|
|
{
|
|
|
|
if(pMsg->bUp)
|
|
{
|
|
m_StateHotKeyList[i] = KEYSTATE::UP;
|
|
m_PushedHotKeyList[i] = false;
|
|
}
|
|
else
|
|
{
|
|
m_StateHotKeyList[i] = KEYSTATE::DOWN;
|
|
m_PushedHotKeyList[i] = true;
|
|
}
|
|
}
|
|
else if(m_CurKeyMapTable[i].wParam == VK_I_SPACE)//
|
|
{
|
|
if(pMsg->bAlt == m_CurKeyMapTable[i].bAlt
|
|
&& pMsg->bCtrl == m_CurKeyMapTable[i].bCtrl
|
|
&& pMsg->bShift == m_CurKeyMapTable[i].bShift
|
|
&& ( pMsg->wParam == 'I' || pMsg->wParam == VK_SPACE ) )
|
|
{
|
|
if(pMsg->bUp)
|
|
{
|
|
m_StateHotKeyList[i] = KEYSTATE::UP;
|
|
m_PushedHotKeyList[i] = false;
|
|
}
|
|
else
|
|
{
|
|
m_StateHotKeyList[i] = KEYSTATE::DOWN;
|
|
m_PushedHotKeyList[i] = true;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
//VK_I_SPACE가 아닐경우 예외처리
|
|
//2009-05-14 : hunee
|
|
m_StateHotKeyList[i] = KEYSTATE::NONE;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
m_StateHotKeyList[i] = KEYSTATE::NONE;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
void SGameWorldKeymapping::SkipMode(bool b)
|
|
{
|
|
m_SkipMode = b;
|
|
}
|
|
|
|
|
|
bool SGameWorldKeymapping::IsEmpty()
|
|
{
|
|
for(int i=0;i<HOTKEYCODE::MAX;i++)
|
|
{
|
|
if( m_CurKeyMapTable[i].wParam != 0 )
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
void SGameWorldKeymapping::setBasickeyInit()
|
|
{
|
|
DEFAULT_KEYS key;
|
|
key.setkey(KEYEX(false,false,false,VK_OEM_3),KEYEX(true,false,false,VK_OEM_3)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::CROWSHOP, key) ); // 크루샵
|
|
key.setkey(KEYEX(false,false,false,'I'),KEYEX(true,false,false,VK_I_SPACE)) ; m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::INVENTORY, key) ); // 가방
|
|
key.setkey(KEYEX(false,false,false,'K'),KEYEX(true,false,false,'S')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::SKILL, key) ); // 스킬
|
|
key.setkey(KEYEX(false,false,false,'C'),KEYEX(true,false,false,'C')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::CHARACTER, key) ); // 캐릭터
|
|
key.setkey(KEYEX(false,false,false,'Y'),KEYEX(true,false,false,'Y')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::CREATUREFORMATION, key) ); // 크리쳐 구성
|
|
key.setkey(KEYEX(false,false,false,'E'),KEYEX(true,false,false,'E')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::CREATURESKILL, key) ); // 크리쳐 스킬
|
|
key.setkey(KEYEX(false,false,false,'R'),KEYEX(true,false,false,'R')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::CREATUREINFO, key) ); // 크리쳐 정보
|
|
key.setkey(KEYEX(false,false,false,'F'),KEYEX(true,false,false,'F')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::MESSENGER, key) ); // 친구목록
|
|
key.setkey(KEYEX(false,false,false,'G'),KEYEX(true,false,false,'G')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::GUILD, key) ); // 길드
|
|
key.setkey(KEYEX(false,false,false,'P'),KEYEX(true,false,false,'P')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_FOLD, key) ); // 파티
|
|
key.setkey(KEYEX(false,false,false,'Q'),KEYEX(true,false,false,'Q')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::QUEST, key) ); // 퀘스트
|
|
key.setkey(KEYEX(false,false,false,'M'),KEYEX(true,false,false,'M')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::WOLRDMAP, key) ); // 월드맵
|
|
key.setkey(KEYEX(false,false,false,'T'),KEYEX(true,false,false,'T')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::CONTROL, key) ); // 컨트롤 모음
|
|
key.setkey(KEYEX(false,false,false,'H'),KEYEX(true,false,false,'H')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::HELP, key) ); // 도움말
|
|
key.setkey(KEYEX(false,false,false,'Z'),KEYEX(true,false,false,'Z')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::SYSTEM, key) ); // 시스템
|
|
key.setkey(KEYEX(false,false,false,'O'),KEYEX(true,false,false,'O')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::OPTION, key) ); // 옵션
|
|
key.setkey(KEYEX(false,false,false,0),KEYEX(true,false,false,'X')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::SLOTUPDOWN, key) ); // SLOTUPDOWN
|
|
key.setkey(KEYEX(false,false,false,'V'),KEYEX(true,false,false,'V')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::SLOTCHANGE, key) ); // SLOTCHANGE
|
|
//key.setkey(KEYEX(false,false,false,'N'),KEYEX(true,false,false,'N')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::INSTANCEGAME, key) ); // INSTANCEGAME
|
|
key.setkey(KEYEX(false,false,false,0),KEYEX(true,false,false,'B')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::DURABILITY, key) ); // 내구도창
|
|
key.setkey(KEYEX(false,false,false,0),KEYEX(true,false,false,'D')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::DESTRUCTION, key) ); // 파괴창
|
|
key.setkey(KEYEX(false,false,false,VK_OEM_1),KEYEX(true,false,false,VK_OEM_1)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::TITLE, key) ); // 호칭창
|
|
key.setkey(KEYEX(false,false,false,'U'),KEYEX(true,false,false,'U')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::EQUIP_WND, key) ); // 장착창
|
|
key.setkey(KEYEX(false,false,false,0),KEYEX(true,false,false,'J')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::UPGRADE_WND, key) ); // 강화창
|
|
key.setkey(KEYEX(false,false,false,'J'),KEYEX(false,false,false,0)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTYMATCHING_WND, key) ); // PARTYMATCHING 파티매칭
|
|
key.setkey(KEYEX(false,false,false,0),KEYEX(true,false,false,'K')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::ITEMCOMBINE_WND, key) ); // 조합창
|
|
key.setkey(KEYEX(false,false,false,0),KEYEX(true,false,false,'L')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::REPAIR_WND, key) ); // 수리/복원/충전
|
|
key.setkey(KEYEX(false,false,false,'N'),KEYEX(true,false,false,'N')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::ARENASCORE, key) ); // 아레나 스코어 창
|
|
|
|
key.setkey(KEYEX(false, false, false, VK_F1),KEYEX(false, false, false, VK_F1)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_1, key) ); // party 1
|
|
key.setkey(KEYEX(false, false, false, VK_F2),KEYEX(false, false, false, VK_F2)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_2, key) ); // party 2
|
|
key.setkey(KEYEX(false, false, false, VK_F3),KEYEX(false, false, false, VK_F3)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_3, key) ); // party 3
|
|
key.setkey(KEYEX(false, false, false, VK_F4),KEYEX(false, false, false, VK_F4)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_4, key) ); // party 4
|
|
key.setkey(KEYEX(false, false, false, VK_F5),KEYEX(false, false, false, VK_F5)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_5, key) ); // party 5
|
|
key.setkey(KEYEX(false, false, false, VK_F6),KEYEX(false, false, false, VK_F6)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_6, key) ); // party 6
|
|
key.setkey(KEYEX(false, false, false, VK_F7),KEYEX(false, false, false, VK_F7)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_7, key) ); // party 7
|
|
key.setkey(KEYEX(false, false, false, VK_F8),KEYEX(false, false, false, VK_F8)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PARTY_8, key) ); // party 8
|
|
|
|
key.setkey(KEYEX(false,false,true,VK_F4),KEYEX(true,false,true,VK_F4)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::EXIT, key) );
|
|
key.setkey(KEYEX(false,false,true,'F'),KEYEX(false,false,true,'F')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::TARGETWINDOW, key) );
|
|
key.setkey(KEYEX(false,false,true,'H'),KEYEX(false,false,true,'H')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::INTERFACEHIDE, key) );
|
|
key.setkey(KEYEX(false,false,true,VK_OEM_4),KEYEX(false,false,true,VK_OEM_4)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::MINIMAPZOOMIN, key) );
|
|
key.setkey(KEYEX(false,false,true,VK_OEM_6),KEYEX(false,false,true,VK_OEM_6)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::MINIMAPZOOMOUT, key) );
|
|
key.setkey(KEYEX(false,false,true,'P'),KEYEX(false,false,true,'P')); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PKMODE, key) );
|
|
key.setkey(KEYEX(false,false,false,VK_TAB),KEYEX(false,false,false,VK_TAB)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::AUTOTARGETING, key) );
|
|
key.setkey(KEYEX(false,false,false,VK_SPACE),KEYEX(false,false,false,VK_SPACE)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::PICKUPITEM, key) );
|
|
|
|
key.setkey(KEYEX(false, false, false, 'W'),KEYEX(false, false, false, 0)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::HMOVE_UP, key) );
|
|
key.setkey(KEYEX(false, false, false, 'S'),KEYEX(false, false, false, 0)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::HMOVE_DOWN, key) );
|
|
key.setkey(KEYEX(false, false, false, 'A'),KEYEX(false, false, false, 0)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::HMOVE_LEFT, key) );
|
|
key.setkey(KEYEX(false, false, false, 'D'),KEYEX(false, false, false, 0)); m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::HMOVE_RIGHT, key) );
|
|
|
|
key.setkey(KEYEX(true,false,false,VK_OEM_5),KEYEX(true,false,false,VK_OEM_5)) ; m_BasicKeyMapList.insert( make_pair(HOTKEYCODE::SLOT4_12, key) );
|
|
}
|
|
|
|
KEYEX SGameWorldKeymapping::getBasicKey(int hotkeycode, int keyType /* = DEF_KEYTYPE::DEFAULT */)
|
|
{
|
|
std::map<int, DEFAULT_KEYS>::iterator it = m_BasicKeyMapList.begin();
|
|
it = m_BasicKeyMapList.find(hotkeycode);
|
|
if(it == m_BasicKeyMapList.end() )
|
|
{
|
|
assert("기본키값을 찾을 수 없음");
|
|
return KEYEX();
|
|
}
|
|
|
|
DEFAULT_KEYS key = it->second;
|
|
|
|
return key.getKey(keyType);
|
|
}
|
|
|
|
void SGameWorldKeymapping::newKeySetting(int version)
|
|
{
|
|
if( version <= 1 ) // 버전이 0또는 1일 경우
|
|
setKey_EPIC8_P1_1();
|
|
//if( version <= n ) // 2번 이후 부터는 여기로 추가..
|
|
// neskeyVerSion_n+1();
|
|
}
|
|
|
|
void SGameWorldKeymapping::setKey_EPIC8_P1_1()
|
|
{
|
|
// 1. 추가된 키
|
|
{
|
|
const int ADD_CODE_MAX = 2;
|
|
int keyCode[ADD_CODE_MAX] = {HOTKEYCODE::TITLE, HOTKEYCODE::ARENASCORE};
|
|
for(int i=0 ; i<ADD_CODE_MAX ; ++i)
|
|
SetKeymapping( keyCode[i], getBasicKey(keyCode[i]) );
|
|
}
|
|
// 2. 키 삭제
|
|
{
|
|
const int ERASE_CODE_MAX = 1;
|
|
int keyCode[ERASE_CODE_MAX] = {HOTKEYCODE::INSTANCEGAME};
|
|
for(int i=0 ; i<ERASE_CODE_MAX ; ++i)
|
|
SetKeymapping( keyCode[i], KEYEX() );
|
|
}
|
|
// 3. 기존 키 변경
|
|
{
|
|
const int NONEUSE_CODE_MAX = 7;
|
|
int keyCode[NONEUSE_CODE_MAX] = { HOTKEYCODE::SKILL,HOTKEYCODE::DESTRUCTION, HOTKEYCODE::UPGRADE_WND,
|
|
HOTKEYCODE::ITEMCOMBINE_WND, HOTKEYCODE::REPAIR_WND, HOTKEYCODE::SLOTUPDOWN, HOTKEYCODE::DURABILITY };
|
|
|
|
for(int i=0 ;i<NONEUSE_CODE_MAX ; ++i)
|
|
SetKeymapping( keyCode[i], getBasicKey(keyCode[i]) );
|
|
}
|
|
}
|
|
|
|
|
|
bool SGameWorldKeymapping::operator == ( const SGameWorldKeymapping& keymapping )
|
|
{
|
|
|
|
for(int i=0;i<HOTKEYCODE::MAX;i++)
|
|
{
|
|
/*if(m_HotKeyStringInfo[i] != ((SGameWorldKeymapping&)keymapping).GetHotKeyStringInfo(i)
|
|
|| m_StateHotKeyList[i] != ((SGameWorldKeymapping&)keymapping).GetHotKeyState(i)
|
|
|| m_PushedHotKeyList[i] != ((SGameWorldKeymapping&)keymapping).IsHotKeyPushed(i)
|
|
||*/
|
|
if( m_CurKeyMapTable[i] != ((SGameWorldKeymapping&)keymapping).GetKeymapTable(i) )
|
|
return false;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
|
|
bool SGameWorldKeymapping::operator != ( const SGameWorldKeymapping& keymapping )
|
|
{
|
|
return !(operator ==(keymapping));
|
|
}
|
|
|
|
|
|
SGameWorldKeymapping &GetGameKeymapping()
|
|
{
|
|
static SGameWorldKeymapping keymapping;
|
|
return keymapping;
|
|
}
|
|
|
|
|
|
SGameWorldKeymapping &GetGameSavedKeymapping()
|
|
{
|
|
static SGameWorldKeymapping usersavekeymapping;
|
|
return usersavekeymapping;
|
|
}
|