bridge pathing works

This commit is contained in:
Chris Forbes
2010-01-19 11:49:01 +13:00
parent 500772519d
commit 0aeef8c3f7
5 changed files with 21 additions and 15 deletions

View File

@@ -56,7 +56,6 @@ namespace OpenRa
continue;
var custom = Game.world.customTerrain[newHere.X, newHere.Y];
if (custom != null) throw new NotImplementedException();
var costHere = (custom != null) ? custom.GetCost(newHere, umt) : passableCost[(int)umt][newHere.X, newHere.Y];
if (costHere == float.PositiveInfinity)

View File

@@ -28,8 +28,8 @@ namespace OpenRa
static class TerrainCosts
{
static double[][] costs = Util.MakeArray<double[]>( 4,
a => Util.MakeArray<double>( 11, b => double.PositiveInfinity ));
static float[][] costs = Util.MakeArray<float[]>(4,
a => Util.MakeArray<float>(11, b => float.PositiveInfinity));
static TerrainCosts()
{
@@ -40,12 +40,12 @@ namespace OpenRa
for( int j = 0 ; j < 4 ; j++ )
{
string val = section.GetValue( ( (UnitMovementType)j ).ToString(), "0%" );
costs[ j ][ i ] = 100.0 / double.Parse( val.Substring( 0, val.Length - 1 ) );
costs[j][i] = 100f / float.Parse(val.Substring(0, val.Length - 1));
}
}
}
public static double Cost( UnitMovementType unitMovementType, int r )
public static float Cost( UnitMovementType unitMovementType, int r )
{
return costs[ (byte)unitMovementType ][ r ];
}

View File

@@ -9,7 +9,7 @@ using System.Drawing;
namespace OpenRa.Traits
{
class BridgeInfo : OwnedActorInfo, ITraitInfo
class BridgeInfo : ITraitInfo
{
public object Create(Actor self) { return new Bridge(self); }
}
@@ -19,8 +19,9 @@ namespace OpenRa.Traits
Dictionary<int2, int> Tiles;
TileTemplate Template;
Dictionary<int2, Sprite> TileSprites;
Actor self;
public Bridge(Actor self) { self.RemoveOnDeath = false; }
public Bridge(Actor self) { this.self = self; self.RemoveOnDeath = false; }
static string cachedTheater;
static Cache<TileReference, Sprite> sprites;
@@ -55,9 +56,9 @@ namespace OpenRa.Traits
public float GetCost(int2 p, UnitMovementType umt)
{
throw new NotImplementedException();
var origTile = Tiles[p]; // if this explodes, then SetTiles did something horribly wrong.
return float.PositiveInfinity;
return self.Health > 0
? TerrainCosts.Cost(umt, Template.TerrainType[Tiles[p]])
: TerrainCosts.Cost(umt, 1);
}
}
}

View File

@@ -1438,11 +1438,14 @@ DOMF:
Fake:
BRIDGE:
Inherits: ^Building
Category: Building
Selectable:
Bridge:
BelowUnits:
-Selectable:
-Building:
Building:
Footprint: ____ ____
Dimensions: 4,2
HP: 1000
T01:
Inherits: ^Building

View File

@@ -535,8 +535,11 @@ Traits=Unit,RenderUnit,BelowUnits,InvisibleToOthers
Selectable=no
[Bridge]
Traits=Bridge, BelowUnits
Selectable=no
Traits=Bridge, BelowUnits, Building
Strength=1000
Dimensions=4,2
Footprint=____ ____
Selectable=yes ;; temp hack
[InfantryTypes]
DOG