diff --git a/OpenArena/oa/config/my.cfg b/OpenArena/oa/config/my.cfg index bffcf54..9b32a81 100644 --- a/OpenArena/oa/config/my.cfg +++ b/OpenArena/oa/config/my.cfg @@ -18,7 +18,7 @@ bind togglelights l bind togglefps p bind toggleconsole ~ bind toggleconsole ` -bind toggleconsole i +bind toggleconsole z bind togglemouselook m bind quickmouselook y set turnspeed 0.02 @@ -33,4 +33,4 @@ map intro.map set maxfps 60 set rollleft w set rollright e -set sound 1 +set sound false diff --git a/include/ctrls.h b/include/ctrls.h index 150d596..76e4a70 100644 --- a/include/ctrls.h +++ b/include/ctrls.h @@ -8,6 +8,7 @@ class ControlSchemeClass public: void LoadDefaultControlScheme(); void ClearControlScheme(); + void Unbind(uint8); list forward; list backward; diff --git a/include/level.h b/include/level.h index 75ff76a..b56aaee 100644 --- a/include/level.h +++ b/include/level.h @@ -50,6 +50,7 @@ public: void LoadGLTextures(); void Render(); void UnloadMap(); + void UpdateConsole(char); uint32 FPS(); void ParseCmds(LPSTR); diff --git a/include/list.h b/include/list.h index f85053c..f06a6c5 100644 --- a/include/list.h +++ b/include/list.h @@ -179,28 +179,29 @@ void list::Remove(ItemType target) if(head != NULL) { listNode* temp = head; - tail->next = head; - + listNode* temp2 = head; + while(temp->next != NULL && temp->data != target) { - tail->next = temp; + temp2 = temp; temp = temp->next; } if(temp->data == target) { - if(tail->next != head) + if(temp != head) { - tail->next->next = temp->next; + temp2->next = temp->next; delete temp; } else { + if(tail == head) + tail = NULL; head = head->next; - delete tail->next; + delete temp2; } } - tail->next = NULL; } } diff --git a/include/main.h b/include/main.h index 6ecb16a..0ea6346 100644 --- a/include/main.h +++ b/include/main.h @@ -22,7 +22,8 @@ static bool keys[256]; // Array for which keys are down now static bool keys2[256]; // Array for which keys are were down already static bool active=true; // Is window active flag static bool fullscreen=true; // Is window fullscreen flag -static bool showConsole = false;// Do we need to draw the console +//static bool showConsole = false;// Do we need to draw the console + //static SCREEN g_Screen = {800,600,16,1,"OpenArena"}; diff --git a/oa.ncb b/oa.ncb index db65296..3cd8489 100644 Binary files a/oa.ncb and b/oa.ncb differ diff --git a/oa.sln b/oa.sln index 8354398..8fd5b8f 100644 --- a/oa.sln +++ b/oa.sln @@ -1,4 +1,4 @@ -Microsoft Visual Studio Solution File, Format Version 8.00 +Microsoft Visual Studio Solution File, Format Version 7.00 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "oa", "oa.vcproj", "{6F5D0FF6-A032-4356-932E-865B601E0DD4}" ProjectSection(ProjectDependencies) = postProject EndProjectSection diff --git a/oa.suo b/oa.suo index 3225099..8ef1518 100644 Binary files a/oa.suo and b/oa.suo differ diff --git a/oa.vcproj b/oa.vcproj index 25e64a6..9cd6c58 100644 --- a/oa.vcproj +++ b/oa.vcproj @@ -1,7 +1,7 @@ + + diff --git a/src/ctrls.cpp b/src/ctrls.cpp index 8ef2f9d..8a166e7 100644 --- a/src/ctrls.cpp +++ b/src/ctrls.cpp @@ -3,7 +3,7 @@ // Module: ctrls.cpp // Author: Tom Hicks // Creation: 09-01-2003 -// LastEdit: 10-09-2003 +// LastEdit: 10-20-2003 // Editors: Tom Hicks // // Purpose: @@ -12,7 +12,11 @@ // Summary of Methods: // ControlSchemeClass // void LoadDefaultControlScheme(); +// -Loads the default control scheme // void ClearControlScheme(); +// -Clears the control scheme +// void Unbind(uint8 key); +// -Removes key from all control lists. // // Summary of Properties: // ControlSchemeClass @@ -110,3 +114,24 @@ void ControlSchemeClass::ClearControlScheme() weaponPrev.Clear(); } +void ControlSchemeClass::Unbind(uint8 key) +{ + backward.Remove(key); + firePrimary.Remove(key); + fireSecondary.Remove(key); + forward.Remove(key); + lookDown.Remove(key); + lookUp.Remove(key); + lookRight.Remove(key); + lookLeft.Remove(key); + moveDown.Remove(key); + moveUp.Remove(key); + moveRight.Remove(key); + quickMouseLook.Remove(key); + toggleConsole.Remove(key); + toggleFPS.Remove(key); + toggleLights.Remove(key); + toggleMouseLook.Remove(key); + weaponNext.Remove(key); + weaponPrev.Remove(key); +} \ No newline at end of file diff --git a/src/level.cpp b/src/level.cpp index 52411ef..98b5b16 100644 --- a/src/level.cpp +++ b/src/level.cpp @@ -3,7 +3,7 @@ // Module: level.cpp // Author: Tom Hicks // Creation: 09-01-2003 -// LastEdit: 10-09-2003 +// LastEdit: 10-20-2003 // Editors: Tom Hicks // // Purpose: @@ -32,12 +32,12 @@ using namespace std; LEVEL::LEVEL() { - +/* consoleHistory[0] = "hello0"; consoleHistory[1] = "hello1"; consoleHistory[MAX_CONSOLE_HISTORY_LINES-2] = "hello3"; consoleHistory[MAX_CONSOLE_HISTORY_LINES-1] = "hello4"; - +*/ textureNames = NULL; numTextures = 0; @@ -80,9 +80,6 @@ LEVEL::~LEVEL() } } - - - bool LEVEL::LoadMap(string mapname) { ifstream input; @@ -284,20 +281,6 @@ void LEVEL::Render() } glEnd(); } -/**/ - - /* - glBindTexture(GL_TEXTURE_2D, 1); - glBegin(GL_TRIANGLES); - glTexCoord2f(0,0); - glVertex3f(-10, -10,-5); - glTexCoord2f(0,2); - glVertex3f(-10,10,-5); - glTexCoord2f(2,0); - glVertex3f(10,-10,-5); - glEnd(); - /**/ - glPopMatrix(); //Draw HUD @@ -464,7 +447,7 @@ void LEVEL::Execute(string cmd) uint32 i=0xFFFFFFFF; while(word(cmd, ++i) != "") { - command = word(cmd, i); + command = tolower(word(cmd, i)); if(command == "set") { @@ -588,6 +571,19 @@ void LEVEL::Execute(string cmd) { nextLevel = word(cmd, ++i); } + else if(command == "unbind") + { + command = tolower(word(cmd, ++i)); + + if(command == "all") + { + defaultPlayer[0].controls.ClearControlScheme(); + } + else + { + defaultPlayer[0].controls.Unbind(KeyName(command)); + } + } } } @@ -948,4 +944,30 @@ void LEVEL::SaveConfig(string cfgname) void LEVEL::Print(int x, int y, const char* str, unsigned int set) { glFont.Print(x,y,str, set); +} + +void LEVEL::UpdateConsole(char newChar) +{ + if(newChar == '\n') + { + Execute(tolower(consoleHistory[0])); + for (int i=MAX_CONSOLE_HISTORY_LINES - 1; i>0; i--) + { + consoleHistory[i] = consoleHistory[i-1]; + } + consoleHistory[0] = ""; + } + else if(newChar == VK_BACK) + { + consoleHistory[0] = Left(consoleHistory[0], consoleHistory[0].length()-1); + } + else + { + consoleHistory[0] = consoleHistory[0] + newChar; + /* + char errmsg[256]; + sprintf(errmsg, "Unhangled keypress: %d", newChar); + MessageBox(NULL, errmsg, "Balls", MB_OK); + */ + } } \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index 1be341f..f954c3d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,33 +1,56 @@ -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////// // -// Author: Tom Hicks -// Module: main.cpp -// Purpose: This is an implementation of the openarena SDK. +// Module: main.cpp +// Author: Tom Hicks +// Creation: 09-01-2003 +// LastEdit: 10-20-2003 +// Editors: Tom Hicks // -////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// Purpose: +// To implement the OpenArena SDK. +// +// Summary of Methods: +// Global +// -InitControls() +// Loads the defaultPlayer's configuration. +// -InitGL() +// Initializes OpenGL and is responsible for loading textures. +// -ResizeGLScene(GLsizei width, GLsizei height) +// Resizes the viewport to the current size of the visible area of the window specified by width and height. +// -KillGLWindow() +// Closes the window. +// -CreateGLWindow(string title, int width, int height, int bits, bool fullscreenflag) +// Creates the window with the specified parameters. +// -WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) +// Main procedure. +// -WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) +// Window Procedure for the OpenGL window. +// +//////////////////////////////////////////////////////////////////////////////// - -///////////////////////////////////////////////////////////// //include necessary header files #include "../include/main.h" - //link necessary libraries #pragma comment(lib, "opengl32.lib") #pragma comment(lib, "glu32.lib") #pragma comment(lib, "glaux.lib") #pragma comment(lib, "winmm.lib") - +//Ensure CDS_FULLSCREEN is defined #ifndef CDS_FULLSCREEN #define CDS_FULLSCREEN 4 #endif - - using namespace std; void InitControls(); +int InitGL(GLvoid); +void ReSizeGLScene(GLsizei width, GLsizei height); +bool CreateGLWindow(string title, int width, int height, int bits, bool fullscreenflag); +void KillGLWindow(); +int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow); +LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam); ////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Function Definitions @@ -89,7 +112,7 @@ int InitGL(GLvoid) // Post: // -GLvoid ReSizeGLScene(GLsizei width, GLsizei height) +void ReSizeGLScene(GLsizei width, GLsizei height) { if (height==0) height=1; @@ -103,7 +126,7 @@ GLvoid ReSizeGLScene(GLsizei width, GLsizei height) glLoadIdentity(); } -GLvoid KillGLWindow(GLvoid) +void KillGLWindow() { if (g_Screen.fullscreen) { @@ -275,7 +298,7 @@ bool CreateGLWindow(string title, int width, int height, int bits, bool fullscre return true; } -LRESULT CALLBACK WndProc( HWND hWnd, +LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam) @@ -312,8 +335,46 @@ LRESULT CALLBACK WndProc( HWND hWnd, } case WM_KEYDOWN: { - keys[wParam] = true; - return 0; + if(level.showConsole) + { + level.defaultPlayer[0].controls.toggleConsole.FirstPosition(); + if(wParam == level.defaultPlayer[0].controls.toggleConsole.Retrieve()) + { + level.showConsole = false; + } + else + { + while(level.defaultPlayer[0].controls.toggleConsole.NextPosition() && level.showConsole) + { + if(level.defaultPlayer[0].controls.toggleConsole.Retrieve() == wParam) + { + level.showConsole = false; + } + } + } + + if(wParam == VK_RETURN) + { + level.UpdateConsole('\n'); + } + else if(wParam == VK_SPACE) + { + level.UpdateConsole(' '); + } + else if(wParam == VK_BACK) + { + level.UpdateConsole(VK_BACK); + } + else if(isalpha(uint8(wParam))) + { + level.UpdateConsole(wParam); + } + } + else + { + keys[wParam] = true; + return 0; + } } case WM_KEYUP: { @@ -424,304 +485,304 @@ int WINAPI WinMain( HINSTANCE hInstance, { level.defaultPlayer[0].camera.Update(); - if(fullscreen) + if(level.showConsole) { - level.screen.fullscreen = true; - } - - if (level.mlook) - { - level.defaultPlayer[0].camera.SetViewByMouse(g_Screen); + if(keys['I'] && !keys2['I']) + level.showConsole = false; + //level.UpdateConsole('\n'); } else { - SetCursorPos(g_Screen.width/2, g_Screen.height/2); - } - - ////////// - //Move Backward - if(!level.defaultPlayer->controls.backward.IsEmpty()) - { - level.defaultPlayer->controls.backward.FirstPosition(); - if(keys[level.defaultPlayer->controls.backward.Retrieve()]) + if (level.mlook) { - level.defaultPlayer->camera.MoveCamera(-level.moveSpeed); + level.defaultPlayer[0].camera.SetViewByMouse(g_Screen); } else { - while(level.defaultPlayer->controls.backward.NextPosition() && (keys[level.defaultPlayer->controls.backward.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.backward.Retrieve()]) - { - level.defaultPlayer->camera.MoveCamera(-level.moveSpeed); - } - } + SetCursorPos(g_Screen.width/2, g_Screen.height/2); } - } - ////////// - //Move forward - if(!level.defaultPlayer->controls.forward.IsEmpty()) - { - level.defaultPlayer->controls.forward.FirstPosition(); - if(keys[level.defaultPlayer->controls.forward.Retrieve()]) + ////////// + //Move Backward + if(!level.defaultPlayer->controls.backward.IsEmpty()) { - level.defaultPlayer->camera.MoveCamera(level.moveSpeed); - } - else - { - while(level.defaultPlayer->controls.forward.NextPosition() && (keys[level.defaultPlayer->controls.forward.Retrieve()] != true)); + level.defaultPlayer->controls.backward.FirstPosition(); + if(keys[level.defaultPlayer->controls.backward.Retrieve()]) { - if(keys[level.defaultPlayer->controls.forward.Retrieve()]) - { - level.defaultPlayer->camera.MoveCamera(level.moveSpeed); - } + level.defaultPlayer->camera.MoveCamera(-level.moveSpeed); } - } - } - - ////////// - //Strafe Left - if(!level.defaultPlayer->controls.moveLeft.IsEmpty()) - { - level.defaultPlayer->controls.moveLeft.FirstPosition(); - if(keys[level.defaultPlayer->controls.moveLeft.Retrieve()]) - { - level.defaultPlayer->camera.StrafeCamera(-level.moveSpeed); - } - else - { - while(level.defaultPlayer->controls.moveLeft.NextPosition() && (keys[level.defaultPlayer->controls.moveLeft.Retrieve()] != true)); + else { - if(keys[level.defaultPlayer->controls.moveLeft.Retrieve()]) + while(level.defaultPlayer->controls.backward.NextPosition() && (keys[level.defaultPlayer->controls.backward.Retrieve()] != true)); { - level.defaultPlayer->camera.StrafeCamera(-level.moveSpeed); - } - } - } - } - - ////////// - //Strafe Right - if(!level.defaultPlayer->controls.moveRight.IsEmpty()) - { - level.defaultPlayer->controls.moveRight.FirstPosition(); - if(keys[level.defaultPlayer->controls.moveRight.Retrieve()]) - { - level.defaultPlayer[0].camera.StrafeCamera(level.moveSpeed); - } - else - { - while(level.defaultPlayer->controls.moveRight.NextPosition() && (keys[level.defaultPlayer->controls.moveRight.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.moveRight.Retrieve()]) - { - level.defaultPlayer->camera.StrafeCamera(level.moveSpeed); - } - } - } - } - - ////////// - //Keyboard Look Left - if(!level.defaultPlayer->controls.lookLeft.IsEmpty()) - { - level.defaultPlayer->controls.lookLeft.FirstPosition(); - if(keys[level.defaultPlayer->controls.lookLeft.Retrieve()]) - { - level.defaultPlayer[0].camera.RotateView(level.turnSpeed, 0, 1, 0); - } - else - { - while(level.defaultPlayer->controls.lookLeft.NextPosition() && (keys[level.defaultPlayer->controls.lookLeft.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.lookLeft.Retrieve()]) - { - level.defaultPlayer[0].camera.RotateView(level.turnSpeed, 0, 1, 0); - } - } - } - } - - ////////// - //Keyboard Look Right - if(!level.defaultPlayer->controls.lookRight.IsEmpty()) - { - level.defaultPlayer->controls.lookRight.FirstPosition(); - if(keys[level.defaultPlayer->controls.lookRight.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(-level.turnSpeed, 0, 1, 0); - } - else - { - while(level.defaultPlayer->controls.lookRight.NextPosition() && (keys[level.defaultPlayer->controls.lookRight.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.lookRight.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(-level.turnSpeed, 0, 1, 0); - } - } - } - } - - ////////// - //Keyboard Look Up - if(!level.defaultPlayer->controls.lookUp.IsEmpty()) - { - level.defaultPlayer->controls.lookUp.FirstPosition(); - if(keys[level.defaultPlayer->controls.lookUp.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(level.turnSpeed, 1, 0, 0); - } - else - { - while(level.defaultPlayer->controls.lookUp.NextPosition() && (keys[level.defaultPlayer->controls.lookUp.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.lookUp.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(level.turnSpeed, 1, 0, 0); - } - } - } - } - - ////////// - //Keyboard Look Down - if(!level.defaultPlayer->controls.lookDown.IsEmpty()) - { - level.defaultPlayer->controls.lookDown.FirstPosition(); - if(keys[level.defaultPlayer->controls.lookDown.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(-level.turnSpeed, 1, 0, 0); - } - else - { - while(level.defaultPlayer->controls.lookDown.NextPosition() && (keys[level.defaultPlayer->controls.lookDown.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.lookDown.Retrieve()]) - { - level.defaultPlayer->camera.RotateView(-level.turnSpeed, 1, 0, 0); - } - } - } - } - - ////////// - //Toggle Show FPS - if(!level.defaultPlayer->controls.toggleFPS.IsEmpty()) - { - level.defaultPlayer->controls.toggleFPS.FirstPosition(); - if(keys[level.defaultPlayer->controls.toggleFPS.Retrieve()]) - { - if(!keys2[level.defaultPlayer->controls.toggleFPS.Retrieve()]) - { - level.showFPS = !level.showFPS; - } - } - else - { - while(level.defaultPlayer->controls.toggleFPS.NextPosition() && (keys[level.defaultPlayer->controls.toggleFPS.Retrieve()] != true)); - { - if(keys[level.defaultPlayer->controls.toggleFPS.Retrieve()]) - { - if(!keys2[level.defaultPlayer->controls.toggleFPS.Retrieve()]) + if(keys[level.defaultPlayer->controls.backward.Retrieve()]) { - level.showFPS = !level.showFPS; + level.defaultPlayer->camera.MoveCamera(-level.moveSpeed); } } } } - } - ////////// - //Toggle MouseLook - if(!level.defaultPlayer->controls.toggleMouseLook.IsEmpty()) - { - level.defaultPlayer->controls.toggleMouseLook.FirstPosition(); - if(keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) + ////////// + //Move forward + if(!level.defaultPlayer->controls.forward.IsEmpty()) { - if(keys2[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) + level.defaultPlayer->controls.forward.FirstPosition(); + if(keys[level.defaultPlayer->controls.forward.Retrieve()]) { - level.mlook = ! level.mlook; + level.defaultPlayer->camera.MoveCamera(level.moveSpeed); } - } - else - { - while(level.defaultPlayer->controls.toggleMouseLook.NextPosition() && (keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()] != true)); + else { - if(keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) + while(level.defaultPlayer->controls.forward.NextPosition() && (keys[level.defaultPlayer->controls.forward.Retrieve()] != true)); { - if(keys2[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) + if(keys[level.defaultPlayer->controls.forward.Retrieve()]) { - level.mlook = ! level.mlook; + level.defaultPlayer->camera.MoveCamera(level.moveSpeed); } } } } - } - ////////// - //Toggle Console - //if(!level.defaultPlayer[0].controls.toggleConsole.IsEmpty()) - if(keys['I']) - keys['I'] = true; - - if(!level.defaultPlayer->controls.toggleConsole.IsEmpty()) - { - level.defaultPlayer->controls.toggleConsole.FirstPosition(); - if(keys[level.defaultPlayer->controls.toggleConsole.Retrieve()]) + ////////// + //Strafe Left + if(!level.defaultPlayer->controls.moveLeft.IsEmpty()) { - if(!keys2[level.defaultPlayer->controls.toggleConsole.Retrieve()]) + level.defaultPlayer->controls.moveLeft.FirstPosition(); + if(keys[level.defaultPlayer->controls.moveLeft.Retrieve()]) { - level.showConsole = !level.showConsole; - keys2[level.defaultPlayer->controls.toggleConsole.Retrieve()] = true; + level.defaultPlayer->camera.StrafeCamera(-level.moveSpeed); } - } - else - { - while(level.defaultPlayer->controls.toggleConsole.NextPosition() && (keys[level.defaultPlayer->controls.toggleConsole.Retrieve()] != true)); + else { - if(keys[level.defaultPlayer->controls.toggleConsole.Retrieve()]) + while(level.defaultPlayer->controls.moveLeft.NextPosition() && (keys[level.defaultPlayer->controls.moveLeft.Retrieve()] != true)); { - if(!keys2[level.defaultPlayer->controls.toggleConsole.Retrieve()]) + if(keys[level.defaultPlayer->controls.moveLeft.Retrieve()]) { - level.showConsole = !level.showConsole; - keys2[level.defaultPlayer->controls.toggleConsole.Retrieve()] = true; + level.defaultPlayer->camera.StrafeCamera(-level.moveSpeed); } } } } - } - ////////// - //Quick MouseLook - if(!level.defaultPlayer->controls.quickMouseLook.IsEmpty()) - { - level.defaultPlayer->controls.quickMouseLook.FirstPosition(); - if(keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) + ////////// + //Strafe Right + if(!level.defaultPlayer->controls.moveRight.IsEmpty()) { - if(keys2[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) + level.defaultPlayer->controls.moveRight.FirstPosition(); + if(keys[level.defaultPlayer->controls.moveRight.Retrieve()]) { - level.mlook = ! level.mlook; + level.defaultPlayer[0].camera.StrafeCamera(level.moveSpeed); } - } - else - { - while(level.defaultPlayer->controls.quickMouseLook.NextPosition() && (keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()] != true)); + else { - if(keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) + while(level.defaultPlayer->controls.moveRight.NextPosition() && (keys[level.defaultPlayer->controls.moveRight.Retrieve()] != true)); { - if(keys2[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) + if(keys[level.defaultPlayer->controls.moveRight.Retrieve()]) { - level.mlook = ! level.mlook; + level.defaultPlayer->camera.StrafeCamera(level.moveSpeed); } } } } - } - level.Render(); - + ////////// + //Keyboard Look Left + if(!level.defaultPlayer->controls.lookLeft.IsEmpty()) + { + level.defaultPlayer->controls.lookLeft.FirstPosition(); + if(keys[level.defaultPlayer->controls.lookLeft.Retrieve()]) + { + level.defaultPlayer[0].camera.RotateView(level.turnSpeed, 0, 1, 0); + } + else + { + while(level.defaultPlayer->controls.lookLeft.NextPosition() && (keys[level.defaultPlayer->controls.lookLeft.Retrieve()] != true)); + { + if(keys[level.defaultPlayer->controls.lookLeft.Retrieve()]) + { + level.defaultPlayer[0].camera.RotateView(level.turnSpeed, 0, 1, 0); + } + } + } + } + + ////////// + //Keyboard Look Right + if(!level.defaultPlayer->controls.lookRight.IsEmpty()) + { + level.defaultPlayer->controls.lookRight.FirstPosition(); + if(keys[level.defaultPlayer->controls.lookRight.Retrieve()]) + { + level.defaultPlayer->camera.RotateView(-level.turnSpeed, 0, 1, 0); + } + else + { + while(level.defaultPlayer->controls.lookRight.NextPosition() && (keys[level.defaultPlayer->controls.lookRight.Retrieve()] != true)); + { + if(keys[level.defaultPlayer->controls.lookRight.Retrieve()]) + { + level.defaultPlayer->camera.RotateView(-level.turnSpeed, 0, 1, 0); + } + } + } + } + + ////////// + //Keyboard Look Up + if(!level.defaultPlayer->controls.lookUp.IsEmpty()) + { + level.defaultPlayer->controls.lookUp.FirstPosition(); + if(keys[level.defaultPlayer->controls.lookUp.Retrieve()]) + { + level.defaultPlayer->camera.RotateView(level.turnSpeed, 1, 0, 0); + } + else + { + while(level.defaultPlayer->controls.lookUp.NextPosition() && (keys[level.defaultPlayer->controls.lookUp.Retrieve()] != true)); + { + if(keys[level.defaultPlayer->controls.lookUp.Retrieve()]) + { + level.defaultPlayer->camera.RotateView(level.turnSpeed, 1, 0, 0); + } + } + } + } + + ////////// + //Keyboard Look Down + if(!level.defaultPlayer->controls.lookDown.IsEmpty()) + { + level.defaultPlayer->controls.lookDown.FirstPosition(); + if(keys[level.defaultPlayer->controls.lookDown.Retrieve()]) + { + level.defaultPlayer->camera.RotateView(-level.turnSpeed, 1, 0, 0); + } + else + { + while(level.defaultPlayer->controls.lookDown.NextPosition() && (keys[level.defaultPlayer->controls.lookDown.Retrieve()] != true)); + { + if(keys[level.defaultPlayer->controls.lookDown.Retrieve()]) + { + level.defaultPlayer->camera.RotateView(-level.turnSpeed, 1, 0, 0); + } + } + } + } + + ////////// + //Toggle Show FPS + if(!level.defaultPlayer->controls.toggleFPS.IsEmpty()) + { + level.defaultPlayer->controls.toggleFPS.FirstPosition(); + if(keys[level.defaultPlayer->controls.toggleFPS.Retrieve()]) + { + if(!keys2[level.defaultPlayer->controls.toggleFPS.Retrieve()]) + { + level.showFPS = !level.showFPS; + } + } + else + { + while(level.defaultPlayer->controls.toggleFPS.NextPosition() && (keys[level.defaultPlayer->controls.toggleFPS.Retrieve()] != true)); + { + if(keys[level.defaultPlayer->controls.toggleFPS.Retrieve()]) + { + if(!keys2[level.defaultPlayer->controls.toggleFPS.Retrieve()]) + { + level.showFPS = !level.showFPS; + } + } + } + } + } + + ////////// + //Toggle MouseLook + if(!level.defaultPlayer->controls.toggleMouseLook.IsEmpty()) + { + level.defaultPlayer->controls.toggleMouseLook.FirstPosition(); + if(keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) + { + if(keys2[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) + { + level.mlook = ! level.mlook; + } + } + else + { + while(level.defaultPlayer->controls.toggleMouseLook.NextPosition() && (keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()] != true)); + { + if(keys[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) + { + if(keys2[level.defaultPlayer->controls.toggleMouseLook.Retrieve()]) + { + level.mlook = ! level.mlook; + } + } + } + } + } + + ////////// + //Toggle Console + if(!level.defaultPlayer[0].controls.toggleConsole.IsEmpty()) + { + level.defaultPlayer[0].controls.toggleConsole.FirstPosition(); + if(keys[level.defaultPlayer[0].controls.toggleConsole.Retrieve()]) + { + if(!keys2[level.defaultPlayer[0].controls.toggleConsole.Retrieve()]) + { + level.showConsole = !level.showConsole; + keys2[level.defaultPlayer[0].controls.toggleConsole.Retrieve()] = true; + } + } + else + { + while(level.defaultPlayer[0].controls.toggleConsole.NextPosition() && (keys[level.defaultPlayer[0].controls.toggleConsole.Retrieve()] != true)); + { + if(keys[level.defaultPlayer[0].controls.toggleConsole.Retrieve()]) + { + if(!keys2[level.defaultPlayer[0].controls.toggleConsole.Retrieve()]) + { + level.showConsole = !level.showConsole; + keys2[level.defaultPlayer[0].controls.toggleConsole.Retrieve()] = true; + } + } + } + } + } + + ////////// + //Quick MouseLook + if(!level.defaultPlayer->controls.quickMouseLook.IsEmpty()) + { + level.defaultPlayer->controls.quickMouseLook.FirstPosition(); + if(keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) + { + if(keys2[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) + { + level.mlook = ! level.mlook; + } + } + else + { + while(level.defaultPlayer->controls.quickMouseLook.NextPosition() && (keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()] != true)); + { + if(keys[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) + { + if(keys2[level.defaultPlayer->controls.quickMouseLook.Retrieve()]) + { + level.mlook = ! level.mlook; + } + } + } + } + } + //level.Render(); + } + level.Render(); + // } } diff --git a/src/strmanip.cpp b/src/strmanip.cpp index 90187ac..ccc1dac 100644 --- a/src/strmanip.cpp +++ b/src/strmanip.cpp @@ -257,7 +257,7 @@ string word(string str, uint32 wordNum) { if(wordNum < 1) { - while (!isspace(str[++length]) && length <= maxLength); + while (!isspace(str[++length]) && length < maxLength); return str.substr(start, length); }