Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Buys <ingar@osirion.org>2008-10-16 16:34:15 +0000
committerStijn Buys <ingar@osirion.org>2008-10-16 16:34:15 +0000
commit1a28393dabf4f4696bf433ddde52e7a25253c955 (patch)
tree4d4fa4034f30fc882a78ab6ea148a32e83b9e88c /src/client/video.cc
parent1e0df536c2fae85c317ce9c3cc17603d5f98c911 (diff)
various user interface related updates
Diffstat (limited to 'src/client/video.cc')
-rw-r--r--src/client/video.cc41
1 files changed, 33 insertions, 8 deletions
diff --git a/src/client/video.cc b/src/client/video.cc
index 7338d70..d8ba316 100644
--- a/src/client/video.cc
+++ b/src/client/video.cc
@@ -28,6 +28,9 @@ namespace video {
float fullscreen = 0;
+int bpp = 0;
+int flags = 0;
+
int width = 0;
int height = 0;
@@ -57,9 +60,6 @@ bool init()
r_fullscreen = core::Cvar::get("r_fullscreen", "0", core::Cvar::Archive);
r_fullscreen->set_info("[bool] enable or disable fullscreen video");
- int bpp = 0;
- int flags = 0;
-
if( SDL_InitSubSystem(SDL_INIT_VIDEO) < 0 ) {
con_error << "SDL_InitSubSystem() failed: " << SDL_GetError() << std::endl;
return false;
@@ -103,7 +103,7 @@ bool init()
if (r_fullscreen->value()) {
flags = SDL_OPENGL | SDL_FULLSCREEN;
} else {
- flags = SDL_OPENGL;
+ flags = SDL_OPENGL | SDL_RESIZABLE;
}
if(!SDL_SetVideoMode(width, height, bpp, flags )) {
@@ -147,17 +147,42 @@ bool init()
// resize user interface
ui::root()->set_size((float) width, (float) height);
ui::root()->event_resize();
+
+ // to grab or not to grab
+ if (client()->console()->visible()) {
+ SDL_WM_GrabInput(SDL_GRAB_OFF);
+ SDL_ShowCursor(SDL_ENABLE);
+ } else {
+ SDL_WM_GrabInput(SDL_GRAB_ON);
+ SDL_ShowCursor(SDL_DISABLE);
+ }
// initialize renderer
- render::Camera::resize(width, height);
render::init();
- render::Camera::resize(width, height); // yes twice, bug
+ render::resize(width, height);
view::init();
return true;
}
+void resize(float w, float h)
+{
+ if (fullscreen)
+ return;
+
+ if (h < 64) h = 64;
+ if (w < 64) w = 64;
+
+ if (SDL_SetVideoMode(w, h, bpp, flags )) {
+ render::resize(w, h);
+ ui::root()->set_size(w, h);
+ ui::root()->event_resize();
+ } else {
+ con_warn << "Could not resize window!" << std::endl;
+ }
+}
+
void restart()
{
shutdown();
@@ -168,14 +193,14 @@ void restart()
input::reset();
}
-void frame(float seconds)
+void frame(float elapsed)
{
// detect fullscreen/windowed mode switch
if (fullscreen != r_fullscreen->value())
restart();
// render a client frame
- view::frame(seconds);
+ view::frame(elapsed);
SDL_GL_SwapBuffers();
}