-
Notifications
You must be signed in to change notification settings - Fork 16
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
civ select screen from battalion mod
- Loading branch information
1 parent
156cf7f
commit bd1e73b
Showing
14 changed files
with
3,401 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,208 @@ | ||
/** | ||
* Is this user in control of game settings (i.e. is a network server, or offline player). | ||
*/ | ||
|
||
const g_IsController = !Engine.HasNetClient() || Engine.HasNetServer(); | ||
|
||
/** | ||
* Display selectable civs only. | ||
*/ | ||
const g_CivData = loadCivData(true, false); | ||
|
||
var g_PlayerSlot; | ||
|
||
var g_Selected = { | ||
"code": "athen" | ||
}; | ||
var g_margin = 8; | ||
function init(settings) | ||
{ | ||
g_PlayerSlot = settings.playerSlot; | ||
if (settings.id != "random") | ||
g_Selected.code = settings.id; | ||
initDraw(); | ||
selectCiv(g_Selected.code); | ||
} | ||
function gridArrayRepeatedObjects (basename, splitvar="n", vMargin=0, limit=[], vOffset=0, hOffset=0) | ||
{ | ||
basename = basename.split("["+splitvar+"]", 2); | ||
|
||
if (limit.length == 0) | ||
{ | ||
limit = [0, 0, 1]; | ||
while (Engine.GetGUIObjectByName(basename.join("["+ (limit[1]+1) +"]"))) | ||
{ | ||
++limit[1]; | ||
++limit[2]; | ||
} | ||
} | ||
else if (limit.length < 2) | ||
{ | ||
error("Invalid limit arguments"); | ||
return 0; | ||
} | ||
else | ||
limit[2] = limit[1] - limit[0] + 1; | ||
|
||
var firstObj = Engine.GetGUIObjectByName(basename.join("["+limit[0]+"]")); | ||
var child = firstObj.getComputedSize(); | ||
child.width = child.right - child.left; | ||
child.height = child.bottom - child.top; | ||
|
||
var parent = firstObj.parent.getComputedSize(); | ||
parent.width = parent.right - parent.left - hOffset; | ||
|
||
var rowLength = Math.floor(parent.width / child.width); | ||
|
||
var hMargin = parent.width - child.width * rowLength; | ||
hMargin = Math.round(hMargin / (rowLength + 1)); | ||
|
||
child.width += hMargin; | ||
child.height += vMargin; | ||
|
||
var i = limit[0]; | ||
for (let r = 0; r < Math.ceil(limit[2]/rowLength); ++r) | ||
{ | ||
for (let c = 0; c < rowLength; ++c) | ||
{ | ||
let newSize = new GUISize(); | ||
newSize.left = c * child.width + hMargin + hOffset; | ||
newSize.right = (c+1) * child.width + hOffset; | ||
newSize.top = r * child.height + vMargin + vOffset; | ||
newSize.bottom = (r+1) * child.height + vOffset; | ||
Engine.GetGUIObjectByName(basename.join("["+ i++ +"]")).size = newSize; | ||
|
||
if (i > limit[1]) | ||
break; | ||
} | ||
} | ||
|
||
var lastObj = Engine.GetGUIObjectByName(basename.join("["+(i-1)+"]")); | ||
return (lastObj.size.bottom - firstObj.size.top); | ||
} | ||
function setEmbSize (objectName, length=128) | ||
{ | ||
var objSize = Engine.GetGUIObjectByName(objectName).size; | ||
objSize.right = objSize.left + length; | ||
objSize.bottom = objSize.top + length; | ||
Engine.GetGUIObjectByName(objectName).size = objSize; | ||
} | ||
|
||
function setEmbPos (objectName, x=0, y=0) | ||
{ | ||
var objSize = Engine.GetGUIObjectByName(objectName).size; | ||
var wid = objSize.right - objSize.left; | ||
objSize.left = x; | ||
objSize.top = y; | ||
Engine.GetGUIObjectByName(objectName).size = objSize; | ||
setEmbSize(objectName, wid); | ||
} | ||
function initDraw() | ||
{ | ||
// gridArrayRepeatedObjects("emblem[emb]", "emb", 8); | ||
let emb = 0; | ||
let vOffset = 0; | ||
let row = 6; | ||
let xStart = 58; | ||
let xSize = 80; | ||
let x = xStart; | ||
for (let civ in g_CivData) | ||
{ | ||
// g_CivData[civ].embs = [ emb ]; | ||
let embImg = Engine.GetGUIObjectByName("emblem["+emb+"]_img"); | ||
if (embImg === undefined) | ||
{ | ||
error("There are not enough images in the current GUI layout to support that many civs"); | ||
break; | ||
} | ||
|
||
embImg.sprite = "stretched:"; | ||
if (civ !== g_Selected.code) | ||
embImg.sprite += "grayscale:"; | ||
embImg.sprite += g_CivData[civ].Emblem; | ||
|
||
let embTxt = Engine.GetGUIObjectByName("emblem["+emb+"]_name"); | ||
embTxt.caption = g_CivData[civ].Name; | ||
|
||
//setEmbSize("emblem["+emb+"]", xSize); | ||
setEmbPos("civ["+emb+"]", x, vOffset+g_margin); | ||
let embBtn = Engine.GetGUIObjectByName("emblem["+emb+"]_btn"); | ||
setBtnFunc(embBtn, selectCiv, [ civ ]); | ||
Engine.GetGUIObjectByName("emblem["+emb+"]").hidden = false; | ||
Engine.GetGUIObjectByName("civ["+emb+"]").hidden = false; | ||
|
||
x += xSize; | ||
emb++; | ||
if (emb % row == 0) { | ||
let range = [ emb ]; | ||
range[1] = emb+6; | ||
// setEmbSize("emblem["+range[0]+"]", xSize); | ||
vOffset += g_margin * 2; | ||
vOffset += gridArrayRepeatedObjects("civ[emb]", "emb", 8, range, vOffset, g_margin); | ||
x = xStart; | ||
} | ||
} | ||
hideRemainingX("civ[", emb, "]"); | ||
} | ||
function updateDraw() | ||
{ | ||
let emb = 0; | ||
for (let civ in g_CivData) | ||
{ | ||
let embImg = Engine.GetGUIObjectByName("emblem["+emb+"]_img"); | ||
if (embImg === undefined) | ||
{ | ||
error("There are not enough images in the current GUI layout to support that many civs"); | ||
break; | ||
} | ||
let embTxt = Engine.GetGUIObjectByName("emblem["+emb+"]_name"); | ||
embImg.sprite = "stretched:"; | ||
embTxt.textcolor = "white"; | ||
if (civ == g_Selected.code) { | ||
embTxt.textcolor = "green"; | ||
} | ||
if (civ !== g_Selected.code) { | ||
embImg.sprite += "grayscale:"; | ||
} | ||
embImg.sprite += g_CivData[civ].Emblem; | ||
++emb; | ||
} | ||
} | ||
function hideRemainingX(prefix, idx, suffix) | ||
{ | ||
let obj = Engine.GetGUIObjectByName(prefix+idx+suffix); | ||
while (obj) | ||
{ | ||
obj.hidden = true; | ||
++idx; | ||
obj = Engine.GetGUIObjectByName(prefix+idx+suffix); | ||
} | ||
} | ||
function setBtnFunc (btn, func, vars = null) | ||
{ | ||
btn.onPress = function () { func.apply(null, vars); }; | ||
} | ||
|
||
function selectCiv(code) | ||
{ | ||
g_Selected.code = code; | ||
let heading = Engine.GetGUIObjectByName("selected_heading"); | ||
heading.caption = g_CivData[code].Name; | ||
let civList = Engine.GetGUIObjectByName("selected_civs"); | ||
civList.hidden = false; | ||
let history = Engine.GetGUIObjectByName("selected_history"); | ||
history.caption = g_CivData[code].History; | ||
let size = history.parent.size; | ||
size.top = 48; | ||
history.parent.size = size; | ||
updateDraw(); | ||
} | ||
|
||
function returnCiv(choosed) | ||
{ | ||
Engine.PopGuiPageCB({ | ||
"code": g_Selected.code, | ||
"playerSlot": g_PlayerSlot, | ||
"change": choosed | ||
}); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<objects> | ||
<script directory="gui/common/"/> | ||
<script directory="gui/civsel/"/> | ||
|
||
<!-- Add a translucent black background to fade out the menu page --> | ||
<object type="image" sprite="ModernFade"/> | ||
|
||
<object type="image" style="ModernDialog" size="50%-488 50%-360 50%+488 50%+360"> | ||
<object style="ModernLabelText" type="text" size="50%-128 -18 50%+128 14"> | ||
<translatableAttribute id="caption">Civilization Selection</translatableAttribute> | ||
</object> | ||
<!-- draw space --> | ||
<object type="image" size="0 40 100% 100%"> | ||
<repeat count="32" var="em"> | ||
<object name="civ[em]" size="4 8 4+80 8+100"> | ||
<object name="emblem[em]" size="4 8 4+80 8+80"> | ||
<object type="image" style="EmblemImage" name="emblem[em]_img"/> | ||
<object type="button" style="EmblemButton" name="emblem[em]_btn"/> | ||
</object> | ||
<object type="text" font="sans-bold-12" name="emblem[em]_name" textcolor="white" text_align="center" size="4 8+80 100% 8+80+20"/> | ||
</object> | ||
</repeat> | ||
</object> | ||
<object sprite="ModernDarkBoxGold" type="image" size="70%+8 32 100%-16 100%-70"> | ||
<!-- Selection Details --> | ||
<object | ||
name="selected_heading" | ||
type="text" | ||
font="sans-bold-24" | ||
textcolor="white" | ||
text_align="center" | ||
size="0 12 100% 40" | ||
/> | ||
|
||
<object | ||
name="selected_civs" | ||
type="text" | ||
font="sans-16" | ||
textcolor="white" | ||
text_align="center" | ||
size="4 44 100%-4 100%-4" | ||
/> | ||
|
||
<object size="8 48 100%-8 100%-8" type="image" sprite="ModernDarkBoxGold"> | ||
<object | ||
name="selected_history" | ||
type="text" | ||
font="sans-14" | ||
textcolor="white" | ||
text_align="center" | ||
size="4 4 100%-4 100%-4" | ||
/> | ||
</object> | ||
|
||
</object> | ||
<object | ||
name="selected_text" | ||
type="text" | ||
font="sans-12" | ||
textcolor="green" | ||
text_align="center" | ||
text_valign="bottom" | ||
size="70%+8 100%-64 100%-16 100%-48" | ||
/> | ||
<object type="button" style="ModernButtonRed" size="18 100%-45 50%-5 100%-17"> | ||
<translatableAttribute id="caption">Cancel</translatableAttribute> | ||
<action on="Press">returnCiv(false);</action> | ||
</object> | ||
<object type="button" style="ModernButtonRed" size="50%+5 100%-45 100%-18 100%-17"> | ||
<translatableAttribute id="caption">Confirm</translatableAttribute> | ||
<action on="Press">returnCiv(true);</action> | ||
</object> | ||
</object> | ||
</objects> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<sprites> | ||
<sprite name="CivIconPress"> | ||
<image texture="session/portraits/emblems/states/click.png"/> | ||
</sprite> | ||
</sprites> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<styles> | ||
<style name="EmblemButton" | ||
sprite="" | ||
sprite_pressed="CivIconPress" | ||
size="0 0 100% 100%" | ||
sound_pressed="audio/interface/ui/ui_button_click.ogg" | ||
/> | ||
<style name="EmblemImage" | ||
sprite="stretched:pregame/shell/logo/wfg_logo_white.png" | ||
size="0 0 100% 100%" | ||
/> | ||
<style name="HeroImage" | ||
sprite="stretched:pregame/shell/logo/wfg_logo_white.png" | ||
size="0 0 32 32" | ||
/> | ||
</styles> |
Oops, something went wrong.