X-Git-Url: http://gitweb.pgornicz.com/gitweb.cgi?a=blobdiff_plain;f=src%2Fmain.cpp;h=5381a86a1f15207415183d634bf91a6d7328a4da;hb=b1d92c2f86c7da20ef22f9e064ff9b1a2d5ede4e;hp=fd146122867e65aca83a97adecb6b394ec58095f;hpb=f7b3b2eb35e8047d247dfd7cf7b110a2b6e907af;p=physics.git
diff --git a/src/main.cpp b/src/main.cpp
index fd14612..5381a86 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1,42 +1,50 @@
+/*
+ * Copyright (C) 2008 Patrik Gornicz, Gornicz_P (at) hotmail (dot) com.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
#include
#include
#include
-#include
-using std::vector;
-
#include "debug.h"
+#include "handleSignal.h"
#include "game.h"
#include "ticks.h"
-#include "graphics.h"
-#include "input/inputManager.h"
+#include "graphics/graphics.h"
+#include "input/inputManager.h"
+#include "config/config.h"
/// ***** Private Method Headers *****
+
void init();
+void sighandler( int sig );
+
void run();
-void cleanUp();
+void clean();
void blockUpdate();
void updateFPSCounters();
-void input();
+void handleInput();
void update(float);
void draw();
-
-/// ***** MAIN Method *****
-int main()
-{
- init();
- run();
- cleanUp();
- return 0;
-}
-
-
/// ***** Private Variables *****
// variable used to determine if it is time to shutdown
@@ -62,27 +70,51 @@ int update_Count, draw_Count;
long int last_Second;
-/// ***** Private Methods *****
+/// ***** MAIN Method *****
+int main()
+{
+ init();
+ run();
+ clean();
+ return 0;
+}
+
+/// ***** Initializers/Cleaners *****
+
void init()
{
- graphicsInit();
+ installSignal();
+
+ graphics::init();
- gameInit();
+ game::init();
- // TODO
- // add a game state
+ input::init();
+
+ cfg::init();
#ifdef DEBUGGING
cout << "Initialization Complete" << endl;
#endif
+}
- // create starting entities
-
+void clean()
+{
#ifdef DEBUGGING
- cout << "World Created" << endl;
+ cout << "Cleaning up" << endl;
#endif
+
+ cfg::clean();
+
+ input::clean();
+
+ game::clean();
+
+ graphics::clean();
}
+/// ***** Private Methods *****
+
void run()
{
is_Running = true;
@@ -97,11 +129,6 @@ void run()
}
}
-void cleanUp()
-{
- gameClean();
-}
-
void blockUpdate()
{
long int start = tickCountMicro();
@@ -122,7 +149,7 @@ void blockUpdate()
// run the updates
for (int i = 1; i <= iupdate_sum; i++)
{
- input();
+ handleInput();
update(time_step*i / 1000);
}
// remove the updates that where run from the sum
@@ -142,16 +169,21 @@ void updateFPSCounters()
draw_Count = 0;
last_Second = tickCountMicro();
+
+#ifdef FPSUPS
+ cout << "ups:\t" << ups << endl;
+ cout << "fps:\t" << fps << endl;
+#endif
}
}
-void input()
+void handleInput()
{
- inputUpdate();
+ input::update();
- gameInput();
+ game::input();
- if(isPressed(SDLK_ESCAPE))
+ if(cfg::endGame())
is_Running = false;
}
@@ -159,14 +191,14 @@ void update(float time_step)
{
update_Count++;
- gameUpdate(time_step);
+ game::update(time_step);
}
void draw()
{
draw_Count++;
- gameDraw();
+ game::draw();
SDL_GL_SwapBuffers();