Merge pull request #10324 from RoosterDragon/change-frozen-actor-removals

GPS updates frozen actors that change owner
This commit is contained in:
Oliver Brakmann
2016-01-17 13:37:53 +01:00
13 changed files with 205 additions and 130 deletions

View File

@@ -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))
{

View File

@@ -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)

View File

@@ -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)

View File

@@ -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);
}
}