Use current rendering modes when placing a save (fixes #446)
This commit is contained in:
parent
8223e06670
commit
23337862a4
@ -22,6 +22,7 @@ ThumbnailRendererTask::~ThumbnailRendererTask()
|
|||||||
|
|
||||||
bool ThumbnailRendererTask::doWork()
|
bool ThumbnailRendererTask::doWork()
|
||||||
{
|
{
|
||||||
|
SaveRenderer::Ref().ResetModes();
|
||||||
thumbnail = std::unique_ptr<VideoBuffer>(SaveRenderer::Ref().Render(Save.get(), Decorations, Fire));
|
thumbnail = std::unique_ptr<VideoBuffer>(SaveRenderer::Ref().Render(Save.get(), Decorations, Fire));
|
||||||
if (thumbnail)
|
if (thumbnail)
|
||||||
{
|
{
|
||||||
|
@ -2583,70 +2583,75 @@ Renderer::Renderer(Graphics * g, Simulation * sim):
|
|||||||
memset(fire_b, 0, sizeof(fire_b));
|
memset(fire_b, 0, sizeof(fire_b));
|
||||||
|
|
||||||
//Set defauly display modes
|
//Set defauly display modes
|
||||||
SetColourMode(COLOUR_DEFAULT);
|
ResetModes();
|
||||||
AddRenderMode(RENDER_BASC);
|
|
||||||
AddRenderMode(RENDER_FIRE);
|
|
||||||
AddRenderMode(RENDER_SPRK);
|
|
||||||
|
|
||||||
//Render mode presets. Possibly load from config in future?
|
//Render mode presets. Possibly load from config in future?
|
||||||
renderModePresets = new RenderPreset[11];
|
renderModePresets.push_back({
|
||||||
|
"Alternative Velocity Display",
|
||||||
renderModePresets[0].Name = "Alternative Velocity Display";
|
{ RENDER_EFFE, RENDER_BASC },
|
||||||
renderModePresets[0].RenderModes.push_back(RENDER_EFFE);
|
{ DISPLAY_AIRC },
|
||||||
renderModePresets[0].RenderModes.push_back(RENDER_BASC);
|
{ }
|
||||||
renderModePresets[0].DisplayModes.push_back(DISPLAY_AIRC);
|
});
|
||||||
|
renderModePresets.push_back({
|
||||||
renderModePresets[1].Name = "Velocity Display";
|
"Velocity Display",
|
||||||
renderModePresets[1].RenderModes.push_back(RENDER_EFFE);
|
{ RENDER_EFFE, RENDER_BASC },
|
||||||
renderModePresets[1].RenderModes.push_back(RENDER_BASC);
|
{ DISPLAY_AIRV },
|
||||||
renderModePresets[1].DisplayModes.push_back(DISPLAY_AIRV);
|
{ }
|
||||||
|
});
|
||||||
renderModePresets[2].Name = "Pressure Display";
|
renderModePresets.push_back({
|
||||||
renderModePresets[2].RenderModes.push_back(RENDER_EFFE);
|
"Pressure Display",
|
||||||
renderModePresets[2].RenderModes.push_back(RENDER_BASC);
|
{ RENDER_EFFE, RENDER_BASC },
|
||||||
renderModePresets[2].DisplayModes.push_back(DISPLAY_AIRP);
|
{ DISPLAY_AIRP },
|
||||||
|
{ }
|
||||||
renderModePresets[3].Name = "Persistent Display";
|
});
|
||||||
renderModePresets[3].RenderModes.push_back(RENDER_EFFE);
|
renderModePresets.push_back({
|
||||||
renderModePresets[3].RenderModes.push_back(RENDER_BASC);
|
"Persistent Display",
|
||||||
renderModePresets[3].DisplayModes.push_back(DISPLAY_PERS);
|
{ RENDER_EFFE, RENDER_BASC },
|
||||||
|
{ DISPLAY_PERS },
|
||||||
renderModePresets[4].Name = "Fire Display";
|
{ }
|
||||||
renderModePresets[4].RenderModes.push_back(RENDER_FIRE);
|
});
|
||||||
renderModePresets[4].RenderModes.push_back(RENDER_SPRK);
|
renderModePresets.push_back({
|
||||||
renderModePresets[4].RenderModes.push_back(RENDER_EFFE);
|
"Fire Display",
|
||||||
renderModePresets[4].RenderModes.push_back(RENDER_BASC);
|
{ RENDER_FIRE, RENDER_SPRK, RENDER_EFFE, RENDER_BASC },
|
||||||
|
{ },
|
||||||
renderModePresets[5].Name = "Blob Display";
|
{ }
|
||||||
renderModePresets[5].RenderModes.push_back(RENDER_FIRE);
|
});
|
||||||
renderModePresets[5].RenderModes.push_back(RENDER_SPRK);
|
renderModePresets.push_back({
|
||||||
renderModePresets[5].RenderModes.push_back(RENDER_EFFE);
|
"Blob Display",
|
||||||
renderModePresets[5].RenderModes.push_back(RENDER_BLOB);
|
{ RENDER_FIRE, RENDER_SPRK, RENDER_EFFE, RENDER_BLOB },
|
||||||
|
{ },
|
||||||
renderModePresets[6].Name = "Heat Display";
|
{ }
|
||||||
renderModePresets[6].RenderModes.push_back(RENDER_BASC);
|
});
|
||||||
renderModePresets[6].DisplayModes.push_back(DISPLAY_AIRH);
|
renderModePresets.push_back({
|
||||||
renderModePresets[6].ColourMode = COLOUR_HEAT;
|
"Heat Display",
|
||||||
|
{ RENDER_BASC },
|
||||||
renderModePresets[7].Name = "Fancy Display";
|
{ DISPLAY_AIRH },
|
||||||
renderModePresets[7].RenderModes.push_back(RENDER_FIRE);
|
{ COLOUR_HEAT }
|
||||||
renderModePresets[7].RenderModes.push_back(RENDER_SPRK);
|
});
|
||||||
renderModePresets[7].RenderModes.push_back(RENDER_GLOW);
|
renderModePresets.push_back({
|
||||||
renderModePresets[7].RenderModes.push_back(RENDER_BLUR);
|
"Fancy Display",
|
||||||
renderModePresets[7].RenderModes.push_back(RENDER_EFFE);
|
{ RENDER_FIRE, RENDER_SPRK, RENDER_GLOW, RENDER_BLUR, RENDER_EFFE, RENDER_BASC },
|
||||||
renderModePresets[7].RenderModes.push_back(RENDER_BASC);
|
{ DISPLAY_WARP },
|
||||||
renderModePresets[7].DisplayModes.push_back(DISPLAY_WARP);
|
{ }
|
||||||
|
});
|
||||||
renderModePresets[8].Name = "Nothing Display";
|
renderModePresets.push_back({
|
||||||
renderModePresets[8].RenderModes.push_back(RENDER_BASC);
|
"Nothing Display",
|
||||||
|
{ RENDER_BASC },
|
||||||
renderModePresets[9].Name = "Heat Gradient Display";
|
{ },
|
||||||
renderModePresets[9].RenderModes.push_back(RENDER_BASC);
|
{ }
|
||||||
renderModePresets[9].ColourMode = COLOUR_GRAD;
|
});
|
||||||
|
renderModePresets.push_back({
|
||||||
renderModePresets[10].Name = "Life Gradient Display";
|
"Heat Gradient Display",
|
||||||
renderModePresets[10].RenderModes.push_back(RENDER_BASC);
|
{ RENDER_BASC },
|
||||||
renderModePresets[10].ColourMode = COLOUR_LIFE;
|
{ },
|
||||||
|
{ COLOUR_GRAD }
|
||||||
|
});
|
||||||
|
renderModePresets.push_back({
|
||||||
|
"Life Gradient Display",
|
||||||
|
{ RENDER_BASC },
|
||||||
|
{ },
|
||||||
|
{ COLOUR_LIFE }
|
||||||
|
});
|
||||||
|
|
||||||
//Prepare the graphics cache
|
//Prepare the graphics cache
|
||||||
graphicscache = new gcache_item[PT_NUM];
|
graphicscache = new gcache_item[PT_NUM];
|
||||||
@ -2933,6 +2938,14 @@ unsigned int Renderer::GetColourMode()
|
|||||||
return colour_mode;
|
return colour_mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Renderer::ResetModes()
|
||||||
|
{
|
||||||
|
SetColourMode(COLOUR_DEFAULT);
|
||||||
|
AddRenderMode(RENDER_BASC);
|
||||||
|
AddRenderMode(RENDER_FIRE);
|
||||||
|
AddRenderMode(RENDER_SPRK);
|
||||||
|
}
|
||||||
|
|
||||||
VideoBuffer Renderer::DumpFrame()
|
VideoBuffer Renderer::DumpFrame()
|
||||||
{
|
{
|
||||||
#ifdef OGLR
|
#ifdef OGLR
|
||||||
@ -2952,8 +2965,6 @@ VideoBuffer Renderer::DumpFrame()
|
|||||||
|
|
||||||
Renderer::~Renderer()
|
Renderer::~Renderer()
|
||||||
{
|
{
|
||||||
delete[] renderModePresets;
|
|
||||||
|
|
||||||
#if !defined(OGLR)
|
#if !defined(OGLR)
|
||||||
#if defined(OGLI)
|
#if defined(OGLI)
|
||||||
delete[] vid;
|
delete[] vid;
|
||||||
|
@ -47,7 +47,7 @@ public:
|
|||||||
unsigned int colour_mode;
|
unsigned int colour_mode;
|
||||||
std::vector<unsigned int> display_modes;
|
std::vector<unsigned int> display_modes;
|
||||||
unsigned int display_mode;
|
unsigned int display_mode;
|
||||||
RenderPreset * renderModePresets;
|
std::vector<RenderPreset> renderModePresets;
|
||||||
//
|
//
|
||||||
unsigned char fire_r[YRES/CELL][XRES/CELL];
|
unsigned char fire_r[YRES/CELL][XRES/CELL];
|
||||||
unsigned char fire_g[YRES/CELL][XRES/CELL];
|
unsigned char fire_g[YRES/CELL][XRES/CELL];
|
||||||
@ -154,6 +154,8 @@ public:
|
|||||||
void SetColourMode(unsigned int mode);
|
void SetColourMode(unsigned int mode);
|
||||||
unsigned int GetColourMode();
|
unsigned int GetColourMode();
|
||||||
|
|
||||||
|
void ResetModes();
|
||||||
|
|
||||||
int GetGridSize() { return gridSize; }
|
int GetGridSize() { return gridSize; }
|
||||||
void SetGridSize(int value) { gridSize = value; }
|
void SetGridSize(int value) { gridSize = value; }
|
||||||
|
|
||||||
|
@ -1964,6 +1964,7 @@ void GameView::NotifyPlaceSaveChanged(GameModel * sender)
|
|||||||
placeSaveOffset = ui::Point(0, 0);
|
placeSaveOffset = ui::Point(0, 0);
|
||||||
if(sender->GetPlaceSave())
|
if(sender->GetPlaceSave())
|
||||||
{
|
{
|
||||||
|
SaveRenderer::Ref().CopyModes(sender->GetRenderer());
|
||||||
placeSaveThumb = SaveRenderer::Ref().Render(sender->GetPlaceSave());
|
placeSaveThumb = SaveRenderer::Ref().Render(sender->GetPlaceSave());
|
||||||
selectMode = PlaceSave;
|
selectMode = PlaceSave;
|
||||||
selectPoint2 = mousePosition;
|
selectPoint2 = mousePosition;
|
||||||
|
@ -547,6 +547,7 @@ void PreviewView::NotifySaveChanged(PreviewModel * sender)
|
|||||||
|
|
||||||
if(save->GetGameSave())
|
if(save->GetGameSave())
|
||||||
{
|
{
|
||||||
|
SaveRenderer::Ref().ResetModes();
|
||||||
savePreview = SaveRenderer::Ref().Render(save->GetGameSave(), false, true);
|
savePreview = SaveRenderer::Ref().Render(save->GetGameSave(), false, true);
|
||||||
|
|
||||||
if(savePreview && savePreview->Buffer && !(savePreview->Width == XRES/2 && savePreview->Height == YRES/2))
|
if(savePreview && savePreview->Buffer && !(savePreview->Width == XRES/2 && savePreview->Height == YRES/2))
|
||||||
|
@ -176,3 +176,14 @@ SaveRenderer::~SaveRenderer()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SaveRenderer::CopyModes(Renderer *source)
|
||||||
|
{
|
||||||
|
ren->SetRenderMode(source->GetRenderMode());
|
||||||
|
ren->SetDisplayMode(source->GetDisplayMode());
|
||||||
|
ren->SetColourMode(source->GetColourMode());
|
||||||
|
}
|
||||||
|
|
||||||
|
void SaveRenderer::ResetModes()
|
||||||
|
{
|
||||||
|
ren->ResetModes();
|
||||||
|
}
|
||||||
|
@ -21,6 +21,8 @@ public:
|
|||||||
SaveRenderer();
|
SaveRenderer();
|
||||||
VideoBuffer * Render(GameSave * save, bool decorations = true, bool fire = true);
|
VideoBuffer * Render(GameSave * save, bool decorations = true, bool fire = true);
|
||||||
VideoBuffer * Render(unsigned char * saveData, int saveDataSize, bool decorations = true, bool fire = true);
|
VideoBuffer * Render(unsigned char * saveData, int saveDataSize, bool decorations = true, bool fire = true);
|
||||||
|
void CopyModes(Renderer *source);
|
||||||
|
void ResetModes();
|
||||||
virtual ~SaveRenderer();
|
virtual ~SaveRenderer();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
Reference in New Issue
Block a user