1
0
forked from 0ad/0ad

Load build speeds and foundation actors from entity template files

This was SVN commit r7353.
This commit is contained in:
Ykkrosh 2010-03-12 22:28:51 +00:00
parent 9213ee8c27
commit aca1074188
81 changed files with 190 additions and 9 deletions

View File

@ -28,7 +28,7 @@ Builder.prototype.GetRange = function()
*/
Builder.prototype.PerformBuilding = function(target)
{
var rate = 0.1; // XXX
var rate = +this.template.Rate;
// If it's a foundation, then build it
var cmpFoundation = Engine.QueryInterface(target, IID_Foundation);

View File

@ -18,6 +18,11 @@ Cost.prototype.GetPopBonus = function()
return 0;
};
Cost.prototype.GetBuildTime = function()
{
return +(this.template.BuildTime || 1);
}
Cost.prototype.GetResourceCosts = function()
{
return {

View File

@ -44,7 +44,7 @@ Foundation.prototype.OnDestroy = function()
};
/**
* Perform some amount of construction work.
* Perform some number of seconds of construction work.
* Returns true if the construction is completed.
*/
Foundation.prototype.Build = function(builderEnt, work)
@ -53,7 +53,9 @@ Foundation.prototype.Build = function(builderEnt, work)
if (this.buildProgress == 1.0)
return true;
var amount = work; // TODO: adjust by time cost of this building
// Calculate the amount of progress that will be added (where 1.0 = completion)
var cmpCost = Engine.QueryInterface(this.entity, IID_Cost);
var amount = work / cmpCost.GetBuildTime();
// TODO: implement some kind of diminishing returns for multiple builders.
// e.g. record the set of entities that build this, then every ~2 seconds

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Strategion</SpecificName>
</Identity>
<Cost>
<BuildTime>44</BuildTime>
</Cost>
<Health>
<Max>2200</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Agora</SpecificName>
</Identity>
<Cost>
<BuildTime>66</BuildTime>
</Cost>
<Health>
<Max>3300</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Stavlos</SpecificName>
</Identity>
<Cost>
<BuildTime>11</BuildTime>
</Cost>
<Health>
<Max>110</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Limenos</SpecificName>
</Identity>
<Cost>
<BuildTime>55</BuildTime>
</Cost>
<Health>
<Max>2750</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Sitobolion</SpecificName>
</Identity>
<Cost>
<BuildTime>19.8</BuildTime>
</Cost>
<Health>
<Max>990</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Agros</SpecificName>
</Identity>
<Cost>
<BuildTime>13.2</BuildTime>
</Cost>
<Health>
<Max>132</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Epiteichisma</SpecificName>
</Identity>
<Cost>
<BuildTime>92.4</BuildTime>
</Cost>
<Health>
<Max>4620</Max>
</Health>

View File

@ -5,6 +5,7 @@
<IconCell>63</IconCell>
</Identity>
<Cost>
<BuildTime>44</BuildTime>
<Resources>
<stone>200</stone>
<metal>200</metal>
@ -15,6 +16,7 @@
</Health>
<VisualActor>
<Actor>structures/hellenes/special_gym.xml</Actor>
<FoundationActor>structures/fndn_5x5.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="22.0" depth="24.0"/>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Metathron</SpecificName>
</Identity>
<Cost>
<BuildTime>17.6</BuildTime>
</Cost>
<Health>
<Max>880</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Emporion</SpecificName>
</Identity>
<Cost>
<BuildTime>33</BuildTime>
</Cost>
<Health>
<Max>1650</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Anakeion</SpecificName>
</Identity>
<Cost>
<BuildTime>17.6</BuildTime>
</Cost>
<Health>
<Max>880</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Pyrgion</SpecificName>
</Identity>
<Cost>
<BuildTime>26.4</BuildTime>
</Cost>
<Health>
<Max>1320</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Anaktoron</SpecificName>
</Identity>
<Cost>
<BuildTime>44</BuildTime>
</Cost>
<Health>
<Max>2200</Max>
</Health>

View File

@ -4,6 +4,7 @@
<SpecificName>Theatron</SpecificName>
</Identity>
<Cost>
<BuildTime>110</BuildTime>
<Resources>
<wood>200</wood>
<stone>500</stone>
@ -14,6 +15,7 @@
</Health>
<VisualActor>
<Actor>structures/hellenes/special_theatre.xml</Actor>
<FoundationActor>structures/fndn_theatron.xml</FoundationActor>
</VisualActor>
<Footprint>
<Circle radius="26.0"/>

View File

@ -5,6 +5,7 @@
<IconCell>24</IconCell>
</Identity>
<Cost>
<BuildTime>44</BuildTime>
<Resources>
<stone>100</stone>
<metal>200</metal>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Teichos</SpecificName>
</Identity>
<Cost>
<BuildTime>11</BuildTime>
</Cost>
<Health>
<Max>2200</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Pule</SpecificName>
</Identity>
<Cost>
<BuildTime>16.5</BuildTime>
</Cost>
<Health>
<Max>3300</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Teichos</SpecificName>
</Identity>
<Cost>
<BuildTime>11</BuildTime>
</Cost>
<Health>
<Max>2200</Max>
</Health>

View File

@ -3,6 +3,9 @@
<Identity>
<SpecificName>Pyrgos</SpecificName>
</Identity>
<Cost>
<BuildTime>13.75</BuildTime>
</Cost>
<Health>
<Max>2750</Max>
</Health>

View File

@ -5,6 +5,7 @@
<IconSheet>PortraitSheet</IconSheet>
</Identity>
<Cost>
<BuildTime>10</BuildTime>
<Resources>
</Resources>
</Cost>

View File

@ -6,6 +6,7 @@
</Identity>
<Cost>
<PopulationBonus>10</PopulationBonus>
<BuildTime>60</BuildTime>
<Resources>
<wood>100</wood>
<stone>100</stone>
@ -20,6 +21,9 @@
<Pierce>40</Pierce>
<Crush>10.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_6x6.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="32.0" depth="32.0"/>
<Height>8.0</Height>

View File

@ -6,6 +6,7 @@
</Identity>
<Cost>
<PopulationBonus>5</PopulationBonus>
<BuildTime>16</BuildTime>
<Resources>
<wood>100</wood>
</Resources>
@ -18,6 +19,9 @@
<Pierce>40.0</Pierce>
<Crush>5.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_3x3.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="9.0" depth="9.0"/>
<Height>5.0</Height>

View File

@ -6,6 +6,7 @@
</Identity>
<Cost>
<PopulationBonus>5</PopulationBonus>
<BuildTime>40</BuildTime>
<Resources>
<stone>300</stone>
</Resources>
@ -18,6 +19,9 @@
<Pierce>40.0</Pierce>
<Crush>10.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_3x6.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="12.0" depth="12.0"/>
<Height>8.0</Height>

View File

@ -5,6 +5,7 @@
<IconCell>53</IconCell>
</Identity>
<Cost>
<BuildTime>24</BuildTime>
<Resources>
<wood>50</wood>
<stone>50</stone>
@ -18,6 +19,9 @@
<Pierce>40.0</Pierce>
<Crush>10.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_2x2.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="6.0" depth="6.0"/>
<Height>8.0</Height>

View File

@ -17,6 +17,9 @@
<Pierce>40.0</Pierce>
<Crush>10.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_1x1.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="6.0" depth="6.0"/>
<Height>8.0</Height>

View File

@ -17,6 +17,9 @@
<Pierce>40.0</Pierce>
<Crush>10.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_1x1.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="6.0" depth="6.0"/>
<Height>8.0</Height>

View File

@ -17,6 +17,9 @@
<Pierce>40.0</Pierce>
<Crush>10.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_2x2.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="6.0" depth="6.0"/>
<Height>8.0</Height>

View File

@ -5,6 +5,7 @@
<IconCell>49</IconCell>
</Identity>
<Cost>
<BuildTime>18</BuildTime>
<Resources>
<wood>100</wood>
</Resources>
@ -17,6 +18,9 @@
<Pierce>40.0</Pierce>
<Crush>15.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_3x3.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="12.0" depth="12.0"/>
<Height>8.0</Height>

View File

@ -5,6 +5,7 @@
<IconCell>60</IconCell>
</Identity>
<Cost>
<BuildTime>30</BuildTime>
<Resources>
<wood>300</wood>
</Resources>
@ -17,6 +18,9 @@
<Pierce>40.0</Pierce>
<Crush>20.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_4x4.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="17.0" depth="17.0"/>
<Height>8.0</Height>

View File

@ -5,6 +5,7 @@
<IconCell>52</IconCell>
</Identity>
<Cost>
<BuildTime>16</BuildTime>
<Resources>
<wood>100</wood>
</Resources>
@ -17,6 +18,9 @@
<Pierce>40.0</Pierce>
<Crush>15.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_3x3.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="12.0" depth="12.0"/>
<Height>8.0</Height>

View File

@ -6,6 +6,7 @@
</Identity>
<Cost>
<PopulationBonus>5</PopulationBonus>
<BuildTime>40</BuildTime>
<Resources>
<wood>100</wood>
<stone>100</stone>
@ -19,6 +20,9 @@
<Pierce>40.0</Pierce>
<Crush>20.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_4x4.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="17.0" depth="17.0"/>
<Height>5.0</Height>

View File

@ -6,6 +6,7 @@
</Identity>
<Cost>
<PopulationBonus>5</PopulationBonus>
<BuildTime>50</BuildTime>
<Resources>
<wood>300</wood>
</Resources>
@ -18,6 +19,9 @@
<Pierce>40.0</Pierce>
<Crush>20.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_4x4.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="18.0" depth="18.0"/>
<Height>8.0</Height>

View File

@ -6,6 +6,7 @@
</Identity>
<Cost>
<PopulationBonus>10</PopulationBonus>
<BuildTime>84</BuildTime>
<Resources>
<stone>500</stone>
</Resources>
@ -18,6 +19,9 @@
<Pierce>40.0</Pierce>
<Crush>25.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_6x6.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="24.0" depth="24.0"/>
<Height>8.0</Height>

View File

@ -5,6 +5,7 @@
<IconCell>51</IconCell>
</Identity>
<Cost>
<BuildTime>10</BuildTime>
<Resources>
<wood>50</wood>
</Resources>
@ -22,6 +23,9 @@
<Pierce>40.0</Pierce>
<Crush>10.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/fndn_3x3.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="9.5" depth="19.75"/>
<Height>5.0</Height>

View File

@ -5,6 +5,7 @@
<IconCell>50</IconCell>
</Identity>
<Cost>
<BuildTime>12</BuildTime>
<Resources>
<wood>20</wood>
</Resources>
@ -22,6 +23,9 @@
<Pierce>40.0</Pierce>
<Crush>10.0</Crush>
</Armour>
<VisualActor>
<FoundationActor>structures/plot_field_found.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="10.0" depth="10.0"/>
<Height>8.0</Height>

View File

@ -7,6 +7,9 @@
<Health>
<Max>2000</Max>
</Health>
<VisualActor>
<FoundationActor>structures/fndn_5x5.xml</FoundationActor>
</VisualActor>
<Footprint>
<Square width="24.0" depth="24.0"/>
<Height>8.0</Height>

View File

@ -5,6 +5,7 @@
</Identity>
<Cost>
<Population>2</Population>
<BuildTime>30</BuildTime>
<Resources>
<food>100</food>
</Resources>

View File

@ -5,6 +5,7 @@
<IconCell>24</IconCell>
</Identity>
<Cost>
<BuildTime>20</BuildTime>
<Resources>
<food>100</food>
<wood>85</wood>

View File

@ -5,6 +5,7 @@
<IconCell>6</IconCell>
</Identity>
<Cost>
<BuildTime>15</BuildTime>
<Resources>
<food>100</food>
<wood>70</wood>

View File

@ -4,6 +4,7 @@
<GenericName>Hero</GenericName>
</Identity>
<Cost>
<BuildTime>60</BuildTime>
<Resources>
<food>100</food>
<metal>250</metal>

View File

@ -5,6 +5,7 @@
</Identity>
<Cost>
<Population>2</Population>
<BuildTime>80</BuildTime>
<Resources>
<food>150</food>
<metal>25</metal>

View File

@ -4,6 +4,7 @@
<GenericName>Hero</GenericName>
</Identity>
<Cost>
<BuildTime>60</BuildTime>
<Resources>
<food>75</food>
<metal>25</metal>

View File

@ -4,6 +4,7 @@
<GenericName>Hero</GenericName>
</Identity>
<Cost>
<BuildTime>60</BuildTime>
<Resources>
<food>100</food>
<wood>500</wood>

View File

@ -4,6 +4,7 @@
<GenericName>Infantry</GenericName>
</Identity>
<Cost>
<BuildTime>20</BuildTime>
<Resources>
<food>50</food>
</Resources>
@ -33,6 +34,7 @@
<WalkSpeed>7.0</WalkSpeed>
</UnitMotion>
<Builder>
<Rate>1.0</Rate>
<Entities datatype="tokens">
structures/{civ}_barracks
structures/{civ}_civil_centre

View File

@ -5,6 +5,7 @@
<IconCell>0</IconCell>
</Identity>
<Cost>
<BuildTime>10</BuildTime>
<Resources>
<food>50</food>
<metal>62</metal>

View File

@ -5,6 +5,7 @@
<IconCell>12</IconCell>
</Identity>
<Cost>
<BuildTime>8</BuildTime>
<Resources>
<food>50</food>
<stone>30</stone>

View File

@ -5,6 +5,7 @@
<IconCell>43</IconCell>
</Identity>
<Cost>
<BuildTime>30</BuildTime>
<Resources>
<food>75</food>
</Resources>

View File

@ -4,6 +4,7 @@
<GenericName>Super Ranged</GenericName>
</Identity>
<Cost>
<BuildTime>30</BuildTime>
<Resources>
<food>75</food>
</Resources>

View File

@ -5,6 +5,7 @@
<IconCell>32</IconCell>
</Identity>
<Cost>
<BuildTime>15</BuildTime>
<Resources>
<food>50</food>
</Resources>
@ -34,6 +35,7 @@
<WalkSpeed>6.0</WalkSpeed>
</UnitMotion>
<Builder>
<Rate>1.0</Rate>
<Entities datatype="tokens">
structures/{civ}_civil_centre
structures/{civ}_corral

View File

@ -4,6 +4,9 @@
<Civ>celt</Civ>
<SpecificName>Baguada</SpecificName>
</Identity>
<Cost>
<BuildTime>15</BuildTime>
</Cost>
<Armour>
<Pierce>3.0</Pierce>
<Crush>7.0</Crush>

View File

@ -5,6 +5,7 @@
<SpecificName>Coun</SpecificName>
</Identity>
<Cost>
<BuildTime>15</BuildTime>
<Resources>
<food>90</food>
</Resources>

View File

@ -4,6 +4,9 @@
<Civ>celt</Civ>
<SpecificName>Epos</SpecificName>
</Identity>
<Cost>
<BuildTime>15</BuildTime>
</Cost>
<Armour>
<Hack>3.0</Hack>
<Pierce>9.0</Pierce>

View File

@ -7,6 +7,7 @@
</Identity>
<Cost>
<Population>4</Population>
<BuildTime>50</BuildTime>
<Resources>
<food>180</food>
<wood>100</wood>

View File

@ -6,6 +6,7 @@
<IconCell>29</IconCell>
</Identity>
<Cost>
<BuildTime>45</BuildTime>
<Resources>
<food>100</food>
<wood>250</wood>

View File

@ -6,6 +6,7 @@
<IconCell>30</IconCell>
</Identity>
<Cost>
<BuildTime>50</BuildTime>
<Resources>
<food>80</food>
<metal>400</metal>

View File

@ -6,6 +6,7 @@
<IconCell>45</IconCell>
</Identity>
<Cost>
<BuildTime>50</BuildTime>
<Resources>
<food>150</food>
<metal>175</metal>

View File

@ -7,6 +7,7 @@
</Identity>
<Cost>
<Population>2</Population>
<BuildTime>40</BuildTime>
<Resources>
<food>135</food>
<metal>200</metal>

View File

@ -6,6 +6,7 @@
<IconCell>31</IconCell>
</Identity>
<Cost>
<BuildTime>50</BuildTime>
<Resources>
<food>150</food>
<metal>300</metal>

View File

@ -5,6 +5,7 @@
<SpecificName>Baguada</SpecificName>
</Identity>
<Cost>
<BuildTime>15</BuildTime>
<Resources>
<wood>45</wood>
</Resources>

View File

@ -5,6 +5,7 @@
<SpecificName>Gaesata</SpecificName>
</Identity>
<Cost>
<BuildTime>15</BuildTime>
<Resources>
<wood>45</wood>
</Resources>

View File

@ -7,6 +7,7 @@
</Identity>
<Cost>
<Population>4</Population>
<BuildTime>45</BuildTime>
<Resources>
<food>180</food>
<wood>100</wood>

View File

@ -5,6 +5,7 @@
<SpecificName>Gallic Brihent</SpecificName>
</Identity>
<Cost>
<BuildTime>35</BuildTime>
<Resources>
<metal>130</metal>
</Resources>

View File

@ -6,6 +6,7 @@
<IconCell>40</IconCell>
</Identity>
<Cost>
<BuildTime>35</BuildTime>
<Resources>
<food>65</food>
<metal>100</metal>

View File

@ -5,6 +5,7 @@
<SpecificName>Gallic Solduri</SpecificName>
</Identity>
<Cost>
<BuildTime>30</BuildTime>
<Resources>
<food>60</food>
<metal>110</metal>

View File

@ -6,6 +6,7 @@
<IconCell>18</IconCell>
</Identity>
<Cost>
<BuildTime>28</BuildTime>
<Resources>
<wood>5</wood>
<metal>17</metal>

View File

@ -6,6 +6,7 @@
<IconCell>30</IconCell>
</Identity>
<Cost>
<BuildTime>80</BuildTime>
<Resources>
<wood>12</wood>
<metal>97</metal>

View File

@ -6,6 +6,7 @@
<IconCell>29</IconCell>
</Identity>
<Cost>
<BuildTime>55</BuildTime>
<Resources>
<wood>51</wood>
<metal>73</metal>

View File

@ -6,6 +6,7 @@
<IconCell>31</IconCell>
</Identity>
<Cost>
<BuildTime>76</BuildTime>
<Resources>
<metal>93</metal>
</Resources>

View File

@ -6,6 +6,7 @@
<IconCell>22</IconCell>
</Identity>
<Cost>
<BuildTime>56</BuildTime>
<Resources>
<metal>137</metal>
</Resources>

View File

@ -6,6 +6,7 @@
<IconCell>23</IconCell>
</Identity>
<Cost>
<BuildTime>56</BuildTime>
<Resources>
<wood>50</wood>
<metal>82</metal>

View File

@ -6,6 +6,7 @@
<IconCell>9</IconCell>
</Identity>
<Cost>
<BuildTime>17</BuildTime>
<Resources>
<wood>35</wood>
</Resources>

View File

@ -6,6 +6,7 @@
<IconCell>15</IconCell>
</Identity>
<Cost>
<BuildTime>40</BuildTime>
<Resources>
<wood>32</wood>
<metal>45</metal>

View File

@ -6,6 +6,7 @@
<IconCell>13</IconCell>
</Identity>
<Cost>
<BuildTime>29</BuildTime>
<Resources>
<wood>63</wood>
<metal>30</metal>

View File

@ -6,6 +6,7 @@
<IconCell>12</IconCell>
</Identity>
<Cost>
<BuildTime>30</BuildTime>
<Resources>
<wood>35</wood>
<metal>78</metal>

View File

@ -6,6 +6,7 @@
<IconCell>14</IconCell>
</Identity>
<Cost>
<BuildTime>26</BuildTime>
<Resources>
<wood>55</wood>
<metal>35</metal>

View File

@ -367,6 +367,7 @@ void CCmpTemplateManager::CopyFoundationSubset(CParamNode& out, const CParamNode
std::set<std::string> permittedComponentTypes;
permittedComponentTypes.insert("Ownership");
permittedComponentTypes.insert("Position");
permittedComponentTypes.insert("VisualActor");
permittedComponentTypes.insert("Identity");
permittedComponentTypes.insert("Obstruction");
permittedComponentTypes.insert("Selectable");
@ -381,8 +382,8 @@ void CCmpTemplateManager::CopyFoundationSubset(CParamNode& out, const CParamNode
// TODO: the foundation shouldn't be considered an obstruction by default, until construction has
// really started, to prevent players abusing it to block their opponents
// TODO: Use the appropriate actor
CParamNode::LoadXMLString(out, "<Entity><VisualActor><Actor>structures/fndn_4x4.xml</Actor></VisualActor></Entity>");
// Switch the actor to foundation mode
CParamNode::LoadXMLString(out, "<Entity><VisualActor><Foundation/></VisualActor></Entity>");
// Add the Foundation component, to deal with the construction process
CParamNode::LoadXMLString(out, "<Entity><Foundation/></Entity>");

View File

@ -64,8 +64,15 @@ public:
if (!context.HasUnitManager())
return; // do nothing if graphics are disabled
// TODO: we should do some fancy animation of under-construction buildings rising from the ground,
// but for now we'll just use the foundation actor and ignore the normal one
std::string name;
if (paramNode.GetChild("Foundation").IsOk())
name = utf8_from_wstring(paramNode.GetChild("FoundationActor").ToString());
else
name = utf8_from_wstring(paramNode.GetChild("Actor").ToString());
std::set<CStr> selections;
std::string name = utf8_from_wstring(paramNode.GetChild("Actor").ToString());
m_Unit = context.GetUnitManager().CreateUnit(name, NULL, selections);
if (!m_Unit)
{

View File

@ -80,11 +80,12 @@ sub convert {
$out .= qq{$i</Cost>\n};
}
if ($data->{Traits}[0]{Population} or $data->{Traits}[0]{Creation}[0]{Resource}) {
if ($data->{Traits}[0]{Population} or $data->{Traits}[0]{Creation}[0]{Resource} or $data->{Traits}[0]{Creation}[0]{Time}) {
$out .= qq{$i<Cost>\n};
$out .= qq{$i$i<Population>$data->{Traits}[0]{Population}[0]{Rem}[0]</Population>\n} if $data->{Traits}[0]{Population}[0]{Rem}
and $data->{Traits}[0]{Population}[0]{Rem}[0] != 1;
$out .= qq{$i$i<PopulationBonus>$data->{Traits}[0]{Population}[0]{Add}[0]</PopulationBonus>\n} if $data->{Traits}[0]{Population}[0]{Add};
$out .= qq{$i$i<BuildTime>$data->{Traits}[0]{Creation}[0]{Time}[0]</BuildTime>\n} if $data->{Traits}[0]{Creation}[0]{Time};
if ($data->{Traits}[0]{Creation}[0]{Resource}) {
$out .= qq{$i$i<Resources>\n};
for (qw(Food Wood Stone Metal)) {
@ -177,9 +178,14 @@ sub convert {
$dot_actor{$name} = $data->{Actor};
if ($data->{Actor}) {
if ($data->{Actor} or $data->{Traits}[0]{Creation}[0]{Foundation}) {
$out .= qq{$i<VisualActor>\n};
$out .= qq{$i$i<Actor>$data->{Actor}[0]</Actor>\n};
$out .= qq{$i$i<Actor>$data->{Actor}[0]</Actor>\n} if $data->{Actor};
if ($data->{Traits}[0]{Creation}[0]{Foundation}) {
$data->{Traits}[0]{Creation}[0]{Foundation}[0] =~ /^foundation_(\d+x\d+|theatron|field)$/ or die $data->{Traits}[0]{Creation}[0]{Foundation}[0];
my $actor = ($1 eq 'field' ? 'structures/plot_field_found.xml' : "structures/fndn_$1.xml");
$out .= qq{$i$i<FoundationActor>$actor</FoundationActor>\n};
}
$out .= qq{$i</VisualActor>\n};
}
@ -207,6 +213,7 @@ sub convert {
if ($data->{Actions}[0]{Create}[0]{List}[0]{StructCiv} or $data->{Actions}[0]{Create}[0]{List}[0]{StructMil}) {
$out .= qq{$i<Builder>\n};
$out .= qq{$i$i<Rate>1.0</Rate>\n} if $data->{Actions}[0]{Build};
$out .= qq{$i$i<Entities datatype="tokens">\n};
for (sort (keys %{$data->{Actions}[0]{Create}[0]{List}[0]{StructCiv}[0]}, keys %{$data->{Actions}[0]{Create}[0]{List}[0]{StructMil}[0]})) {
my $n = "structures/" . ($civ || "{civ}") . "_" . (lc $_);