summaryrefslogtreecommitdiff
path: root/src/viewport.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-05-29 10:16:59 +0000
committerrubidium <rubidium@openttd.org>2008-05-29 10:16:59 +0000
commitf2869bb7db1cd475817ca71e3449e827748f00aa (patch)
treeecfa38f11fa2ecc624a39b1af470f218f93bfa67 /src/viewport.cpp
parent34e2d8f1e14c4204b299b78623d9935c7b07b4e3 (diff)
downloadopenttd-f2869bb7db1cd475817ca71e3449e827748f00aa.tar.xz
(svn r13321) -Codechange: move some GUI/viewport related functions out op openttd.cpp to viewport.cpp/window.cpp.
Diffstat (limited to 'src/viewport.cpp')
-rw-r--r--src/viewport.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/viewport.cpp b/src/viewport.cpp
index 51eee159e..bbc029446 100644
--- a/src/viewport.cpp
+++ b/src/viewport.cpp
@@ -2756,3 +2756,33 @@ void ResetObjectToPlace()
{
SetObjectToPlace(SPR_CURSOR_MOUSE, PAL_NONE, VHM_NONE, WC_MAIN_WINDOW, 0);
}
+
+
+void SaveViewportBeforeSaveGame()
+{
+ const Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
+
+ if (w != NULL) {
+ _saved_scrollpos_x = w->viewport->scrollpos_x;
+ _saved_scrollpos_y = w->viewport->scrollpos_y;
+ _saved_scrollpos_zoom = w->viewport->zoom;
+ }
+}
+
+void ResetViewportAfterLoadGame()
+{
+ Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
+
+ w->viewport->scrollpos_x = _saved_scrollpos_x;
+ w->viewport->scrollpos_y = _saved_scrollpos_y;
+ w->viewport->dest_scrollpos_x = _saved_scrollpos_x;
+ w->viewport->dest_scrollpos_y = _saved_scrollpos_y;
+
+ ViewPort *vp = w->viewport;
+ vp->zoom = min(_saved_scrollpos_zoom, ZOOM_LVL_MAX);
+ vp->virtual_width = ScaleByZoom(vp->width, vp->zoom);
+ vp->virtual_height = ScaleByZoom(vp->height, vp->zoom);
+
+ DoZoomInOutWindow(ZOOM_NONE, w); // update button status
+ MarkWholeScreenDirty();
+}