447 lines
10 KiB
C++
447 lines
10 KiB
C++
#include <cctype>
|
|
#include "strmanip.h"
|
|
|
|
bool Truth(std::string str)
|
|
{
|
|
if (toupper(str[0]) == 'T' || str[0] == '1')
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
int Integer(std::string str)
|
|
{
|
|
int last = str.length() - 1;
|
|
int number = 0;
|
|
|
|
for (int x = last; x>=0; x--)
|
|
{
|
|
switch(str[x])
|
|
{
|
|
case '1':
|
|
number += (int)pow(10.0, last-x);
|
|
break;
|
|
case '2':
|
|
number += 2 * (int)pow(10.0, last-x);
|
|
break;
|
|
case '3':
|
|
number += 3 * (int)pow(10.0, last-x);
|
|
break;
|
|
case '4':
|
|
number += 4 * (int)pow(10.0, last-x);
|
|
break;
|
|
case '5':
|
|
number += 5 * (int)pow(10.0, last-x);
|
|
break;
|
|
case '6':
|
|
number += 6 * (int)pow(10.0, last-x);
|
|
break;
|
|
case '7':
|
|
number += 7 * (int)pow(10.0, last-x);
|
|
break;
|
|
case '8':
|
|
number += 8 * (int)pow(10.0, last-x);
|
|
break;
|
|
case '9':
|
|
number += 9 * (int)pow(10.0, last-x);
|
|
}
|
|
}
|
|
return number;
|
|
}
|
|
|
|
float Floating(std::string str)
|
|
{
|
|
//this doesn't work right yet so use atof for now
|
|
|
|
int last = str.length() - 1;
|
|
float number = 0.0f;
|
|
bool period = false;
|
|
|
|
for (int x = last; x>=0; x--)
|
|
{
|
|
switch(str[x])
|
|
{
|
|
case '1':
|
|
number += (float)pow(10.0, last-x);
|
|
break;
|
|
case '2':
|
|
number += 2 * (float)pow(10.0, last-x);
|
|
break;
|
|
case '3':
|
|
number += 3 * (float)pow(10.0, last-x);
|
|
break;
|
|
case '4':
|
|
number += 4 * (float)pow(10.0, last-x);
|
|
break;
|
|
case '5':
|
|
number += 5 * (float)pow(10.0, last-x);
|
|
break;
|
|
case '6':
|
|
number += 6 * (float)pow(10.0, last-x);
|
|
break;
|
|
case '7':
|
|
number += 7 * (float)pow(10.0, last-x);
|
|
break;
|
|
case '8':
|
|
number += 8 * (float)pow(10.0, last-x);
|
|
break;
|
|
case '9':
|
|
number += 9 * (float)pow(10.0, last-x);
|
|
break;
|
|
case '.':
|
|
if (!period)
|
|
{
|
|
number *= (float)pow(10.0, -(last-x));
|
|
last -= (x+1);
|
|
period = true;
|
|
}
|
|
else
|
|
return number;
|
|
|
|
}
|
|
}
|
|
|
|
if(str[0] =='-')
|
|
return -number;
|
|
else
|
|
return number;
|
|
}
|
|
|
|
string KeyString(uint8 key)
|
|
{
|
|
switch (key)
|
|
{
|
|
case OpenArena::KEY_LBUTTON:
|
|
return "mouse1";
|
|
case OpenArena::KEY_RBUTTON:
|
|
return "mouse2";
|
|
case OpenArena::KEY_MBUTTON:
|
|
return "mouse3";
|
|
case OpenArena::KEY_TAB:
|
|
return "tab";
|
|
case OpenArena::KEY_RETURN:
|
|
return "enter";
|
|
case OpenArena::KEY_SHIFT:
|
|
return "shift";
|
|
case OpenArena::KEY_CONTROL:
|
|
return "control";
|
|
case OpenArena::KEY_PAUSE:
|
|
return "pause";
|
|
case OpenArena::KEY_CAPITAL:
|
|
return "capslock";
|
|
case OpenArena::KEY_ESCAPE:
|
|
return "esc";
|
|
case OpenArena::KEY_SPACE:
|
|
return "space";
|
|
case OpenArena::KEY_PRIOR:
|
|
return "pageup";
|
|
case OpenArena::KEY_NEXT:
|
|
return "pagedown";
|
|
case OpenArena::KEY_END:
|
|
return "end";
|
|
case OpenArena::KEY_HOME:
|
|
return "home";
|
|
case OpenArena::KEY_LEFT:
|
|
return "left";
|
|
case OpenArena::KEY_UP:
|
|
return "up";
|
|
case OpenArena::KEY_RIGHT:
|
|
return "right";
|
|
case OpenArena::KEY_DOWN:
|
|
return "down";
|
|
case OpenArena::KEY_INSERT:
|
|
return "insert";
|
|
case OpenArena::KEY_DELETE:
|
|
return "delete";
|
|
case OpenArena::KEY_LWIN:
|
|
return "lwin";
|
|
case OpenArena::KEY_RWIN:
|
|
return "rwin";
|
|
case OpenArena::KEY_APPS:
|
|
return "apps";
|
|
case OpenArena::KEY_NUMPAD0:
|
|
return "numpad0";
|
|
case OpenArena::KEY_NUMPAD1:
|
|
return "numpad1";
|
|
case OpenArena::KEY_NUMPAD2:
|
|
return "numpad2";
|
|
case OpenArena::KEY_NUMPAD3:
|
|
return "numpad3";
|
|
case OpenArena::KEY_NUMPAD4:
|
|
return "numpad4";
|
|
case OpenArena::KEY_NUMPAD5:
|
|
return "numpad5";
|
|
case OpenArena::KEY_NUMPAD6:
|
|
return "numpad6";
|
|
case OpenArena::KEY_NUMPAD7:
|
|
return "numpad7";
|
|
case OpenArena::KEY_NUMPAD8:
|
|
return "numpad8";
|
|
case OpenArena::KEY_NUMPAD9:
|
|
return "numpad9";
|
|
case OpenArena::KEY_MULTIPLY:
|
|
return "numpad*";
|
|
case OpenArena::KEY_ADD:
|
|
return "numpad+";
|
|
case OpenArena::KEY_SUBTRACT:
|
|
return "numpad-";
|
|
case OpenArena::KEY_DIVIDE:
|
|
return "numpad/";
|
|
case OpenArena::KEY_F1:
|
|
return "f1";
|
|
case OpenArena::KEY_F2:
|
|
return "f2";
|
|
case OpenArena::KEY_F3:
|
|
return "f3";
|
|
case OpenArena::KEY_F4:
|
|
return "f4";
|
|
case OpenArena::KEY_F5:
|
|
return "f5";
|
|
case OpenArena::KEY_F6:
|
|
return "f6";
|
|
case OpenArena::KEY_F7:
|
|
return "f7";
|
|
case OpenArena::KEY_F8:
|
|
return "f8";
|
|
case OpenArena::KEY_F9:
|
|
return "f9";
|
|
case OpenArena::KEY_F10:
|
|
return "f10";
|
|
case OpenArena::KEY_F11:
|
|
return "f11";
|
|
case OpenArena::KEY_F12:
|
|
return "f2";
|
|
case OpenArena::KEY_NUMLOCK:
|
|
return "numlock";
|
|
case OpenArena::KEY_SCROLL:
|
|
return "scroll";
|
|
case OpenArena::KEY_SEPARATOR:
|
|
return "separator";
|
|
default:
|
|
return "null";
|
|
};
|
|
}
|
|
uint8 KeyName(std::string str)
|
|
{
|
|
if (str.length() > 1)
|
|
{
|
|
if (str.substr(0,2) == "up")
|
|
return OpenArena::KEY_UP;
|
|
else if (str.substr(0,4) == "down")
|
|
return OpenArena::KEY_DOWN;
|
|
else if (str.substr(0,3) == "esc")
|
|
return OpenArena::KEY_ESCAPE;
|
|
else if (str.substr(0,6) == "pageup")
|
|
return OpenArena::KEY_PRIOR;
|
|
else if (str.substr(0,8) == "pagedown")
|
|
return OpenArena::KEY_NEXT;
|
|
else if (str.substr(0,5) == "right")
|
|
return OpenArena::KEY_RIGHT;
|
|
else if (str.substr(0,4) == "left")
|
|
return OpenArena::KEY_LEFT;
|
|
else if (str.substr(0,5) == "space")
|
|
return OpenArena::KEY_SPACE;
|
|
else if (str.substr(0,6) == "mouse1")
|
|
return OpenArena::KEY_LBUTTON;
|
|
else if (str.substr(0,6) == "mouse2")
|
|
return OpenArena::KEY_RBUTTON;
|
|
else if (str.substr(0,6) == "mouse3")
|
|
return OpenArena::KEY_MBUTTON;
|
|
else if (str.substr(0,4) == "home")
|
|
return OpenArena::KEY_HOME;
|
|
else if (str.substr(0,3) == "end")
|
|
return OpenArena::KEY_END;
|
|
else if (str.substr(0,3) == "tab")
|
|
return OpenArena::KEY_TAB;
|
|
else if (str.substr(0,5) == "enter")
|
|
return OpenArena::KEY_RETURN;
|
|
else if (str.substr(0,6) == "insert")
|
|
return OpenArena::KEY_INSERT;
|
|
else if (str.substr(0,6) == "delete")
|
|
return OpenArena::KEY_DELETE;
|
|
else if (str.substr(0,7) == "control")
|
|
return OpenArena::KEY_CONTROL;
|
|
else if (str.substr(0,5) == "shift")
|
|
return OpenArena::KEY_SHIFT;
|
|
else if (str.substr(0,7) == "numpad0")
|
|
return OpenArena::KEY_NUMPAD0;
|
|
else if (str.substr(0,7) == "numpad1")
|
|
return OpenArena::KEY_NUMPAD1;
|
|
else if (str.substr(0,7) == "numpad2")
|
|
return OpenArena::KEY_NUMPAD2;
|
|
else if (str.substr(0,7) == "numpad3")
|
|
return OpenArena::KEY_NUMPAD3;
|
|
else if (str.substr(0,7) == "numpad4")
|
|
return OpenArena::KEY_NUMPAD4;
|
|
else if (str.substr(0,7) == "numpad5")
|
|
return OpenArena::KEY_NUMPAD5;
|
|
else if (str.substr(0,7) == "numpad6")
|
|
return OpenArena::KEY_NUMPAD6;
|
|
else if (str.substr(0,7) == "numpad7")
|
|
return OpenArena::KEY_NUMPAD7;
|
|
else if (str.substr(0,7) == "numpad8")
|
|
return OpenArena::KEY_NUMPAD8;
|
|
else if (str.substr(0,7) == "numpad9")
|
|
return OpenArena::KEY_NUMPAD9;
|
|
else if (str.substr(0,9) == "separator")
|
|
return OpenArena::KEY_SEPARATOR;
|
|
else if (str.substr(0,4) == "lwin")
|
|
return OpenArena::KEY_LWIN;
|
|
else if (str.substr(0,4) == "rwin")
|
|
return OpenArena::KEY_RWIN;
|
|
else if (str.substr(0,4) == "apps")
|
|
return OpenArena::KEY_APPS;
|
|
else if (str.substr(0,7) == "numpad*")
|
|
return OpenArena::KEY_MULTIPLY;
|
|
else if (str.substr(0,7) == "numpad+")
|
|
return OpenArena::KEY_ADD;
|
|
else if (str.substr(0,7) == "numpad/")
|
|
return OpenArena::KEY_DIVIDE;
|
|
else if (str.substr(0,7) == "numpad-")
|
|
return OpenArena::KEY_SUBTRACT;
|
|
else if (str.substr(0,6) == "scroll")
|
|
return OpenArena::KEY_SCROLL;
|
|
else if (str.substr(0,7) == "numlock")
|
|
return OpenArena::KEY_NUMLOCK;
|
|
else if (str.substr(0,5) == "pause")
|
|
return OpenArena::KEY_PAUSE;
|
|
else if (str.substr(0,8) == "capslock")
|
|
return OpenArena::KEY_CAPITAL;
|
|
|
|
|
|
|
|
/*uncomment this to enable f1 as a mappable key
|
|
else if(str.substr(0,2) == "f1")
|
|
return OpenArena::KEY_F1;
|
|
*/
|
|
|
|
else if (str.substr(0,2) == "f2")
|
|
return OpenArena::KEY_F2;
|
|
else if (str.substr(0,2) == "f3")
|
|
return OpenArena::KEY_F3;
|
|
else if (str.substr(0,2) == "f4")
|
|
return OpenArena::KEY_F4;
|
|
else if (str.substr(0,2) == "f5")
|
|
return OpenArena::KEY_F5;
|
|
else if (str.substr(0,2) == "f6")
|
|
return OpenArena::KEY_F6;
|
|
else if (str.substr(0,2) == "f7")
|
|
return OpenArena::KEY_F7;
|
|
else if (str.substr(0,2) == "f8")
|
|
return OpenArena::KEY_F8;
|
|
else if (str.substr(0,2) == "f9")
|
|
return OpenArena::KEY_F9;
|
|
else if (str.substr(0,2) == "f10")
|
|
return OpenArena::KEY_F10;
|
|
else if (str.substr(0,2) == "f11")
|
|
return OpenArena::KEY_F11;
|
|
else if (str.substr(0,2) == "f12")
|
|
return OpenArena::KEY_F12;
|
|
//Add Game specific keys here and e-mail headhunter45@hotmail.com subject OpenArena keys so I can add them please
|
|
else if (str.substr(0,4) == "null")
|
|
return (uint8)NULL;
|
|
else
|
|
return (uint8)NULL;
|
|
}
|
|
else
|
|
{
|
|
if(str[0] == '~' || str[0] == '`')
|
|
return OpenArena::KEY_OEM_3;
|
|
else if (str[0] == '?' || str[0] == '/')
|
|
return OpenArena::KEY_OEM_2;
|
|
else if (str[0] == '.' || str[0] == '>')
|
|
return OpenArena::KEY_OEM_PERIOD;
|
|
else if (str[0] == '+' || str[0] == '=')
|
|
return OpenArena::KEY_OEM_PLUS;
|
|
else if (str[0] == ';' || str[0] == ':')
|
|
return OpenArena::KEY_OEM_1;
|
|
else if (str[0] == ',' || str[0] == '<')
|
|
return OpenArena::KEY_OEM_COMMA;
|
|
else if (str[0] == '-' || str[0] == '_')
|
|
return OpenArena::KEY_OEM_MINUS;
|
|
else if (str[0] == '[' || str[0] == '{')
|
|
return OpenArena::KEY_OEM_4;
|
|
else if (str[0] == ']' || str[0] == '}')
|
|
return OpenArena::KEY_OEM_6;
|
|
else if (str[0] == '\\' || str[0] == '|')
|
|
return OpenArena::KEY_OEM_5;
|
|
else if (str[0] == '\'' || str[0] == '"')
|
|
return OpenArena::KEY_OEM_7;
|
|
else if (isalpha(str[0]))
|
|
return toupper(str[0]) - 'A' + OpenArena::KEY_A;
|
|
else if(isdigit(str[0]))
|
|
return str[0] - '0' + OpenArena::KEY_0;
|
|
else
|
|
return OpenArena::KEY_UNKNOWN;
|
|
}
|
|
}
|
|
|
|
string Right(string str, uint32 len)
|
|
{
|
|
return str.substr(str.length()-len, len);
|
|
}
|
|
|
|
string Left(string str, uint32 len)
|
|
{
|
|
return str.substr(0, len);
|
|
}
|
|
|
|
string tolower(string str)
|
|
{
|
|
for(uint32 i=0; i<str.length(); i++)
|
|
str[i] = tolower(str[i]);
|
|
|
|
return str;
|
|
}
|
|
|
|
string toupper(string str)
|
|
{
|
|
for(uint32 i=0; i<str.length(); i++)
|
|
str[i] = toupper(str[i]);
|
|
|
|
return str;
|
|
}
|
|
|
|
string word(string str, uint32 wordNum)
|
|
{
|
|
///////////////
|
|
//stopped here
|
|
///////////////
|
|
uint32 start = 0;
|
|
uint32 length = 0;
|
|
uint32 maxLength = str.length();
|
|
if(str.length() > 0)
|
|
{
|
|
if(wordNum < 1)
|
|
{
|
|
while (!isspace(str[++length]) && length < maxLength);
|
|
|
|
return str.substr(start, length);
|
|
}
|
|
else
|
|
{
|
|
while(isspace(str[start]))
|
|
++start;
|
|
|
|
for(uint32 i=0; i<wordNum; i++)
|
|
{
|
|
while(start <maxLength && !isspace(str[start]))// && start <= maxLength)
|
|
++start;
|
|
while(start < maxLength && isspace(str[start]))
|
|
++start;
|
|
}
|
|
|
|
;
|
|
|
|
while((start+length) < maxLength && !isspace(str[start+length]))
|
|
++length;
|
|
|
|
return str.substr(start, length);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
return "";
|
|
}
|
|
}
|