diff options
Diffstat (limited to 'gameloop')
-rw-r--r-- | gameloop/.vscode/settings.json | 54 | ||||
-rw-r--r-- | gameloop/CMakeLists.txt | 28 | ||||
-rw-r--r-- | gameloop/imgs/demo.bmp | bin | 7998698 -> 0 bytes | |||
-rw-r--r-- | gameloop/imgs/demo.jpg | bin | 903706 -> 0 bytes | |||
-rw-r--r-- | gameloop/include/eventManager.h | 4 | ||||
-rw-r--r-- | gameloop/include/gameObject.h | 30 | ||||
-rw-r--r-- | gameloop/include/loopManager.h | 25 | ||||
-rw-r--r-- | gameloop/include/timer.h | 32 | ||||
-rw-r--r-- | gameloop/include/window.h | 20 | ||||
-rw-r--r-- | gameloop/src/eventManager.cpp | 0 | ||||
-rw-r--r-- | gameloop/src/gameObject.cpp | 58 | ||||
-rw-r--r-- | gameloop/src/loopManager.cpp | 92 | ||||
-rw-r--r-- | gameloop/src/main.cpp | 19 | ||||
-rw-r--r-- | gameloop/src/timer.cpp | 73 | ||||
-rw-r--r-- | gameloop/src/window.cpp | 60 | ||||
-rw-r--r-- | gameloop/versions/delayBased.cpp | 57 |
16 files changed, 0 insertions, 552 deletions
diff --git a/gameloop/.vscode/settings.json b/gameloop/.vscode/settings.json deleted file mode 100644 index 6cee9cb..0000000 --- a/gameloop/.vscode/settings.json +++ /dev/null @@ -1,54 +0,0 @@ -{ - "files.associations": { - "array": "cpp", - "atomic": "cpp", - "bit": "cpp", - "*.tcc": "cpp", - "cctype": "cpp", - "clocale": "cpp", - "cmath": "cpp", - "compare": "cpp", - "concepts": "cpp", - "cstdarg": "cpp", - "cstddef": "cpp", - "cstdint": "cpp", - "cstdio": "cpp", - "cstdlib": "cpp", - "cwchar": "cpp", - "cwctype": "cpp", - "deque": "cpp", - "list": "cpp", - "map": "cpp", - "string": "cpp", - "unordered_map": "cpp", - "vector": "cpp", - "exception": "cpp", - "algorithm": "cpp", - "functional": "cpp", - "iterator": "cpp", - "memory": "cpp", - "memory_resource": "cpp", - "numeric": "cpp", - "optional": "cpp", - "random": "cpp", - "string_view": "cpp", - "system_error": "cpp", - "tuple": "cpp", - "type_traits": "cpp", - "utility": "cpp", - "initializer_list": "cpp", - "iosfwd": "cpp", - "iostream": "cpp", - "istream": "cpp", - "limits": "cpp", - "new": "cpp", - "numbers": "cpp", - "ostream": "cpp", - "sstream": "cpp", - "stdexcept": "cpp", - "streambuf": "cpp", - "cinttypes": "cpp", - "typeinfo": "cpp", - "valarray": "cpp" - } -} diff --git a/gameloop/CMakeLists.txt b/gameloop/CMakeLists.txt deleted file mode 100644 index 6bc5017..0000000 --- a/gameloop/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -cmake_minimum_required(VERSION 3.5) -project(gameloop) - -# Set the C++ standard (optional, but good practice) -set(CMAKE_CXX_STANDARD 11) -set(CMAKE_CXX_STANDARD_REQUIRED True) - -# Find the SDL2 package -find_package(SDL2 REQUIRED) - -# Add your executable -set(SOURCES - src/loopManager - src/window.cpp - src/main.cpp - src/eventManager.cpp - src/gameObject.cpp - src/timer.cpp -) - -add_executable(gameloop ${SOURCES}) - -# Link the SDL2 library to your project -target_link_libraries(gameloop ${SDL2_LIBRARIES}) - -# Include SDL2 header files and project headers -target_include_directories(gameloop PRIVATE ${SDL2_INCLUDE_DIRS}) -target_include_directories(gameloop PRIVATE ${CMAKE_SOURCE_DIR}/include) diff --git a/gameloop/imgs/demo.bmp b/gameloop/imgs/demo.bmp Binary files differdeleted file mode 100644 index 65354fe..0000000 --- a/gameloop/imgs/demo.bmp +++ /dev/null diff --git a/gameloop/imgs/demo.jpg b/gameloop/imgs/demo.jpg Binary files differdeleted file mode 100644 index f534e1b..0000000 --- a/gameloop/imgs/demo.jpg +++ /dev/null diff --git a/gameloop/include/eventManager.h b/gameloop/include/eventManager.h deleted file mode 100644 index 2aa0a68..0000000 --- a/gameloop/include/eventManager.h +++ /dev/null @@ -1,4 +0,0 @@ -class EventManager -{ - -}; diff --git a/gameloop/include/gameObject.h b/gameloop/include/gameObject.h deleted file mode 100644 index fc7d026..0000000 --- a/gameloop/include/gameObject.h +++ /dev/null @@ -1,30 +0,0 @@ -#pragma once -#include <iostream> -class GameObject { - public: - GameObject(); - GameObject(std::string name, float x, float y, float width, float height, float velX, float velY); - std::string getName() const; - float getX() const; - float getY() const; - float getWidth() const; - float getHeight() const; - float getVelX() const; - float getVelY() const; - void setName(std::string value); - void setX(float value); - void setY(float value); - void setWidth(float value); - void setHeight(float value); - void setVelX(float value); - void setVelY(float value); - int direction; - private: - std::string name = ""; - float x = 0; - float y = 0; - float width = 0; - float height = 0; - float velX = 0; - float velY = 0; -}; diff --git a/gameloop/include/loopManager.h b/gameloop/include/loopManager.h deleted file mode 100644 index 06bcd5f..0000000 --- a/gameloop/include/loopManager.h +++ /dev/null @@ -1,25 +0,0 @@ -#pragma once -#include <SDL2/SDL.h> -#include "window.h" -#include "gameObject.h" -class LoopManager{ - public: - LoopManager(); - void setup(); - void loop(); - private: - - std::vector<GameObject*> objectList; - void processInput(); - void update(); - void lateUpdate(); - void fixedUpdate(); - void render(); - bool gameRunning = false; - WindowManager window; - int timeScale = 1; - float accumulator = 0.0; - double currentTime; - double t = 0.0; - double dt = 0.01; -}; diff --git a/gameloop/include/timer.h b/gameloop/include/timer.h deleted file mode 100644 index ca1e5f3..0000000 --- a/gameloop/include/timer.h +++ /dev/null @@ -1,32 +0,0 @@ -#pragma once - -#include <SDL2/SDL.h> - -class LoopTimer { -public: - static LoopTimer& getInstance(); - void start(); - void update(); - double getDeltaTime() const; - int getCurrentTime() const; - void advanceFixedUpdate(); - double getFixedDeltaTime() const; - void setFPS(int FPS); - int getFPS() const; - double getGameScale(); - void setGameScale(double); - void enforceFrameRate(); - double getLag() const; -private: - LoopTimer(); - int FPS = 50; - double gameScale = 1; - double maximumDeltaTime = 0.25; - double deltaTime; - double frameTargetTime = FPS / 1000; - double fixedDeltaTime = 0.01; - double elapsedTime; - double elapsedFixedTime; - double time; - uint64_t lastFrameTime; -}; diff --git a/gameloop/include/window.h b/gameloop/include/window.h deleted file mode 100644 index cfde0e9..0000000 --- a/gameloop/include/window.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once -#include <SDL2/SDL.h> -#include <vector> -#include "gameObject.h" -#include <iostream> -class WindowManager{ - public: - WindowManager(); - virtual ~WindowManager(); - void render(std::vector<GameObject*> objects); - bool initWindow(); - void destroyWindow(); - - SDL_Renderer* getRenderer(); - private: - const int SCREEN_WIDTH = 800; - const int SCREEN_HEIGHT = 600; - SDL_Window* window = NULL; - SDL_Renderer* renderer = NULL; -}; diff --git a/gameloop/src/eventManager.cpp b/gameloop/src/eventManager.cpp deleted file mode 100644 index e69de29..0000000 --- a/gameloop/src/eventManager.cpp +++ /dev/null diff --git a/gameloop/src/gameObject.cpp b/gameloop/src/gameObject.cpp deleted file mode 100644 index f637314..0000000 --- a/gameloop/src/gameObject.cpp +++ /dev/null @@ -1,58 +0,0 @@ -#include "gameObject.h" -std::string GameObject::getName() const{ - return name; -} -float GameObject::getX() const{ - return x; -} - -float GameObject::getY() const{ - return y; -} - -float GameObject::getWidth() const{ - return width; -} - -float GameObject::getHeight() const{ - return height; -} - -float GameObject::getVelX() const{ - return velX; -} - -float GameObject::getVelY() const{ - return velY; -} -void GameObject::setName(std::string value){ - name = value; -} -void GameObject::setX(float value){ - x = value; -} - -void GameObject::setY(float value){ - y = value; -} - -void GameObject::setWidth(float value){ - width = value; -} - -void GameObject::setHeight(float value){ - height = value; -} - -void GameObject::setVelX(float value){ - velX = value; -} - -void GameObject::setVelY(float value){ - velY = value; -} - -GameObject::GameObject(std::string name, float x, float y, float width, float height, float velX, float velY) - : name(name),x(x), y(y), width(width), height(height), velX(velX), velY(velY) { - - } diff --git a/gameloop/src/loopManager.cpp b/gameloop/src/loopManager.cpp deleted file mode 100644 index dde3cef..0000000 --- a/gameloop/src/loopManager.cpp +++ /dev/null @@ -1,92 +0,0 @@ -#include "loopManager.h" -#include "timer.h" -LoopManager::LoopManager(){ -} -void LoopManager::processInput(){ - SDL_Event event; - SDL_PollEvent(&event); - switch(event.type){ - case SDL_QUIT: - gameRunning = false; - break; - case SDL_KEYDOWN: - if(event.key.keysym.sym == SDLK_ESCAPE){ - gameRunning = false; - }else if(event.key.keysym.sym == SDLK_i){ - LoopTimer::getInstance().setGameScale(LoopTimer::getInstance().getGameScale() + 0.1); - }else if(event.key.keysym.sym == SDLK_k){ - LoopTimer::getInstance().setGameScale(LoopTimer::getInstance().getGameScale() - 0.1); - } - - break; - } -} -void LoopManager::fixedUpdate(){ - fprintf(stderr,"fixed update\n"); -} -void LoopManager::loop() { - LoopTimer& timer = LoopTimer::getInstance(); - timer.start(); - - while (gameRunning) { - timer.update(); - - while (timer.getLag() >= timer.getFixedDeltaTime()) { - processInput(); - fixedUpdate(); - timer.advanceFixedUpdate(); - } - - update(); - render(); - - timer.enforceFrameRate(); - } - - window.destroyWindow(); -} - -void LoopManager::setup(){ - gameRunning = window.initWindow(); - LoopTimer::getInstance().start(); - LoopTimer::getInstance().setFPS(500); - - for(int i = 1; i < 3;i++){ - GameObject* square = new GameObject("square2",i*60,i*60,20,20,0,0); - objectList.push_back(square); - } -} -void LoopManager::render(){ - fprintf(stderr,"**********render********** \n"); - if(gameRunning){ - window.render(objectList); - } -} - -void LoopManager::update() { - fprintf(stderr, "********** normal update ********** \n"); - LoopTimer& timer = LoopTimer::getInstance(); - - float delta = timer.getDeltaTime(); - for (int i = 0; i < objectList.size(); i++) { - GameObject* obj = objectList[i]; - - // Move the object based on its direction - if (obj->direction == 1) { - obj->setX(obj->getX() + 50 * delta); - } else { - obj->setX(obj->getX() - 50 * delta); - } - - - if (obj->getX() > 500) { - obj->setX(500); - obj->direction = 0; // Switch direction to left - } else if (obj->getX() < 50) { - obj->setX(50); // Clamp the position to the boundary - obj->direction = 1; // Switch direction to right - } - } -} - - diff --git a/gameloop/src/main.cpp b/gameloop/src/main.cpp deleted file mode 100644 index 2333e63..0000000 --- a/gameloop/src/main.cpp +++ /dev/null @@ -1,19 +0,0 @@ -//Using SDL and standard IO -#include <SDL2/SDL.h> -#include <stdio.h> -//#include "window.h" -#include "loopManager.h" -#include "timer.h" -//Screen dimension constants - - -//Starts up SDL and creates window - -int main( int argc, char* args[] ) -{ - LoopManager gameLoop; - gameLoop.setup(); - gameLoop.loop(); - - return 0; -} diff --git a/gameloop/src/timer.cpp b/gameloop/src/timer.cpp deleted file mode 100644 index 03a2dbb..0000000 --- a/gameloop/src/timer.cpp +++ /dev/null @@ -1,73 +0,0 @@ -#include "timer.h" - -// Constructor (private) -LoopTimer::LoopTimer(){} - -// Get the singleton instance of the timer -LoopTimer& LoopTimer::getInstance() { - static LoopTimer instance; - return instance; -} - -// Start the timer (initialize frame time) -void LoopTimer::start() { - lastFrameTime = SDL_GetTicks64(); - elapsedTime = 0; - elapsedFixedTime = 0; - deltaTime = 0; -} - -// Update the timer, calculate deltaTime -void LoopTimer::update() { - uint64_t currentFrameTime = SDL_GetTicks64(); - deltaTime = (currentFrameTime - lastFrameTime) / 1000.0; // Convert to seconds - - if (deltaTime > maximumDeltaTime) { - deltaTime = maximumDeltaTime; - } - deltaTime *= gameScale; - elapsedTime += deltaTime; - lastFrameTime = currentFrameTime; -} - -double LoopTimer::getDeltaTime() const { - return deltaTime; -} -int LoopTimer::getCurrentTime() const { - return SDL_GetTicks(); -} - -void LoopTimer::advanceFixedUpdate() { - elapsedFixedTime += fixedDeltaTime; -} - -double LoopTimer::getFixedDeltaTime() const { - return fixedDeltaTime; -} - -void LoopTimer::setFPS(int FPS) { - this->FPS = FPS; - frameTargetTime = 1.0 / FPS; -} - -int LoopTimer::getFPS() const { - return FPS; -} -void LoopTimer::setGameScale(double value){ - gameScale = value; -}; -double LoopTimer::getGameScale(){ - return gameScale; -} -void LoopTimer::enforceFrameRate() { - uint64_t currentFrameTime = SDL_GetTicks64(); - double frameDuration = (currentFrameTime - lastFrameTime) / 1000.0; - - if (frameDuration < frameTargetTime) { - uint32_t delayTime = (uint32_t)((frameTargetTime - frameDuration) * 1000.0); - SDL_Delay(delayTime); - } -} -double LoopTimer::getLag() const { - return elapsedTime - elapsedFixedTime; -} diff --git a/gameloop/src/window.cpp b/gameloop/src/window.cpp deleted file mode 100644 index f998a79..0000000 --- a/gameloop/src/window.cpp +++ /dev/null @@ -1,60 +0,0 @@ -#include "window.h" -WindowManager::WindowManager(){ - if( !initWindow() ) - { - printf( "Failed to initialize!\n" ); - } -} -WindowManager::~WindowManager(){ - destroyWindow(); -} -SDL_Renderer* WindowManager::getRenderer(){ - return renderer; -} - -void WindowManager::render(std::vector<GameObject*> objects){ - // Set the draw color to black and clear the screen - SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); - SDL_RenderClear(renderer); - - // Print object position (optional for debugging) - //fprintf(stderr, "%d\n", objectList.size()); - for(int i = 0; i < objects.size();i++){ - //fprintf(stderr, "%f\n", objectList[i]->getX()); - // Create a rectangle representing the ball - SDL_Rect ball_rect = { - (int)objects[i]->getX(), - (int)objects[i]->getY(), - (int)objects[i]->getWidth(), - (int)objects[i]->getHeight(), - }; - // Set the draw color to white and render the ball - SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); - SDL_RenderFillRect(renderer, &ball_rect); - } - - SDL_RenderPresent(renderer); -} - -bool WindowManager::initWindow(){ - if(SDL_Init(SDL_INIT_EVERYTHING) != 0){ - fprintf(stderr,"Error inititalising SDL.\n"); - return false; - } - window = SDL_CreateWindow( "SDL Tutorial", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN ); - if(!window){ - fprintf(stderr,"Error creating SDL Window. \n"); - return false; - } - renderer = SDL_CreateRenderer(window,-1,0); - if(!renderer){ - fprintf(stderr,"Error creating SDL renderer. \n"); - return false; - } - return true; -} -void WindowManager::destroyWindow(){ - SDL_DestroyRenderer(renderer); - SDL_DestroyWindow(window); - SDL_Quit(); -} diff --git a/gameloop/versions/delayBased.cpp b/gameloop/versions/delayBased.cpp deleted file mode 100644 index a8cad15..0000000 --- a/gameloop/versions/delayBased.cpp +++ /dev/null @@ -1,57 +0,0 @@ -#include "loopManager.h" -#include "timer.h" -LoopManager::LoopManager(){ -} -void LoopManager::processInput(){ - SDL_Event event; - SDL_PollEvent(&event); - switch(event.type){ - case SDL_QUIT: - gameRunning = false; - break; - case SDL_KEYDOWN: - if(event.key.keysym.sym == SDLK_ESCAPE){ - gameRunning = false; - } - break; - } -} -void LoopManager::loop(){ - fprintf(stderr,"loop. \n"); - while(gameRunning){ - //Timer::getInstance().update(); - //deltaTime = Timer::getInstance().getDeltaTime(); - processInput(); - update(); - render(); - } - window.destroyWindow(); -} -void LoopManager::setup(){ - gameRunning = window.initWindow(); - LoopTimer::getInstance().start(); - LoopTimer::getInstance().setFPS(210); - - for(int i = 0; i < 2;i++){ - GameObject* square2 = new GameObject("square2",i*40,i*40,20,20,0,0); - objectList.push_back(square2); - } -} -void LoopManager::render(){ - if(gameRunning){ - window.render(objectList); - } -} - -void LoopManager::update() { - LoopTimer& timer = LoopTimer::getInstance(); - timer.enforceFrameRate(); - timer.update(); - float delta= timer.getDeltaTime(); - - for (int i = 0; i < objectList.size(); i++) { - objectList[i]->setX(objectList[i]->getX() + 50 * delta); - objectList[i]->setY(objectList[i]->getY() + 50 * delta); - } -} - |