1
0
forked from 0ad/0ad

Make the tooltips and the required members part of the formation template + fix allowing the wedge formation only for cavalry

This was SVN commit r14542.
This commit is contained in:
sanderd17 2014-01-08 08:02:15 +00:00
parent bec7cfd520
commit 4585f7322c
15 changed files with 42 additions and 49 deletions

View File

@ -4,6 +4,12 @@ Formation.prototype.Schema =
"<element name='FormationName' a:help='Name of the formation'>" +
"<text/>" +
"</element>" +
"<element name='RequiredMemberCount' a:help='Minimum number of entities the formation should contain'>" +
"<data type='nonNegativeInteger'/>" +
"</element>" +
"<element name='DisabledTooltip' a:help='Tooltip shown when the formation is disabled'>" +
"<text/>" +
"</element>" +
"<element name='SpeedMultiplier' a:help='The speed of the formation is determined by the minimum speed of all members, multiplied with this number.'>" +
"<ref name='nonNegativeDecimal'/>" +
"</element>" +

View File

@ -1365,53 +1365,17 @@ function ClusterEntities(ents, separationDistance)
function GetFormationRequirements(formationTemplate)
{
// TODO fix by querying the formation template and only accessing the info there
var formationName = formationTemplate.split("/")[1];
var cmpTempManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_TemplateManager);
var template = cmpTempManager.GetTemplate(formationTemplate);
if (!template.Formation)
return false;
var r = {};
r.minCount = 1;
r.maxCount = 200;
r.tooltip = ""
switch(formationName)
{
case "scatter":
case "column_closed":
case "line_closed":
case "column_open":
case "line_open":
case "battle_line":
break;
case "skirmish":
r.tooltip = "Only ranged unit allowed.";
break;
case "box":
r.minCount = 4;
r.tooltip = "4 units required.";
break;
case "flank":
r.minCount = 8;
r.tooltip = "8 units required.";
break;
case "wedge":
r.minCount = 3;
r.tooltip = "3 cavalry units required.";
break;
case "phalanx":
r.minCount = 10;
r.tooltip = "10 melee units required.";
break;
case "syntagma":
r.minCount = 9;
r.tooltip = "9 pikemen required.";
break;
case "testudo":
r.minCount = 9;
r.tooltip = "9 melee units required.";
break;
default:
// We encountered a unknown formation -> warn the user
warn("Commands.js: GetFormationRequirements: unknown formation: " + formationName);
return null;
}
r.minCount = +template.Formation.RequiredMemberCount;
if (template.Formation.DisabledTooltip)
r.tooltip = "\n" + template.Formation.DisabledTooltip;
else
r.tooltip = "";
return r;
}
@ -1436,7 +1400,7 @@ function CanMoveEntsIntoFormation(ents, formationTemplate)
count++;
}
return count >= requirements.minCount && count <= requirements.maxCount;
return count >= requirements.minCount;
}
/**

View File

@ -7,7 +7,7 @@
<ShiftRows>true</ShiftRows>
<MinColumns>5</MinColumns>
<MaxColumns>8</MaxColumns>
<MaxRows>6</MaxRows>
<MaxRows>4</MaxRows>
<WidthDepthRatio>2</WidthDepthRatio>
</Formation>
</Entity>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_formation">
<Formation>
<RequiredMemberCount>4</RequiredMemberCount>
<DisabledTooltip>4 units required</DisabledTooltip>
<FormationName>Box</FormationName>
<FormationShape>square</FormationShape>
<SortingClasses>Melee Ranged</SortingClasses>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_formation">
<Formation>
<RequiredMemberCount>8</RequiredMemberCount>
<DisabledTooltip>8 units required</DisabledTooltip>
<FormationName>Flank</FormationName>
<FormationShape>square</FormationShape>
<ShiftRows>true</ShiftRows>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_formation">
<Formation>
<RequiredMemberCount>10</RequiredMemberCount>
<DisabledTooltip>10 melee infantry units required</DisabledTooltip>
<FormationName>Phalanx</FormationName>
<MinColumns>5</MinColumns>
<MaxColumns>8</MaxColumns>

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_formation">
<Formation>
<DisabledTooltip>Only ranged units allowed</DisabledTooltip>
<FormationName>Skirmish</FormationName>
<ShiftRows>true</ShiftRows>
<UnitSeparationWidthMultiplier>2</UnitSeparationWidthMultiplier>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_formation">
<Formation>
<RequiredMemberCount>9</RequiredMemberCount>
<DisabledTooltip>9 pike infantry units required</DisabledTooltip>
<FormationName>Syntagma</FormationName>
</Formation>
</Entity>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_formation">
<Formation>
<RequiredMemberCount>9</RequiredMemberCount>
<DisabledTooltip>9 melee infantry units required</DisabledTooltip>
<FormationName>Testudo</FormationName>
</Formation>
</Entity>

View File

@ -1,6 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<Entity parent="template_formation">
<Formation>
<RequiredMemberCount>3</RequiredMemberCount>
<DisabledTooltip>3 cavalry units required</DisabledTooltip>
<FormationName>Wedge</FormationName>
<FormationShape>triangle</FormationShape>
</Formation>

View File

@ -6,6 +6,8 @@
</VisualActor>
-->
<Formation>
<RequiredMemberCount>1</RequiredMemberCount>
<DisabledTooltip></DisabledTooltip>
<SpeedMultiplier>1</SpeedMultiplier>
<FormationShape>square</FormationShape>
<SortingClasses>Hero Champion Cavalry Melee Ranged</SortingClasses>

View File

@ -44,7 +44,6 @@
formations/column_open
formations/line_open
formations/flank
formations/wedge
formations/battle_line
</Formations>
</Identity>

View File

@ -31,6 +31,9 @@
<Classes datatype="tokens">Cavalry CitizenSoldier Organic</Classes>
<GenericName>Cavalry</GenericName>
<Rank>Basic</Rank>
<Formations datatype="tokens">
formations/wedge
</Formations>
</Identity>
<Loot>
<xp>130</xp>

View File

@ -36,6 +36,9 @@
<Identity>
<GenericName>Champion Cavalry</GenericName>
<Classes datatype="tokens">Cavalry</Classes>
<Formations datatype="tokens">
formations/wedge
</Formations>
</Identity>
<Obstruction>
<Unit radius="1.0"/>

View File

@ -40,6 +40,9 @@
<GenericName>Hero Cavalry</GenericName>
<Classes datatype="tokens">Hero -Champion</Classes>
<RequiredTechnology>phase_city</RequiredTechnology>
<Formations datatype="tokens">
formations/wedge
</Formations>
</Identity>
<Loot>
<xp>500</xp>