Move FormationName and Icon from cmpFormation to cmpIdentity.
Reduces duplication across components. Allows to provide specific names and history for formations. Differential revision: https://code.wildfiregames.com/D4476 Comments by: @bb, @Stan Fixes #6400 This was SVN commit r26476.
This commit is contained in:
parent
422fbbee7f
commit
b778caf146
@ -508,8 +508,6 @@
|
||||
"splitOnWhitespace": true
|
||||
},
|
||||
"Tooltip": {},
|
||||
"DisabledTooltip": {},
|
||||
"FormationName": {},
|
||||
"FromClass": {},
|
||||
"Shape": {},
|
||||
"Rank": {
|
||||
@ -553,8 +551,6 @@
|
||||
"splitOnWhitespace": true
|
||||
},
|
||||
"Tooltip": {},
|
||||
"DisabledTooltip": {},
|
||||
"FormationName": {},
|
||||
"FromClass": {},
|
||||
"Rank": {
|
||||
"tagAsContext": true
|
||||
@ -597,7 +593,6 @@
|
||||
},
|
||||
"Tooltip": {},
|
||||
"DisabledTooltip": {},
|
||||
"FormationName": {},
|
||||
"FromClass": {},
|
||||
"Rank": {
|
||||
"tagAsContext": true
|
||||
|
@ -1,12 +1,6 @@
|
||||
function Formation() {}
|
||||
|
||||
Formation.prototype.Schema =
|
||||
"<element name='FormationName' a:help='Name of the formation.'>" +
|
||||
"<text/>" +
|
||||
"</element>" +
|
||||
"<element name='Icon'>" +
|
||||
"<text/>" +
|
||||
"</element>" +
|
||||
"<element name='RequiredMemberCount' a:help='Minimum number of entities the formation should contain (at least 2).'>" +
|
||||
"<data type='integer'>" +
|
||||
"<param name='minInclusive'>"+
|
||||
@ -714,7 +708,7 @@ Formation.prototype.ComputeFormationOffsets = function(active, positions)
|
||||
}
|
||||
|
||||
// Define special formations here.
|
||||
if (this.template.FormationName == "Scatter")
|
||||
if (this.template.FormationShape == "special" && Engine.QueryInterface(this.entity, IID_Identity).GetGenericName() == "Scatter")
|
||||
{
|
||||
let width = Math.sqrt(count) * (separation.width + separation.depth) * 2.5;
|
||||
|
||||
|
@ -856,9 +856,9 @@ GuiInterface.prototype.GetFormationInfoFromTemplate = function(player, data)
|
||||
return {};
|
||||
|
||||
return {
|
||||
"name": template.Formation.FormationName,
|
||||
"name": template.Identity.GenericName,
|
||||
"tooltip": template.Formation.DisabledTooltip || "",
|
||||
"icon": template.Formation.Icon
|
||||
"icon": template.Identity.Icon
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -217,7 +217,6 @@ function TestFormationExiting(mode)
|
||||
});
|
||||
|
||||
let controllerFormation = ConstructComponent(controller, "Formation", {
|
||||
"FormationName": "Line Closed",
|
||||
"FormationShape": "square",
|
||||
"ShiftRows": "false",
|
||||
"SortingClasses": "",
|
||||
@ -391,7 +390,6 @@ function TestMoveIntoFormationWhileAttacking()
|
||||
});
|
||||
|
||||
let controllerFormation = ConstructComponent(controller, "Formation", {
|
||||
"FormationName": "Line Closed",
|
||||
"FormationShape": "square",
|
||||
"ShiftRows": "false",
|
||||
"SortingClasses": "",
|
||||
|
@ -1,10 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/testudo.png</Icon>
|
||||
<RequiredMemberCount>16</RequiredMemberCount>
|
||||
<DisabledTooltip>Melee Infantry only, requires at least 16.</DisabledTooltip>
|
||||
<FormationName>Anti Cavalry</FormationName>
|
||||
<FormationShape>square</FormationShape>
|
||||
<UnitSeparationWidthMultiplier>0.50</UnitSeparationWidthMultiplier>
|
||||
<UnitSeparationDepthMultiplier>0.37</UnitSeparationDepthMultiplier>
|
||||
@ -22,4 +20,8 @@
|
||||
<FormationAttack>
|
||||
<CanAttackAsFormation>false</CanAttackAsFormation>
|
||||
</FormationAttack>
|
||||
<Identity>
|
||||
<Icon>formations/testudo.png</Icon>
|
||||
<GenericName>Anti Cavalry</GenericName>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,8 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/battle_line.png</Icon>
|
||||
<FormationName>Battle Line</FormationName>
|
||||
<SortingClasses>Cavalry Melee Ranged</SortingClasses>
|
||||
<SortingOrder>fillFromTheSides</SortingOrder>
|
||||
<ShiftRows>true</ShiftRows>
|
||||
@ -11,4 +9,8 @@
|
||||
<MaxRows>4</MaxRows>
|
||||
<WidthDepthRatio>2</WidthDepthRatio>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>Battle Line</GenericName>
|
||||
<Icon>formations/battle_line.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,12 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/box.png</Icon>
|
||||
<RequiredMemberCount>4</RequiredMemberCount>
|
||||
<DisabledTooltip>Requires at least 4 Soldiers or Siege engines.</DisabledTooltip>
|
||||
<FormationName>Box</FormationName>
|
||||
<FormationShape>square</FormationShape>
|
||||
<SortingClasses>Melee Ranged</SortingClasses>
|
||||
<SortingOrder>fillToTheCenter</SortingOrder>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>Box</GenericName>
|
||||
<Icon>formations/box.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,11 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/column_closed.png</Icon>
|
||||
<FormationName>Forced March</FormationName>
|
||||
<UnitSeparationWidthMultiplier>0.75</UnitSeparationWidthMultiplier>
|
||||
<UnitSeparationDepthMultiplier>1.0</UnitSeparationDepthMultiplier>
|
||||
<MinColumns>3</MinColumns>
|
||||
<MaxColumns>3</MaxColumns>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>Forced March</GenericName>
|
||||
<Icon>formations/column_closed.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,11 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/column_open.png</Icon>
|
||||
<FormationName>Column Open</FormationName>
|
||||
<ShiftRows>true</ShiftRows>
|
||||
<UnitSeparationWidthMultiplier>2</UnitSeparationWidthMultiplier>
|
||||
<MaxColumns>2</MaxColumns>
|
||||
<MinColumns>2</MinColumns>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>Column Open</GenericName>
|
||||
<Icon>formations/column_open.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,12 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/flank.png</Icon>
|
||||
<RequiredMemberCount>8</RequiredMemberCount>
|
||||
<DisabledTooltip>Requires at least 8 Soldiers or Siege engines.</DisabledTooltip>
|
||||
<FormationName>Flank</FormationName>
|
||||
<FormationShape>square</FormationShape>
|
||||
<ShiftRows>true</ShiftRows>
|
||||
<CenterGap>12</CenterGap>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>Flank</GenericName>
|
||||
<Icon>formations/flank.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,10 +1,12 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/line_closed.png</Icon>
|
||||
<FormationName>Close Order</FormationName>
|
||||
<MinColumns>3</MinColumns>
|
||||
<WidthDepthRatio>4</WidthDepthRatio>
|
||||
<Sloppiness>0.25</Sloppiness>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>Close Order</GenericName>
|
||||
<Icon>formations/line_closed.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,12 +1,14 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/line_open.png</Icon>
|
||||
<FormationName>Open Order</FormationName>
|
||||
<UnitSeparationWidthMultiplier>1.5</UnitSeparationWidthMultiplier>
|
||||
<UnitSeparationDepthMultiplier>1.5</UnitSeparationDepthMultiplier>
|
||||
<WidthDepthRatio>4</WidthDepthRatio>
|
||||
<MinColumns>3</MinColumns>
|
||||
<Sloppiness>0.5</Sloppiness>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>Open Order</GenericName>
|
||||
<Icon>formations/line_open.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,8 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/null.png</Icon>
|
||||
<FormationName>None</FormationName>
|
||||
<DisabledTooltip/>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>None</GenericName>
|
||||
<Icon>formations/null.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,10 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/phalanx.png</Icon>
|
||||
<RequiredMemberCount>10</RequiredMemberCount>
|
||||
<DisabledTooltip>Infantry Hoplites only, requires at least 10.</DisabledTooltip>
|
||||
<FormationName>Phalanx</FormationName>
|
||||
<UnitSeparationWidthMultiplier>0.6</UnitSeparationWidthMultiplier>
|
||||
<UnitSeparationDepthMultiplier>0.6</UnitSeparationDepthMultiplier>
|
||||
<WidthDepthRatio>4</WidthDepthRatio>
|
||||
@ -21,4 +19,8 @@
|
||||
<FormationAttack>
|
||||
<CanAttackAsFormation>false</CanAttackAsFormation>
|
||||
</FormationAttack>
|
||||
<Identity>
|
||||
<GenericName>Phalanx</GenericName>
|
||||
<Icon>formations/phalanx.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,8 +1,10 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/scatter.png</Icon>
|
||||
<FormationName>Scatter</FormationName>
|
||||
<FormationShape>special</FormationShape>
|
||||
</Formation>
|
||||
<Identity>
|
||||
<GenericName>Scatter</GenericName>
|
||||
<Icon>formations/scatter.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,9 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/skirmish.png</Icon>
|
||||
<DisabledTooltip>Ranged Soldiers only, requires at least 2.</DisabledTooltip>
|
||||
<FormationName>Skirmish</FormationName>
|
||||
<ShiftRows>true</ShiftRows>
|
||||
<UnitSeparationWidthMultiplier>2</UnitSeparationWidthMultiplier>
|
||||
<MaxRows>2</MaxRows>
|
||||
@ -12,4 +10,8 @@
|
||||
<FormationAttack>
|
||||
<CanAttackAsFormation>false</CanAttackAsFormation>
|
||||
</FormationAttack>
|
||||
<Identity>
|
||||
<GenericName>Skirmish</GenericName>
|
||||
<Icon>formations/skirmish.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,11 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/syntagma.png</Icon>
|
||||
<RequiredMemberCount>16</RequiredMemberCount>
|
||||
<DisabledTooltip>Infantry Pikemen only, requires at least 16.</DisabledTooltip>
|
||||
<SortingClasses>Hero Champion Elite Advanced Basic</SortingClasses>
|
||||
<FormationName>Syntagma</FormationName>
|
||||
<FormationShape>square</FormationShape>
|
||||
<UnitSeparationWidthMultiplier>0.86</UnitSeparationWidthMultiplier>
|
||||
<UnitSeparationDepthMultiplier>0.55</UnitSeparationDepthMultiplier>
|
||||
@ -27,4 +25,8 @@
|
||||
<FormationAttack>
|
||||
<CanAttackAsFormation>false</CanAttackAsFormation>
|
||||
</FormationAttack>
|
||||
<Identity>
|
||||
<GenericName>Syntagma</GenericName>
|
||||
<Icon>formations/syntagma.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,11 +1,9 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/testudo.png</Icon>
|
||||
<RequiredMemberCount>16</RequiredMemberCount>
|
||||
<DisabledTooltip>Melee Infantry only, requires at least 16.</DisabledTooltip>
|
||||
<SortingClasses>Hero Champion Elite Advanced Basic</SortingClasses>
|
||||
<FormationName>Testudo</FormationName>
|
||||
<FormationShape>square</FormationShape>
|
||||
<UnitSeparationWidthMultiplier>0.5</UnitSeparationWidthMultiplier>
|
||||
<UnitSeparationDepthMultiplier>0.4</UnitSeparationDepthMultiplier>
|
||||
@ -67,4 +65,8 @@
|
||||
<FormationAttack>
|
||||
<CanAttackAsFormation>false</CanAttackAsFormation>
|
||||
</FormationAttack>
|
||||
<Identity>
|
||||
<GenericName>Testudo</GenericName>
|
||||
<Icon>formations/testudo.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,10 +1,8 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_formation">
|
||||
<Formation>
|
||||
<Icon>formations/wedge.png</Icon>
|
||||
<RequiredMemberCount>6</RequiredMemberCount>
|
||||
<DisabledTooltip>Cavalry only, requires at least 6.</DisabledTooltip>
|
||||
<FormationName>Wedge</FormationName>
|
||||
<FormationShape>triangle</FormationShape>
|
||||
<ShiftRows>true</ShiftRows>
|
||||
<Sloppiness>0.25</Sloppiness>
|
||||
@ -14,4 +12,8 @@
|
||||
<FormationAttack>
|
||||
<CanAttackAsFormation>false</CanAttackAsFormation>
|
||||
</FormationAttack>
|
||||
<Identity>
|
||||
<GenericName>Wedge</GenericName>
|
||||
<Icon>formations/wedge.png</Icon>
|
||||
</Identity>
|
||||
</Entity>
|
||||
|
@ -1,11 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity>
|
||||
<!--
|
||||
<Identity>
|
||||
<Civ>gaia</Civ>
|
||||
<GenericName>Formation</GenericName>
|
||||
<Undeletable>true</Undeletable>
|
||||
</Identity>
|
||||
<Selectable>
|
||||
<Overlay>
|
||||
<Texture>
|
||||
@ -31,6 +26,10 @@
|
||||
<FormationAttack>
|
||||
<CanAttackAsFormation>false</CanAttackAsFormation>
|
||||
</FormationAttack>
|
||||
<Identity>
|
||||
<Civ/> <!-- Unused -->
|
||||
<Undeletable>true</Undeletable>
|
||||
</Identity>
|
||||
<Obstruction>
|
||||
<Unit/>
|
||||
<Active>true</Active>
|
||||
|
@ -245,7 +245,10 @@ class CheckRefs:
|
||||
if entity.find('Identity') is not None:
|
||||
icon = entity.find('Identity').find('Icon')
|
||||
if icon is not None and icon.text:
|
||||
self.deps.append((str(fp), f'art/textures/ui/session/portraits/{icon.text}'))
|
||||
if entity.find('Formation') is not None:
|
||||
self.deps.append((str(fp), f'art/textures/ui/session/icons/{icon.text}'))
|
||||
else:
|
||||
self.deps.append((str(fp), f'art/textures/ui/session/portraits/{icon.text}'))
|
||||
if entity.find('Heal') is not None and entity.find('Heal').find('RangeOverlay') is not None:
|
||||
range_overlay = entity.find('Heal').find('RangeOverlay')
|
||||
for tag in ('LineTexture', 'LineTextureMask'):
|
||||
|
Loading…
Reference in New Issue
Block a user