Merge pull request #10324 from RoosterDragon/change-frozen-actor-removals
GPS updates frozen actors that change owner
This commit is contained in:
@@ -236,7 +236,7 @@ namespace OpenRA.Mods.Common.Orders
|
||||
|
||||
var blockers = allTiles.SelectMany(world.ActorMap.GetActorsAt)
|
||||
.Where(a => a.Owner == queue.Actor.Owner && a.IsIdle)
|
||||
.Select(a => new TraitPair<Mobile> { Actor = a, Trait = a.TraitOrDefault<Mobile>() });
|
||||
.Select(a => new TraitPair<Mobile>(a, a.TraitOrDefault<Mobile>()));
|
||||
|
||||
foreach (var blocker in blockers.Where(x => x.Trait != null))
|
||||
{
|
||||
|
||||
@@ -37,8 +37,6 @@ namespace OpenRA.Mods.Common.Traits
|
||||
readonly PPos[] footprint;
|
||||
|
||||
PlayerDictionary<FrozenState> frozenStates;
|
||||
ITooltip tooltip;
|
||||
Health health;
|
||||
bool isRendering;
|
||||
|
||||
class FrozenState
|
||||
@@ -65,9 +63,6 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
public void Created(Actor self)
|
||||
{
|
||||
tooltip = self.TraitsImplementing<ITooltip>().FirstOrDefault();
|
||||
health = self.TraitOrDefault<Health>();
|
||||
|
||||
frozenStates = new PlayerDictionary<FrozenState>(self.World, (player, playerIndex) =>
|
||||
{
|
||||
var frozenActor = new FrozenActor(self, footprint, player.Shroud, startsRevealed);
|
||||
@@ -81,20 +76,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
void UpdateFrozenActor(Actor self, FrozenActor frozenActor, int playerIndex)
|
||||
{
|
||||
VisibilityHash |= 1 << (playerIndex % 32);
|
||||
|
||||
frozenActor.Owner = self.Owner;
|
||||
|
||||
if (health != null)
|
||||
{
|
||||
frozenActor.HP = health.HP;
|
||||
frozenActor.DamageState = health.DamageState;
|
||||
}
|
||||
|
||||
if (tooltip != null)
|
||||
{
|
||||
frozenActor.TooltipInfo = tooltip.TooltipInfo;
|
||||
frozenActor.TooltipOwner = tooltip.Owner;
|
||||
}
|
||||
frozenActor.RefreshState();
|
||||
}
|
||||
|
||||
bool IsVisibleInner(Actor self, Player byPlayer)
|
||||
|
||||
@@ -361,7 +361,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
public virtual TraitPair<Production> MostLikelyProducer()
|
||||
{
|
||||
var trait = self.TraitsImplementing<Production>().FirstOrDefault(p => p.Info.Produces.Contains(Info.Type));
|
||||
return new TraitPair<Production> { Actor = self, Trait = trait };
|
||||
return new TraitPair<Production>(self, trait);
|
||||
}
|
||||
|
||||
// Builds a unit from the actor that holds this queue (1 queue per building)
|
||||
|
||||
@@ -2889,6 +2889,16 @@ namespace OpenRA.Mods.Common.UtilityCommands
|
||||
node.Key = "AttackSuicides";
|
||||
}
|
||||
|
||||
// Replaced GpsRemoveFrozenActor with FrozenUnderFogUpdatedByGps
|
||||
if (engineVersion < 20160117)
|
||||
{
|
||||
if (node.Key == "GpsRemoveFrozenActor")
|
||||
{
|
||||
node.Key = "FrozenUnderFogUpdatedByGps";
|
||||
node.Value.Nodes.Clear();
|
||||
}
|
||||
}
|
||||
|
||||
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user