The-Powder-Toy/src/simulation/SaveRenderer.cpp

90 lines
1.8 KiB
C++
Raw Normal View History

/*
* SaveRenderer.cpp
*
* Created on: Apr 3, 2012
* Author: Simon
*/
#include "SaveRenderer.h"
#include "Graphics.h"
#include "Simulation.h"
#include "Renderer.h"
SaveRenderer::SaveRenderer(){
//g = new Graphics();
sim = new Simulation();
ren = new Renderer(g, sim);
}
Thumbnail * SaveRenderer::Render(GameSave * save)
{
return NULL;
int width, height;
2012-06-21 09:49:32 -05:00
Thumbnail * tempThumb;
#ifdef OGLR
width = save->blockWidth*CELL;
height = save->blockHeight*CELL;
VideoBuffer buffer(width, height);
buffer.BlendCharacter((width/2)-3, (height/2)-5, 'x', 255, 255, 255, 255);
2012-06-21 09:49:32 -05:00
tempThumb = new Thumbnail(0, 0, buffer.Buffer, ui::Point(width, height));
return tempThumb;
#else
width = save->blockWidth;
height = save->blockHeight;
pixel * pData = NULL;
pixel * dst;
pixel * src = g->vid;
g->Clear();
sim->clear_sim();
if(!sim->Load(save))
{
ren->render_parts();
pData = (pixel *)malloc(PIXELSIZE * ((width*CELL)*(height*CELL)));
dst = pData;
for(int i = 0; i < height*CELL; i++)
{
memcpy(dst, src, (width*CELL)*PIXELSIZE);
dst+=(width*CELL);///PIXELSIZE;
src+=XRES+BARSIZE;
}
tempThumb = new Thumbnail(0, 0, pData, ui::Point(width*CELL, height*CELL));
}
if(pData)
free(pData);
return tempThumb;
#endif
}
Thumbnail * SaveRenderer::Render(unsigned char * saveData, int dataSize)
{
GameSave * tempSave;
try {
tempSave = new GameSave((char*)saveData, dataSize);
} catch (exception & e) {
//Todo: make this look a little less shit
VideoBuffer buffer(64, 64);
buffer.BlendCharacter(32, 32, 'x', 255, 255, 255, 255);
Thumbnail * thumb = new Thumbnail(0, 0, buffer.Buffer, ui::Point(64, 64));
return thumb;
}
Thumbnail * thumb = Render(tempSave);
delete tempSave;
return thumb;
}
SaveRenderer::~SaveRenderer() {
// TODO Auto-generated destructor stub
}