Remove Util.QuantizeFacing from trait code.

This commit is contained in:
Paul Chote
2016-01-14 21:18:56 +00:00
parent 275be64f05
commit e46fc644c1
3 changed files with 20 additions and 3 deletions

View File

@@ -21,12 +21,14 @@ namespace OpenRA.Mods.Common.Activities
readonly IFacing facing;
readonly ResourceClaimLayer territory;
readonly ResourceLayer resLayer;
readonly BodyOrientation body;
public HarvestResource(Actor self)
{
harv = self.Trait<Harvester>();
harvInfo = self.Info.TraitInfo<HarvesterInfo>();
facing = self.Trait<IFacing>();
body = self.Trait<BodyOrientation>();
territory = self.World.WorldActor.TraitOrDefault<ResourceClaimLayer>();
resLayer = self.World.WorldActor.Trait<ResourceLayer>();
}
@@ -53,7 +55,7 @@ namespace OpenRA.Mods.Common.Activities
if (harvInfo.HarvestFacings != 0)
{
var current = facing.Facing;
var desired = Util.QuantizeFacing(current, harvInfo.HarvestFacings) * (256 / harvInfo.HarvestFacings);
var desired = body.QuantizeFacing(current, harvInfo.HarvestFacings);
if (desired != current)
return Util.SequenceActivities(new Turn(self, desired), this);
}

View File

@@ -42,12 +42,17 @@ namespace OpenRA.Mods.Common.Traits
return orientation;
// Map yaw to the closest facing
var facing = Util.QuantizeFacing(orientation.Yaw.Angle / 4, facings) * (256 / facings);
var facing = QuantizeFacing(orientation.Yaw.Angle / 4, facings);
// Roll and pitch are always zero if yaw is quantized
return new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(facing));
}
public int QuantizeFacing(int facing, int facings)
{
return Util.QuantizeFacing(facing, facings) * (256 / facings);
}
public object Create(ActorInitializer init) { return new BodyOrientation(init, this); }
}
@@ -97,5 +102,15 @@ namespace OpenRA.Mods.Common.Traits
{
return info.QuantizeOrientation(orientation, quantizedFacings.Value);
}
public int QuantizeFacing(int facing)
{
return info.QuantizeFacing(facing, quantizedFacings.Value);
}
public int QuantizeFacing(int facing, int facings)
{
return info.QuantizeFacing(facing, facings);
}
}
}

View File

@@ -133,7 +133,7 @@ namespace OpenRA.Mods.Common.Traits
// Quantize orientation to match a rendered sprite
// Implies no pitch or yaw
var facing = Util.QuantizeFacing(local.Yaw.Angle / 4, QuantizedFacings) * (256 / QuantizedFacings);
var facing = body.QuantizeFacing(local.Yaw.Angle / 4, QuantizedFacings);
return new WRot(WAngle.Zero, WAngle.Zero, WAngle.FromFacing(facing));
}