1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-08-10 22:31:40 +02:00

Code cleanup, add comments where relevant

This commit is contained in:
Ivan Savenko
2025-03-12 15:57:06 +00:00
parent 6877bbfe3a
commit ed4079e83b
4 changed files with 21 additions and 15 deletions

View File

@@ -23,21 +23,17 @@
#include "media/CVideoHandler.h" #include "media/CVideoHandler.h"
#include "media/CEmptyVideoPlayer.h" #include "media/CEmptyVideoPlayer.h"
#include "CPlayerInterface.h"
#include "adventureMap/AdventureMapInterface.h" #include "adventureMap/AdventureMapInterface.h"
#include "render/Canvas.h" #include "render/Canvas.h"
#include "render/Colors.h" #include "render/Colors.h"
#include "render/Graphics.h"
#include "render/IFont.h" #include "render/IFont.h"
#include "render/EFont.h" #include "render/EFont.h"
#include "renderSDL/ScreenHandler.h" #include "renderSDL/ScreenHandler.h"
#include "renderSDL/RenderHandler.h" #include "renderSDL/RenderHandler.h"
#include "CMT.h"
#include "GameEngineUser.h" #include "GameEngineUser.h"
#include "battle/BattleInterface.h" #include "battle/BattleInterface.h"
#include "../lib/AsyncRunner.h" #include "../lib/AsyncRunner.h"
#include "../lib/CThreadHelper.h"
#include "../lib/CConfigHandler.h" #include "../lib/CConfigHandler.h"
#include <SDL_render.h> #include <SDL_render.h>
@@ -84,8 +80,8 @@ GameEngine::GameEngine()
soundPlayerInstance = std::make_unique<CSoundHandler>(); soundPlayerInstance = std::make_unique<CSoundHandler>();
musicPlayerInstance = std::make_unique<CMusicHandler>(); musicPlayerInstance = std::make_unique<CMusicHandler>();
sound().setVolume((ui32)settings["general"]["sound"].Float()); sound().setVolume(settings["general"]["sound"].Integer());
music().setVolume((ui32)settings["general"]["music"].Float()); music().setVolume(settings["general"]["music"].Integer());
cursorHandlerInstance = std::make_unique<CursorHandler>(); cursorHandlerInstance = std::make_unique<CursorHandler>();
asyncTasks = std::make_unique<AsyncRunner>(); asyncTasks = std::make_unique<AsyncRunner>();
@@ -244,7 +240,7 @@ std::shared_ptr<IStatusBar> GameEngine::statusbar()
return locked; return locked;
} }
void GameEngine::setStatusbar(std::shared_ptr<IStatusBar> newStatusBar) void GameEngine::setStatusbar(const std::shared_ptr<IStatusBar> & newStatusBar)
{ {
currentStatusBar = newStatusBar; currentStatusBar = newStatusBar;
} }

View File

@@ -58,6 +58,8 @@ private:
IGameEngineUser *engineUser = nullptr; IGameEngineUser *engineUser = nullptr;
void updateFrame(); void updateFrame();
void handleEvents(); //takes events from queue and calls interested objects
void drawFPSCounter(); // draws the FPS to the upper left corner of the screen
public: public:
std::mutex interfaceMutex; std::mutex interfaceMutex;
@@ -102,7 +104,9 @@ public:
std::shared_ptr<IStatusBar> statusbar(); std::shared_ptr<IStatusBar> statusbar();
/// Set currently active status bar /// Set currently active status bar
void setStatusbar(std::shared_ptr<IStatusBar>); void setStatusbar(const std::shared_ptr<IStatusBar> &);
/// Sets engine user that is used as target of callback for events received by engine
void setEngineUser(IGameEngineUser * user); void setEngineUser(IGameEngineUser * user);
bool captureChildren; //all newly created objects will get their parents from stack and will be added to parents children list bool captureChildren; //all newly created objects will get their parents from stack and will be added to parents children list
@@ -111,15 +115,17 @@ public:
GameEngine(); GameEngine();
~GameEngine(); ~GameEngine();
/// Performs main game loop till game shutdown
/// This method never returns, to abort main loop throw GameShutdownException
[[noreturn]] void mainLoop(); [[noreturn]] void mainLoop();
/// called whenever SDL_WINDOWEVENT_RESTORED is reported or the user selects a different resolution, requiring to center/resize all windows /// called whenever SDL_WINDOWEVENT_RESTORED is reported or the user selects a different resolution, requiring to center/resize all windows
void onScreenResize(bool resolutionChanged); void onScreenResize(bool resolutionChanged);
void handleEvents(); //takes events from queue and calls interested objects /// Simulate mouse movement to force refresh UI state that updates on mouse move
void fakeMouseMove(); void fakeMouseMove();
void drawFPSCounter(); // draws the FPS to the upper left corner of the screen
/// Returns true for calls made from main (GUI) thread, false othervice
bool amIGuiThread(); bool amIGuiThread();
/// Calls provided functor in main thread on next execution frame /// Calls provided functor in main thread on next execution frame

View File

@@ -235,14 +235,14 @@ int main(int argc, char * argv[])
} }
Settings session = settings.write["session"]; Settings session = settings.write["session"];
auto setSettingBool = [&](std::string key, std::string arg) { auto setSettingBool = [&](const std::string & key, const std::string & arg) {
Settings s = settings.write(vstd::split(key, "/")); Settings s = settings.write(vstd::split(key, "/"));
if(vm.count(arg)) if(vm.count(arg))
s->Bool() = true; s->Bool() = true;
else if(s->isNull()) else if(s->isNull())
s->Bool() = false; s->Bool() = false;
}; };
auto setSettingInteger = [&](std::string key, std::string arg, si64 defaultValue) { auto setSettingInteger = [&](const std::string & key, const std::string & arg, si64 defaultValue) {
Settings s = settings.write(vstd::split(key, "/")); Settings s = settings.write(vstd::split(key, "/"));
if(vm.count(arg)) if(vm.count(arg))
s->Integer() = vm[arg].as<si64>(); s->Integer() = vm[arg].as<si64>();
@@ -280,7 +280,7 @@ int main(int argc, char * argv[])
logGlobal->debug("settings = %s", settings.toJsonNode().toString()); logGlobal->debug("settings = %s", settings.toJsonNode().toString());
// Some basic data validation to produce better error messages in cases of incorrect install // Some basic data validation to produce better error messages in cases of incorrect install
auto testFile = [](std::string filename, std::string message) auto testFile = [](const std::string & filename, const std::string & message)
{ {
if (!CResourceHandler::get()->existsResource(ResourcePath(filename))) if (!CResourceHandler::get()->existsResource(ResourcePath(filename)))
handleFatalError(message, false); handleFatalError(message, false);

View File

@@ -9,23 +9,27 @@
*/ */
#pragma once #pragma once
#include <tbb/task_group.h>
#include <tbb/task_arena.h> #include <tbb/task_arena.h>
#include <tbb/task_group.h>
VCMI_LIB_NAMESPACE_BEGIN VCMI_LIB_NAMESPACE_BEGIN
/// Helper class for running asynchronous tasks using TBB thread pool
class AsyncRunner : boost::noncopyable class AsyncRunner : boost::noncopyable
{ {
tbb::task_arena arena; tbb::task_arena arena;
tbb::task_group taskGroup; tbb::task_group taskGroup;
public: public:
template <typename Functor> /// Runs the provided functor asynchronously on a thread from the TBB worker pool.
template<typename Functor>
void run(Functor && f) void run(Functor && f)
{ {
arena.enqueue(taskGroup.defer(std::forward<Functor>(f))); arena.enqueue(taskGroup.defer(std::forward<Functor>(f)));
} }
/// Waits for all previously enqueued task.
/// Re-entrable - waiting for tasks does not prevent submitting new tasks
void wait() void wait()
{ {
taskGroup.wait(); taskGroup.wait();