#include "Key.h" #include "DEFINES.h" #include "Crawler.h" INCLUDE_game Input::Input(InputType type,int key) :type(type),key(key){} bool Input::Pressed(){ switch(type){ case KEY:{ return game->GetKey(Key(key)).bPressed; }break; case MOUSE:{ return game->GetMouse(key).bPressed; }break; case CONTROLLER:{ throw; //TODO: Throw for now, this control scheme is unsupported! }break; } } bool Input::Held(){ switch(type){ case KEY:{ return game->GetKey(Key(key)).bHeld; }break; case MOUSE:{ return game->GetMouse(key).bHeld; }break; case CONTROLLER:{ throw; //TODO: Throw for now, this control scheme is unsupported! }break; } } bool Input::Released(){ switch(type){ case KEY:{ return game->GetKey(Key(key)).bReleased; }break; case MOUSE:{ return game->GetMouse(key).bReleased; }break; case CONTROLLER:{ throw; //TODO: Throw for now, this control scheme is unsupported! }break; } } std::string Input::GetDisplayName(){ return GenericKey::keyLiteral.at({type,key}); } InputGroup::InputGroup(){} void InputGroup::AddKeybind(Input bind){ keys.insert(bind); } void InputGroup::RemoveKeybind(Input bind){ keys.erase(bind); } bool InputGroup::Pressed(){ for(Input input:keys){ if(input.Pressed())return true; } return false; } bool InputGroup::Held(){ for(Input input:keys){ if(input.Held())return true; } return false; } bool InputGroup::Released(){ for(Input input:keys){ if(input.Released())return true; } return false; } std::string InputGroup::GetDisplayName(){ std::string combinationDisplay=""; for(Input input:keys){ if(combinationDisplay.length()>0){ combinationDisplay+=","; } combinationDisplay+=input.GetDisplayName(); } return combinationDisplay; } std::map,std::string> GenericKey::keyLiteral={ {{KEY, NONE},""}, {{KEY, A},"A"}, {{KEY, B},"B"}, {{KEY, C},"C"}, {{KEY, D},"D"}, {{KEY, E},"E"}, {{KEY, F},"F"}, {{KEY, G},"G"}, {{KEY, H},"H"}, {{KEY, I},"I"}, {{KEY, J},"J"}, {{KEY, K},"L"}, {{KEY, L},"L"}, {{KEY, M},"M"}, {{KEY, N},"N"}, {{KEY, O},"O"}, {{KEY, P},"P"}, {{KEY, Q},"Q"}, {{KEY, R},"R"}, {{KEY, S},"S"}, {{KEY, T},"T"}, {{KEY, U},"U"}, {{KEY, V},"V"}, {{KEY, W},"W"}, {{KEY, X},"X"}, {{KEY, Y},"Y"}, {{KEY, Z},"Z"}, {{KEY, K0},"0"}, {{KEY, K1},"1"}, {{KEY, K2},"2"}, {{KEY, K3},"3"}, {{KEY, K4},"4"}, {{KEY, K5},"5"}, {{KEY, K6},"6"}, {{KEY, K7},"7"}, {{KEY, K8},"8"}, {{KEY, K9},"9"}, {{KEY, F1},"F1"}, {{KEY, F2},"F2"}, {{KEY, F3},"F3"}, {{KEY, F4},"F4"}, {{KEY, F5},"F5"}, {{KEY, F6},"F6"}, {{KEY, F7},"F7"}, {{KEY, F8},"F8"}, {{KEY, F9},"F9"}, {{KEY, F10},"F10"}, {{KEY, F11},"F11"}, {{KEY, F12},"F12"}, {{KEY, UP},"UP"}, {{KEY, DOWN},"DOWN"}, {{KEY, LEFT},"LEFT"}, {{KEY, RIGHT},"RIGHT"}, {{KEY, SPACE},"SPACE"}, {{KEY, TAB},"TAB"}, {{KEY, SHIFT},"SHIFT"}, {{KEY, CTRL},"CTRL"}, {{KEY, INS},"INS"}, {{KEY, DEL},"DEL"}, {{KEY, HOME},"HOME"}, {{KEY, END},"END"}, {{KEY, PGUP},"PGUP"}, {{KEY, PGDN},"PGDN"}, {{KEY, BACK},"BACK"}, {{KEY, ESCAPE},"ESC"}, {{KEY, RETURN},"ENTER"}, {{KEY, ENTER},"ENTER"}, {{KEY, PAUSE},"PAUSE"}, {{KEY, SCROLL},"SCR LK"}, {{KEY, NP0},"NP0"}, {{KEY, NP1},"NP1"}, {{KEY, NP2},"NP2"}, {{KEY, NP3},"NP3"}, {{KEY, NP4},"NP4"}, {{KEY, NP5},"NP5"}, {{KEY, NP6},"NP6"}, {{KEY, NP7},"NP7"}, {{KEY, NP8},"NP8"}, {{KEY, NP9},"NP9"}, {{KEY, NP_MUL},"NP*"}, {{KEY, NP_DIV},"NP/"}, {{KEY, NP_ADD},"NP+"}, {{KEY, NP_SUB},"NP-"}, {{KEY, NP_DECIMAL},"NP."}, {{KEY, PERIOD},"."}, {{KEY, EQUALS},"="}, {{KEY, COMMA},","}, {{KEY, MINUS},"-"}, {{KEY, OEM_1},";"}, {{KEY, OEM_2},"/"}, {{KEY, OEM_3},"~"}, {{KEY, OEM_4},"["}, {{KEY, OEM_5},"\\"}, {{KEY, OEM_6},"]"}, {{KEY, OEM_7},"\""}, {{KEY, OEM_8},"\\"}, {{KEY, CAPS_LOCK},"CAP LK"}, {{KEY, olc::ENUM_END},""}, {{MOUSE, Mouse::LEFT},"L.MOUSE"}, {{MOUSE, Mouse::RIGHT},"R.MOUSE"}, {{MOUSE, Mouse::MIDDLE},"M.MOUSE"}, };