1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-11-25 22:42:04 +02:00

color filter cheats

This commit is contained in:
Laserlicht
2025-05-19 00:40:05 +02:00
parent 01bc8f2078
commit d102f660a0
17 changed files with 232 additions and 98 deletions

View File

@@ -11,6 +11,8 @@
#include "StdInc.h"
#include "ScreenHandler.h"
#include "SDL_Extensions.h"
#include "../CMT.h"
#include "../eventsSDL/NotificationHandler.h"
#include "../GameEngine.h"
@@ -623,7 +625,19 @@ Canvas ScreenHandler::getScreenCanvas() const
void ScreenHandler::updateScreenTexture()
{
SDL_UpdateTexture(screenTexture, nullptr, screen->pixels, screen->pitch);
if(colorScheme == ColorScheme::NONE)
{
SDL_UpdateTexture(screenTexture, nullptr, screen->pixels, screen->pitch);
return;
}
SDL_Surface * screenScheme = SDL_ConvertSurface(screen, screen->format, screen->flags);
if(colorScheme == ColorScheme::GRAYSCALE)
CSDL_Ext::convertToGrayscale(screenScheme, Rect(0, 0, screen->w, screen->h));
else if(colorScheme == ColorScheme::H2_SCHEME)
CSDL_Ext::convertToH2Scheme(screenScheme, Rect(0, 0, screen->w, screen->h));
SDL_UpdateTexture(screenTexture, nullptr, screenScheme->pixels, screenScheme->pitch);
SDL_FreeSurface(screenScheme);
}
void ScreenHandler::presentScreenTexture()
@@ -674,3 +688,8 @@ bool ScreenHandler::hasFocus()
ui32 flags = SDL_GetWindowFlags(mainWindow);
return flags & SDL_WINDOW_INPUT_FOCUS;
}
void ScreenHandler::setColorScheme(ColorScheme scheme)
{
colorScheme = scheme;
}