1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-20 14:23:08 +01:00

Refactor DRAWING_ENGINE_FLAGS into FlagHolder

This commit is contained in:
Gymnasiast
2025-03-26 12:43:21 +01:00
parent ea9e348c9d
commit 41dc87c68e
6 changed files with 14 additions and 14 deletions

View File

@@ -358,9 +358,9 @@ public:
return &_bitsDPI; return &_bitsDPI;
} }
DRAWING_ENGINE_FLAGS GetFlags() override DrawingEngineFlags GetFlags() override
{ {
return DEF_NONE; return {};
} }
void InvalidateImage(uint32_t image) override void InvalidateImage(uint32_t image) override

View File

@@ -9,8 +9,9 @@
#pragma once #pragma once
#include "./Weather.h" #include "../core/FlagHolder.hpp"
#include "ColourPalette.h" #include "ColourPalette.h"
#include "Weather.h"
#include <memory> #include <memory>
#include <string> #include <string>
@@ -24,20 +25,19 @@ enum class DrawingEngine : int32_t
Count, Count,
}; };
enum DRAWING_ENGINE_FLAGS enum DrawingEngineFlag
{ {
DEF_NONE = 0,
/** /**
* Whether or not the engine will only draw changed blocks of the screen each frame. * Whether or not the engine will only draw changed blocks of the screen each frame.
*/ */
DEF_DIRTY_OPTIMISATIONS = 1 << 0, dirtyOptimisations,
/** /**
* The drawing engine is capable of processing the drawing in parallel. * The drawing engine is capable of processing the drawing in parallel.
*/ */
DEF_PARALLEL_DRAWING = 1 << 1, parallelDrawing = 1 << 1,
}; };
using DrawingEngineFlags = FlagHolder<uint8_t, DrawingEngineFlag>;
struct DrawPixelInfo; struct DrawPixelInfo;
@@ -73,7 +73,7 @@ namespace OpenRCT2::Drawing
virtual IDrawingContext* GetDrawingContext() = 0; virtual IDrawingContext* GetDrawingContext() = 0;
virtual DrawPixelInfo* GetDrawingPixelInfo() = 0; virtual DrawPixelInfo* GetDrawingPixelInfo() = 0;
virtual DRAWING_ENGINE_FLAGS GetFlags() = 0; virtual DrawingEngineFlags GetFlags() = 0;
virtual void InvalidateImage(uint32_t image) = 0; virtual void InvalidateImage(uint32_t image) = 0;
}; };

View File

@@ -128,7 +128,7 @@ bool DrawingEngineHasDirtyOptimisations()
auto drawingEngine = GetDrawingEngine(); auto drawingEngine = GetDrawingEngine();
if (drawingEngine != nullptr) if (drawingEngine != nullptr)
{ {
result = (drawingEngine->GetFlags() & DEF_DIRTY_OPTIMISATIONS); result = drawingEngine->GetFlags().has(DrawingEngineFlag::dirtyOptimisations);
} }
return result; return result;
} }

View File

@@ -273,9 +273,9 @@ DrawPixelInfo* X8DrawingEngine::GetDrawingPixelInfo()
return &_bitsDPI; return &_bitsDPI;
} }
DRAWING_ENGINE_FLAGS X8DrawingEngine::GetFlags() DrawingEngineFlags X8DrawingEngine::GetFlags()
{ {
return static_cast<DRAWING_ENGINE_FLAGS>(DEF_DIRTY_OPTIMISATIONS | DEF_PARALLEL_DRAWING); return { DrawingEngineFlag::dirtyOptimisations, DrawingEngineFlag::parallelDrawing };
} }
void X8DrawingEngine::InvalidateImage([[maybe_unused]] uint32_t image) void X8DrawingEngine::InvalidateImage([[maybe_unused]] uint32_t image)

View File

@@ -108,7 +108,7 @@ namespace OpenRCT2
std::string Screenshot() override; std::string Screenshot() override;
IDrawingContext* GetDrawingContext() override; IDrawingContext* GetDrawingContext() override;
DrawPixelInfo* GetDrawingPixelInfo() override; DrawPixelInfo* GetDrawingPixelInfo() override;
DRAWING_ENGINE_FLAGS GetFlags() override; DrawingEngineFlags GetFlags() override;
void InvalidateImage(uint32_t image) override; void InvalidateImage(uint32_t image) override;
DrawPixelInfo* GetDPI(); DrawPixelInfo* GetDPI();

View File

@@ -1009,7 +1009,7 @@ namespace OpenRCT2
} }
bool useParallelDrawing = false; bool useParallelDrawing = false;
if (useMultithreading && (dpi.DrawingEngine->GetFlags() & DEF_PARALLEL_DRAWING)) if (useMultithreading && dpi.DrawingEngine->GetFlags().has(DrawingEngineFlag::parallelDrawing))
{ {
useParallelDrawing = true; useParallelDrawing = true;
} }