Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--osirion.kdevelop12
-rw-r--r--osirion.kdevelop.pcsbin138105 -> 144608 bytes
-rw-r--r--osirion.kdevses28
-rw-r--r--src/client/Makefile.am5
-rw-r--r--src/client/camera.cc29
-rw-r--r--src/client/camera.h40
-rw-r--r--src/client/input.cc17
-rw-r--r--src/client/input.h11
-rw-r--r--src/client/main.cc59
-rw-r--r--src/client/video.cc26
-rw-r--r--src/client/video.h20
-rw-r--r--src/client/view.cc8
-rw-r--r--src/client/view.h12
-rw-r--r--src/common/functions.h1
-rw-r--r--src/game/game.h1
15 files changed, 124 insertions, 145 deletions
diff --git a/osirion.kdevelop b/osirion.kdevelop
index dc4a677..8457017 100644
--- a/osirion.kdevelop
+++ b/osirion.kdevelop
@@ -21,7 +21,7 @@
</general>
<kdevautoproject>
<general>
- <activetarget>src/server/osiriond</activetarget>
+ <activetarget>src/client/osirion</activetarget>
<useconfiguration>debug</useconfiguration>
</general>
<run>
@@ -29,14 +29,16 @@
<terminal>true</terminal>
<directoryradio>executable</directoryradio>
<runarguments>
- <osirion/>
- <osiriond/>
+ <osirion></osirion>
+ <osiriond></osiriond>
</runarguments>
<debugarguments>
- <osiriond/>
+ <osiriond></osiriond>
+ <osirion></osirion>
</debugarguments>
<cwd>
<osiriond>/home/ingar/projects/osirion/debug/./src/game</osiriond>
+ <osirion>/home/ingar/projects/osirion/debug/./src/client</osirion>
</cwd>
</run>
<configurations>
@@ -122,7 +124,7 @@
<projectdoc>
<docsystem>Doxygen documentatieverzameling</docsystem>
<docurl>osirion.tag</docurl>
- <usermanualurl></usermanualurl>
+ <usermanualurl/>
</projectdoc>
</kdevdocumentation>
<substmap>
diff --git a/osirion.kdevelop.pcs b/osirion.kdevelop.pcs
index 3b63e15..fe4d4c3 100644
--- a/osirion.kdevelop.pcs
+++ b/osirion.kdevelop.pcs
Binary files differ
diff --git a/osirion.kdevses b/osirion.kdevses
index 05ea41e..2b5486f 100644
--- a/osirion.kdevses
+++ b/osirion.kdevses
@@ -1,13 +1,31 @@
<?xml version = '1.0' encoding = 'UTF-8'?>
<!DOCTYPE KDevPrjSession>
<KDevPrjSession>
- <DocsAndViews NumberOfDocuments="2" >
- <Doc0 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/gl/osiriongl.h" >
- <View0 Encoding="" line="0" Type="Source" />
+ <DocsAndViews NumberOfDocuments="8" >
+ <Doc0 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/client/view.cc" >
+ <View0 Encoding="" line="152" Type="Source" />
</Doc0>
- <Doc1 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/gl/osiriongl.cc" >
- <View0 Encoding="" line="69" Type="Source" />
+ <Doc1 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/client/stardrawer.h" >
+ <View0 Encoding="" line="30" Type="Source" />
</Doc1>
+ <Doc2 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/client/view.h" >
+ <View0 Encoding="" line="22" Type="Source" />
+ </Doc2>
+ <Doc3 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/client/camera.cc" >
+ <View0 Encoding="" line="90" Type="Source" />
+ </Doc3>
+ <Doc4 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/game/game.cc" >
+ <View0 Encoding="" line="31" Type="Source" />
+ </Doc4>
+ <Doc5 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/common/file.cc" >
+ <View0 Encoding="" line="17" Type="Source" />
+ </Doc5>
+ <Doc6 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/common/file.h" >
+ <View0 Encoding="" line="0" Type="Source" />
+ </Doc6>
+ <Doc7 NumberOfViews="1" URL="file:///home/ingar/projects/osirion/src/client/hud.cc" >
+ <View0 Encoding="" line="0" Type="Source" />
+ </Doc7>
</DocsAndViews>
<pluginList>
<kdevdebugger>
diff --git a/src/client/Makefile.am b/src/client/Makefile.am
index 40bafa1..37bafcf 100644
--- a/src/client/Makefile.am
+++ b/src/client/Makefile.am
@@ -3,8 +3,9 @@ METASOURCES = AUTO
bin_PROGRAMS = osirion
osirion_LDADD = $(top_builddir)/src/game/libgame.la \
$(top_builddir)/src/gl/libosiriongl.la -lSDL
-osirion_SOURCES = camera.cc camera.h input.cc input.h main.cc video.cc video.h \
- view.cc view.h shipdrawer.cc shipdrawer.h stardrawer.cc stardrawer.h
+osirion_SOURCES = camera.cc camera.h client.cc client.h input.cc input.h \
+ main.cc shipdrawer.cc shipdrawer.h stardrawer.cc stardrawer.h video.cc video.h \
+ view.cc view.h
diff --git a/src/client/camera.cc b/src/client/camera.cc
index 87e00fc..6a6da0c 100644
--- a/src/client/camera.cc
+++ b/src/client/camera.cc
@@ -14,19 +14,26 @@ using namespace common;
namespace client
{
-
-Camera::Mode Camera::mode = Camera::Track;
-const float Camera::track_pitch = -15.0f; // default tracking pitch
-const float Camera::offset_inc = 5.0f; // default offset increment
+Camera::Camera()
+{
+ pitch_track = -15.0f;
+ offset_inc = 5.0f;
+
+ yaw = 0;
+ yaw_target = 0;
-float Camera::yaw = 0; // current yaw, angle in XZ plane, positive is looking left
-float Camera::yaw_target = 0; // target yaw
+ pitch = pitch_track * 2;
+ pitch_target = pitch_track;
-float Camera::pitch = -45.0f; // current pitch, angle in XY, positive is looking up
-float Camera::pitch_target = Camera::track_pitch; // target pitch
+ distance = 0.4f;
-float Camera::distance = 0.4f; // distance from the eye to the target
+ mode = Track;
+}
+
+Camera::~Camera()
+{
+}
void Camera::draw(float elapsed)
{
@@ -95,7 +102,7 @@ void Camera::nextmode() {
mode = Track;
yaw_target = game::ship.yaw;
yaw = yaw_target;
- pitch_target = track_pitch;
+ pitch_target = pitch_track;
pitch = pitch_target;
break;
case Track:
@@ -103,7 +110,7 @@ void Camera::nextmode() {
mode = Free;
yaw_target = game::ship.yaw;
yaw = yaw_target;
- pitch_target = track_pitch;
+ pitch_target = pitch_track;
pitch = pitch_target;
break;
default:
diff --git a/src/client/camera.h b/src/client/camera.h
index 2e20c1b..7e189b3 100644
--- a/src/client/camera.h
+++ b/src/client/camera.h
@@ -18,47 +18,49 @@ for the camera eye location. The camera always looks at (0,0,0)
class Camera
{
public:
+ Camera();
+ ~Camera();
+
/// enum indicating the camera mode
enum Mode {Free, Track};
/// draw the OpenGL camera transformation
- static void draw(float elapsed);
+ void draw(float elapsed);
/// rotate the camera left
- static void rotate_left();
+ void rotate_left();
/// rotate the camera right
- static void rotate_right();
+ void rotate_right();
/// rotate the camera up
- static void rotate_up();
+ void rotate_up();
/// rotate the camera down
- static void rotate_down();
+ void rotate_down();
/// switch to next camera mode
- static void nextmode();
+ void nextmode();
/// camera target
/** The location the camera is looking at */
- static gl::Vector3f target;
+ gl::Vector3f target;
/// target yaw, angle in XZ plane, positive is looking left
- static float yaw_target;
+ float yaw_target;
/// target pitch, angle in XZ plane, positive is looking left
- static float pitch_target;
+ float pitch_target;
/// distance from the camera to the target
- static float distance;
+ float distance;
+ /// current camera mode
+ Mode mode;
protected:
- /// default tracking pitch
- static const float track_pitch;
- /// default offset increment
- static const float offset_inc;
-
/// current yaw, angle in XZ plane, positive is looking left
- static float yaw;
+ float yaw ;
/// current pitch, angle in XY, positive is looking up
- static float pitch;
-
- static Mode mode;
+ float pitch;
+ /// default tracking pitch
+ float pitch_track;
+ /// default offset increment
+ float offset_inc;
};
} // namespace client
diff --git a/src/client/input.cc b/src/client/input.cc
index b231270..fc70b37 100644
--- a/src/client/input.cc
+++ b/src/client/input.cc
@@ -5,12 +5,9 @@
*/
//project headers
-#include "input.h"
-#include "view.h"
-#include "camera.h"
-
-#include "common/functions.h"
+#include "client.h"
#include "game/game.h"
+#include "common/functions.h"
namespace client {
@@ -30,19 +27,19 @@ void Input::handle_keydown(SDL_keysym* keysym)
game::shutdown();
break;
case SDLK_SPACE:
- Camera::nextmode();
+ camera.nextmode();
break;
case SDLK_LEFT:
- Camera::rotate_left();
+ camera.rotate_left();
break;
case SDLK_RIGHT:
- Camera::rotate_right();
+ camera.rotate_right();
break;
case SDLK_UP:
- Camera::rotate_up();
+ camera.rotate_up();
break;
case SDLK_DOWN:
- Camera::rotate_down();
+ camera.rotate_down();
break;
case SDLK_KP_PLUS:
game::ship.thrust_increase();
diff --git a/src/client/input.h b/src/client/input.h
index 6027d58..fa5486d 100644
--- a/src/client/input.h
+++ b/src/client/input.h
@@ -14,19 +14,16 @@ class Input
{
public:
/// initialize the input subsystem
- static void init();
+ void init();
/// shutdown the input subsystem
- static void shutdown();
-
- /// exit the application
- static void quit(int exit_code);
+ void shutdown();
/// process input events
- static void process();
+ void process();
protected:
/// handle keydown events
- static void handle_keydown(SDL_keysym* keysym);
+ void handle_keydown(SDL_keysym* keysym);
};
} // namespace Client
diff --git a/src/client/main.cc b/src/client/main.cc
index 76f7277..e8486ca 100644
--- a/src/client/main.cc
+++ b/src/client/main.cc
@@ -3,63 +3,10 @@
the terms and conditions of the GNU General Public License version 2
*/
-// SDL headers
-#include <SDL/SDL.h>
-
-// C++ headers
-#include <iostream>
-
-// project headers
-#include "osirion.h"
-#include "game/game.h"
-
-#include "input.h"
-#include "video.h"
-
-void quit(int status)
-{
- SDL_Quit();
- exit(status);
-}
+#include "client.h"
int main( int argc, char *argv[] )
{
- std::cout << "Project::OSiRiON " << OSIRION_VERSION << std::endl;
-
- // Initialize the video subsystem
- client::Video::init();
- if (!client::Video::initialized) {
- quit(1);
- }
-
- // initialize input
- client::Input::init();
-
- // initialize game
- game::init();
-
- Uint32 startup = SDL_GetTicks();
- while(game::initialized) {
- Uint32 chrono = SDL_GetTicks();
-
- // overflow protection ~49 days
- if (chrono < startup) {
- startup = chrono;
- }
-
- // update the game chronometers
- float elapsed = (float) ( chrono - startup) / 1000.0f;
- game::update(elapsed);
-
- // update the video chronometers and draw
- client::Video::draw(elapsed);
- startup = chrono;
-
- // process input
- client::Input::process();
- }
-
- client::Video::shutdown();
-
- quit(0);
+ client::init();
+ client::run();
}
diff --git a/src/client/video.cc b/src/client/video.cc
index a676d10..1dc596e 100644
--- a/src/client/video.cc
+++ b/src/client/video.cc
@@ -4,8 +4,7 @@
the terms and conditions of the GNU General Public License version 2
*/
-#include "video.h"
-#include "view.h"
+#include "client.h"
#include "gl/osiriongl.h"
#include <SDL/SDL.h>
@@ -13,10 +12,17 @@
namespace client {
-int Video::width = 0;
-int Video::height = 0;
-bool Video::initialized = false;
-float Video::ratio = 1;
+Video::Video()
+{
+ width = 0;
+ height = 0;
+ initialized = false;
+ ratio = 1;
+}
+
+Video::~Video()
+{
+}
void Video::reset()
{
@@ -43,7 +49,7 @@ void Video::reset()
// Setup our viewport.
gl::viewport(0, 0, width, height );
- View::reset();
+ view.reset();
}
void Video::init()
@@ -87,7 +93,7 @@ void Video::init()
gl::init();
initialized = true;
- View::init();
+ view.init();
reset();
return;
@@ -95,12 +101,12 @@ void Video::init()
void Video::draw(float elapsed)
{
- View::draw(elapsed);
+ view.draw(elapsed);
}
void Video::shutdown()
{
- client::View::shutdown();
+ view.shutdown();
gl::shutdown();
initialized = false;
diff --git a/src/client/video.h b/src/client/video.h
index 145cc24..4c07652 100644
--- a/src/client/video.h
+++ b/src/client/video.h
@@ -10,24 +10,26 @@ namespace client {
class Video
{
public:
+ Video();
+ ~Video();
+
/// initialize the video subsystem
- static void init();
+ void init();
/// shutdown the video subsystem
- static void shutdown();
+ void shutdown();
/// Update the screen state and redraw
- static void draw(float elapsed);
+ void draw(float elapsed);
/// reset and clear the viewport
- static void reset();
+ void reset();
/// Width of the SDL window in pixels
- static int width;
+ int width;
/// Height of the SDL window in pixels
- static int height;
+ int height;
/// True if the video subsystem is initialized
- static bool initialized;
+ bool initialized;
/// width/height ratio
- static float ratio;
-
+ float ratio;
};
} // namespace client
diff --git a/src/client/view.cc b/src/client/view.cc
index af9037b..c9a7b8a 100644
--- a/src/client/view.cc
+++ b/src/client/view.cc
@@ -4,9 +4,7 @@
the terms and conditions of the GNU General Public License version 2
*/
-#include "view.h"
-#include "video.h"
-#include "camera.h"
+#include "client.h"
#include "shipdrawer.h"
#include "stardrawer.h"
#include "gl/osiriongl.h"
@@ -53,7 +51,7 @@ void View::reset() {
//glu::perspective( 64.0, video::ratio, 1.0, 1024.0 );
const float frustumsize=0.5f;
- gl::frustum( -frustumsize * Video::ratio, frustumsize * Video::ratio, -frustumsize, frustumsize, 1.0f, 1024.0f);
+ gl::frustum( -frustumsize * video.ratio, frustumsize * video.ratio, -frustumsize, frustumsize, 1.0f, 1024.0f);
/*
map world coordinates to GL coordinates
@@ -144,7 +142,7 @@ void View::draw(float elapsed)
gl::loadidentity();
// Camera transformation
- Camera::draw(elapsed);
+ camera.draw(elapsed);
// draw the world
draw_world(elapsed);
diff --git a/src/client/view.h b/src/client/view.h
index 377cc9b..0087ae5 100644
--- a/src/client/view.h
+++ b/src/client/view.h
@@ -13,21 +13,21 @@ class View
{
public:
/// intialize the view
- static void init();
+ void init();
/// shutdown the view
- static void shutdown();
+ void shutdown();
/// Update the chronometer and draw the game view
- static void draw(float elapsed);
+ void draw(float elapsed);
/// Reset the projection matrix
- static void reset();
+ void reset();
protected:
/// draw the world
- static void draw_world(float elapsed);
+ void draw_world(float elapsed);
/// draw the background
- static void draw_background(float elapsed);
+ void draw_background(float elapsed);
};
} // namespace client
diff --git a/src/common/functions.h b/src/common/functions.h
index 62cf627..d13fd17 100644
--- a/src/common/functions.h
+++ b/src/common/functions.h
@@ -11,6 +11,7 @@
#include <cstdlib>
#include <cmath>
+/// Support functions for the game engine
namespace common {
/// return the smallest of two float values
diff --git a/src/game/game.h b/src/game/game.h
index 9609884..a2c4156 100644
--- a/src/game/game.h
+++ b/src/game/game.h
@@ -11,6 +11,7 @@
#include "ship.h"
#include "star.h"
+/// The game engine
namespace game
{
/// initialize the game