Time, Mr. Freeman?

This commit is contained in:
2023-11-17 12:27:18 -06:00
parent 490da9d0c1
commit 5901b9e07c
10 changed files with 105 additions and 3 deletions

View File

@ -31,7 +31,7 @@ add_subdirectory(game)
# add_subdirectory(save)
add_subdirectory(scene)
# add_subdirectory(state)
# add_subdirectory(time)
add_subdirectory(time)
add_subdirectory(util)
# Definitions

View File

@ -21,7 +21,7 @@ void Game::init() {
nextFrameScene = std::make_shared<Scene>(shared_from_this(), initialScene);
}
void Game::update() {
void Game::update(float_t delta) {
renderHost.update(shared_from_this());
if(nextFrameScene) {

View File

@ -7,6 +7,7 @@
#include "dawnlibs.hpp"
#include "display/RenderHost.hpp"
#include "input/InputManager.hpp"
#include "time/TimeManager.hpp"
namespace Dawn {
class Scene;
@ -19,6 +20,7 @@ namespace Dawn {
public:
RenderHost renderHost;
InputManager inputManager;
TimeManager timeManager;
/**
* Constructs the game instance, does not initialize anything.

View File

@ -0,0 +1,9 @@
# Copyright (c) 2022 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
target_sources(${DAWN_TARGET_NAME}
PRIVATE
ITimeManager.cpp
)

View File

@ -0,0 +1,17 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#include "ITimeManager.hpp"
using namespace Dawn;
void ITimeManager::tick(float_t delta) {
this->delta = delta;
this->time += delta;
}
ITimeManager::~ITimeManager() {
}

View File

@ -0,0 +1,34 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#pragma once
#include "dawnlibs.hpp"
namespace Dawn {
class ITimeManager {
public:
float_t delta = 0.016f;
float_t time = 0.016f;
/**
* Ticks / updates the time management system.
*
* @param delta Time delta in seconds.
*/
void tick(float_t delta);
/**
* Returns the real world time epoch.
*
* @return Epoch time in milliseconds.
*/
virtual int64_t getRealTime() = 0;
/**
* Cleans up the time manager.
*/
virtual ~ITimeManager();
};
}

View File

@ -25,4 +25,4 @@ target_include_directories(${DAWN_TARGET_NAME}
# Subdirs
add_subdirectory(display)
add_subdirectory(input)
# add_subdirectory(time)
add_subdirectory(time)

View File

@ -0,0 +1,9 @@
# Copyright (c) 2022 Dominic Masters
#
# This software is released under the MIT License.
# https://opensource.org/licenses/MIT
target_sources(${DAWN_TARGET_NAME}
PRIVATE
TimeManager.cpp
)

View File

@ -0,0 +1,17 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#include "TimeManager.hpp"
#include <sys/time.h>
#include <chrono>
#include <ctime>
#include <iostream>
using namespace Dawn;
int64_t TimeManager::getRealTime() {
auto millisec_since_epoch = std::chrono::duration_cast<std::chrono::milliseconds>(std::chrono::system_clock::now().time_since_epoch()) .count();
return millisec_since_epoch;
}

View File

@ -0,0 +1,14 @@
// Copyright (c) 2023 Dominic Masters
//
// This software is released under the MIT License.
// https://opensource.org/licenses/MIT
#pragma once
#include "time/ITimeManager.hpp"
namespace Dawn {
class TimeManager : public ITimeManager {
public:
int64_t getRealTime() override;
};
}