Index: binaries/data/mods/public/gui/session/input.js
===================================================================
--- binaries/data/mods/public/gui/session/input.js
+++ binaries/data/mods/public/gui/session/input.js
@@ -78,6 +78,11 @@
*/
var clickedEntity = INVALID_ENTITY;
+/**
+ * Store the last time the ping functionnality was used.
+ */
+var g_LastMapPingTime;
+
// Same double-click behaviour for hotkey presses
const doublePressTime = 500;
var doublePressTimer = 0;
@@ -1218,7 +1223,7 @@
// Add target markers with a minimum distance of 5 to each other.
let entitiesBetweenMarker = Math.ceil(5 / distanceBetweenEnts);
for (let i = 0; i < entityDistribution.length; i += entitiesBetweenMarker)
- DrawTargetMarker({ "x": entityDistribution[i].x, "z": entityDistribution[i].y });
+ drawTargetMarker({ "x": entityDistribution[i].x, "z": entityDistribution[i].y });
Engine.GuiInterfaceCall("PlaySound", {
"name": "order_walk",
Index: binaries/data/mods/public/gui/session/messages.js
===================================================================
--- binaries/data/mods/public/gui/session/messages.js
+++ binaries/data/mods/public/gui/session/messages.js
@@ -249,7 +249,7 @@
setCameraFollow(cmd.entities[0]);
if (["walk", "attack-walk", "patrol"].indexOf(cmd.type) != -1)
- DrawTargetMarker(cmd);
+ drawTargetMarker(cmd);
// Select units affected by that command
let selection = [];
@@ -271,6 +271,12 @@
}
global.music.setLocked(notification.lock);
+ },
+ "map-ping": function(notification, player)
+ {
+ // Don't display for the player that did the ping because he will see it immediately
+ if (player != Engine.GetPlayerID() && g_Players[player].isMutualAlly[Engine.GetPlayerID()])
+ displayMapPing(notification.target, player);
}
};
Index: binaries/data/mods/public/gui/session/minimap/MiniMap.js
===================================================================
--- binaries/data/mods/public/gui/session/minimap/MiniMap.js
+++ binaries/data/mods/public/gui/session/minimap/MiniMap.js
@@ -9,18 +9,38 @@
Engine.GetGUIObjectByName("minimap").onWorldClick = this.onWorldClick.bind(this);
}
- onWorldClick(target)
+ onWorldClick(data)
{
- if (!controlsPlayer(g_ViewedPlayer))
- return;
+ switch (data.type)
+ {
+ case "mouserightrelease":
+ case "mouserightdoubleclick":
+ {
+ // Partly duplicated from handleInputAfterGui(), but with the input being
+ // world coordinates instead of screen coordinates.
- // Partly duplicated from handleInputAfterGui(), but with the input being
- // world coordinates instead of screen coordinates.
+ if (inputState != INPUT_NORMAL)
+ return false;
- if (inputState != INPUT_NORMAL)
- return false;
-
- let action = determineAction(undefined, undefined, true);
- return action && handleUnitAction(target, action);
+ let action = determineAction(undefined, undefined, true);
+ return action && handleUnitAction(data.target, action);
+ }
+ case "mousemiddlerelease":
+ case "mousemiddledoubleclick":
+ {
+ let now = Date.now();
+ if (!g_LastMapPingTime || now > g_LastMapPingTime + 1000) {
+ g_LastMapPingTime = now;
+ displayMapPing(data.target, Engine.GetPlayerID());
+ Engine.PostNetworkCommand({
+ "type": "map-ping",
+ "target": data.target
+ });
+ return true;
+ }
+ break;
+ }
+ }
+ return false;
}
}
Index: binaries/data/mods/public/gui/session/minimap/MiniMap.xml
===================================================================
--- binaries/data/mods/public/gui/session/minimap/MiniMap.xml
+++ binaries/data/mods/public/gui/session/minimap/MiniMap.xml
@@ -6,7 +6,7 @@
sprite="mapPanel"
>
-
+