Fix WithWallSpriteBody hijacking WithSpriteBody's DefaultAnimation before/during the "make" animation
This commit is contained in:
@@ -17,7 +17,7 @@ using OpenRA.Traits;
|
|||||||
namespace OpenRA.Mods.Common.Traits
|
namespace OpenRA.Mods.Common.Traits
|
||||||
{
|
{
|
||||||
[Desc("Render trait for actors that change sprites if neighbors with the same trait are present.")]
|
[Desc("Render trait for actors that change sprites if neighbors with the same trait are present.")]
|
||||||
class WithWallSpriteBodyInfo : WithSpriteBodyInfo
|
class WithWallSpriteBodyInfo : WithSpriteBodyInfo, Requires<BuildingInfo>
|
||||||
{
|
{
|
||||||
public readonly string Type = "wall";
|
public readonly string Type = "wall";
|
||||||
|
|
||||||
@@ -68,7 +68,7 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class WithWallSpriteBody : WithSpriteBody, INotifyAddedToWorld, INotifyRemovedFromWorld, ITick
|
class WithWallSpriteBody : WithSpriteBody, INotifyRemovedFromWorld, ITick
|
||||||
{
|
{
|
||||||
readonly WithWallSpriteBodyInfo wallInfo;
|
readonly WithWallSpriteBodyInfo wallInfo;
|
||||||
int adjacent = 0;
|
int adjacent = 0;
|
||||||
@@ -78,7 +78,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
: base(init, info, () => 0)
|
: base(init, info, () => 0)
|
||||||
{
|
{
|
||||||
wallInfo = info;
|
wallInfo = info;
|
||||||
DefaultAnimation.PlayFetchIndex(NormalizeSequence(init.Self, Info.Sequence), () => adjacent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void DamageStateChanged(Actor self, AttackInfo e)
|
public override void DamageStateChanged(Actor self, AttackInfo e)
|
||||||
@@ -118,6 +117,12 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
dirty = false;
|
dirty = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override void BuildingComplete(Actor self)
|
||||||
|
{
|
||||||
|
DefaultAnimation.PlayFetchIndex(NormalizeSequence(self, Info.Sequence), () => adjacent);
|
||||||
|
UpdateNeighbours(self);
|
||||||
|
}
|
||||||
|
|
||||||
static void UpdateNeighbours(Actor self)
|
static void UpdateNeighbours(Actor self)
|
||||||
{
|
{
|
||||||
var adjacentActors = CVec.Directions.SelectMany(dir =>
|
var adjacentActors = CVec.Directions.SelectMany(dir =>
|
||||||
@@ -129,12 +134,6 @@ namespace OpenRA.Mods.Common.Traits
|
|||||||
rb.dirty = true;
|
rb.dirty = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void AddedToWorld(Actor self)
|
|
||||||
{
|
|
||||||
DefaultAnimation.PlayFetchIndex(NormalizeSequence(self, Info.Sequence), () => adjacent);
|
|
||||||
UpdateNeighbours(self);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void RemovedFromWorld(Actor self)
|
public void RemovedFromWorld(Actor self)
|
||||||
{
|
{
|
||||||
UpdateNeighbours(self);
|
UpdateNeighbours(self);
|
||||||
|
|||||||
Reference in New Issue
Block a user