Make ITick require explicit implementation

This commit is contained in:
reaperrr
2017-09-07 19:27:53 +02:00
committed by Matthias Mailänder
parent 85e60ef77f
commit 28e1f391e0
44 changed files with 69 additions and 43 deletions

View File

@@ -92,6 +92,7 @@ namespace OpenRA.Traits
}
}
[RequireExplicitImplementation]
public interface ITick { void Tick(Actor self); }
public interface ITickRender { void TickRender(WorldRenderer wr, Actor self); }
public interface IRender { IEnumerable<IRenderable> Render(Actor self, WorldRenderer wr); }

View File

@@ -583,7 +583,7 @@ namespace OpenRA.Mods.Common.AI
return null;
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (!IsEnabled)
return;

View File

@@ -43,7 +43,7 @@ namespace OpenRA.Mods.Common.Scripting
context.WorldLoaded();
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
context.Tick(self);
}

View File

@@ -106,7 +106,7 @@ namespace OpenRA.Mods.Common.Traits
void INotifyAttack.PreparingAttack(Actor self, Target target, Armament a, Barrel barrel) { }
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (!Info.SelfReloads)
return;

View File

@@ -29,7 +29,12 @@ namespace OpenRA.Mods.Common.Traits
public AttackFollow(Actor self, AttackFollowInfo info)
: base(self, info) { }
public virtual void Tick(Actor self)
void ITick.Tick(Actor self)
{
Tick(self);
}
protected virtual void Tick(Actor self)
{
if (IsTraitDisabled)
{

View File

@@ -199,7 +199,7 @@ namespace OpenRA.Mods.Common.Traits
yield return r;
}
public override void Tick(Actor self)
protected override void Tick(Actor self)
{
base.Tick(self);

View File

@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Traits
int remainingTicks;
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (IsTraitDisabled)
{

View File

@@ -40,7 +40,7 @@ namespace OpenRA.Mods.Common.Traits
self.Trait<RenderSprites>().Add(anim);
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (--ticks <= 0)
{

View File

@@ -45,7 +45,12 @@ namespace OpenRA.Mods.Common.Traits
Tick(self);
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
Tick(self);
}
protected void Tick(Actor self)
{
if (conditionManager == null)
return;

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Mods.Common.Traits
conditionManager = self.TraitOrDefault<ConditionManager>();
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (conditionManager == null)
return;

View File

@@ -87,7 +87,7 @@ namespace OpenRA.Mods.Common.Traits
desiredVRange = WDist.Zero;
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (self.CenterPosition != cachedPosition || desiredRange != cachedRange || desiredVRange != cachedVRange)
{

View File

@@ -153,7 +153,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (info.Lifetime != 0 && self.IsInWorld && ++ticks >= info.Lifetime * 25)
self.Dispose();

View File

@@ -77,7 +77,7 @@ namespace OpenRA.Mods.Common.Traits
self.InflictDamage(self.World.WorldActor, new Damage(delta, Info.DamageTypes));
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (IsTraitDisabled || health.HP <= damageThreshold || --damageTicks > 0)
return;

View File

@@ -84,7 +84,7 @@ namespace OpenRA.Mods.Common.Traits
Captor = null;
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (Captor != null && (!Captor.IsInWorld || Captor.IsDead))
EndCapture();

View File

@@ -167,7 +167,7 @@ namespace OpenRA.Mods.Common.Traits
InflictDamage(self, attacker, new Damage(MaxHP), true);
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (hp > DisplayHP)
DisplayHP = hp;

View File

@@ -65,7 +65,7 @@ namespace OpenRA.Mods.Common.Traits
remainingProneTime = info.ProneTime;
}
public override void Tick(Actor self)
protected override void Tick(Actor self)
{
base.Tick(self);

View File

@@ -104,7 +104,7 @@ namespace OpenRA.Mods.Common.Traits
return info.AlwaysVisibleStances.HasStance(stance) || IsVisibleInner(self, byPlayer);
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (self.Disposed)
return;

View File

@@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
t += 0.25f;
if (t >= 256) t = 0;

View File

@@ -53,7 +53,7 @@ namespace OpenRA.Mods.Common.Traits
remainingFrames = ticks;
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (remainingFrames > 0)
remainingFrames--;

View File

@@ -73,7 +73,7 @@ namespace OpenRA.Mods.Common.Traits
return info.Tilesets.Contains(tilesetId) && !info.ExcludeTilesets.Contains(tilesetId);
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (!validTileset)
return;

View File

@@ -58,7 +58,7 @@ namespace OpenRA.Mods.Common.Traits
checkForSuitableCell = checkLandingCell;
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
var wasInDropRange = inDropRange;
inDropRange = target.IsInRange(self.CenterPosition, info.DropRange);

View File

@@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits
[Sync] bool isActive = false;
public override void Tick(Actor self)
protected override void Tick(Actor self)
{
// PERF: Avoid LINQ.
isActive = false;

View File

@@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits
mo = self.Trait<MissionObjectives>();
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (self.Owner.WinState != WinState.Undefined || self.Owner.NonCombatant) return;

View File

@@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Traits
}
// Here self is the player actor
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
// TODO: Make the AI handle such notifications and remove Owner.IsBot from this check
// Disable notifications for AI and neutral players (creeps) and for spectators

View File

@@ -71,7 +71,7 @@ namespace OpenRA.Mods.Common.Traits
EarnedSamples.Dequeue();
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (self.World.WorldTick % 1500 == 1)
UpdateEarnedThisMinute();

View File

@@ -229,7 +229,12 @@ namespace OpenRA.Mods.Common.Traits
return ps.Buildable || developerMode.AllTech;
}
public virtual void Tick(Actor self)
void ITick.Tick(Actor self)
{
Tick(self);
}
protected virtual void Tick(Actor self)
{
while (queue.Count > 0 && BuildableItems().All(b => b.Name != queue[0].Item))
{

View File

@@ -41,7 +41,7 @@ namespace OpenRA.Mods.Common.Traits
resources = self.Trait<PlayerResources>();
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (--nextSiloAdviceTime <= 0)
{

View File

@@ -71,7 +71,7 @@ namespace OpenRA.Mods.Common.Traits
public bool Holding { get { return Owned >= info.RatioRequired * Total / 100; } }
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (player.WinState != WinState.Undefined || player.NonCombatant) return;

View File

@@ -90,7 +90,7 @@ namespace OpenRA.Mods.Common.Traits
bool wasLowPower = false;
bool wasHackEnabled;
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (wasHackEnabled != devMode.UnlimitedPower)
{

View File

@@ -79,7 +79,7 @@ namespace OpenRA.Mods.Common.Traits
actorsInRange.Clear();
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (!self.IsInWorld || self.CenterPosition == prevPosition)
return;

View File

@@ -91,7 +91,7 @@ namespace OpenRA.Mods.Common.Traits.Render
bool wasStationary;
bool isMoving;
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (IsTraitDisabled)
return;

View File

@@ -65,7 +65,7 @@ namespace OpenRA.Mods.Common.Traits.Render
FindQueue();
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
var current = queue.CurrentItem();
value = current != null ? 1 - (float)current.RemainingCost / current.TotalCost : 0;

View File

@@ -181,7 +181,12 @@ namespace OpenRA.Mods.Common.Traits.Render
}
}
public virtual void Tick(Actor self)
void ITick.Tick(Actor self)
{
Tick(self);
}
protected virtual void Tick(Actor self)
{
foreach (var a in anims)
a.Animation.Animation.Tick();

View File

@@ -103,7 +103,7 @@ namespace OpenRA.Mods.Common.Traits.Render
}
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
foreach (var a in anims.Values)
a.Animation.Tick();

View File

@@ -148,7 +148,7 @@ namespace OpenRA.Mods.Common.Traits.Render
anim.Animation.PlayBackwardsThen(info.OpeningSequence, () => renderProlonged = false);
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (shadow != null)
shadow.Tick();

View File

@@ -48,7 +48,7 @@ namespace OpenRA.Mods.Common.Traits
int ticks;
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (IsTraitDisabled)
return;

View File

@@ -50,7 +50,7 @@ namespace OpenRA.Mods.Common.Traits
health = self.Trait<Health>();
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (self.IsDead || IsTraitDisabled)
return;

View File

@@ -47,7 +47,7 @@ namespace OpenRA.Mods.Common.Traits
getFacing = 0;
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (--ticks <= 0)
{

View File

@@ -96,7 +96,7 @@ namespace OpenRA.Mods.Common.Traits
}
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
foreach (var power in Powers.Values)
power.Tick();

View File

@@ -86,7 +86,7 @@ namespace OpenRA.Mods.Common.Traits
rs.Add(new AnimationWithOffset(anim, () => pos, null));
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (tick >= length)
return;

View File

@@ -105,7 +105,12 @@ namespace OpenRA.Mods.Common.Traits
body = self.Trait<BodyOrientation>();
}
public virtual void Tick(Actor self)
void ITick.Tick(Actor self)
{
Tick(self);
}
protected virtual void Tick(Actor self)
{
// NOTE: FaceTarget is called in AttackTurreted.CanAttack if the turret has a target.
if (attack != null)

View File

@@ -392,7 +392,7 @@ namespace OpenRA.Mods.Common.Traits
RemoveInfluenceInner(ref influenceNode.Next, toRemove);
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
// Position updates are done in one pass
// to ensure consistency during a tick

View File

@@ -95,7 +95,7 @@ namespace OpenRA.Mods.Common.Traits
.OptionOrDefault("crates", info.Enabled);
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
if (!enabled)
return;

View File

@@ -38,7 +38,7 @@ namespace OpenRA.Mods.Common.Traits
this.info = info;
}
public void Tick(Actor self)
void ITick.Tick(Actor self)
{
foreach (var ping in Pings.ToArray())
if (!ping.Tick())