From 4f6094136e7f9ea56ae8a086b2aeabcb650c1737 Mon Sep 17 00:00:00 2001 From: jacob1 Date: Sat, 10 Jan 2015 18:47:42 -0500 Subject: [PATCH] fix renderer compile and make it create a "Save file invalid" sign when it can't render the save, fixes #97 --- src/PowderToyRenderer.cpp | 46 ++++++++++++++++------- src/gui/localbrowser/LocalBrowserView.cpp | 4 ++ src/gui/search/SearchView.cpp | 4 ++ 3 files changed, 40 insertions(+), 14 deletions(-) diff --git a/src/PowderToyRenderer.cpp b/src/PowderToyRenderer.cpp index f140d62d2..303c2c183 100644 --- a/src/PowderToyRenderer.cpp +++ b/src/PowderToyRenderer.cpp @@ -78,25 +78,43 @@ int main(int argc, char *argv[]) engine = &ui::Engine::Ref(); 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(); Renderer * ren = new Renderer(ui::Engine::Ref().g, sim); - sim->Load(gameSave); - - - //Render save - ren->decorations_enable = true; - ren->blackDecorations = true; - - int frame = 15; - while(frame) + if (gameSave) { - frame--; - ren->render_parts(); - ren->render_fire(); - ren->clearScreen(1.0f); + sim->Load(gameSave); + + //Render save + 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(); diff --git a/src/gui/localbrowser/LocalBrowserView.cpp b/src/gui/localbrowser/LocalBrowserView.cpp index 782aff11c..d74de11ef 100644 --- a/src/gui/localbrowser/LocalBrowserView.cpp +++ b/src/gui/localbrowser/LocalBrowserView.cpp @@ -114,17 +114,21 @@ void LocalBrowserView::textChanged() else if (num > pageCount) pageTextbox->SetText(format::NumberToString(pageCount)); changed = true; +#ifdef USE_SDL lastChanged = SDL_GetTicks()+600; +#endif } void LocalBrowserView::OnTick(float dt) { c->Update(); +#ifdef USE_SDL if (changed && lastChanged < SDL_GetTicks()) { changed = false; c->SetPage(std::max(format::StringToNumber(pageTextbox->GetText()), 0)); } +#endif } void LocalBrowserView::NotifyPageChanged(LocalBrowserModel * sender) diff --git a/src/gui/search/SearchView.cpp b/src/gui/search/SearchView.cpp index a5edf3563..5e3f57de9 100644 --- a/src/gui/search/SearchView.cpp +++ b/src/gui/search/SearchView.cpp @@ -277,7 +277,9 @@ void SearchView::textChanged() else if (num > pageCount) pageTextbox->SetText(format::NumberToString(pageCount)); changed = true; +#ifdef USE_SDL lastChanged = SDL_GetTicks()+600; +#endif } void SearchView::OnTryOkay(OkayMethod method) @@ -781,11 +783,13 @@ void SearchView::NotifySelectedChanged(SearchModel * sender) void SearchView::OnTick(float dt) { c->Update(); +#ifdef USE_SDL if (changed && lastChanged < SDL_GetTicks()) { changed = false; c->SetPage(std::max(format::StringToNumber(pageTextbox->GetText()), 0)); } +#endif } void SearchView::OnMouseWheel(int x, int y, int d)