summaryrefslogtreecommitdiff
path: root/src/viewport.cpp
diff options
context:
space:
mode:
authorPavel Stupnikov <dp@dpointer.org>2018-04-24 20:19:01 +0300
committerfrosch <github@elsenhans.name>2018-04-24 19:19:00 +0200
commit8e4bce58ea299527003cd2da5ef8dcb5f84b7f23 (patch)
tree021526d154b99ec8a3821fb83295685338cbee9f /src/viewport.cpp
parent34b63930f58aa12d008af6006411bd4492fa8a4e (diff)
downloadopenttd-8e4bce58ea299527003cd2da5ef8dcb5f84b7f23.tar.xz
Feature: GS methods to scroll viewport for players (#6745)
Diffstat (limited to 'src/viewport.cpp')
-rw-r--r--src/viewport.cpp40
1 files changed, 40 insertions, 0 deletions
diff --git a/src/viewport.cpp b/src/viewport.cpp
index df431ff3c..6de827b4e 100644
--- a/src/viewport.cpp
+++ b/src/viewport.cpp
@@ -84,6 +84,9 @@
#include "linkgraph/linkgraph_gui.h"
#include "viewport_sprite_sorter.h"
#include "bridge_map.h"
+#include "company_base.h"
+#include "command_func.h"
+#include "network/network_func.h"
#include <map>
@@ -3250,3 +3253,40 @@ void InitializeSpriteSorter()
}
assert(_vp_sprite_sorter != NULL);
}
+
+/**
+ * Scroll players main viewport.
+ * @param tile tile to center viewport on
+ * @param flags type of operation
+ * @param p1 ViewportScrollTarget of scroll target
+ * @param p2 company or client id depending on the target
+ * @param text unused
+ * @return the cost of this operation or an error
+ */
+CommandCost CmdScrollViewport(TileIndex tile, DoCommandFlag flags, uint32 p1, uint32 p2, const char *text)
+{
+ if (_current_company != OWNER_DEITY) return CMD_ERROR;
+ ViewportScrollTarget target = (ViewportScrollTarget)p1;
+ switch (target) {
+ case VST_EVERYONE:
+ break;
+ case VST_COMPANY:
+ if (_local_company != (CompanyID)p2) return CommandCost();
+ break;
+ case VST_CLIENT:
+#ifdef ENABLE_NETWORK
+ if (_network_own_client_id != (ClientID)p2) return CommandCost();
+ break;
+#else
+ return CommandCost();
+#endif
+ default:
+ return CMD_ERROR;
+ }
+
+ if (flags & DC_EXEC) {
+ ResetObjectToPlace();
+ ScrollMainWindowToTile(tile);
+ }
+ return CommandCost();
+}