🎨 Allow buildings to adapt to their map
This commit is contained in:
parent
9c72741e69
commit
30d57d114c
@ -12,5 +12,17 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<material>player_trans_ao_parallax_spec.xml</material>
|
||||
</actor>
|
||||
|
@ -11,5 +11,17 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<material>player_trans_parallax_spec.xml</material>
|
||||
</actor>
|
||||
|
@ -9,5 +9,17 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<material>player_water.xml</material>
|
||||
</actor>
|
||||
|
@ -11,5 +11,17 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<material>player_trans_parallax_spec.xml</material>
|
||||
</actor>
|
||||
|
@ -12,5 +12,17 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<material>player_trans_ao_parallax_spec.xml</material>
|
||||
</actor>
|
||||
|
@ -24,6 +24,18 @@
|
||||
</props>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="alive" frequency="1"/>
|
||||
<variant file="structures/destruction_medium.xml">
|
||||
|
@ -19,6 +19,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="ungarrisoned" frequency="1"/>
|
||||
<variant name="garrisoned">
|
||||
|
@ -17,6 +17,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="ungarrisoned" frequency="1"/>
|
||||
<variant name="garrisoned">
|
||||
|
@ -16,6 +16,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="alive" frequency="1"/>
|
||||
<variant file="structures/destruction_small.xml"/>
|
||||
|
@ -18,6 +18,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="alive" frequency="1"/>
|
||||
<variant file="structures/destruction_small.xml">
|
||||
|
@ -19,6 +19,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="ungarrisoned" frequency="1"/>
|
||||
<variant name="garrisoned">
|
||||
|
@ -24,6 +24,18 @@
|
||||
</props>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant frequency="1" name="texture">
|
||||
<textures>
|
||||
|
@ -15,6 +15,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="alive" frequency="1"/>
|
||||
<variant file="structures/destruction_small.xml">
|
||||
|
@ -18,6 +18,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="alive" frequency="1"/>
|
||||
<variant file="structures/destruction_small.xml">
|
||||
|
@ -18,6 +18,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="alive" frequency="1"/>
|
||||
<variant file="structures/destruction_medium.xml">
|
||||
|
@ -18,6 +18,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant frequency="1" name="ungarrisoned"/>
|
||||
<variant name="garrisoned">
|
||||
|
@ -17,6 +17,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="alive" frequency="1"/>
|
||||
<variant file="structures/destruction_small.xml">
|
||||
|
@ -22,6 +22,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="ungarrisoned" frequency="1"/>
|
||||
<variant name="garrisoned">
|
||||
|
@ -14,5 +14,17 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<material>no_trans_norm_spec.xml</material>
|
||||
</actor>
|
||||
|
@ -18,6 +18,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="ungarrisoned" frequency="1"/>
|
||||
<variant name="garrisoned">
|
||||
|
@ -10,6 +10,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant frequency="1" name="gaul house a">
|
||||
<mesh>structural/gaul_house_a.dae</mesh>
|
||||
|
@ -18,6 +18,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="alive" frequency="1"/>
|
||||
<variant file="structures/destruction_medium.xml">
|
||||
|
@ -33,6 +33,18 @@
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant name="summer" frequency="1">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
<variant name="winter" frequency="0">
|
||||
<textures>
|
||||
<texture file="structural/celt_struct_1_snow.dds" name="baseTex"/>
|
||||
</textures>
|
||||
</variant>
|
||||
</group>
|
||||
<group>
|
||||
<variant frequency="1" name="ungarrisoned"/>
|
||||
<variant name="garrisoned">
|
||||
|
BIN
binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml
(Stored with Git LFS)
BIN
binaries/data/mods/public/maps/skirmishes/alpine_valleys_2p.xml
(Stored with Git LFS)
Binary file not shown.
@ -0,0 +1,43 @@
|
||||
/**
|
||||
* A manager class for biomes.
|
||||
* @class
|
||||
* @constructor
|
||||
*/
|
||||
function BiomeManager() {}
|
||||
|
||||
/**
|
||||
* Defines the XML schema and help strings of the manager.
|
||||
* @memberof BiomeManager
|
||||
*/
|
||||
BiomeManager.prototype.Schema =
|
||||
"<a:component type='system'/><empty/>";
|
||||
|
||||
/**
|
||||
* Initializes the current map's biome.
|
||||
* @memberof BiomeManager
|
||||
*/
|
||||
BiomeManager.prototype.Init = function()
|
||||
{
|
||||
this.biome = "";
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the current map's biome.
|
||||
* @param {string} biome - The new biome.
|
||||
* @memberof BiomeManager
|
||||
*/
|
||||
BiomeManager.prototype.SetBiome = function(biome)
|
||||
{
|
||||
this.biome = biome;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the current map's biome.
|
||||
* @memberof BiomeManager
|
||||
*/
|
||||
BiomeManager.prototype.GetBiome = function()
|
||||
{
|
||||
return this.biome;
|
||||
}
|
||||
|
||||
Engine.RegisterSystemComponentType(IID_BiomeManager, "BiomeManager", BiomeManager);
|
@ -0,0 +1,83 @@
|
||||
/**
|
||||
* A manager class for biomes.
|
||||
* @class
|
||||
* @constructor
|
||||
*/
|
||||
function BiomeReplacer() {}
|
||||
|
||||
/**
|
||||
* Defines the XML schema and help strings of the component.
|
||||
* @memberof BiomeReplacer
|
||||
*/
|
||||
BiomeReplacer.prototype.Schema = `
|
||||
<a:help>Defines the variants an entity can assume depending on a map biome.</a:help>
|
||||
<a:example>
|
||||
<Variants>
|
||||
<Winter>
|
||||
<AffectedBiomes datatype="tokens">generic/alpine</AffectedBiomes>
|
||||
<ActorVariant>winter</ActorVariant>
|
||||
</Winter>
|
||||
</Variants>
|
||||
</a:example>
|
||||
<element name='Variants' a:help='Effect for having multiple builders.'>
|
||||
<oneOrMore>
|
||||
<element a:help='Element containing the variant data.'>
|
||||
<anyName/>
|
||||
<interleave>
|
||||
<element name='AffectedBiomes' a:help='Names of the biomes affected byt this variant'>
|
||||
<attribute name='datatype'>
|
||||
<value>tokens</value>
|
||||
</attribute>
|
||||
<text/>
|
||||
</element>
|
||||
<element name='ActorVariant' a:help='Actor variant to switch to.'>
|
||||
<text/>
|
||||
</element>
|
||||
</interleave>
|
||||
</element>
|
||||
</oneOrMore>
|
||||
</element>`;
|
||||
|
||||
/**
|
||||
* Initializes the biome replacer.
|
||||
* @memberof BiomeReplacer
|
||||
*/
|
||||
BiomeReplacer.prototype.Init = function()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param {{ "from": number, "to": number }} msg - Message containing the old new owner.
|
||||
* @memberof BiomeReplacer
|
||||
*/
|
||||
BiomeReplacer.prototype.OnCreate = function(msg)
|
||||
{
|
||||
|
||||
const currentBiome = Engine.QueryInterface(SYSTEM_ENTITY, IID_BiomeManager)?.GetBiome();
|
||||
|
||||
if (!currentBiome)
|
||||
return;
|
||||
|
||||
let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual);
|
||||
|
||||
if (!cmpVisual)
|
||||
return;
|
||||
|
||||
for (const variantName of Object.keys(this.template.Variants))
|
||||
{
|
||||
const variant = this.template.Variants[variantName];
|
||||
if (!variant.AffectedBiomes || !variant.AffectedBiomes._string)
|
||||
continue;
|
||||
|
||||
const affectedBiomes = variant.AffectedBiomes._string.split(" ");
|
||||
if (affectedBiomes.indexOf(currentBiome) !== -1)
|
||||
{
|
||||
cmpVisual.SelectAnimation(variant.ActorVariant, false, 1.0);
|
||||
return;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
Engine.RegisterComponentType(IID_BiomeReplacer, "BiomeReplacer", BiomeReplacer);
|
@ -0,0 +1 @@
|
||||
Engine.RegisterInterface("BiomeManager");
|
@ -0,0 +1 @@
|
||||
Engine.RegisterInterface("BiomeReplacer");
|
@ -41,6 +41,11 @@ function InitGame(settings)
|
||||
cmpRangeManager.ExploreMap(i);
|
||||
}
|
||||
|
||||
if (settings.Biome)
|
||||
{
|
||||
Engine.QueryInterface(SYSTEM_ENTITY, IID_BiomeManager)?.SetBiome(settings.Biome);
|
||||
}
|
||||
|
||||
const cmpAIManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_AIManager);
|
||||
for (let i = 0; i < settings.PlayerData.length; ++i)
|
||||
{
|
||||
|
@ -5,4 +5,5 @@
|
||||
<Ownership merge=""/>
|
||||
<Position merge=""/>
|
||||
<VisualActor merge=""/>
|
||||
<BiomeReplacer merge=""/>
|
||||
</Entity>
|
||||
|
@ -1,5 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity filtered="">
|
||||
<BiomeReplacer merge=""/>
|
||||
<!-- We only want to include components which are necessary (for the visual previewing of an entity)
|
||||
and safe (i.e. won't do anything that affects the synchronised simulation state), so additions
|
||||
to this list should be carefully considered -->
|
||||
|
@ -1,5 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Entity parent="template_structure_civic_house">
|
||||
<BiomeReplacer>
|
||||
<Variants>
|
||||
<Winter>
|
||||
<AffectedBiomes datatype="tokens">generic/alpine</AffectedBiomes>
|
||||
<ActorVariant>winter</ActorVariant>
|
||||
</Winter>
|
||||
</Variants>
|
||||
</BiomeReplacer>
|
||||
<Identity>
|
||||
<Civ>gaul</Civ>
|
||||
<SpecificName>Tegia</SpecificName>
|
||||
|
Loading…
Reference in New Issue
Block a user