0ad/binaries/data/mods/public/gui/civinfo/civinfo.js
historic_bruno 78f2924f9c Changed default maps
This was SVN commit r8827.
2010-12-09 01:30:51 +00:00

130 lines
4.3 KiB
JavaScript

var g_CivData = {};
function init(settings)
{
// Initialize civ list
initCivNameList();
// TODO: Separate control for factions?
}
// Initialize the dropdown containing all the available civs
function initCivNameList()
{
// Cache map data
g_CivData = loadCivData();
var civList = [ { "name": civ.Name, "code": civ.Code } for each (civ in g_CivData) ];
// Alphabetically sort the list, ignoring case
civList.sort(sortNameIgnoreCase);
var civListNames = [ civ.name for each (civ in civList) ];
var civListCodes = [ civ.code for each (civ in civList) ];
// Set civ control
var civSelection = getGUIObjectByName("civSelection");
civSelection.list = civListNames;
civSelection.list_data = civListCodes;
civSelection.selected = 0;
}
// Function to make first char of string big
function bigFirstLetter(str, size)
{
return '[font="serif-bold-'+(size+6)+'"]' + str[0] + '[/font]' + '[font="serif-bold-'+size+'"]' + str.substring(1) + '[/font]';
}
// Heading font - bold and mixed caps
function heading(string, size)
{
var textArray = string.split(" ");
for(var i = 0; i < textArray.length; ++i)
{
var word = textArray[i];
var wordCaps = word.toUpperCase();
// Check if word is capitalized, if so assume it needs a big first letter
if (wordCaps[0] == word[0])
textArray[i] = bigFirstLetter(wordCaps, size);
else
textArray[i] = '[font="serif-bold-'+size+'"]' + wordCaps + '[/font]'; // TODO: Would not be necessary if we could do nested tags
}
return textArray.join(" ");
}
// Called when user selects civ from dropdown
function selectCiv(code)
{
var civInfo = g_CivData[code];
if(!civInfo)
error("Error loading civ data for \""+code+"\"");
// Update civ gameplay display
getGUIObjectByName("civGameplayHeading").caption = heading(civInfo.Name+" Gameplay", 16);
// Bonuses
var bonusCaption = heading("Civilization Bonus"+(civInfo.CivBonuses.length == 1 ? "" : "es"), 12) + '\n';
for(var i = 0; i < civInfo.CivBonuses.length; ++i)
{
bonusCaption += '[color="10 10 10"][font="serif-bold-14"]' + civInfo.CivBonuses[i].Name + '[/font] [icon="iconInfo" tooltip="'+civInfo.CivBonuses[i].History+'" tooltip_style="civInfoTooltip"]\n ' + civInfo.CivBonuses[i].Description + '\n[/color]';
}
bonusCaption += heading("Team Bonus"+(civInfo.TeamBonuses.length == 1 ? "" : "es"), 12) + '\n';
for(var i = 0; i < civInfo.TeamBonuses.length; ++i)
{
bonusCaption += '[color="10 10 10"][font="serif-bold-14"]' + civInfo.TeamBonuses[i].Name + '[/font] [icon="iconInfo" tooltip="'+civInfo.TeamBonuses[i].History+'" tooltip_style="civInfoTooltip"]\n ' + civInfo.TeamBonuses[i].Description + '\n[/color]';
}
getGUIObjectByName("civBonuses").caption = bonusCaption;
// Special techs / buildings
var techCaption = heading("Special Technologies", 12) + '\n';
for(var i = 0; i < civInfo.Factions.length; ++i)
{
var faction = civInfo.Factions[i];
for(var j = 0; j < faction.Technologies.length; ++j)
{
techCaption += '[color="10 10 10"][font="serif-bold-14"]' + faction.Technologies[j].Name + '[/font] [icon="iconInfo" tooltip="'+faction.Technologies[j].History+'" tooltip_style="civInfoTooltip"]\n ' + faction.Technologies[j].Description + '\n[/color]';
}
}
techCaption += heading("Special Building"+(civInfo.Structures.length == 1 ? "" : "s"), 12) + '\n';
for(var i = 0; i < civInfo.Structures.length; ++i)
{
techCaption += '[color="10 10 10"][font="serif-bold-14"]' + civInfo.Structures[i].Name + '[/font][/color] [icon="iconInfo" tooltip="'+ civInfo.Structures[i].History+'" tooltip_style="civInfoTooltip"]\n';
}
getGUIObjectByName("civTechs").caption = techCaption;
// Heroes
var heroCaption = heading("Heroes", 12) + '\n';
for(var i = 0; i < civInfo.Factions.length; ++i)
{
var faction = civInfo.Factions[i];
for(var j = 0; j < faction.Heroes.length; ++j)
{
heroCaption += '[color="10 10 10"][font="serif-bold-14"]' + faction.Heroes[j].Name + '[/font][/color] [icon="iconInfo" tooltip="'+faction.Heroes[j].History+'" tooltip_style="civInfoTooltip"]\n';
}
heroCaption += '\n';
}
getGUIObjectByName("civHeroes").caption = heroCaption;
// Update civ history display
getGUIObjectByName("civHistoryHeading").caption = heading("History of the " + civInfo.Name, 16);
getGUIObjectByName("civHistoryText").caption = civInfo.History;
}