removing a bunch of excessively low-level pixel -> cell conversions

This commit is contained in:
Chris Forbes
2010-06-23 17:53:46 +12:00
committed by Paul Chote
parent 2dcc85f608
commit b8093b7f6c
15 changed files with 26 additions and 26 deletions

View File

@@ -43,7 +43,7 @@ namespace OpenRA
public static void DoImpact(WarheadInfo warhead, ProjectileArgs args) public static void DoImpact(WarheadInfo warhead, ProjectileArgs args)
{ {
var world = args.firedBy.World; var world = args.firedBy.World;
var targetTile = ((1f / Game.CellSize) * args.dest.ToFloat2()).ToInt2(); var targetTile = Util.CellContaining(args.dest);
if (!world.Map.IsInMap(targetTile)) if (!world.Map.IsInMap(targetTile))
return; return;

View File

@@ -98,7 +98,7 @@ namespace OpenRA.Effects
{ {
var at = (float)t / TotalTime(); var at = (float)t / TotalTime();
var pos = float2.Lerp(Args.src, Args.dest, at); var pos = float2.Lerp(Args.src, Args.dest, at);
var cell = ((1f/Game.CellSize) * pos).ToInt2(); var cell = Traits.Util.CellContaining(pos);
if (world.WorldActor.traits.Get<UnitInfluence>().GetUnitsAt(cell).Any( if (world.WorldActor.traits.Get<UnitInfluence>().GetUnitsAt(cell).Any(
a => a.traits.Contains<IBlocksBullets>())) a => a.traits.Contains<IBlocksBullets>()))

View File

@@ -113,7 +113,7 @@ namespace OpenRA.Effects
if (!Info.High) // check for hitting a wall if (!Info.High) // check for hitting a wall
{ {
var cell = ((1f / Game.CellSize) * Pos).ToInt2(); var cell = Traits.Util.CellContaining(Pos);
if (world.WorldActor.traits.Get<UnitInfluence>().GetUnitsAt(cell).Any( if (world.WorldActor.traits.Get<UnitInfluence>().GetUnitsAt(cell).Any(
a => a.traits.Contains<IBlocksBullets>())) a => a.traits.Contains<IBlocksBullets>()))

View File

@@ -137,7 +137,7 @@ namespace OpenRA.Traits
var move = self.GetCurrentActivity() as Activities.Move; var move = self.GetCurrentActivity() as Activities.Move;
if (move == null || move.path == null) return new float2[] { }; if (move == null || move.path == null) return new float2[] { };
return Enumerable.Reverse(move.path).Select( c => Game.CellSize * c + new float2(12,12) ); return Enumerable.Reverse(move.path).Select( c => Util.CenterOfCell(c) );
} }
} }
} }

View File

@@ -36,19 +36,19 @@ namespace OpenRA.Traits
{ {
public virtual int2? CreationLocation( Actor self, ActorInfo producee ) public virtual int2? CreationLocation( Actor self, ActorInfo producee )
{ {
var pos = (1 / 24f * self.CenterLocation).ToInt2(); var pos = Util.CellContaining(self.CenterLocation);
var pi = self.Info.Traits.Get<ProductionInfo>(); var pi = self.Info.Traits.Get<ProductionInfo>();
if (pi.ProductionOffset != null) if (pi.ProductionOffset != null)
pos += new int2(pi.ProductionOffset[0], pi.ProductionOffset[1]); pos += pi.ProductionOffset.AsInt2();
return pos; return pos;
} }
public virtual int2? ExitLocation(Actor self, ActorInfo producee) public virtual int2? ExitLocation(Actor self, ActorInfo producee)
{ {
var pos = (1 / 24f * self.CenterLocation).ToInt2(); var pos = Util.CellContaining(self.CenterLocation);
var pi = self.Info.Traits.Get<ProductionInfo>(); var pi = self.Info.Traits.Get<ProductionInfo>();
if (pi.ExitOffset != null) if (pi.ExitOffset != null)
pos += new int2(pi.ExitOffset[0], pi.ExitOffset[1]); pos += pi.ExitOffset.AsInt2();
return pos; return pos;
} }
@@ -68,23 +68,21 @@ namespace OpenRA.Traits
var pi = self.Info.Traits.Get<ProductionInfo>(); var pi = self.Info.Traits.Get<ProductionInfo>();
var rp = self.traits.GetOrDefault<RallyPoint>(); var rp = self.traits.GetOrDefault<RallyPoint>();
if( rp != null || pi.ExitOffset != null) if (rp != null || pi.ExitOffset != null)
{ {
var mobile = newUnit.traits.GetOrDefault<Mobile>(); var mobile = newUnit.traits.GetOrDefault<Mobile>();
if( mobile != null ) if (mobile != null)
{ {
if (pi.ExitOffset != null) if (pi.ExitOffset != null)
newUnit.QueueActivity(new Activities.Move(ExitLocation( self, producee).Value, 1)); newUnit.QueueActivity(new Activities.Move(ExitLocation(self, producee).Value, 1));
if (rp != null) if (rp != null)
newUnit.QueueActivity( new Activities.Move( rp.rallyPoint, 1 ) ); newUnit.QueueActivity(new Activities.Move(rp.rallyPoint, 1));
} }
} }
if (pi != null && pi.SpawnOffset != null) if (pi != null && pi.SpawnOffset != null)
newUnit.CenterLocation = self.CenterLocation newUnit.CenterLocation = self.CenterLocation + pi.SpawnOffset.AsInt2();
+ new float2(pi.SpawnOffset[0], pi.SpawnOffset[1]);
foreach (var t in self.traits.WithInterface<INotifyProduction>()) foreach (var t in self.traits.WithInterface<INotifyProduction>())
t.UnitProduced(self, newUnit); t.UnitProduced(self, newUnit);

View File

@@ -127,6 +127,7 @@ namespace OpenRA.Traits
+ offset.AbsOffset(); + offset.AbsOffset();
} }
public static int2 AsInt2(this int[] xs) { return new int2(xs[0], xs[1]); }
public static float2 RelOffset(this int[] offset) { return new float2(offset[0], offset[1]); } public static float2 RelOffset(this int[] offset) { return new float2(offset[0], offset[1]); }
public static float2 AbsOffset(this int[] offset) { return new float2(offset.ElementAtOrDefault(2), offset.ElementAtOrDefault(3)); } public static float2 AbsOffset(this int[] offset) { return new float2(offset.ElementAtOrDefault(2), offset.ElementAtOrDefault(3)); }
@@ -171,5 +172,7 @@ namespace OpenRA.Traits
} }
public static Color ArrayToColor(int[] x) { return Color.FromArgb(x[0], x[1], x[2]); } public static Color ArrayToColor(int[] x) { return Color.FromArgb(x[0], x[1], x[2]); }
public static int2 CellContaining(float2 pos) { return (1 / 24f * pos).ToInt2(); }
} }
} }

View File

@@ -71,7 +71,7 @@ namespace OpenRA.Mods.RA.Activities
var aircraft = self.traits.Get<Aircraft>(); var aircraft = self.traits.Get<Aircraft>();
self.CenterLocation += speed * -float2.FromAngle((float)angle); self.CenterLocation += speed * -float2.FromAngle((float)angle);
aircraft.Location = ((1 / 24f) * self.CenterLocation).ToInt2(); aircraft.Location = Util.CellContaining(self.CenterLocation);
unit.Altitude += Math.Sign(desiredAltitude - unit.Altitude); unit.Altitude += Math.Sign(desiredAltitude - unit.Altitude);
} }

View File

@@ -55,7 +55,7 @@ namespace OpenRA.Mods.RA.Activities
if (float2.WithinEpsilon(float2.Zero, dist, 2)) if (float2.WithinEpsilon(float2.Zero, dist, 2))
{ {
self.CenterLocation = Dest; self.CenterLocation = Dest;
aircraft.Location = ((1 / 24f) * self.CenterLocation).ToInt2(); aircraft.Location = Util.CellContaining(self.CenterLocation);
return NextActivity; return NextActivity;
} }
@@ -65,7 +65,7 @@ namespace OpenRA.Mods.RA.Activities
var rawSpeed = .2f * Util.GetEffectiveSpeed(self, UnitMovementType.Fly); var rawSpeed = .2f * Util.GetEffectiveSpeed(self, UnitMovementType.Fly);
self.CenterLocation += (rawSpeed / dist.Length) * dist; self.CenterLocation += (rawSpeed / dist.Length) * dist;
aircraft.Location = ((1 / 24f) * self.CenterLocation).ToInt2(); aircraft.Location = Util.CellContaining(self.CenterLocation);
return this; return this;
} }

View File

@@ -61,7 +61,7 @@ namespace OpenRA.Mods.RA.Activities
var angle = unit.Facing / 128f * Math.PI; var angle = unit.Facing / 128f * Math.PI;
self.CenterLocation += speed * -float2.FromAngle((float)angle); self.CenterLocation += speed * -float2.FromAngle((float)angle);
aircraft.Location = ((1 / 24f) * self.CenterLocation).ToInt2(); aircraft.Location = Util.CellContaining(self.CenterLocation);
return this; return this;
} }

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Mods.RA.Activities
if (rearmTarget == null) if (rearmTarget == null)
return new Wait(20); return new Wait(20);
return new Move(((1 / 24f) * rearmTarget.CenterLocation).ToInt2(), rearmTarget) return new Move(Util.CellContaining(rearmTarget.CenterLocation), rearmTarget)
{ NextActivity = new Rearm() { NextActivity = new Repair(rearmTarget) { NextActivity = this } } }; { NextActivity = new Rearm() { NextActivity = new Repair(rearmTarget) { NextActivity = this } } };
} }

View File

@@ -18,7 +18,6 @@
*/ */
#endregion #endregion
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using OpenRA.GameRules; using OpenRA.GameRules;

View File

@@ -65,7 +65,7 @@ namespace OpenRA.Mods.RA.Effects
world.AddFrameEndTask(w => world.AddFrameEndTask(w =>
{ {
w.Remove(this); w.Remove(this);
int2 loc = ((1 / 24f) * location).ToInt2(); var loc = Traits.Util.CellContaining(location);
cargo.CancelActivity(); cargo.CancelActivity();
if (cargo.traits.Contains<Mobile>()) if (cargo.traits.Contains<Mobile>())
cargo.traits.Get<Mobile>().TeleportTo(cargo, loc); cargo.traits.Get<Mobile>().TeleportTo(cargo, loc);

View File

@@ -127,7 +127,7 @@ namespace OpenRA.Mods.RA
offsetTicks = Info.InstabilityTicks; offsetTicks = Info.InstabilityTicks;
} }
Location = ((1 / 24f) * self.CenterLocation).ToInt2(); Location = Util.CellContaining(self.CenterLocation);
} }
const float Epsilon = .5f; const float Epsilon = .5f;

View File

@@ -69,7 +69,7 @@ namespace OpenRA.Mods.RA
self.World.AddFrameEndTask(w => w.Add( self.World.AddFrameEndTask(w => w.Add(
new Parachute(self.Owner, rs.anim.Name, new Parachute(self.Owner, rs.anim.Name,
Util.CenterOfCell((1 / 24f * self.CenterLocation).ToInt2()), Util.CenterOfCell(Util.CellContaining(self.CenterLocation)),
self.traits.Get<Unit>().Altitude, a))); self.traits.Get<Unit>().Altitude, a)));
Sound.Play("chute1.aud", self.CenterLocation); Sound.Play("chute1.aud", self.CenterLocation);

View File

@@ -49,7 +49,7 @@ namespace OpenRA.Mods.RA
var rp = order.TargetActor.traits.GetOrDefault<RallyPoint>(); var rp = order.TargetActor.traits.GetOrDefault<RallyPoint>();
self.CancelActivity(); self.CancelActivity();
self.QueueActivity(new Move(((1 / 24f) * order.TargetActor.CenterLocation).ToInt2(), order.TargetActor)); self.QueueActivity(new Move(Util.CellContaining(order.TargetActor.CenterLocation), order.TargetActor));
self.QueueActivity(new Rearm()); self.QueueActivity(new Rearm());
self.QueueActivity(new Repair(order.TargetActor)); self.QueueActivity(new Repair(order.TargetActor));