1
0
forked from 0ad/0ad

GUI updated with revised twin-coordinate system (still have to make most of the objects use it, though).

This was SVN commit r1318.
This commit is contained in:
Acumen 2004-11-15 00:13:21 +00:00
parent cae40c819c
commit 2c3ce94950
7 changed files with 482 additions and 289 deletions

View File

@ -34,9 +34,11 @@
<script file="gui/test/functions_atlas.js"><![CDATA[
]]></script>
<script file="gui/test/functions_session.js"><![CDATA[
initSession();
writeConsole("Loaded GUI functions.");
]]></script>
<script file="gui/test/functions_session_group_pane.js"><![CDATA[
]]></script>
<script file="gui/test/functions_session.js"><![CDATA[
initSession();
]]></script>
</objects>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,54 @@
<?xml version="1.0" encoding="iso-8859-1" standalone="no" ?>
<!DOCTYPE objects SYSTEM "../gui.dtd">
<objects>
<!--
==========================================
- GLOBAL OBJECTS -
==========================================
-->
<object type="empty" name="always_on" hotkey="alwayson.toggle" size="0 0 100% 100%" z="1" hidden="false">
<action on="Press"><![CDATA[
GUIObjectToggle("always_on");
]]></action>
<object type="button" name="exit_button" sprite="exit_sprite" sprite-over="exit_sprite-over" size="100%-18 2 100%-2 18" z="1000" hidden="false">
<action on="Press"><![CDATA[
exit();
]]></action>
<!-- START temporary code
This code only applies to the main menu, I don't know how it'll behave ingame. It is temporary and should be removed as soon as we got proper tooltip support implemented. -->
<action on="MouseEnter"><![CDATA[
tooltipObject = getGUIObjectByName("pregame-mainmenu-tooltip");
tooltipObject.caption = "Tired of 0 A.D. ? Click here to leave and reenter the real world.";
GUIObjectUnhide("pregame-mainmenu-tooltip");
]]></action>
<action on="MouseLeave"><![CDATA[
GUIObjectHide("pregame-mainmenu-tooltip");
]]></action>
<!-- END temporary code -->
</object>
<!-- TEMPORARY END GAME BUTTON; REMOVE WHEN GAME MENU IMPLEMENTED; BUTTON IS OUTSIDE OF pregame_gui IN ORDER TO BE VISIBLE DURING GAME -->
<object type="button" name="End_Game_Button" sprite="sprite1" sprite-over="sprite1-over" sprite-pressed="sprite1-pressed" z="105" textcolor="0 0 0" text-align="center" text-valign="center" hidden="true">End Game
<action on="Load"><![CDATA[
AddSizeString(this.name,
"100%-150 100%-53 100%-30 100%-32",
"100%-150 0%+32 100%-30 0%+53");
]]></action>
<action on="Press"><![CDATA[
endGame();
GUIObjectHide("session_gui");
GUIObjectHide("End_Game_Button");
GUIObjectUnhide("pregame_gui");
]]></action>
</object>
</object>
</objects>

View File

@ -1,10 +1,48 @@
function initSession()
{
GUIType="bottom";
GUIStyleName = new Array();
GUIStyleSize1 = new Array();
GUIStyleSize2 = new Array();
GUIStyle_Last = 0;
// Coord-style size table.
SizeCoord = new Array();
SizeCoord.last = 0;
// Standard portrait widths.
crd_portrait_lrg_width = 64;
crd_portrait_lrg_height = 64;
crd_portrait_sml_width = 32;
crd_portrait_sml_height = 32;
initGroupPane();
}
// ====================================================================
function AddSizeCoord(objectName, left1, top1, right1, bottom1, rleft1, rtop1, rright1, rbottom1, left2, top2, right2, bottom2, rleft2, rtop2, rright2, rbottom2)
{
// Used to store the two GUI style sizes for an object on creation (specified as coordinates).
// Used later by FlipGUI() to switch the objects to a new set of positions.
SizeCoord[SizeCoord.last] = new Object();
SizeCoord[SizeCoord.last].name = objectName;
SizeCoord[SizeCoord.last].size1 = new GUISize(left1, top1, right1, bottom1, rleft1, rtop1, rright1, rbottom1);
SizeCoord[SizeCoord.last].size2 = new GUISize(left2, top2, right2, bottom2, rleft2, rtop2, rright2, rbottom2);
SizeCoord.last++; // Increment counter for next entry.
}
// ====================================================================
function AddSizeString(objectName, size1, size2)
{
// Used to store the two GUI style sizes for an object on creation (specified as strings).
// Used later by FlipGUI() to switch the objects to a new set of positions.
SizeCoord[SizeCoord.last] = new Object();
SizeCoord[SizeCoord.last].name = objectName;
SizeCoord[SizeCoord.last].size1 = size1;
SizeCoord[SizeCoord.last].size2 = size2;
SizeCoord.last++; // Increment counter for next entry.
}
// ====================================================================
@ -33,7 +71,7 @@ function setPortrait(objectName, portraitString)
function setSize(objectName, sizeString)
{
// Use this function as a shortcut to change the size of a GUI control.
// Use this function as a shortcut to change the size of a GUI control, specifying a size string.
// Get GUI object
GUIObject = getGUIObjectByName(objectName);
@ -101,7 +139,12 @@ function getObjectInfo()
// Update portrait
if (selection[0].traits.id.icon)
setPortrait("session_panel_status_portrait", selection[0].traits.id.icon);
{
if (selection[0].traits.id.icon_cell)
setPortrait("session_panel_status_portrait", selection[0].traits.id.icon + "_" + selection[0].traits.id.icon_cell);
else
setPortrait("session_panel_status_portrait", selection[0].traits.id.icon);
}
// Update hitpoints
if (selection[0].traits.health.curr & selection[0].traits.health.hitpoints)
@ -122,7 +165,7 @@ function getObjectInfo()
// Best solution would be to base this off a "new entities selected" instead of an on-tick.
if (
// getGUIObjectByName("session_group_pane").hidden == true ||
selection.length != MultipleEntitiesSelected)
selection.length != getGlobal().MultipleEntitiesSelected)
{
// Reveal Group Pane.
@ -147,10 +190,10 @@ function getObjectInfo()
switch (GUIType)
{
case "top":
setSize("session_group_pane_bg", GUIStyleSize1[FlipGUILoop]);
setSize("session_group_pane_bg", SizeCoord[FlipGUILoop].size1);
break;
case "bottom":
setSize("session_group_pane_bg", GUIStyleSize2[FlipGUILoop]);
setSize("session_group_pane_bg", SizeCoord[FlipGUILoop].size2);
break;
}
}
@ -204,22 +247,7 @@ function getObjectInfo()
getGUIObjectByName("session_group_pane").hidden = true;
}
}
}
// ====================================================================
function AddSize(objectName, objectSize1, objectSize2)
{
// Used to store the two GUI style sizes for an object on creation.
// Used later by FlipGUI() to switch the objects to a new set of positions.
GUIStyleName[GUIStyle_Last] = objectName;
GUIStyleSize1[GUIStyle_Last] = objectSize1;
GUIStyleSize2[GUIStyle_Last] = objectSize2;
// writeConsole("Added " + GUIStyle_Last + ": " + GUIStyleName[GUIStyle_Last] + " (" + GUIStyleSize1[GUIStyle_Last] + ", " + GUIStyleSize2[GUIStyle_Last] + ").");
GUIStyle_Last++; // Increment counter for next entry.
}
// ====================================================================
@ -254,50 +282,50 @@ function FlipGUI(NewGUIType)
GUIObjectUnhide("always_on");
// Seek through all sizes created.
for (FlipGUILoop = 0; FlipGUILoop < GUIStyle_Last; FlipGUILoop++)
for (FlipGUILoop = 0; FlipGUILoop < SizeCoord.last; FlipGUILoop++)
{
// Set each object to the other size.
switch (GUIType)
{
case "top":
setSize(GUIStyleName[FlipGUILoop], GUIStyleSize1[FlipGUILoop]);
switch (GUIStyleName[FlipGUILoop]){
setSize(SizeCoord[FlipGUILoop].name, SizeCoord[FlipGUILoop].size1);
switch (SizeCoord[FlipGUILoop].name){
case "session_panel_minimap_segbottom1":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = GUIStyleName[FlipGUILoop];
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = SizeCoord[FlipGUILoop].name;
break;
case "session_panel_minimap_segbottom2":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = GUIStyleName[FlipGUILoop];
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = SizeCoord[FlipGUILoop].name;
break;
case "session_panel_minimap_segbottom3":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = GUIStyleName[FlipGUILoop];
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = SizeCoord[FlipGUILoop].name;
break;
case "session_panel_minimap_segbottom4":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = GUIStyleName[FlipGUILoop];
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = SizeCoord[FlipGUILoop].name;
break;
case "session_panel_status_bg":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = "session_panel_status_bg-top";
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = "session_panel_status_bg-top";
break;
default:
break;
}
break;
case "bottom":
setSize(GUIStyleName[FlipGUILoop], GUIStyleSize2[FlipGUILoop]);
switch (GUIStyleName[FlipGUILoop]){
setSize(SizeCoord[FlipGUILoop].name, SizeCoord[FlipGUILoop].size2);
switch (SizeCoord[FlipGUILoop].name){
case "session_panel_minimap_segbottom1":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = "session_panel_minimap_segtop1";
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = "session_panel_minimap_segtop1";
break;
case "session_panel_minimap_segbottom2":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = "session_panel_minimap_segtop2";
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = "session_panel_minimap_segtop2";
break;
case "session_panel_minimap_segbottom3":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = "session_panel_minimap_segtop3";
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = "session_panel_minimap_segtop3";
break;
case "session_panel_minimap_segbottom4":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = "session_panel_minimap_segtop4";
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = "session_panel_minimap_segtop4";
break;
case "session_panel_status_bg":
getGUIObjectByName(GUIStyleName[FlipGUILoop]).sprite = "session_panel_status_bg-bottom";
getGUIObjectByName(SizeCoord[FlipGUILoop].name).sprite = "session_panel_status_bg-bottom";
break;
default:
break;

View File

@ -0,0 +1,103 @@
function initGroupPane()
{
// Populate the table of Group Pane portrait coordinates.
// Group Pane table.
crd_grppane_prt_col = new Array();
crd_grppane_prt_col.last = 0; // Last size added.
crd_grppane_prt_col.style = 2; // Style length.
crd_grppane_prt_row = new Array();
crd_grppane_prt_row_bar = new Array();
crd_grppane_prt_row.last = 0; // Last size added.
crd_grppane_prt_row.style = 2; // Style length.
// Build table of group pane coordinates.
initGroupPaneTable();
}
// ====================================================================
function initGroupPaneTable()
{
AddGroupPaneRow(0, 32, 100, -70); // Row 0
AddGroupPaneCol(50, -16, 50, -16); // Col 0
AddGroupPaneCol(50, -52, 50, -52); // Col 1
}
// ====================================================================
function AddGroupPaneCol(rleft1, left1, rleft2, left2)
{
// Add a set of column coordinates to the Group Pane table.
crd_grppane_prt_col[crd_grppane_prt_col.last] = new Array();
style=0;
crd_grppane_prt_col[crd_grppane_prt_col.last][style] = new Array();
crd_grppane_prt_col[crd_grppane_prt_col.last][style].size = new GUISize(left1, 0, left1 + crd_portrait_sml_width, 0, rleft1, 0, rleft1, 0);
style=1;
crd_grppane_prt_col[crd_grppane_prt_col.last][style] = new Array();
crd_grppane_prt_col[crd_grppane_prt_col.last][style].size = new GUISize(left2, 0, left2 + crd_portrait_sml_width, 0, rleft2, 0, rleft2, 0);
crd_grppane_prt_col.last++; // Increment array.
}
// ====================================================================
function AddGroupPaneRow(rtop1, top1, rtop2, top2)
{
// Add a set of row coordinates to the Group Pane table.
crd_grppane_prt_row[crd_grppane_prt_row.last] = new Array();
style=0;
crd_grppane_prt_row[crd_grppane_prt_row.last][style] = new Array();
crd_grppane_prt_row[crd_grppane_prt_row.last][style].size = new GUISize(0, top1, 0, top1 + crd_portrait_sml_height, 0, rtop1, 0, rtop1);
style=1;
crd_grppane_prt_row[crd_grppane_prt_row.last][style] = new Array();
crd_grppane_prt_row[crd_grppane_prt_row.last][style].size = new GUISize(0, top2, 0, top2 + crd_portrait_sml_height, 0, rtop2, 0, rtop2);
crd_grppane_prt_row.last++; // Increment array.
}
// ====================================================================
function AddSizeGroupPane(objectName, row, col)
{
// Used to store the two GUI style sizes for an object on creation.
// This is a special method that uses the group pane table to specify values.
// Used later by FlipGUI() to switch the objects to a new set of positions.
SizeCoord[SizeCoord.last] = new Object();
SizeCoord[SizeCoord.last].name = objectName;
style = 0; // Set top GUI style.
size_col = crd_grppane_prt_col[col][style].size;
size_row = crd_grppane_prt_row[row][style].size;
SizeCoord[SizeCoord.last].size1 = new GUISize(size_col.left, size_row.top, size_col.right, size_row.bottom, size_col.rleft, size_row.rtop, size_col.rright, size_row.rbottom);
style = 1; // Set bottom GUI style.
size_col = crd_grppane_prt_col[col][style].size;
size_row = crd_grppane_prt_row[row][style].size;
SizeCoord[SizeCoord.last].size2 = new GUISize(size_col.left, size_row.top, size_col.right, size_row.bottom, size_col.rleft, size_row.rtop, size_col.rright, size_row.rbottom);
SizeCoord.last++; // Increment counter for next entry.
}
// ====================================================================
function AddSizeGroupPaneBar(objectName)
{
// Create a health bar for the last group pane portrait created.
var size1 = SizeCoord[SizeCoord.last-1].size1;
var size2 = SizeCoord[SizeCoord.last-1].size2;
AddSizeCoord(objectName,
size1.left, size1.bottom+2, size1.right, size1.bottom+6, size1.rleft, size1.rtop, size1.rright, size1.rbottom,
size2.left, size2.bottom+2, size2.right, size2.bottom+6, size2.rleft, size2.rtop, size2.rright, size2.rbottom);
}
// ====================================================================

View File

@ -296,7 +296,7 @@
<!--
==========================================
ENTITY PORTRAITS
ENTITY SINGLE PORTRAITS
==========================================
-->
@ -366,6 +366,18 @@
<image texture="ui_portrait_structure_heleho_64-grey.png" texture-size="0 0 100% 100%" size="0 0 100% 100%" />
</sprite>
<!--
==========================================
ENTITY SHEET PORTRAITS
==========================================
-->
<sprite name="ui_portrait_sheet_rome_1_64">
<image texture="ui_portrait_sheet_rome_64.png" real-texture-placement="0 0 64 64" texture-size="0 0 100% 100%" size="0 0 100% 100%"/>
</sprite>
<sprite name="ui_portrait_sheet_rome_2_64">
<image texture="ui_portrait_sheet_rome_64.png" real-texture-placement="64 0 128 64" texture-size="0 0 100% 100%" size="0 0 100% 100%"/>
</sprite>
<!--
==========================================
TEMPORARY IMAGES

View File

@ -29,6 +29,8 @@
sprite-over="ui_portrait_default_64-lit"
sprite-disabled="ui_portrait_default_64-grey"
tooltip-style="session-tooltip"
text-align="right"
textcolor="255 255 255"
/>
<!-- Entity progress bar. -->