fix renderer compile and make it create a "Save file invalid" sign when it can't render the save, fixes #97

This commit is contained in:
jacob1
2015-01-10 18:47:42 -05:00
parent b2954a7f0a
commit 4f6094136e
3 changed files with 40 additions and 14 deletions

View File

@@ -78,25 +78,43 @@ int main(int argc, char *argv[])
engine = &ui::Engine::Ref(); engine = &ui::Engine::Ref();
engine->Begin(WINDOWW, WINDOWH); engine->Begin(WINDOWW, WINDOWH);
GameSave * gameSave = new GameSave(inputFile); GameSave * gameSave = NULL;
try
{
gameSave = new GameSave(inputFile);
}
catch (ParseException e)
{
//Render the save again later or something? I don't know
if (e.what() == "Save from newer version")
throw e;
}
Simulation * sim = new Simulation(); Simulation * sim = new Simulation();
Renderer * ren = new Renderer(ui::Engine::Ref().g, sim); Renderer * ren = new Renderer(ui::Engine::Ref().g, sim);
sim->Load(gameSave); if (gameSave)
//Render save
ren->decorations_enable = true;
ren->blackDecorations = true;
int frame = 15;
while(frame)
{ {
frame--; sim->Load(gameSave);
ren->render_parts();
ren->render_fire(); //Render save
ren->clearScreen(1.0f); ren->decorations_enable = true;
ren->blackDecorations = true;
int frame = 15;
while(frame)
{
frame--;
ren->render_parts();
ren->render_fire();
ren->clearScreen(1.0f);
}
}
else
{
int w = Graphics::textwidth("Save file invalid")+16, x = (XRES-w)/2, y = (YRES-24)/2;
ren->drawrect(x, y, w, 24, 192, 192, 192, 255);
ren->drawtext(x+8, y+8, "Save file invalid", 192, 192, 240, 255);
} }
ren->RenderBegin(); ren->RenderBegin();

View File

@@ -114,17 +114,21 @@ void LocalBrowserView::textChanged()
else if (num > pageCount) else if (num > pageCount)
pageTextbox->SetText(format::NumberToString(pageCount)); pageTextbox->SetText(format::NumberToString(pageCount));
changed = true; changed = true;
#ifdef USE_SDL
lastChanged = SDL_GetTicks()+600; lastChanged = SDL_GetTicks()+600;
#endif
} }
void LocalBrowserView::OnTick(float dt) void LocalBrowserView::OnTick(float dt)
{ {
c->Update(); c->Update();
#ifdef USE_SDL
if (changed && lastChanged < SDL_GetTicks()) if (changed && lastChanged < SDL_GetTicks())
{ {
changed = false; changed = false;
c->SetPage(std::max(format::StringToNumber<int>(pageTextbox->GetText()), 0)); c->SetPage(std::max(format::StringToNumber<int>(pageTextbox->GetText()), 0));
} }
#endif
} }
void LocalBrowserView::NotifyPageChanged(LocalBrowserModel * sender) void LocalBrowserView::NotifyPageChanged(LocalBrowserModel * sender)

View File

@@ -277,7 +277,9 @@ void SearchView::textChanged()
else if (num > pageCount) else if (num > pageCount)
pageTextbox->SetText(format::NumberToString(pageCount)); pageTextbox->SetText(format::NumberToString(pageCount));
changed = true; changed = true;
#ifdef USE_SDL
lastChanged = SDL_GetTicks()+600; lastChanged = SDL_GetTicks()+600;
#endif
} }
void SearchView::OnTryOkay(OkayMethod method) void SearchView::OnTryOkay(OkayMethod method)
@@ -781,11 +783,13 @@ void SearchView::NotifySelectedChanged(SearchModel * sender)
void SearchView::OnTick(float dt) void SearchView::OnTick(float dt)
{ {
c->Update(); c->Update();
#ifdef USE_SDL
if (changed && lastChanged < SDL_GetTicks()) if (changed && lastChanged < SDL_GetTicks())
{ {
changed = false; changed = false;
c->SetPage(std::max(format::StringToNumber<int>(pageTextbox->GetText()), 0)); c->SetPage(std::max(format::StringToNumber<int>(pageTextbox->GetText()), 0));
} }
#endif
} }
void SearchView::OnMouseWheel(int x, int y, int d) void SearchView::OnMouseWheel(int x, int y, int d)