protected List <TileWithLevel> CalculateTilesFromTemplate(RelativeFootprintTemplate footprint, TileCoords pivotTile, TileCoords pivotFacing, int pivotLevel) { List <TileWithLevel> footprintList = new List <TileWithLevel>(); foreach (var part in footprint.footprintParts) { TileWithFacing newVec = new TileWithFacing() { position = pivotTile, facing = pivotFacing }; if (part.relativePosStep1.step > 0) { newVec = newVec.Traverse(part.relativePosStep1.direction, part.relativePosStep1.step); } if (part.relativePosStep2.step > 0) { newVec = newVec.Traverse(part.relativePosStep2.direction, part.relativePosStep2.step); } footprintList.Add(new TileWithLevel() { position = newVec.position, level = pivotLevel + part.relativeLevel }); } return(footprintList); }
public DynamicFootprint(RelativeFootprintTemplate template) { footprintTemplate = template; }
public StaticFootprint(RelativeFootprintTemplate footprint, TileCoords pivotTile, TileCoords pivotFacing, int pivotLevel) { footprintParts = CalculateTilesFromTemplate(footprint, pivotTile, pivotFacing, pivotLevel); }