From 425fb6d93acaa073dca264e35ba2f07ce02c27d1 Mon Sep 17 00:00:00 2001 From: Angen Date: Sat, 14 Dec 2019 15:47:26 +0000 Subject: [PATCH] Fix units not reentering FORMATIONMEMBER.IDLE when they are promoted or stopped When unit is idle in formation and promoted, it enters INDIVIDUAL.IDLE incorrectly. When unit is moving as part of formation and formation is ordered to stop, unit enters INDIVIDUAL.IDLE but should keep FORMATIONMEMBER.IDLE. Differential Revision: https://code.wildfiregames.com/D2468 This was SVN commit r23236. --- .../biped/formations/anti_cavalry_back.xml | 1 + .../biped/formations/anti_cavalry_front.xml | 1 + .../variants/biped/formations/line_closed.xml | 19 ++++++++++--------- .../biped/formations/phalanx_back.xml | 1 + .../biped/formations/phalanx_front.xml | 1 + .../variants/biped/formations/phalanx_mid.xml | 1 + .../variants/biped/formations/syntagma_01.xml | 1 + .../variants/biped/formations/syntagma_02.xml | 1 + .../variants/biped/formations/syntagma_03.xml | 1 + .../variants/biped/formations/syntagma_04.xml | 1 + .../biped/formations/syntagma_back.xml | 1 + .../biped/formations/syntagma_front.xml | 1 + .../biped/formations/testudo_front.xml | 1 + .../biped/formations/testudo_front_left.xml | 1 + .../biped/formations/testudo_front_right.xml | 1 + .../biped/formations/testudo_left.xml | 1 + .../biped/formations/testudo_right.xml | 1 + .../variants/biped/formations/testudo_top.xml | 1 + .../public/simulation/components/Formation.js | 4 ++++ .../public/simulation/components/UnitAI.js | 9 ++++++++- 20 files changed, 39 insertions(+), 10 deletions(-) diff --git a/binaries/data/mods/public/art/variants/biped/formations/anti_cavalry_back.xml b/binaries/data/mods/public/art/variants/biped/formations/anti_cavalry_back.xml index e65e3a9521..3637b8ed1d 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/anti_cavalry_back.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/anti_cavalry_back.xml @@ -5,5 +5,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/anti_cavalry_front.xml b/binaries/data/mods/public/art/variants/biped/formations/anti_cavalry_front.xml index 7073c05d70..3b093f9ede 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/anti_cavalry_front.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/anti_cavalry_front.xml @@ -5,5 +5,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/line_closed.xml b/binaries/data/mods/public/art/variants/biped/formations/line_closed.xml index 5caa21995d..9c44973be6 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/line_closed.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/line_closed.xml @@ -1,9 +1,10 @@ - - - - - - - - - + + + + + + + + + + diff --git a/binaries/data/mods/public/art/variants/biped/formations/phalanx_back.xml b/binaries/data/mods/public/art/variants/biped/formations/phalanx_back.xml index f393b52e72..e949c58c3d 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/phalanx_back.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/phalanx_back.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/phalanx_front.xml b/binaries/data/mods/public/art/variants/biped/formations/phalanx_front.xml index 20d6a12b54..db526c7fae 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/phalanx_front.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/phalanx_front.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/phalanx_mid.xml b/binaries/data/mods/public/art/variants/biped/formations/phalanx_mid.xml index caac4ce330..c261ddc81e 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/phalanx_mid.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/phalanx_mid.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/syntagma_01.xml b/binaries/data/mods/public/art/variants/biped/formations/syntagma_01.xml index a6b1c55fd6..b44e5d2470 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/syntagma_01.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/syntagma_01.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/syntagma_02.xml b/binaries/data/mods/public/art/variants/biped/formations/syntagma_02.xml index 43149ba718..b255f0d2f3 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/syntagma_02.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/syntagma_02.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/syntagma_03.xml b/binaries/data/mods/public/art/variants/biped/formations/syntagma_03.xml index 6fe9c9f7b3..ac586d1515 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/syntagma_03.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/syntagma_03.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/syntagma_04.xml b/binaries/data/mods/public/art/variants/biped/formations/syntagma_04.xml index 2e6fccf6b4..903edb1fc6 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/syntagma_04.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/syntagma_04.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/syntagma_back.xml b/binaries/data/mods/public/art/variants/biped/formations/syntagma_back.xml index 7bebaa87d0..d7317736ce 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/syntagma_back.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/syntagma_back.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/syntagma_front.xml b/binaries/data/mods/public/art/variants/biped/formations/syntagma_front.xml index fa58cd03c7..9b572a101c 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/syntagma_front.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/syntagma_front.xml @@ -4,5 +4,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/testudo_front.xml b/binaries/data/mods/public/art/variants/biped/formations/testudo_front.xml index 8460c6aa6e..743af07bf1 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/testudo_front.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/testudo_front.xml @@ -5,5 +5,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/testudo_front_left.xml b/binaries/data/mods/public/art/variants/biped/formations/testudo_front_left.xml index e4adb62211..1def862871 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/testudo_front_left.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/testudo_front_left.xml @@ -5,5 +5,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/testudo_front_right.xml b/binaries/data/mods/public/art/variants/biped/formations/testudo_front_right.xml index 064c21667a..8d5359c1f0 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/testudo_front_right.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/testudo_front_right.xml @@ -5,5 +5,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/testudo_left.xml b/binaries/data/mods/public/art/variants/biped/formations/testudo_left.xml index 6238095fd8..7aa9531579 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/testudo_left.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/testudo_left.xml @@ -5,5 +5,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/testudo_right.xml b/binaries/data/mods/public/art/variants/biped/formations/testudo_right.xml index 7ae99f6bef..d89e3b2181 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/testudo_right.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/testudo_right.xml @@ -5,5 +5,6 @@ + diff --git a/binaries/data/mods/public/art/variants/biped/formations/testudo_top.xml b/binaries/data/mods/public/art/variants/biped/formations/testudo_top.xml index d244d1b49e..c8cb9c0a32 100644 --- a/binaries/data/mods/public/art/variants/biped/formations/testudo_top.xml +++ b/binaries/data/mods/public/art/variants/biped/formations/testudo_top.xml @@ -5,6 +5,7 @@ + diff --git a/binaries/data/mods/public/simulation/components/Formation.js b/binaries/data/mods/public/simulation/components/Formation.js index 29a2755712..3a4177fd0d 100644 --- a/binaries/data/mods/public/simulation/components/Formation.js +++ b/binaries/data/mods/public/simulation/components/Formation.js @@ -936,7 +936,11 @@ Formation.prototype.OnGlobalEntityRenamed = function(msg) cmpOldUnitAI.SetFormationController(INVALID_ENTITY); if (cmpNewUnitAI) + { cmpNewUnitAI.SetFormationController(this.entity); + if (!cmpNewUnitAI.GetOrders().length) + cmpNewUnitAI.SetNextState("FORMATIONMEMBER.IDLE"); + } // Because the renamed entity might have different characteristics, // (e.g. packed vs. unpacked siege), we need to recompute motion parameters diff --git a/binaries/data/mods/public/simulation/components/UnitAI.js b/binaries/data/mods/public/simulation/components/UnitAI.js index b3f54394e5..0ad633ac6a 100644 --- a/binaries/data/mods/public/simulation/components/UnitAI.js +++ b/binaries/data/mods/public/simulation/components/UnitAI.js @@ -248,6 +248,8 @@ UnitAI.prototype.UnitFsmSpec = { // No orders left, we're an individual now if (this.IsAnimal()) this.SetNextState("ANIMAL.IDLE"); + else if (this.IsFormationMember()) + this.SetNextState("FORMATIONMEMBER.IDLE"); else this.SetNextState("INDIVIDUAL.IDLE"); @@ -637,7 +639,10 @@ UnitAI.prototype.UnitFsmSpec = { }, "Order.Cheering": function(msg) { - this.SetNextState("INDIVIDUAL.CHEERING"); + if (this.IsFormationMember()) + this.SetNextState("FORMATIONMEMBER.CHEERING"); + else + this.SetNextState("INDIVIDUAL.CHEERING"); }, "Order.Pack": function(msg) { @@ -1301,6 +1306,8 @@ UnitAI.prototype.UnitFsmSpec = { "IDLE": "INDIVIDUAL.IDLE", + "CHEERING": "INDIVIDUAL.CHEERING", + "WALKING": { "enter": function() { this.formationOffset = { "x": this.order.data.x, "z": this.order.data.z };