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)
{
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))
return;

View File

@@ -98,7 +98,7 @@ namespace OpenRA.Effects
{
var at = (float)t / TotalTime();
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(
a => a.traits.Contains<IBlocksBullets>()))

View File

@@ -113,7 +113,7 @@ namespace OpenRA.Effects
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(
a => a.traits.Contains<IBlocksBullets>()))

View File

@@ -137,7 +137,7 @@ namespace OpenRA.Traits
var move = self.GetCurrentActivity() as Activities.Move;
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 )
{
var pos = (1 / 24f * self.CenterLocation).ToInt2();
var pos = Util.CellContaining(self.CenterLocation);
var pi = self.Info.Traits.Get<ProductionInfo>();
if (pi.ProductionOffset != null)
pos += new int2(pi.ProductionOffset[0], pi.ProductionOffset[1]);
pos += pi.ProductionOffset.AsInt2();
return pos;
}
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>();
if (pi.ExitOffset != null)
pos += new int2(pi.ExitOffset[0], pi.ExitOffset[1]);
pos += pi.ExitOffset.AsInt2();
return pos;
}
@@ -81,10 +81,8 @@ namespace OpenRA.Traits
}
}
if (pi != null && pi.SpawnOffset != null)
newUnit.CenterLocation = self.CenterLocation
+ new float2(pi.SpawnOffset[0], pi.SpawnOffset[1]);
newUnit.CenterLocation = self.CenterLocation + pi.SpawnOffset.AsInt2();
foreach (var t in self.traits.WithInterface<INotifyProduction>())
t.UnitProduced(self, newUnit);

View File

@@ -127,6 +127,7 @@ namespace OpenRA.Traits
+ 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 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 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>();
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);
}

View File

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

View File

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

View File

@@ -46,7 +46,7 @@ namespace OpenRA.Mods.RA.Activities
if (rearmTarget == null)
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 } } };
}

View File

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

View File

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

View File

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

View File

@@ -69,7 +69,7 @@ namespace OpenRA.Mods.RA
self.World.AddFrameEndTask(w => w.Add(
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)));
Sound.Play("chute1.aud", self.CenterLocation);

View File

@@ -49,7 +49,7 @@ namespace OpenRA.Mods.RA
var rp = order.TargetActor.traits.GetOrDefault<RallyPoint>();
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 Repair(order.TargetActor));