From 2872eb224e9f3ec6947542f2d7ac0ad288574cf1 Mon Sep 17 00:00:00 2001 From: Jon Bergli Heier Date: Tue, 17 May 2011 15:48:23 +0200 Subject: Added a console-like window which doesn't do anything interesting yet. --- scene.cpp | 90 ++++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 66 insertions(+), 24 deletions(-) (limited to 'scene.cpp') diff --git a/scene.cpp b/scene.cpp index f7db5c4..e179a3b 100644 --- a/scene.cpp +++ b/scene.cpp @@ -56,6 +56,9 @@ Scene::Scene() { font->FaceSize(10); GUI::init(); + + console = new ConsoleWindow(); + console->hide(); } Scene::~Scene() { @@ -64,6 +67,7 @@ Scene::~Scene() { if(terrain) delete terrain; delete font; + delete console; } void Scene::lookat() { @@ -143,11 +147,18 @@ void Scene::events() { running = false; break; case SDL_KEYDOWN: + if(console->showing() && event.key.keysym.sym != 124) { + CEGUI::System::getSingleton().injectKeyDown(event.key.keysym.scancode); + if(CEGUI::System::getSingleton().injectChar(event.key.keysym.unicode)) + break; + } switch(event.key.keysym.sym) { case SDLK_ESCAPE: if(tool) { delete tool; tool = NULL; + } else if(console->showing()) { + console->hide(); } else running = false; break; @@ -171,15 +182,35 @@ void Scene::events() { break; case SDLK_TAB: dialog = !dialog && tool; + if(tool) { + if(dialog) + tool->gui_show(); + else + tool->gui_hide(); + } break; case SDLK_1: if(tool) delete tool; tool = new RaiseTool(terrain); break; + case 124: + if(console->showing()) { + console->hide(); + dialog = false; + } else { + console->show(); + dialog = true; + } + break; default: break; } break; + case SDL_KEYUP: + if(console->showing() && event.key.keysym.sym != 124) { + CEGUI::System::getSingleton().injectKeyUp(event.key.keysym.scancode); + } + break; case SDL_MOUSEBUTTONDOWN: switch(event.button.button) { case SDL_BUTTON_LEFT: @@ -259,28 +290,30 @@ void Scene::render() { float forward = 0; float right = 0; bool moved = false; - if(keystate[SDLK_w]) { - moved = true; - forward++; - } - if(keystate[SDLK_s]) { - moved = true; - forward--; - } - if(keystate[SDLK_a]) { - moved = true; - right--; - } - if(keystate[SDLK_d]) { - moved = true; - right++; - } - if(keystate[SDLK_q]) - pos.y -= 0.002*steps*(keystate[SDLK_LSHIFT]?10:1); - if(keystate[SDLK_e]) - pos.y += 0.002*steps*(keystate[SDLK_LSHIFT]?10:1); - if(moved && (forward || right)) { - move(forward, right, steps*(keystate[SDLK_LSHIFT]?10:1)); + if(!dialog) { + if(keystate[SDLK_w]) { + moved = true; + forward++; + } + if(keystate[SDLK_s]) { + moved = true; + forward--; + } + if(keystate[SDLK_a]) { + moved = true; + right--; + } + if(keystate[SDLK_d]) { + moved = true; + right++; + } + if(keystate[SDLK_q]) + pos.y -= 0.002*steps*(keystate[SDLK_LSHIFT]?10:1); + if(keystate[SDLK_e]) + pos.y += 0.002*steps*(keystate[SDLK_LSHIFT]?10:1); + if(moved && (forward || right)) { + move(forward, right, steps*(keystate[SDLK_LSHIFT]?10:1)); + } } std::string move_str; @@ -464,8 +497,17 @@ void Scene::render() { font->Render(selected->str().c_str()); }*/ - if(dialog && tool) - tool->render_gui(); + GUI::pre_render(); + + if(tool && dialog) { + tool->gui_update(); + } + + if(console->showing()) { + console->update(); + } + + GUI::render(); SDL_GL_SwapBuffers(); } -- cgit v1.2.3