From 2f05f06f10a587dac8395f36bf1487df6594b168 Mon Sep 17 00:00:00 2001 From: Rtch90 Date: Sat, 17 Dec 2011 22:53:20 +0000 Subject: [PATCH] [Change] FPS is now implemented fully.. [Add] Made a start with some Dialogue box stuff. --- Unuk-QT/Makefile | 22 +++++++++---- Unuk-QT/Unuk-QT.pro | 6 ++-- src/Unuk/main.cpp | 43 ++++-------------------- src/libUnuk/DialogueBox.cpp | 1 + src/libUnuk/DialogueBox.h | 13 ++++++++ src/libUnuk/FPS.cpp | 8 ++++- src/libUnuk/FPS.h | 2 +- src/libUnuk/MainMenu.cpp | 66 +++++++++++++++++++++---------------- src/libUnuk/MainMenu.h | 5 +-- src/libUnuk/Makefile | 2 +- 10 files changed, 88 insertions(+), 80 deletions(-) create mode 100644 src/libUnuk/DialogueBox.cpp create mode 100644 src/libUnuk/DialogueBox.h diff --git a/Unuk-QT/Makefile b/Unuk-QT/Makefile index 63c794f..dc638e0 100644 --- a/Unuk-QT/Makefile +++ b/Unuk-QT/Makefile @@ -1,6 +1,6 @@ ############################################################################# # Makefile for building: Unuk-QT -# Generated by qmake (2.01a) (Qt 4.7.3) on: Sat Dec 17 22:09:14 2011 +# Generated by qmake (2.01a) (Qt 4.7.3) on: Sat Dec 17 22:49:43 2011 # Project: Unuk-QT.pro # Template: app # Command: /usr/bin/qmake-qt4 -spec /usr/share/qt4/mkspecs/linux-g++ CONFIG+=debug -o Makefile Unuk-QT.pro @@ -68,7 +68,8 @@ SOURCES = ../src/libUnuk/Debug.cpp \ ../src/Unuk/Game.cpp \ ../src/libUnuk/MapElement.cpp \ ../src/libUnuk/MapEntities.cpp \ - ../src/libUnuk/FPS.cpp + ../src/libUnuk/FPS.cpp \ + ../src/libUnuk/DialogueBox.cpp OBJECTS = Debug.o \ main.o \ Input.o \ @@ -94,7 +95,8 @@ OBJECTS = Debug.o \ Game.o \ MapElement.o \ MapEntities.o \ - FPS.o + FPS.o \ + DialogueBox.o DIST = /usr/share/qt4/mkspecs/common/g++.conf \ /usr/share/qt4/mkspecs/common/unix.conf \ /usr/share/qt4/mkspecs/common/linux.conf \ @@ -194,7 +196,7 @@ qmake: FORCE dist: @$(CHK_DIR_EXISTS) .tmp/Unuk-QT1.0.0 || $(MKDIR) .tmp/Unuk-QT1.0.0 - $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.h ../src/Libs/wglext.h ../src/Libs/glxext.h ../src/libUnuk/Input.h ../src/libUnuk/Rect.h ../src/libUnuk/Timer.h ../src/libUnuk/Font.h ../Constants.h ../src/Unuk/Constants.h ../src/libUnuk/ApplySurface.h ../src/Unuk/Globals.h ../src/libUnuk/ImageLoader.h ../src/libUnuk/TextureManager.h ../src/libUnuk/Texture.h ../src/libUnuk/Text.h ../src/libUnuk/MapTile.h ../src/libUnuk/Map.h ../src/libUnuk/Button.h ../src/libUnuk/ButtonToggle.h ../src/libUnuk/Menu.h ../src/libUnuk/MainMenu.h ../src/libUnuk/ParticleEmitter.h ../src/libUnuk/IngameMenu.h ../src/libUnuk/Collision.h ../src/libUnuk/Character.h ../src/libUnuk/NPC.h ../src/Unuk/Player.h ../src/Unuk/Game.h ../src/libUnuk/MapElement.h ../src/libUnuk/MapEntities.h ../src/libUnuk/FPS.h .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.cpp ../src/Unuk/main.cpp ../src/libUnuk/Input.cpp ../src/libUnuk/Timer.cpp ../src/libUnuk/Font.cpp ../src/libUnuk/ApplySurface.cpp ../src/Unuk/Globals.cpp ../src/libUnuk/Rect.cpp ../src/libUnuk/ImageLoader.cpp ../src/libUnuk/TextureManager.cpp ../src/libUnuk/Texture.cpp ../src/libUnuk/Text.cpp ../src/libUnuk/Map.cpp ../src/libUnuk/Button.cpp ../src/libUnuk/ButtonToggle.cpp ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/MainMenu.cpp ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/Collision.cpp ../src/libUnuk/Character.cpp ../src/libUnuk/NPC.cpp ../src/Unuk/Player.cpp ../src/Unuk/Game.cpp ../src/libUnuk/MapElement.cpp ../src/libUnuk/MapEntities.cpp ../src/libUnuk/FPS.cpp .tmp/Unuk-QT1.0.0/ && (cd `dirname .tmp/Unuk-QT1.0.0` && $(TAR) Unuk-QT1.0.0.tar Unuk-QT1.0.0 && $(COMPRESS) Unuk-QT1.0.0.tar) && $(MOVE) `dirname .tmp/Unuk-QT1.0.0`/Unuk-QT1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Unuk-QT1.0.0 + $(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.h ../src/Libs/wglext.h ../src/Libs/glxext.h ../src/libUnuk/Input.h ../src/libUnuk/Rect.h ../src/libUnuk/Timer.h ../src/libUnuk/Font.h ../Constants.h ../src/Unuk/Constants.h ../src/libUnuk/ApplySurface.h ../src/Unuk/Globals.h ../src/libUnuk/ImageLoader.h ../src/libUnuk/TextureManager.h ../src/libUnuk/Texture.h ../src/libUnuk/Text.h ../src/libUnuk/MapTile.h ../src/libUnuk/Map.h ../src/libUnuk/Button.h ../src/libUnuk/ButtonToggle.h ../src/libUnuk/Menu.h ../src/libUnuk/MainMenu.h ../src/libUnuk/ParticleEmitter.h ../src/libUnuk/IngameMenu.h ../src/libUnuk/Collision.h ../src/libUnuk/Character.h ../src/libUnuk/NPC.h ../src/Unuk/Player.h ../src/Unuk/Game.h ../src/libUnuk/MapElement.h ../src/libUnuk/MapEntities.h ../src/libUnuk/FPS.h ../src/libUnuk/DialogueBox.h .tmp/Unuk-QT1.0.0/ && $(COPY_FILE) --parents ../src/libUnuk/Debug.cpp ../src/Unuk/main.cpp ../src/libUnuk/Input.cpp ../src/libUnuk/Timer.cpp ../src/libUnuk/Font.cpp ../src/libUnuk/ApplySurface.cpp ../src/Unuk/Globals.cpp ../src/libUnuk/Rect.cpp ../src/libUnuk/ImageLoader.cpp ../src/libUnuk/TextureManager.cpp ../src/libUnuk/Texture.cpp ../src/libUnuk/Text.cpp ../src/libUnuk/Map.cpp ../src/libUnuk/Button.cpp ../src/libUnuk/ButtonToggle.cpp ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/MainMenu.cpp ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/Collision.cpp ../src/libUnuk/Character.cpp ../src/libUnuk/NPC.cpp ../src/Unuk/Player.cpp ../src/Unuk/Game.cpp ../src/libUnuk/MapElement.cpp ../src/libUnuk/MapEntities.cpp ../src/libUnuk/FPS.cpp ../src/libUnuk/DialogueBox.cpp .tmp/Unuk-QT1.0.0/ && (cd `dirname .tmp/Unuk-QT1.0.0` && $(TAR) Unuk-QT1.0.0.tar Unuk-QT1.0.0 && $(COMPRESS) Unuk-QT1.0.0.tar) && $(MOVE) `dirname .tmp/Unuk-QT1.0.0`/Unuk-QT1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/Unuk-QT1.0.0 clean:compiler_clean @@ -241,8 +243,10 @@ Debug.o: ../src/libUnuk/Debug.cpp ../src/libUnuk/Debug.h main.o: ../src/Unuk/main.cpp ../src/libUnuk/MainMenu.h \ ../src/Unuk/Constants.h \ - ../src/libUnuk/Button.h \ + ../src/libUnuk/FPS.h \ ../src/Unuk/Globals.h \ + ../src/libUnuk/Timer.h \ + ../src/libUnuk/Button.h \ ../src/libUnuk/Input.h \ ../src/libUnuk/Text.h \ ../src/libUnuk/ApplySurface.h \ @@ -258,7 +262,6 @@ main.o: ../src/Unuk/main.cpp ../src/libUnuk/MainMenu.h \ ../src/libUnuk/NPC.h \ ../src/libUnuk/Character.h \ ../src/libUnuk/Collision.h \ - ../src/libUnuk/Timer.h \ ../src/Unuk/Game.h \ ../src/Unuk/Player.h \ ../src/libUnuk/IngameMenu.h \ @@ -356,8 +359,10 @@ ParticleEmitter.o: ../src/libUnuk/ParticleEmitter.cpp ../src/libUnuk/ParticleEmi MainMenu.o: ../src/libUnuk/MainMenu.cpp ../src/libUnuk/MainMenu.h \ ../src/Unuk/Constants.h \ - ../src/libUnuk/Button.h \ + ../src/libUnuk/FPS.h \ ../src/Unuk/Globals.h \ + ../src/libUnuk/Timer.h \ + ../src/libUnuk/Button.h \ ../src/libUnuk/Input.h \ ../src/libUnuk/Text.h \ ../src/libUnuk/ApplySurface.h \ @@ -488,6 +493,9 @@ FPS.o: ../src/libUnuk/FPS.cpp ../src/libUnuk/FPS.h \ ../src/libUnuk/Timer.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o FPS.o ../src/libUnuk/FPS.cpp +DialogueBox.o: ../src/libUnuk/DialogueBox.cpp ../src/libUnuk/DialogueBox.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o DialogueBox.o ../src/libUnuk/DialogueBox.cpp + ####### Install install: FORCE diff --git a/Unuk-QT/Unuk-QT.pro b/Unuk-QT/Unuk-QT.pro index 8654bfe..f8f3bf0 100644 --- a/Unuk-QT/Unuk-QT.pro +++ b/Unuk-QT/Unuk-QT.pro @@ -37,7 +37,8 @@ HEADERS += ../src/libUnuk/Debug.h \ ../src/Unuk/Game.h \ ../src/libUnuk/MapElement.h \ ../src/libUnuk/MapEntities.h \ - ../src/libUnuk/FPS.h + ../src/libUnuk/FPS.h \ + ../src/libUnuk/DialogueBox.h SOURCES += ../src/libUnuk/Debug.cpp \ ../src/Unuk/main.cpp \ ../src/libUnuk/Input.cpp \ @@ -63,4 +64,5 @@ SOURCES += ../src/libUnuk/Debug.cpp \ ../src/Unuk/Game.cpp \ ../src/libUnuk/MapElement.cpp \ ../src/libUnuk/MapEntities.cpp \ - ../src/libUnuk/FPS.cpp + ../src/libUnuk/FPS.cpp \ + ../src/libUnuk/DialogueBox.cpp diff --git a/src/Unuk/main.cpp b/src/Unuk/main.cpp index 6be7473..bacbf75 100644 --- a/src/Unuk/main.cpp +++ b/src/Unuk/main.cpp @@ -40,24 +40,9 @@ int main() { Game* game = NULL; MainMenu* menu = new MainMenu; - int fps; - int frame; - const int MAX_FPS = 20; - - Timer frameTimer; - frameTimer.Start(); - - Timer fpsCalc; - fpsCalc.Start(); - bool menuRunning = true; while(menuRunning) { - menu->Render(); - SDL_Flip(screen); - - switch(menu->HandleInput()) { - case mainMenuNothing: - break; + switch(menu->Run()) { case mainMenuNewGame: delete menu; game = new Game; @@ -82,28 +67,12 @@ int main() { delete menu; break; } - // Calculate and display the FPS. - if(fpsCalc.GetTicks() >= 1000) { - fps = frame / (fpsCalc.GetTicks() / 1000); - - stringstream caption; - caption << "Unuk: fps - " << fps; - - SDL_WM_SetCaption(caption.str().c_str(), NULL); - - fpsCalc.Start(); - frame = 0; - } - // Restrict the FPS. - if(1000 / MAX_FPS > frameTimer.GetTicks()) { - // SDL_Delay does not accept a float, so for higher - // framerate limits there is an innacuracy. This is - // as much as 3FPS at a limit of 60FPS. - SDL_Delay((1000 / MAX_FPS) - frameTimer.GetTicks()); - } - frameTimer.Start(); - frame++; } + //stringstream caption; + //caption << "Unuk - FPS: " << fps; + + //SDL_WM_SetCaption(caption.str().c_str(), NULL); + // Clean up after ourselves. Text::FreeFonts(); diff --git a/src/libUnuk/DialogueBox.cpp b/src/libUnuk/DialogueBox.cpp new file mode 100644 index 0000000..813df99 --- /dev/null +++ b/src/libUnuk/DialogueBox.cpp @@ -0,0 +1 @@ +#include "DialogueBox.h" diff --git a/src/libUnuk/DialogueBox.h b/src/libUnuk/DialogueBox.h new file mode 100644 index 0000000..1dc5094 --- /dev/null +++ b/src/libUnuk/DialogueBox.h @@ -0,0 +1,13 @@ +#ifndef _DIALOGUEBOX_H_ +#define _DIALOGUEBOX_H_ + +class DialogueBox { +public: + + void Set(void); + +private: + +}; + +#endif diff --git a/src/libUnuk/FPS.cpp b/src/libUnuk/FPS.cpp index 155da68..b8608c3 100644 --- a/src/libUnuk/FPS.cpp +++ b/src/libUnuk/FPS.cpp @@ -1,7 +1,13 @@ #include "FPS.h" -FPS::FPS(void) { +FPS::FPS(int maxFPSArg) { + _maxFPS = maxFPSArg; + _fps = 0; + _frame = 0; + + _frameTimer.Start(); + _fpsCalc.Start(); } FPS::~FPS(void) { diff --git a/src/libUnuk/FPS.h b/src/libUnuk/FPS.h index 61249f5..04369c0 100644 --- a/src/libUnuk/FPS.h +++ b/src/libUnuk/FPS.h @@ -6,7 +6,7 @@ class FPS { public: - FPS(void); + FPS(int maxFPSArg); ~FPS(void); void LimitFPS(void); diff --git a/src/libUnuk/MainMenu.cpp b/src/libUnuk/MainMenu.cpp index 09cfefa..5a58313 100644 --- a/src/libUnuk/MainMenu.cpp +++ b/src/libUnuk/MainMenu.cpp @@ -59,42 +59,50 @@ MainMenu::~MainMenu(void) { } -mainMenuNavVal_t MainMenu::HandleInput(void) { - while(SDL_PollEvent(&event)) { - btnNewGame.CheckMouseOver(); - if(btnNewGameActive) { - btnNewGameYes.CheckMouseOver(); - btnNewGameNo.CheckMouseOver(); - } +mainMenuNavVal_t MainMenu::Run(void) { + FPS fpsLimiter(20); - btnLoadGame.CheckMouseOver(); - btnOptions.CheckMouseOver(); - btnExit.CheckMouseOver(); + while(1) { + Render(); + SDL_Flip(screen); - if(event.type == SDL_MOUSEBUTTONUP) { - if(event.button.button == SDL_BUTTON_LEFT) { - if(btnNewGame.CheckMouseOver()) - btnNewGameActive = !btnNewGameActive; - else if(btnLoadGame.CheckMouseOver()) - return mainMenuLoadGame; - else if(btnOptions.CheckMouseOver()) - return mainMenuOptions; - else if(btnExit.CheckMouseOver()) - return mainMenuOptions; + while(SDL_PollEvent(&event)) { + btnNewGame.CheckMouseOver(); + if(btnNewGameActive) { + btnNewGameYes.CheckMouseOver(); + btnNewGameNo.CheckMouseOver(); + } - if(btnNewGameActive) { - if(btnNewGameYes.CheckMouseOver()) - return mainMenuNewGame; - else if(btnNewGameNo.CheckMouseOver()) - btnNewGameActive = false; + btnLoadGame.CheckMouseOver(); + btnOptions.CheckMouseOver(); + btnExit.CheckMouseOver(); + + if(event.type == SDL_MOUSEBUTTONUP) { + if(event.button.button == SDL_BUTTON_LEFT) { + if(btnNewGame.CheckMouseOver()) + btnNewGameActive = !btnNewGameActive; + else if(btnLoadGame.CheckMouseOver()) + return mainMenuLoadGame; + else if(btnOptions.CheckMouseOver()) + return mainMenuOptions; + else if(btnExit.CheckMouseOver()) + return mainMenuExitGame; + + if(btnNewGameActive) { + if(btnNewGameYes.CheckMouseOver()) + return mainMenuNewGame; +// else if(btnNewGameNo.CheckMouseOver()) +// return btnNewGameActive = false; + } } } + else if(event.type == SDL_QUIT) { + return mainMenuExitGame; + } } - else if(event.type == SDL_QUIT) { - return mainMenuExitGame; - } + + fpsLimiter.LimitFPS(); } - return mainMenuNothing; } void MainMenu::Render(void) { diff --git a/src/libUnuk/MainMenu.h b/src/libUnuk/MainMenu.h index 2ffc19b..980f381 100644 --- a/src/libUnuk/MainMenu.h +++ b/src/libUnuk/MainMenu.h @@ -1,13 +1,14 @@ #ifndef _MAINMENU_H_ #define _MAINMENU_H_ + #include "../Unuk/Constants.h" +#include "FPS.h" #include "Button.h" #include "Map.h" #include "Rect.h" #include "Text.h" enum mainMenuNavVal_t { - mainMenuNothing, mainMenuNewGame, mainMenuLoadGame, mainMenuOptions, @@ -19,7 +20,7 @@ public: MainMenu(void); ~MainMenu(void); - mainMenuNavVal_t HandleInput(void); + mainMenuNavVal_t Run(void); void Render(void); private: diff --git a/src/libUnuk/Makefile b/src/libUnuk/Makefile index b455e5d..0fbbc53 100644 --- a/src/libUnuk/Makefile +++ b/src/libUnuk/Makefile @@ -2,7 +2,7 @@ CC = g++ CFLAGS = -ansi -Wall -g LDADD = -lGL -lGLU -lSDL -lSDL_ttf -lSDL_gfx -lSDL_image -ltinyxml objects = ApplySurface.o Button.o ButtonToggle.o Character.o Collision.o \ - Debug.o Font.o ImageLoader.o IngameMenu.o Input.o MainMenu.o \ + Debug.o DialogueBox.o Font.o FPS.o ImageLoader.o IngameMenu.o Input.o MainMenu.o \ Map.o MapElement.o MapEntities.o NPC.o ParticleEmitter.o \ Rect.o Text.o Texture.o TextureManager.o Timer.o \