From 65fe958f438e9200094cda268669692ce96a8674 Mon Sep 17 00:00:00 2001 From: Rtch90 Date: Sun, 20 Nov 2011 12:08:49 +0000 Subject: [PATCH] -- [Add] Added an ingame Menu. -- [Add] Added basic collision. --- Unuk-QT/Makefile | 29 ++++++++++++-- Unuk-QT/Unuk-QT.pro | 8 +++- Unuk-QT/Unuk-QT.pro.user | 24 ++++++------ src/libUnuk/Collision.cpp | 27 +++++++++++++ src/libUnuk/Collision.h | 8 ++++ src/libUnuk/IngameMenu.cpp | 77 ++++++++++++++++++++++++++++++++++++++ src/libUnuk/IngameMenu.h | 33 ++++++++++++++++ 7 files changed, 188 insertions(+), 18 deletions(-) create mode 100644 src/libUnuk/Collision.cpp create mode 100644 src/libUnuk/Collision.h create mode 100644 src/libUnuk/IngameMenu.cpp create mode 100644 src/libUnuk/IngameMenu.h diff --git a/Unuk-QT/Makefile b/Unuk-QT/Makefile index 023210a..212f55a 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 Nov 19 22:57:56 2011 +# Generated by qmake (2.01a) (Qt 4.7.3) on: Sun Nov 20 11:37:54 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 @@ -59,7 +59,9 @@ SOURCES = ../src/libUnuk/Debug.cpp \ ../src/libUnuk/Button.cpp \ ../src/libUnuk/ButtonToggle.cpp \ ../src/libUnuk/ParticleEmitter.cpp \ - ../src/libUnuk/MainMenu.cpp + ../src/libUnuk/MainMenu.cpp \ + ../src/libUnuk/IngameMenu.cpp \ + ../src/libUnuk/Collision.cpp OBJECTS = Debug.o \ main.o \ Input.o \ @@ -76,7 +78,9 @@ OBJECTS = Debug.o \ Button.o \ ButtonToggle.o \ ParticleEmitter.o \ - MainMenu.o + MainMenu.o \ + IngameMenu.o \ + Collision.o DIST = /usr/share/qt4/mkspecs/common/g++.conf \ /usr/share/qt4/mkspecs/common/unix.conf \ /usr/share/qt4/mkspecs/common/linux.conf \ @@ -176,7 +180,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 .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 .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 .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 .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 @@ -333,6 +337,23 @@ MainMenu.o: ../src/libUnuk/MainMenu.cpp ../src/libUnuk/MainMenu.h \ ../src/libUnuk/MapTile.h $(CXX) -c $(CXXFLAGS) $(INCPATH) -o MainMenu.o ../src/libUnuk/MainMenu.cpp +IngameMenu.o: ../src/libUnuk/IngameMenu.cpp ../src/libUnuk/IngameMenu.h \ + ../src/libUnuk/Menu.h \ + ../src/Unuk/Globals.h \ + ../src/Unuk/Constants.h \ + ../src/libUnuk/Button.h \ + ../src/libUnuk/Input.h \ + ../src/libUnuk/Text.h \ + ../src/libUnuk/ApplySurface.h \ + ../src/libUnuk/Debug.h \ + ../src/libUnuk/Font.h \ + ../src/libUnuk/Rect.h \ + ../src/libUnuk/ButtonToggle.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o IngameMenu.o ../src/libUnuk/IngameMenu.cpp + +Collision.o: ../src/libUnuk/Collision.cpp ../src/libUnuk/Collision.h + $(CXX) -c $(CXXFLAGS) $(INCPATH) -o Collision.o ../src/libUnuk/Collision.cpp + ####### Install install: FORCE diff --git a/Unuk-QT/Unuk-QT.pro b/Unuk-QT/Unuk-QT.pro index eefce26..ec30de0 100644 --- a/Unuk-QT/Unuk-QT.pro +++ b/Unuk-QT/Unuk-QT.pro @@ -26,7 +26,9 @@ HEADERS += ../src/libUnuk/Debug.h \ ../src/libUnuk/ButtonToggle.h \ ../src/libUnuk/Menu.h \ ../src/libUnuk/MainMenu.h \ - ../src/libUnuk/ParticleEmitter.h + ../src/libUnuk/ParticleEmitter.h \ + ../src/libUnuk/IngameMenu.h \ + ../src/libUnuk/Collision.h SOURCES += ../src/libUnuk/Debug.cpp \ ../src/Unuk/main.cpp \ ../src/libUnuk/Input.cpp \ @@ -43,4 +45,6 @@ SOURCES += ../src/libUnuk/Debug.cpp \ ../src/libUnuk/Button.cpp \ ../src/libUnuk/ButtonToggle.cpp \ ../src/libUnuk/ParticleEmitter.cpp \ - ../src/libUnuk/MainMenu.cpp + ../src/libUnuk/MainMenu.cpp \ + ../src/libUnuk/IngameMenu.cpp \ + ../src/libUnuk/Collision.cpp diff --git a/Unuk-QT/Unuk-QT.pro.user b/Unuk-QT/Unuk-QT.pro.user index ceb10f6..c0a40a4 100644 --- a/Unuk-QT/Unuk-QT.pro.user +++ b/Unuk-QT/Unuk-QT.pro.user @@ -76,7 +76,7 @@ Debug - DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-PlNAR2DRhi,guid=647dcd2f857df095e9fb55f200000037 + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-JFV86sNXp3,guid=10f3cd54b9c84ffcc277c29900000065 DISPLAY=:0 HOME=/home/allanis HUSHLOGIN=FALSE @@ -89,13 +89,13 @@ QTDIR=/usr/share/qt4 SHELL=/bin/bash SHLVL=1 - SSH_AGENT_PID=3247 - SSH_AUTH_SOCK=/tmp/ssh-aXmQFZXr3222/agent.3222 + SSH_AGENT_PID=3195 + SSH_AUTH_SOCK=/tmp/ssh-xWDTLRHH3170/agent.3170 TERM=linux USER=allanis WINDOWPATH=7 XAUTHORITY=/home/allanis/.Xauthority - XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1320507013.488131-497740237 + XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1321716676.954190-403254936 _=/usr/bin/startx @@ -115,7 +115,7 @@ Debug - DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-PlNAR2DRhi,guid=647dcd2f857df095e9fb55f200000037 + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-JFV86sNXp3,guid=10f3cd54b9c84ffcc277c29900000065 DISPLAY=:0 HOME=/home/allanis HUSHLOGIN=FALSE @@ -128,13 +128,13 @@ QTDIR=/usr/share/qt4 SHELL=/bin/bash SHLVL=1 - SSH_AGENT_PID=3247 - SSH_AUTH_SOCK=/tmp/ssh-aXmQFZXr3222/agent.3222 + SSH_AGENT_PID=3195 + SSH_AUTH_SOCK=/tmp/ssh-xWDTLRHH3170/agent.3170 TERM=linux USER=allanis WINDOWPATH=7 XAUTHORITY=/home/allanis/.Xauthority - XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1320507013.488131-497740237 + XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1321716676.954190-403254936 _=/usr/bin/startx false @@ -151,7 +151,7 @@ Debug - DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-PlNAR2DRhi,guid=647dcd2f857df095e9fb55f200000037 + DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-JFV86sNXp3,guid=10f3cd54b9c84ffcc277c29900000065 DISPLAY=:0 HOME=/home/allanis HUSHLOGIN=FALSE @@ -164,13 +164,13 @@ QTDIR=/usr/share/qt4 SHELL=/bin/bash SHLVL=1 - SSH_AGENT_PID=3247 - SSH_AUTH_SOCK=/tmp/ssh-aXmQFZXr3222/agent.3222 + SSH_AGENT_PID=3195 + SSH_AUTH_SOCK=/tmp/ssh-xWDTLRHH3170/agent.3170 TERM=linux USER=allanis WINDOWPATH=7 XAUTHORITY=/home/allanis/.Xauthority - XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1320507013.488131-497740237 + XDG_SESSION_COOKIE=6de6dd7b78e791242262c6460000012e-1321716676.954190-403254936 _=/usr/bin/startx true diff --git a/src/libUnuk/Collision.cpp b/src/libUnuk/Collision.cpp new file mode 100644 index 0000000..8ca25be --- /dev/null +++ b/src/libUnuk/Collision.cpp @@ -0,0 +1,27 @@ +#include "Collision.h" + +bool CheckCollisionRect(SDL_Rect a, SDL_Rect b) { + if(a.y + a.h <= b.y) + return false; + if(a.y >= b.y + b.h) + return false; + if(a.x + a.w <= b.x) + return false; + if(a.x >= b.x + b.w) + return false; + + return true; +} + +bool CheckCollisionXY(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2) { + if(y1 + h1 <= y2) + return false; + if(y1 >= y2 + h2) + return false; + if(x1 + w1 <= x2) + return false; + if(x1 >= x2 + w2) + return false; + + return true; +} diff --git a/src/libUnuk/Collision.h b/src/libUnuk/Collision.h new file mode 100644 index 0000000..1f61f4e --- /dev/null +++ b/src/libUnuk/Collision.h @@ -0,0 +1,8 @@ +#ifndef _COLLISION_H_ +#define _COLLISION_H_ +#include + +bool CheckCollisionRect(SDL_Rect a, SDL_Rect b); +bool CheckCollisionXY(int x1, int y1, int w1, int h1, int x2, int y2, int w2, int h2); + +#endif diff --git a/src/libUnuk/IngameMenu.cpp b/src/libUnuk/IngameMenu.cpp new file mode 100644 index 0000000..144f3a4 --- /dev/null +++ b/src/libUnuk/IngameMenu.cpp @@ -0,0 +1,77 @@ +#include "IngameMenu.h" + +IngameMenu::IngameMenu(void) { + m_isActive = false; + + btnResume.SetOutRGB(200, 200, 200); + btnResume.SetOverRGB(255, 255, 255); + btnResume.SetTextRGB(0, 0, 0); + btnResume.SetText("Resume Game"); + btnResume.SetXY((SCREEN_WIDTH / 2) - (btnResume.GetWidth() / 2), 50); + + btnSaveGame.SetOutRGB(200, 200, 200); + btnSaveGame.SetOverRGB(255, 255, 255); + btnSaveGame.SetTextRGB(0, 0, 0); + btnSaveGame.SetText("SaveGame"); + btnSaveGame.SetXY((SCREEN_WIDTH / 2) - (btnSaveGame.GetWidth() / 2), 100); + + btnLoadGame.SetOutRGB(200, 200, 200); + btnLoadGame.SetOverRGB(255, 255, 255); + btnLoadGame.SetTextRGB(0, 0, 0); + btnLoadGame.SetText("LoadGame"); + btnLoadGame.SetXY((SCREEN_WIDTH / 2) - (btnLoadGame.GetWidth() / 2), 150); + + btnOptions.SetOutRGB(200, 200, 200); + btnOptions.SetOverRGB(255, 255, 255); + btnOptions.SetTextRGB(0, 0, 0); + btnOptions.SetText("Options"); + btnOptions.SetXY((SCREEN_WIDTH / 2) - (btnOptions.GetWidth() / 2), 200); + + btnExitToMenu.SetOutRGB(200, 200, 200); + btnExitToMenu.SetOverRGB(255, 255, 255); + btnExitToMenu.SetTextRGB(0, 0, 0); + btnExitToMenu.SetText("Exit To Main Menu"); + btnExitToMenu.SetXY((SCREEN_WIDTH / 2) - (btnExitToMenu.GetWidth() / 2), 250); +} + +IngameMenu::~IngameMenu(void) { + +} + +int IngameMenu::HandleInput(void) { + while(SDL_PollEvent(&event)) { + btnResume.CheckMouseOver(); + btnSaveGame.CheckMouseOver(); + btnLoadGame.CheckMouseOver(); + btnOptions.CheckMouseOver(); + btnExitToMenu.CheckMouseOver(); + + if(event.key.type == SDL_KEYDOWN) { + if(event.key.keysym.sym == SDLK_ESCAPE) + return INGAME_MENU_RESUME; + } + else if(event.type == SDL_MOUSEBUTTONUP) { + if(event.button.button == SDL_BUTTON_LEFT) { + if(btnResume.CheckMouseOver()) + return INGAME_MENU_RESUME; + else if(btnSaveGame.CheckMouseOver()) + return INGAME_MENU_SAVE_GAME; + else if(btnLoadGame.CheckMouseOver()) + return INGAME_MENU_LOAD_GAME; + else if(btnOptions.CheckMouseOver()) + return INGAME_MENU_OPTIONS; + else if(btnExitToMenu.CheckMouseOver()) + return INGAME_MENU_EXIT_TO_MMENU; + } + } + } + return INGAME_MENU_NOTHING; +} + +void IngameMenu::Render(void) { + btnResume.Render(); + btnSaveGame.Render(); + btnLoadGame.Render(); + btnOptions.Render(); + btnExitToMenu.Render(); +} diff --git a/src/libUnuk/IngameMenu.h b/src/libUnuk/IngameMenu.h new file mode 100644 index 0000000..f0fec28 --- /dev/null +++ b/src/libUnuk/IngameMenu.h @@ -0,0 +1,33 @@ +#ifndef _INGAMEMENU_H_ +#define _INGAMEMENU_H_ +#include "Menu.h" + +const int INGAME_MENU_NOTHING = 0; +const int INGAME_MENU_RESUME = 1; +const int INGAME_MENU_SAVE_GAME = 2; +const int INGAME_MENU_LOAD_GAME = 3; +const int INGAME_MENU_OPTIONS = 4; +const int INGAME_MENU_EXIT_TO_MMENU = 5; + +class IngameMenu : public Menu { +public: + IngameMenu(void); + ~IngameMenu(void); + + int HandleInput(void); + void Render(void); + + void SetStatus(bool arg) { m_isActive = arg; } + bool GetStatus(void) { return m_isActive; } + +private: + bool m_isActive; + + Button btnResume; + Button btnSaveGame; + Button btnLoadGame; + Button btnOptions; + Button btnExitToMenu; +}; + +#endif