From 9cc98aaf4733db5bdbf2f4dfcbde798ae158e7f2 Mon Sep 17 00:00:00 2001 From: elexis Date: Mon, 23 May 2016 15:26:47 +0000 Subject: [PATCH] Take new observermode into account in some missing places, refs #3850, #3168. This was SVN commit r18223. --- binaries/data/mods/public/gui/session/input.js | 4 ++-- .../data/mods/public/gui/session/session.js | 17 +++++++++++++---- .../public/gui/session/utility_functions.js | 7 ++++--- .../simulation/components/GuiInterface.js | 4 ++-- source/graphics/GameView.cpp | 2 +- source/gui/scripting/ScriptFunctions.cpp | 4 ++-- 6 files changed, 24 insertions(+), 14 deletions(-) diff --git a/binaries/data/mods/public/gui/session/input.js b/binaries/data/mods/public/gui/session/input.js index 1bcffc71dd..88dd90692f 100644 --- a/binaries/data/mods/public/gui/session/input.js +++ b/binaries/data/mods/public/gui/session/input.js @@ -534,7 +534,7 @@ function handleInputBeforeGui(ev, hoveredObject) case "mousemotion": var rect = updateBandbox(bandbox, ev, false); - var ents = Engine.PickPlayerEntitiesInRect(rect[0], rect[1], rect[2], rect[3], g_IsObserver ? -1 : Engine.GetPlayerID()); + var ents = Engine.PickPlayerEntitiesInRect(rect[0], rect[1], rect[2], rect[3], g_ViewedPlayer); var preferredEntities = getPreferredEntities(ents); g_Selection.setHighlightList(preferredEntities); @@ -546,7 +546,7 @@ function handleInputBeforeGui(ev, hoveredObject) var rect = updateBandbox(bandbox, ev, true); // Get list of entities limited to preferred entities - var ents = getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0], rect[1], rect[2], rect[3], g_IsObserver ? -1 : Engine.GetPlayerID())); + var ents = getPreferredEntities(Engine.PickPlayerEntitiesInRect(rect[0], rect[1], rect[2], rect[3], g_ViewedPlayer)); // Remove the bandbox hover highlighting g_Selection.setHighlightList([]); diff --git a/binaries/data/mods/public/gui/session/session.js b/binaries/data/mods/public/gui/session/session.js index 125c58d2a7..f944549675 100644 --- a/binaries/data/mods/public/gui/session/session.js +++ b/binaries/data/mods/public/gui/session/session.js @@ -983,18 +983,27 @@ function recalculateStatusBarDisplay() { let entities; if (g_ShowAllStatusBars) - entities = g_IsObserver ? Engine.PickNonGaiaEntitiesOnScreen() : Engine.PickPlayerEntitiesOnScreen(Engine.GetPlayerID()); + entities = g_ViewedPlayer == -1 ? + Engine.PickNonGaiaEntitiesOnScreen() : + Engine.PickPlayerEntitiesOnScreen(g_ViewedPlayer); else { let selected = g_Selection.toList(); for (let ent in g_Selection.highlighted) selected.push(g_Selection.highlighted[ent]); - // Remove selected entities from the 'all entities' array, to avoid disabling their status bars. - entities = Engine.GuiInterfaceCall(g_IsObserver ? "GetNonGaiaEntities" : "GetPlayerEntities").filter(idx => selected.indexOf(idx) == -1); + // Remove selected entities from the 'all entities' array, + // to avoid disabling their status bars. + entities = Engine.GuiInterfaceCall( + g_ViewedPlayer == -1 ? "GetNonGaiaEntities" : "GetPlayerEntities", { + "viewedPlayer": g_ViewedPlayer + }).filter(idx => selected.indexOf(idx) == -1); } - Engine.GuiInterfaceCall("SetStatusBars", { "entities": entities, "enabled": g_ShowAllStatusBars }); + Engine.GuiInterfaceCall("SetStatusBars", { + "entities": entities, + "enabled": g_ShowAllStatusBars + }); } // Update the additional list of entities to be highlighted. diff --git a/binaries/data/mods/public/gui/session/utility_functions.js b/binaries/data/mods/public/gui/session/utility_functions.js index 39be09d800..0d08c7f5e8 100644 --- a/binaries/data/mods/public/gui/session/utility_functions.js +++ b/binaries/data/mods/public/gui/session/utility_functions.js @@ -77,9 +77,9 @@ function getTradingTooltip(gain) if (!gain) return ""; - var playerID = Engine.GetPlayerID(); + var playerID = g_ViewedPlayer; var simState = GetSimState(); - + var gainString = gain.traderGain; if (gain.market1Gain && gain.market1Owner == gain.traderOwner) gainString += translate("+") + gain.market1Gain; @@ -90,12 +90,13 @@ function getTradingTooltip(gain) "gain": gainString, "player": simState.players[gain.traderOwner].name }); - + if (gain.market1Gain && gain.market1Owner != gain.traderOwner) tooltip += translateWithContext("Separation mark in an enumeration", ", ") + sprintf(translate("%(gain)s (%(player)s)"), { "gain": gain.market1Gain, "player": simState.players[gain.market1Owner].name }); + if (gain.market2Gain && gain.market2Owner != gain.traderOwner) tooltip += translateWithContext("Separation mark in an enumeration", ", ") + sprintf(translate("%(gain)s (%(player)s)"), { "gain": gain.market2Gain, diff --git a/binaries/data/mods/public/simulation/components/GuiInterface.js b/binaries/data/mods/public/simulation/components/GuiInterface.js index fc1f6c18fe..85a8cb1933 100644 --- a/binaries/data/mods/public/simulation/components/GuiInterface.js +++ b/binaries/data/mods/public/simulation/components/GuiInterface.js @@ -888,9 +888,9 @@ GuiInterface.prototype.SetStatusBars = function(player, cmd) } }; -GuiInterface.prototype.GetPlayerEntities = function(player) +GuiInterface.prototype.GetPlayerEntities = function(player, data) { - return Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager).GetEntitiesByPlayer(player); + return Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager).GetEntitiesByPlayer(data.viewedPlayer); }; GuiInterface.prototype.GetNonGaiaEntities = function() diff --git a/source/graphics/GameView.cpp b/source/graphics/GameView.cpp index 30cc654030..d26878b98f 100644 --- a/source/graphics/GameView.cpp +++ b/source/graphics/GameView.cpp @@ -714,7 +714,7 @@ void CGameView::Update(const float deltaRealTime) CmpPtr cmpPosition(*(m->Game->GetSimulation2()), m->FollowEntity); CmpPtr cmpRangeManager(*(m->Game->GetSimulation2()), SYSTEM_ENTITY); if (cmpPosition && cmpPosition->IsInWorld() && - cmpRangeManager && cmpRangeManager->GetLosVisibility(m->FollowEntity, m->Game->GetPlayerID()) == ICmpRangeManager::VIS_VISIBLE) + cmpRangeManager && cmpRangeManager->GetLosVisibility(m->FollowEntity, m->Game->GetViewedPlayerID()) == ICmpRangeManager::VIS_VISIBLE) { // Get the most recent interpolated position float frameOffset = m->Game->GetSimulation2()->GetLastFrameOffset(); diff --git a/source/gui/scripting/ScriptFunctions.cpp b/source/gui/scripting/ScriptFunctions.cpp index b0dc4a275e..34c58632d2 100644 --- a/source/gui/scripting/ScriptFunctions.cpp +++ b/source/gui/scripting/ScriptFunctions.cpp @@ -154,7 +154,7 @@ void PostNetworkCommand(ScriptInterface::CxPrivate* pCxPrivate, JS::HandleValue entity_id_t PickEntityAtPoint(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), int x, int y) { - return EntitySelection::PickEntityAtPoint(*g_Game->GetSimulation2(), *g_Game->GetView()->GetCamera(), x, y, g_Game->GetPlayerID(), false); + return EntitySelection::PickEntityAtPoint(*g_Game->GetSimulation2(), *g_Game->GetView()->GetCamera(), x, y, g_Game->GetViewedPlayerID(), false); } std::vector PickPlayerEntitiesInRect(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), int x0, int y0, int x1, int y1, int player) @@ -187,7 +187,7 @@ std::vector PickNonGaiaEntitiesOnScreen(ScriptInterface::CxPrivate* std::vector PickSimilarPlayerEntities(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), const std::string& templateName, bool includeOffScreen, bool matchRank, bool allowFoundations) { - return EntitySelection::PickSimilarEntities(*g_Game->GetSimulation2(), *g_Game->GetView()->GetCamera(), templateName, g_Game->GetPlayerID(), includeOffScreen, matchRank, false, allowFoundations); + return EntitySelection::PickSimilarEntities(*g_Game->GetSimulation2(), *g_Game->GetView()->GetCamera(), templateName, g_Game->GetViewedPlayerID(), includeOffScreen, matchRank, false, allowFoundations); } CFixedVector3D GetTerrainAtScreenPoint(ScriptInterface::CxPrivate* UNUSED(pCxPrivate), int x, int y)