bdebug=true will show appropriate influence for current building
This commit is contained in:
@@ -50,6 +50,7 @@ namespace OpenRa.Game
|
|||||||
SheetBuilder.Initialize(renderer);
|
SheetBuilder.Initialize(renderer);
|
||||||
|
|
||||||
UiOverlay.ShowUnitDebug = settings.GetValue("udebug", false);
|
UiOverlay.ShowUnitDebug = settings.GetValue("udebug", false);
|
||||||
|
UiOverlay.ShowBuildDebug = settings.GetValue("bdebug", false);
|
||||||
WorldRenderer.ShowUnitPaths = settings.GetValue("pathdebug", false);
|
WorldRenderer.ShowUnitPaths = settings.GetValue("pathdebug", false);
|
||||||
Game.Replay = settings.GetValue("replay", "");
|
Game.Replay = settings.GetValue("replay", "");
|
||||||
|
|
||||||
|
|||||||
@@ -41,11 +41,7 @@ namespace OpenRa.Game.Traits.Activities
|
|||||||
void PlanReturnToBase(Actor self, Mobile mobile)
|
void PlanReturnToBase(Actor self, Mobile mobile)
|
||||||
{
|
{
|
||||||
/* find a proc */
|
/* find a proc */
|
||||||
var proc = Game.world.Actors.Where(
|
var proc = ChooseReturnLocation(self);
|
||||||
a => a.Owner == self.Owner &&
|
|
||||||
a.traits.Contains<AcceptsOre>())
|
|
||||||
.FirstOrDefault(); /* todo: *closest* proc, maybe? */
|
|
||||||
|
|
||||||
if (proc == null)
|
if (proc == null)
|
||||||
{
|
{
|
||||||
Cancel(self, mobile); /* is this a sane way to cancel? */
|
Cancel(self, mobile); /* is this a sane way to cancel? */
|
||||||
@@ -59,6 +55,18 @@ namespace OpenRa.Game.Traits.Activities
|
|||||||
mobile.InternalSetActivity(NextActivity);
|
mobile.InternalSetActivity(NextActivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static Actor ChooseReturnLocation(Actor self)
|
||||||
|
{
|
||||||
|
/* todo: compute paths to possible procs, taking into account enemy presence */
|
||||||
|
/* currently, we're good at choosing close, inaccessible procs */
|
||||||
|
|
||||||
|
return Game.world.Actors.Where(
|
||||||
|
a => a.Owner == self.Owner &&
|
||||||
|
a.traits.Contains<AcceptsOre>())
|
||||||
|
.OrderBy(p => (p.Location - self.Location).LengthSquared)
|
||||||
|
.FirstOrDefault();
|
||||||
|
}
|
||||||
|
|
||||||
void PlanMoreHarvesting(Actor self, Mobile mobile)
|
void PlanMoreHarvesting(Actor self, Mobile mobile)
|
||||||
{
|
{
|
||||||
/* find a nearby patch */
|
/* find a nearby patch */
|
||||||
|
|||||||
@@ -11,7 +11,8 @@ namespace OpenRa.Game
|
|||||||
SpriteRenderer spriteRenderer;
|
SpriteRenderer spriteRenderer;
|
||||||
Sprite buildOk, buildBlocked, unitDebug;
|
Sprite buildOk, buildBlocked, unitDebug;
|
||||||
|
|
||||||
public static bool ShowUnitDebug = false;
|
public static bool ShowUnitDebug = false;
|
||||||
|
public static bool ShowBuildDebug = false;
|
||||||
|
|
||||||
public UiOverlay(SpriteRenderer spriteRenderer)
|
public UiOverlay(SpriteRenderer spriteRenderer)
|
||||||
{
|
{
|
||||||
@@ -48,7 +49,15 @@ namespace OpenRa.Game
|
|||||||
|
|
||||||
var bi = (UnitInfo.BuildingInfo)Rules.UnitInfo[placeBuilding.Name];
|
var bi = (UnitInfo.BuildingInfo)Rules.UnitInfo[placeBuilding.Name];
|
||||||
|
|
||||||
var maxDistance = bi.Adjacent + 2; /* real-ra is weird. this is 1 GAP. */
|
var maxDistance = bi.Adjacent + 2; /* real-ra is weird. this is 1 GAP. */
|
||||||
|
|
||||||
|
if (ShowBuildDebug)
|
||||||
|
for (var j = 0; j < 128; j++)
|
||||||
|
for (var i = 0; i < 128; i++)
|
||||||
|
if (Game.GetDistanceToBase(new int2(i, j), Game.LocalPlayer) < maxDistance)
|
||||||
|
if (Game.IsCellBuildable(new int2(i, j), bi.WaterBound ? UnitMovementType.Float : UnitMovementType.Wheel))
|
||||||
|
spriteRenderer.DrawSprite(unitDebug, Game.CellSize * new float2(i, j), 0);
|
||||||
|
|
||||||
var tooFarFromBase = !Footprint.Tiles(bi, position).Any(
|
var tooFarFromBase = !Footprint.Tiles(bi, position).Any(
|
||||||
t => Game.GetDistanceToBase(t, Game.LocalPlayer) < maxDistance);
|
t => Game.GetDistanceToBase(t, Game.LocalPlayer) < maxDistance);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user