summaryrefslogtreecommitdiff
path: root/src/preview
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-06-09 13:54:58 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-06-09 13:54:58 (GMT)
commitc408e035faf88f968ea208d48ced4b7c3c9dc32d (patch)
treed98f393173b2aead0fd164cd467ee4c2dcbd7e2b /src/preview
parent46614017c8f9e1a293109fb9d202ed3b634427f5 (diff)
downloadpowder-c408e035faf88f968ea208d48ced4b7c3c9dc32d.zip
powder-c408e035faf88f968ea208d48ced4b7c3c9dc32d.tar.gz
Preview: Wait for save to load before opening, Simulation: Correct block coords when reading wall data, replace existing particles when placing stamps on top, Game: Clear the simulation when loading a save
Diffstat (limited to 'src/preview')
-rw-r--r--src/preview/PreviewController.cpp4
-rw-r--r--src/preview/PreviewView.cpp35
-rw-r--r--src/preview/PreviewView.h2
3 files changed, 30 insertions, 11 deletions
diff --git a/src/preview/PreviewController.cpp b/src/preview/PreviewController.cpp
index 094dbfc..6490b50 100644
--- a/src/preview/PreviewController.cpp
+++ b/src/preview/PreviewController.cpp
@@ -39,6 +39,10 @@ void PreviewController::Update()
Exit();
new ErrorMessage("Error", e.what());
}
+ if(previewModel->GetDoOpen() && previewModel->GetSave() && previewModel->GetSave()->GetGameSave())
+ {
+ Exit();
+ }
}
SaveInfo * PreviewController::GetSave()
diff --git a/src/preview/PreviewView.cpp b/src/preview/PreviewView.cpp
index 5e1470e..d0d0d21 100644
--- a/src/preview/PreviewView.cpp
+++ b/src/preview/PreviewView.cpp
@@ -11,11 +11,13 @@
#include "simulation/SaveRenderer.h"
#include "interface/Point.h"
#include "interface/Window.h"
+#include "Style.h"
#include "search/Thumbnail.h"
PreviewView::PreviewView():
ui::Window(ui::Point(-1, -1), ui::Point((XRES/2)+200, (YRES/2)+150)),
- savePreview(NULL)
+ savePreview(NULL),
+ doOpen(false)
{
class OpenAction: public ui::ButtonAction
{
@@ -25,7 +27,6 @@ PreviewView::PreviewView():
virtual void ActionCallback(ui::Button * sender)
{
v->c->DoOpen();
- v->c->Exit();
}
};
openButton = new ui::Button(ui::Point(0, Size.Y-19), ui::Point(51, 19), "Open");
@@ -109,6 +110,18 @@ PreviewView::PreviewView():
AddComponent(authorDateLabel);
}
+void PreviewView::DoDraw()
+{
+ Window::DoDraw();
+ Graphics * g = ui::Engine::Ref().g;
+ if(c->GetDoOpen())
+ {
+ g->fillrect(Position.X+(Size.X/2)-101, Position.Y+(Size.Y/2)-26, 202, 52, 0, 0, 0, 210);
+ g->drawrect(Position.X+(Size.X/2)-100, Position.Y+(Size.Y/2)-25, 200, 50, 255, 255, 255, 180);
+ g->drawtext(Position.X+(Size.X/2)-(Graphics::textwidth("Loading save...")/2), Position.Y+(Size.Y/2)-5, "Loading save...", style::Colour::InformationTitle.Red, style::Colour::InformationTitle.Green, style::Colour::InformationTitle.Blue, 255);
+ }
+}
+
void PreviewView::OnDraw()
{
Graphics * g = ui::Engine::Ref().g;
@@ -128,16 +141,16 @@ void PreviewView::OnDraw()
g->draw_line(Position.X+1, Position.Y+12+YRES/2, Position.X-1+XRES/2, Position.Y+12+YRES/2, 100, 100, 100,255);
float factor;
- if(!votesUp && !votesDown)
- return;
- else
+ if(!(!votesUp && !votesDown))
+ {
factor = (float)(((float)(XRES/2)-2)/((float)(votesUp+votesDown)));
- g->fillrect(1+Position.X, 2+Position.Y+YRES/2, (XRES/2)-2, 9, 200, 50, 50, 255);
- g->fillrect(1+Position.X, 2+Position.Y+YRES/2, (int)(((float)votesUp)*factor), 9, 50, 200, 50, 255);
- g->fillrect(1+Position.X, 2+Position.Y+(YRES/2), 14, 9, 0, 0, 0, 100);
- g->fillrect(Position.X+(XRES/2)-15, 2+Position.Y+(YRES/2), 14, 9, 0, 0, 0, 100);
- g->draw_icon(1+Position.X+2, Position.Y+(YRES/2)+4, IconVoteUp);
- g->draw_icon(Position.X+(XRES/2)-12, Position.Y+(YRES/2)+1, IconVoteDown);
+ g->fillrect(1+Position.X, 2+Position.Y+YRES/2, (XRES/2)-2, 9, 200, 50, 50, 255);
+ g->fillrect(1+Position.X, 2+Position.Y+YRES/2, (int)(((float)votesUp)*factor), 9, 50, 200, 50, 255);
+ g->fillrect(1+Position.X, 2+Position.Y+(YRES/2), 14, 9, 0, 0, 0, 100);
+ g->fillrect(Position.X+(XRES/2)-15, 2+Position.Y+(YRES/2), 14, 9, 0, 0, 0, 100);
+ g->draw_icon(1+Position.X+2, Position.Y+(YRES/2)+4, IconVoteUp);
+ g->draw_icon(Position.X+(XRES/2)-12, Position.Y+(YRES/2)+1, IconVoteDown);
+ }
for(int i = 0; i < commentTextComponents.size(); i++)
{
diff --git a/src/preview/PreviewView.h b/src/preview/PreviewView.h
index a0e7c20..011f864 100644
--- a/src/preview/PreviewView.h
+++ b/src/preview/PreviewView.h
@@ -33,12 +33,14 @@ class PreviewView: public ui::Window {
std::vector<ui::Component*> commentTextComponents;
int votesUp;
int votesDown;
+ bool doOpen;
public:
void AttachController(PreviewController * controller) { c = controller;}
PreviewView();
void NotifySaveChanged(PreviewModel * sender);
void NotifyCommentsChanged(PreviewModel * sender);
virtual void OnDraw();
+ virtual void DoDraw();
virtual void OnTick(float dt);
virtual void OnMouseDown(int x, int y, unsigned button);
virtual ~PreviewView();