Reference SubCells directly from MapGrid.
This commit is contained in:
@@ -190,8 +190,8 @@ namespace OpenRA.Mods.Common.Activities
|
||||
mobile.SetLocation(mobile.FromCell, mobile.FromSubCell, nextCell.Value.First, nextCell.Value.Second);
|
||||
var from = self.World.Map.CenterOfSubCell(mobile.FromCell, mobile.FromSubCell);
|
||||
var to = Util.BetweenCells(self.World, mobile.FromCell, mobile.ToCell) +
|
||||
(self.World.Map.OffsetOfSubCell(mobile.FromSubCell) +
|
||||
self.World.Map.OffsetOfSubCell(mobile.ToSubCell)) / 2;
|
||||
(self.World.Map.Grid.OffsetOfSubCell(mobile.FromSubCell) +
|
||||
self.World.Map.Grid.OffsetOfSubCell(mobile.ToSubCell)) / 2;
|
||||
var move = new MoveFirstHalf(
|
||||
this,
|
||||
from,
|
||||
@@ -381,15 +381,15 @@ namespace OpenRA.Mods.Common.Activities
|
||||
|
||||
protected override MovePart OnComplete(Actor self, Mobile mobile, Move parent)
|
||||
{
|
||||
var fromSubcellOffset = self.World.Map.OffsetOfSubCell(mobile.FromSubCell);
|
||||
var toSubcellOffset = self.World.Map.OffsetOfSubCell(mobile.ToSubCell);
|
||||
var fromSubcellOffset = self.World.Map.Grid.OffsetOfSubCell(mobile.FromSubCell);
|
||||
var toSubcellOffset = self.World.Map.Grid.OffsetOfSubCell(mobile.ToSubCell);
|
||||
|
||||
var nextCell = parent.PopPath(self);
|
||||
if (nextCell != null)
|
||||
{
|
||||
if (IsTurn(mobile, nextCell.Value.First))
|
||||
{
|
||||
var nextSubcellOffset = self.World.Map.OffsetOfSubCell(nextCell.Value.Second);
|
||||
var nextSubcellOffset = self.World.Map.Grid.OffsetOfSubCell(nextCell.Value.Second);
|
||||
var ret = new MoveFirstHalf(
|
||||
Move,
|
||||
Util.BetweenCells(self.World, mobile.FromCell, mobile.ToCell) + (fromSubcellOffset + toSubcellOffset) / 2,
|
||||
|
||||
@@ -368,7 +368,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
speedModifiers = Exts.Lazy(() => self.TraitsImplementing<ISpeedModifier>().ToArray().Select(x => x.GetSpeedModifier()));
|
||||
|
||||
ToSubCell = FromSubCell = info.SharesCell ? init.World.Map.DefaultSubCell : SubCell.FullCell;
|
||||
ToSubCell = FromSubCell = info.SharesCell ? init.World.Map.Grid.DefaultSubCell : SubCell.FullCell;
|
||||
if (init.Contains<SubCellInit>())
|
||||
FromSubCell = ToSubCell = init.Get<SubCellInit, SubCell>();
|
||||
|
||||
@@ -397,7 +397,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
if (Info.SharesCell)
|
||||
{
|
||||
if (preferred <= SubCell.FullCell)
|
||||
return self.World.Map.DefaultSubCell;
|
||||
return self.World.Map.Grid.DefaultSubCell;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -776,7 +776,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
|
||||
// TODO: solve/reduce cell is full problem
|
||||
if (subCell == SubCell.Invalid)
|
||||
subCell = self.World.Map.DefaultSubCell;
|
||||
subCell = self.World.Map.Grid.DefaultSubCell;
|
||||
|
||||
// Reserve the exit cell
|
||||
SetPosition(self, cell, subCell);
|
||||
|
||||
@@ -226,9 +226,9 @@ namespace OpenRA.Mods.Common.Traits
|
||||
var map = worldRenderer.World.Map;
|
||||
var previews = PreviewsAt(cell).ToList();
|
||||
if (!previews.Any())
|
||||
return map.DefaultSubCell;
|
||||
return map.Grid.DefaultSubCell;
|
||||
|
||||
for (var i = (int)SubCell.First; i < map.SubCellOffsets.Length; i++)
|
||||
for (var i = (int)SubCell.First; i < map.Grid.SubCellOffsets.Length; i++)
|
||||
if (!previews.Any(p => p.Footprint[cell] == (SubCell)i))
|
||||
return (SubCell)i;
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ namespace OpenRA.Mods.Common.Traits
|
||||
var targetCell = world.Map.CellContaining(target);
|
||||
|
||||
// Correct for SubCell offset
|
||||
target -= world.Map.OffsetOfSubCell(srcSub);
|
||||
target -= world.Map.Grid.OffsetOfSubCell(srcSub);
|
||||
|
||||
// Select only the tiles that are within range from the requested SubCell
|
||||
// This assumes that the SubCell does not change during the path traversal
|
||||
|
||||
Reference in New Issue
Block a user