Reorganizes project and sets up bazel.
This commit is contained in:
187
ctrls.cpp
Executable file
187
ctrls.cpp
Executable file
@@ -0,0 +1,187 @@
|
||||
/***************************************************************************
|
||||
* Copyright (C) 2001-2023 by Tom Hicks *
|
||||
* headhunter3@gmail.com *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
* it under the terms of the GNU General Public License as published by *
|
||||
* the Free Software Foundation; either version 2 of the License, or *
|
||||
* (at your option) any later version. *
|
||||
* *
|
||||
* This program is distributed in the hope that it will be useful, *
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
||||
* GNU General Public License for more details. *
|
||||
* *
|
||||
* You should have received a copy of the GNU General Public License *
|
||||
* along with this program; if not, write to the *
|
||||
* Free Software Foundation, Inc., *
|
||||
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
||||
***************************************************************************/
|
||||
#include "ctrls.h"
|
||||
|
||||
#include "strmanip.h"
|
||||
using std::endl;
|
||||
using std::ostream;
|
||||
using std::string;
|
||||
|
||||
namespace OpenArena {
|
||||
void ControlScheme::LoadDefaultControlScheme() {
|
||||
Bind(OpenArena::KEY_LBUTTON, ACTION_FORWARD);
|
||||
Bind(OpenArena::KEY_RBUTTON, ACTION_BACKWARD);
|
||||
Bind(OpenArena::KEY_LEFT, ACTION_LOOKLEFT);
|
||||
Bind(OpenArena::KEY_RIGHT, ACTION_LOOKRIGHT);
|
||||
Bind(OpenArena::KEY_UP, ACTION_LOOKUP);
|
||||
Bind(OpenArena::KEY_DOWN, ACTION_LOOKDOWN);
|
||||
Bind(OpenArena::KEY_S, ACTION_MOVELEFT);
|
||||
Bind(OpenArena::KEY_D, ACTION_MOVERIGHT);
|
||||
Bind(OpenArena::KEY_SPACE, ACTION_MOVEUP);
|
||||
Bind(OpenArena::KEY_A, ACTION_MOVEDOWN);
|
||||
Bind(OpenArena::KEY_F, ACTION_FIREPRIMARY);
|
||||
Bind(OpenArena::KEY_G, ACTION_FIRESECONDARY);
|
||||
Bind(OpenArena::KEY_T, ACTION_WEAPONNEXT);
|
||||
Bind(OpenArena::KEY_R, ACTION_WEAPONPREV);
|
||||
Bind(OpenArena::KEY_L, ACTION_TOGGLE_LIGHTS);
|
||||
Bind(OpenArena::KEY_P, ACTION_TOGGLE_FPS);
|
||||
Bind(OpenArena::KEY_OEM_3, ACTION_TOGGLE_CONSOLE);
|
||||
Bind(OpenArena::KEY_M, ACTION_TOGGLE_MOUSELOOK);
|
||||
Bind(OpenArena::KEY_Q, ACTION_QUICKMOUSELOOK);
|
||||
Bind(OpenArena::KEY_W, ACTION_ROLLLEFT);
|
||||
Bind(OpenArena::KEY_E, ACTION_ROLLRIGHT);
|
||||
}
|
||||
|
||||
void ControlScheme::UnBindAll() {
|
||||
OpenArena::Keys key;
|
||||
for (key = (OpenArena::Keys)0; key < (OpenArena::Keys)256; key = (OpenArena::Keys)(key + 1)) {
|
||||
UnBind(key);
|
||||
}
|
||||
}
|
||||
|
||||
void ControlScheme::UnBind(OpenArena::Keys key) {
|
||||
keyActions[key] = ACTION_NONE;
|
||||
}
|
||||
|
||||
void ControlScheme::Bind(OpenArena::Keys key, Action action) {
|
||||
keyActions[key] = action;
|
||||
}
|
||||
|
||||
void ControlScheme::WriteToStream(std::ostream& output) {
|
||||
// output << " bind " << action << keyname << endl;
|
||||
OpenArena::Keys key;
|
||||
for (key = (OpenArena::Keys)0; key < (OpenArena::Keys)256; key = (OpenArena::Keys)(key + 1)) {
|
||||
if (keyActions[key] != ACTION_NONE) {
|
||||
output << " bind " << ActionName(keyActions[key]) << GetKeyName(key) << endl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ControlScheme::Action ControlScheme::GetAction(const char* actionName) {
|
||||
string str = actionName;
|
||||
str = tolower(str);
|
||||
if (str == "none") {
|
||||
return ACTION_NONE;
|
||||
} else if (str == "forward") {
|
||||
return ACTION_FORWARD;
|
||||
} else if (str == "backward") {
|
||||
return ACTION_BACKWARD;
|
||||
} else if (str == "lookleft") {
|
||||
return ACTION_LOOKLEFT;
|
||||
} else if (str == "lookright") {
|
||||
return ACTION_LOOKRIGHT;
|
||||
} else if (str == "lookup") {
|
||||
return ACTION_LOOKUP;
|
||||
} else if (str == "lookdown") {
|
||||
return ACTION_LOOKDOWN;
|
||||
} else if (str == "moveleft") {
|
||||
return ACTION_MOVELEFT;
|
||||
} else if (str == "moveright") {
|
||||
return ACTION_MOVERIGHT;
|
||||
} else if (str == "moveup") {
|
||||
return ACTION_MOVEUP;
|
||||
} else if (str == "movedown") {
|
||||
return ACTION_MOVEDOWN;
|
||||
} else if (str == "rollleft") {
|
||||
return ACTION_ROLLLEFT;
|
||||
} else if (str == "rollright") {
|
||||
return ACTION_ROLLRIGHT;
|
||||
} else if (str == "fireprimary") {
|
||||
return ACTION_FIREPRIMARY;
|
||||
} else if (str == "firesecondary") {
|
||||
return ACTION_FIRESECONDARY;
|
||||
} else if (str == "weaponnext") {
|
||||
return ACTION_WEAPONNEXT;
|
||||
} else if (str == "weaponprev") {
|
||||
return ACTION_WEAPONPREV;
|
||||
} else if (str == "togglelights") {
|
||||
return ACTION_TOGGLE_LIGHTS;
|
||||
} else if (str == "togglefps") {
|
||||
return ACTION_TOGGLE_FPS;
|
||||
} else if (str == "toggleconsole") {
|
||||
return ACTION_TOGGLE_CONSOLE;
|
||||
} else if (str == "togglemouselook") {
|
||||
return ACTION_TOGGLE_MOUSELOOK;
|
||||
} else if (str == "quickmouselook") {
|
||||
return ACTION_QUICKMOUSELOOK;
|
||||
} else {
|
||||
return ACTION_NONE;
|
||||
}
|
||||
}
|
||||
|
||||
string ControlScheme::ActionName(Action action) {
|
||||
switch (action) {
|
||||
case ACTION_NONE:
|
||||
return "none";
|
||||
case ACTION_FORWARD:
|
||||
return "forward";
|
||||
case ACTION_BACKWARD:
|
||||
return "backward";
|
||||
case ACTION_LOOKLEFT:
|
||||
return "lookleft";
|
||||
case ACTION_LOOKRIGHT:
|
||||
return "lookright";
|
||||
case ACTION_LOOKUP:
|
||||
return "lookup";
|
||||
case ACTION_LOOKDOWN:
|
||||
return "lookdown";
|
||||
case ACTION_MOVELEFT:
|
||||
return "moveleft";
|
||||
case ACTION_MOVERIGHT:
|
||||
return "moveright";
|
||||
case ACTION_MOVEUP:
|
||||
return "moveup";
|
||||
case ACTION_MOVEDOWN:
|
||||
return "movedown";
|
||||
case ACTION_ROLLLEFT:
|
||||
return "rollleft";
|
||||
case ACTION_ROLLRIGHT:
|
||||
return "rollright";
|
||||
case ACTION_FIREPRIMARY:
|
||||
return "fireprimary";
|
||||
case ACTION_FIRESECONDARY:
|
||||
return "firesecondary";
|
||||
case ACTION_WEAPONNEXT:
|
||||
return "weaponnext";
|
||||
case ACTION_WEAPONPREV:
|
||||
return "weaponprev";
|
||||
case ACTION_TOGGLE_LIGHTS:
|
||||
return "togglelights";
|
||||
case ACTION_TOGGLE_FPS:
|
||||
return "togglefps";
|
||||
case ACTION_TOGGLE_CONSOLE:
|
||||
return "toggleconsole";
|
||||
case ACTION_TOGGLE_MOUSELOOK:
|
||||
return "togglemouselook";
|
||||
case ACTION_QUICKMOUSELOOK:
|
||||
return "quickmouselook";
|
||||
default:
|
||||
return "unknown";
|
||||
};
|
||||
}
|
||||
|
||||
bool ControlScheme::IsBound(OpenArena::Keys key, Action action) {
|
||||
if (keyActions[key] == action) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
} // End namespace OpenArena
|
||||
Reference in New Issue
Block a user