Index: ps/trunk/binaries/data/mods/public/art/actors/units/athenians/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/athenians/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/athenians/female_citizen.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_dress.dae @@ -14,7 +14,17 @@ - + + + + + + + + + + + @@ -28,16 +38,6 @@ - - - - - - - - - - player_trans_spec.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/carthaginians/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/carthaginians/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/carthaginians/female_citizen.xml @@ -2,7 +2,7 @@ - + @@ -17,7 +17,17 @@ - + + + + + + + + + + + @@ -31,16 +41,6 @@ - - - - - - - - - - player_trans.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/celts/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/celts/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/celts/female_citizen.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_dress.dae @@ -13,7 +13,17 @@ - + + + + + + + + + + + @@ -27,16 +37,6 @@ - - - - - - - - - - player_trans.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/global/ninja_female.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/global/ninja_female.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/global/ninja_female.xml @@ -15,7 +15,17 @@ - + + + + + + + + + + + @@ -30,16 +40,6 @@ - - - - - - - - - - basic_specmap.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/hellenes/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/hellenes/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/hellenes/female_citizen.xml @@ -2,7 +2,7 @@ - + @@ -53,7 +53,17 @@ - + + + + + + + + + + + @@ -67,16 +77,6 @@ - - - - - - - - - - player_trans.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/hellenes/female_gorgo.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/hellenes/female_gorgo.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/hellenes/female_gorgo.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_dress.dae @@ -13,7 +13,17 @@ - + + + + + + + + + + + @@ -27,15 +37,5 @@ - - - - - - - - - - Index: ps/trunk/binaries/data/mods/public/art/actors/units/iberians/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/iberians/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/iberians/female_citizen.xml @@ -2,7 +2,7 @@ - + @@ -18,7 +18,17 @@ - + + + + + + + + + + + @@ -32,16 +42,6 @@ - - - - - - - - - - player_trans.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/macedonians/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/macedonians/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/macedonians/female_citizen.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_dress.dae @@ -14,7 +14,17 @@ - + + + + + + + + + + + @@ -28,16 +38,6 @@ - - - - - - - - - - player_trans_spec.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/mauryans/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/mauryans/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/mauryans/female_citizen.xml @@ -2,7 +2,7 @@ - + @@ -53,7 +53,17 @@ - + + + + + + + + + + + @@ -67,16 +77,6 @@ - - - - - - - - - - player_trans_spec.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/persians/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/persians/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/persians/female_citizen.xml @@ -2,7 +2,7 @@ - + @@ -23,7 +23,17 @@ - + + + + + + + + + + + @@ -37,16 +47,6 @@ - - - - - - - - - - player_trans.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/ptolemies/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/ptolemies/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/ptolemies/female_citizen.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_dress.dae @@ -14,7 +14,17 @@ - + + + + + + + + + + + @@ -28,16 +38,6 @@ - - - - - - - - - - player_trans_spec.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/ptolemies/hero_cleopatra.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/ptolemies/hero_cleopatra.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/ptolemies/hero_cleopatra.xml @@ -15,9 +15,9 @@ - + @@ -31,16 +31,6 @@ - - - - - - - - - - player_trans.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/romans/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/romans/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/romans/female_citizen.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_dress.dae @@ -16,7 +16,17 @@ + + + + + + + + + + @@ -31,16 +41,6 @@ - - - - - - - - - - player_trans.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/seleucids/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/seleucids/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/seleucids/female_citizen.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_dress.dae @@ -14,6 +14,16 @@ + + + + + + + + + + @@ -28,16 +38,6 @@ - - - - - - - - - - player_trans_spec.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/spartans/female_citizen.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/spartans/female_citizen.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/spartans/female_citizen.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_tunic_short.dae @@ -14,6 +14,16 @@ + + + + + + + + + + @@ -28,16 +38,6 @@ - - - - - - - - - - player_trans_spec.xml Index: ps/trunk/binaries/data/mods/public/art/actors/units/spartans/female_gorgo.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/actors/units/spartans/female_gorgo.xml +++ ps/trunk/binaries/data/mods/public/art/actors/units/spartans/female_gorgo.xml @@ -2,7 +2,7 @@ - + skeletal/new/f_dress.dae @@ -13,6 +13,16 @@ + + + + + + + + + + @@ -27,15 +37,5 @@ - - - - - - - - - - Index: ps/trunk/binaries/data/mods/public/art/variants/biped/carry_food.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/carry_food.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/carry_food.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/carry_meat.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/carry_meat.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/carry_meat.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/carry_metal.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/carry_metal.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/carry_metal.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/carry_stone.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/carry_stone.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/carry_stone.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/carry_wood.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/carry_wood.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/carry_wood.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_food.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_food.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_food.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_food_idle.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_food_idle.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_food_idle.xml @@ -1,10 +0,0 @@ - - - - - - - - - - Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_meat.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_meat.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_meat.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_meat_idle.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_meat_idle.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_meat_idle.xml @@ -1,9 +0,0 @@ - - - - - - - - - Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_metal.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_metal.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_metal.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_metal_idle.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_metal_idle.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_metal_idle.xml @@ -1,9 +0,0 @@ - - - - - - - - - Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_stone.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_stone.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_stone.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_stone_idle.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_stone_idle.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_stone_idle.xml @@ -1,9 +0,0 @@ - - - - - - - - - Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_wood.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_wood.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_wood.xml @@ -1,6 +1,7 @@ - + + Index: ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_wood_idle.xml =================================================================== --- ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_wood_idle.xml +++ ps/trunk/binaries/data/mods/public/art/variants/biped/female_carry_wood_idle.xml @@ -1,9 +0,0 @@ - - - - - - - - - Index: ps/trunk/binaries/data/mods/public/simulation/components/UnitAI.js =================================================================== --- ps/trunk/binaries/data/mods/public/simulation/components/UnitAI.js +++ ps/trunk/binaries/data/mods/public/simulation/components/UnitAI.js @@ -638,7 +638,7 @@ Engine.QueryInterface(this.entity, IID_ResourceGatherer).CommitResources(dropsiteTypes); // Stop showing the carried resource animation. - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); // Our next order should always be a Gather, // so just switch back to that order @@ -1606,7 +1606,7 @@ "WALKINGANDFIGHTING": { "enter": function () { // Show weapons rather than carried resources. - this.SetGathererAnimationOverride(true); + this.SetAnimationVariant("combat"); this.StartTimer(0, 1000); this.SelectAnimation("move"); @@ -1671,7 +1671,7 @@ "ESCORTING": { "enter": function () { // Show weapons rather than carried resources. - this.SetGathererAnimationOverride(true); + this.SetAnimationVariant("combat"); this.StartTimer(0, 1000); this.SelectAnimation("move"); @@ -1805,7 +1805,7 @@ "APPROACHING": { "enter": function () { // Show weapons rather than carried resources. - this.SetGathererAnimationOverride(true); + this.SetAnimationVariant("combat"); this.SelectAnimation("move"); this.StartTimer(1000, 1000); @@ -1813,7 +1813,7 @@ "leave": function() { // Show carried resources when walking. - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); this.StopTimer(); }, @@ -2043,7 +2043,7 @@ "CHASING": { "enter": function () { // Show weapons rather than carried resources. - this.SetGathererAnimationOverride(true); + this.SetAnimationVariant("combat"); this.SelectAnimation("move"); var cmpUnitAI = Engine.QueryInterface(this.order.data.target, IID_UnitAI); @@ -2068,7 +2068,7 @@ // Reset normal speed in case it was changed this.SetMoveSpeed(this.GetWalkSpeed()); // Show carried resources when walking. - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); this.StopTimer(); }, @@ -2315,6 +2315,7 @@ // off to a different target.) if (this.CheckTargetRange(this.gatheringTarget, IID_ResourceGatherer)) { + this.SetDefaultAnimationVariant(); var typename = "gather_" + this.order.data.type.specific; this.SelectAnimation(typename, false, 1.0, typename); } @@ -2332,7 +2333,7 @@ delete this.gatheringTarget; // Show the carried resource, if we've gathered anything. - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); }, "Timer": function(msg) { @@ -2631,7 +2632,7 @@ cmpResourceGatherer.CommitResources(dropsiteTypes); // Stop showing the carried resource animation. - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); // Our next order should always be a Gather, // so just switch back to that order @@ -2799,7 +2800,7 @@ { let dropsiteTypes = cmpResourceDropsite.GetTypes(); cmpResourceGatherer.CommitResources(dropsiteTypes); - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); } // We finished building it. @@ -2808,7 +2809,7 @@ { if (this.CanReturnResource(msg.data.newentity, true)) { - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); this.PushOrderFront("ReturnResource", { "target": msg.data.newentity, "force": false }); } return; @@ -2827,7 +2828,7 @@ { if (this.CanReturnResource(msg.data.newentity, true)) { - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); this.PushOrder("ReturnResource", { "target": msg.data.newentity, "force": false }); } this.PerformGather(msg.data.newentity, true, false); @@ -2973,7 +2974,7 @@ if (cmpResourceGatherer) { cmpResourceGatherer.CommitResources(dropsiteTypes); - this.SetGathererAnimationOverride(); + this.SetDefaultAnimationVariant(); } } @@ -4244,37 +4245,51 @@ } }; -UnitAI.prototype.SetGathererAnimationOverride = function(disable) +/* + * Set a visualActor animation variant. + * By changing the animation variant, you can change animations based on unitAI state. + * If there are no specific variants or the variant doesn't exist in the actor, + * the actor fallbacks to any existing animation. + * @param type if present, switch to a specific animation variant. + */ +UnitAI.prototype.SetAnimationVariant = function(type) { - var cmpResourceGatherer = Engine.QueryInterface(this.entity, IID_ResourceGatherer); - if (!cmpResourceGatherer) - return; - - var cmpVisual = Engine.QueryInterface(this.entity, IID_Visual); + let cmpVisual = Engine.QueryInterface(this.entity, IID_Visual); if (!cmpVisual) return; - // Remove the animation override, so that weapons are shown again. - if (disable) + cmpVisual.SetVariant("animationVariant", type); + return; +}; + +/* + * Reset the animation variant to default behavior + * Default behavior is to pick a resource-carrying variant if resources are being carried. + * Otherwise pick nothing in particular. + */ +UnitAI.prototype.SetDefaultAnimationVariant = function() +{ + let cmpResourceGatherer = Engine.QueryInterface(this.entity, IID_ResourceGatherer); + if (!cmpResourceGatherer) { - cmpVisual.ResetMoveAnimation("walk"); + this.SetAnimationVariant(""); return; } - // Work out what we're carrying, in order to select an appropriate animation - var type = cmpResourceGatherer.GetLastCarriedType(); + let type = cmpResourceGatherer.GetLastCarriedType(); if (type) { - var typename = "carry_" + type.generic; + let typename = "carry_" + type.generic; // Special case for meat if (type.specific == "meat") typename = "carry_" + type.specific; - cmpVisual.ReplaceMoveAnimation("walk", typename); + this.SetAnimationVariant(typename); + return; } - else - cmpVisual.ResetMoveAnimation("walk"); + + this.SetAnimationVariant(""); }; UnitAI.prototype.SelectAnimation = function(name, once, speed, sound)