mirror of
https://gitea.wildfiregames.com/0ad/0ad
synced 2026-06-16 05:13:58 -07:00
Implement a developer overlay command to change the current player ID (very useful for AI development).
This was SVN commit r13606.
This commit is contained in:
parent
53074c7715
commit
20e7d2224a
3 changed files with 59 additions and 20 deletions
|
|
@ -127,6 +127,20 @@ function init(initData, hotloadData)
|
|||
getGUIObjectByName("civIcon").tooltip = g_CivData[g_Players[Engine.GetPlayerID()].civ].Name;
|
||||
initMenuPosition(); // set initial position
|
||||
|
||||
// Populate player selection dropdown
|
||||
var playerNames = [];
|
||||
var playerIDs = [];
|
||||
for (var player in g_Players)
|
||||
{
|
||||
playerNames.push(g_Players[player].name);
|
||||
playerIDs.push(player);
|
||||
}
|
||||
|
||||
var viewPlayerDropdown = getGUIObjectByName("viewPlayer");
|
||||
viewPlayerDropdown.list = playerNames;
|
||||
viewPlayerDropdown.list_data = playerIDs;
|
||||
viewPlayerDropdown.selected = 1;
|
||||
|
||||
// If in Atlas editor, disable the exit button
|
||||
if (Engine.IsAtlasRunning())
|
||||
getGUIObjectByName("menuExitButton").enabled = false;
|
||||
|
|
@ -155,6 +169,14 @@ function init(initData, hotloadData)
|
|||
setTimeout(function() { reportPerformance(60); }, 60000);
|
||||
}
|
||||
|
||||
function selectViewPlayer(playerID)
|
||||
{
|
||||
Engine.SetPlayerID(playerID);
|
||||
if (playerID != 0) {
|
||||
getGUIObjectByName("civIcon").sprite = "stretched:" + g_CivData[g_Players[playerID].civ].Emblem;
|
||||
getGUIObjectByName("civIcon").tooltip = g_CivData[g_Players[playerID].civ].Name;
|
||||
}
|
||||
}
|
||||
|
||||
function reportPerformance(time)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -255,54 +255,59 @@
|
|||
</action>
|
||||
</object>
|
||||
|
||||
<object size="0 16 100%-18 32" type="text" style="devCommandsText">Display selection state</object>
|
||||
<object size="100%-16 16 100% 32" type="checkbox" name="devDisplayState" style="StoneCrossBox"/>
|
||||
<object size="0 16 100%-18 32" type="text" style="devCommandsText">Change perspective</object>
|
||||
<object size="100%-16 16 100% 32" type="checkbox" style="StoneCrossBox">
|
||||
<action on="Press">getGUIObjectByName("viewPlayer").hidden = !this.checked;</action>
|
||||
</object>
|
||||
|
||||
<object size="0 32 100%-18 48" type="text" style="devCommandsText">Pathfinder overlay</object>
|
||||
<object size="100%-16 32 100% 48" type="checkbox" style="StoneCrossBox">
|
||||
<object size="0 32 100%-18 48" type="text" style="devCommandsText">Display selection state</object>
|
||||
<object size="100%-16 32 100% 48" type="checkbox" name="devDisplayState" style="StoneCrossBox"/>
|
||||
|
||||
<object size="0 48 100%-18 64" type="text" style="devCommandsText">Pathfinder overlay</object>
|
||||
<object size="100%-16 48 100% 64" type="checkbox" style="StoneCrossBox">
|
||||
<action on="Press">Engine.GuiInterfaceCall("SetPathfinderDebugOverlay", this.checked);</action>
|
||||
</object>
|
||||
|
||||
<object size="0 48 100%-18 64" type="text" style="devCommandsText">Obstruction overlay</object>
|
||||
<object size="100%-16 48 100% 64" type="checkbox" style="StoneCrossBox">
|
||||
<object size="0 64 100%-18 80" type="text" style="devCommandsText">Obstruction overlay</object>
|
||||
<object size="100%-16 64 100% 80" type="checkbox" style="StoneCrossBox">
|
||||
<action on="Press">Engine.GuiInterfaceCall("SetObstructionDebugOverlay", this.checked);</action>
|
||||
</object>
|
||||
|
||||
<object size="0 64 100%-18 80" type="text" style="devCommandsText">Unit motion overlay</object>
|
||||
<object size="100%-16 64 100% 80" type="checkbox" style="StoneCrossBox">
|
||||
<object size="0 80 100%-18 96" type="text" style="devCommandsText">Unit motion overlay</object>
|
||||
<object size="100%-16 80 100% 96" type="checkbox" style="StoneCrossBox">
|
||||
<action on="Press">g_Selection.SetMotionDebugOverlay(this.checked);</action>
|
||||
</object>
|
||||
|
||||
<object size="0 80 100%-18 96" type="text" style="devCommandsText">Range overlay</object>
|
||||
<object size="100%-16 80 100% 96" type="checkbox" style="StoneCrossBox">
|
||||
<object size="0 96 100%-18 112" type="text" style="devCommandsText">Range overlay</object>
|
||||
<object size="100%-16 96 100% 112" type="checkbox" style="StoneCrossBox">
|
||||
<action on="Press">Engine.GuiInterfaceCall("SetRangeDebugOverlay", this.checked);</action>
|
||||
</object>
|
||||
|
||||
<object size="0 96 100%-18 112" type="text" style="devCommandsText">Bounding box overlay</object>
|
||||
<object size="100%-16 96 100% 112" type="checkbox" style="StoneCrossBox">
|
||||
<object size="0 112 100%-18 128" type="text" style="devCommandsText">Bounding box overlay</object>
|
||||
<object size="100%-16 112 100% 128" type="checkbox" style="StoneCrossBox">
|
||||
<action on="Press">Engine.SetBoundingBoxDebugOverlay(this.checked);</action>
|
||||
</object>
|
||||
|
||||
<object size="0 112 100%-18 128" type="text" style="devCommandsText">Restrict camera</object>
|
||||
<object size="100%-16 112 100% 128" type="checkbox" style="StoneCrossBox" checked="true">
|
||||
<object size="0 128 100%-18 144" type="text" style="devCommandsText">Restrict camera</object>
|
||||
<object size="100%-16 128 100% 144" type="checkbox" style="StoneCrossBox" checked="true">
|
||||
<action on="Press">gameView.constrainCamera = this.checked;</action>
|
||||
</object>
|
||||
|
||||
<object size="0 128 100%-18 144" type="text" style="devCommandsText">Reveal map</object>
|
||||
<object size="100%-16 128 100% 144" type="checkbox" name="devCommandsRevealMap" style="StoneCrossBox">
|
||||
<object size="0 144 100%-18 160" type="text" style="devCommandsText">Reveal map</object>
|
||||
<object size="100%-16 144 100% 160" type="checkbox" name="devCommandsRevealMap" style="StoneCrossBox">
|
||||
<action on="Press">Engine.PostNetworkCommand({"type": "reveal-map", "enable": this.checked});</action>
|
||||
</object>
|
||||
|
||||
<object size="0 144 100%-18 160" type="text" style="devCommandsText">Enable time warp</object>
|
||||
<object size="100%-16 144 100% 160" type="checkbox" name="devTimeWarp" style="StoneCrossBox">
|
||||
<object size="0 160 100%-18 176" type="text" style="devCommandsText">Enable time warp</object>
|
||||
<object size="100%-16 160 100% 176" type="checkbox" name="devTimeWarp" style="StoneCrossBox">
|
||||
<action on="Press">
|
||||
if (this.checked)
|
||||
messageBox(500, 250, "Note: time warp mode is a developer option, and not intended\nfor use over long periods of time. Using it incorrectly may\ncause the game to run out of memory or crash.", "Time warp mode", 2);
|
||||
Engine.EnableTimeWarpRecording(this.checked ? 10 : 0);</action>
|
||||
</object>
|
||||
|
||||
<object size="0 160 100%-18 176" type="text" style="devCommandsText">Promote selected units</object>
|
||||
<object size="100%-16 160 100% 176" type="button" style="StoneCrossBox">
|
||||
<object size="0 176 100%-18 192" type="text" style="devCommandsText">Promote selected units</object>
|
||||
<object size="100%-16 176 100% 192" type="button" style="StoneCrossBox">
|
||||
<action on="Press">Engine.PostNetworkCommand({"type": "promote", "entities": g_Selection.toList()});</action>
|
||||
</object>
|
||||
</object>
|
||||
|
|
@ -593,6 +598,11 @@
|
|||
<!-- ================================ ================================ -->
|
||||
<object size="50%-48 -26 50%+48 70" name="civIcon" type="image" tooltip_style="sessionToolTipBold"/>
|
||||
|
||||
<!-- Switch the view perspective to another player's (largely for AI development) -->
|
||||
<object size="50%+50 5 50%+150 100%-5" name="viewPlayer" type="dropdown" hidden="true" style="StoneDropDown" tooltip_style="sessionToolTipBold" tooltip="Choose player to view">
|
||||
<action on="SelectionChange">selectViewPlayer(this.selected);</action>
|
||||
</object>
|
||||
|
||||
<!-- ================================ ================================ -->
|
||||
<!-- Phase -->
|
||||
<!-- ================================ ================================ -->
|
||||
|
|
|
|||
|
|
@ -168,6 +168,12 @@ int GetPlayerID(void* UNUSED(cbdata))
|
|||
return -1;
|
||||
}
|
||||
|
||||
void SetPlayerID(void* UNUSED(cbdata), int id)
|
||||
{
|
||||
if (g_Game)
|
||||
g_Game->SetPlayerID(id);
|
||||
}
|
||||
|
||||
std::wstring GetDefaultPlayerName(void* UNUSED(cbdata))
|
||||
{
|
||||
CStr playername;
|
||||
|
|
@ -685,6 +691,7 @@ void GuiScriptingInit(ScriptInterface& scriptInterface)
|
|||
// Misc functions
|
||||
scriptInterface.RegisterFunction<std::wstring, std::wstring, &SetCursor>("SetCursor");
|
||||
scriptInterface.RegisterFunction<int, &GetPlayerID>("GetPlayerID");
|
||||
scriptInterface.RegisterFunction<void, int, &SetPlayerID>("SetPlayerID");
|
||||
scriptInterface.RegisterFunction<std::wstring, &GetDefaultPlayerName>("GetDefaultPlayerName");
|
||||
scriptInterface.RegisterFunction<std::wstring, &GetDefaultMPServer>("GetDefaultMPServer");
|
||||
scriptInterface.RegisterFunction<void, std::wstring, std::wstring, &SaveMPConfig>("SaveMPConfig");
|
||||
|
|
|
|||
Loading…
Reference in a new issue