Moved footprint info onto its building.
This commit is contained in:
@@ -20,14 +20,14 @@ namespace OpenRa.Game
|
||||
|
||||
void AddInfluence(Actor a)
|
||||
{
|
||||
foreach (var t in Footprint.UnpathableTiles(a.unitInfo.Name, a.Location))
|
||||
foreach (var t in Footprint.UnpathableTiles(a.unitInfo, a.Location))
|
||||
if (IsValid(t))
|
||||
influence[t.X, t.Y] = a;
|
||||
}
|
||||
|
||||
void RemoveInfluence(Actor a)
|
||||
{
|
||||
foreach (var t in Footprint.UnpathableTiles(a.unitInfo.Name, a.Location))
|
||||
foreach (var t in Footprint.UnpathableTiles(a.unitInfo, a.Location))
|
||||
if (IsValid(t))
|
||||
influence[t.X, t.Y] = null;
|
||||
}
|
||||
|
||||
@@ -39,10 +39,15 @@ namespace OpenRa.Game.GameRules
|
||||
var parts = x.Split( new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries );
|
||||
|
||||
var ret = Array.CreateInstance( fieldType.GetElementType(), parts.Length );
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
for( int i = 0 ; i < parts.Length ; i++ )
|
||||
ret.SetValue( GetValue( fieldType.GetElementType(), parts[ i ].Trim() ), i );
|
||||
return ret;
|
||||
}
|
||||
else if( fieldType == typeof( int2 ) )
|
||||
{
|
||||
var parts = x.Split( new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries );
|
||||
return new int2( int.Parse( parts[ 0 ] ), int.Parse( parts[ 1 ] ) );
|
||||
}
|
||||
else
|
||||
throw new InvalidOperationException( "FieldLoader: don't know how to load field of type " + fieldType.ToString() );
|
||||
}
|
||||
|
||||
@@ -7,74 +7,57 @@ using OpenRa.Game.Graphics;
|
||||
|
||||
namespace OpenRa.Game.GameRules
|
||||
{
|
||||
class Footprint
|
||||
static class Footprint
|
||||
{
|
||||
Dictionary<string, string[]> buildingFootprints;
|
||||
|
||||
public string[] GetFootprint(string name)
|
||||
public static IEnumerable<int2> Tiles( UnitInfo unitInfo, int2 position )
|
||||
{
|
||||
string[] val;
|
||||
if (!buildingFootprints.TryGetValue(name, out val))
|
||||
buildingFootprints.TryGetValue("*", out val);
|
||||
return val;
|
||||
}
|
||||
var buildingInfo = unitInfo as UnitInfo.BuildingInfo;
|
||||
var dim = buildingInfo.Dimensions;
|
||||
|
||||
public Footprint(Stream s)
|
||||
{
|
||||
var lines = Util.ReadAllLines(s).Where(a => !a.StartsWith("#"));
|
||||
|
||||
Func<string,string[]> words =
|
||||
b => b.Split( new[] { ' ', '\t' },
|
||||
StringSplitOptions.RemoveEmptyEntries );
|
||||
|
||||
var buildings = lines
|
||||
.Select(a => a.Split(':'))
|
||||
.SelectMany(a => words(a[1])
|
||||
.Select( b => new { Name=b, Pat=words(a[0]) } ));
|
||||
|
||||
buildingFootprints = buildings
|
||||
.ToDictionary(a => a.Name, a => a.Pat);
|
||||
}
|
||||
|
||||
public static IEnumerable<int2> Tiles(string name, int2 position)
|
||||
{
|
||||
var footprint = Rules.Footprint.GetFootprint(name);
|
||||
var j = 0;
|
||||
|
||||
int maxWidth = 0;
|
||||
foreach (var row in footprint)
|
||||
if (row.Length > maxWidth)
|
||||
maxWidth = row.Length;
|
||||
|
||||
foreach (var row in footprint)
|
||||
var footprint = buildingInfo.Footprint.ToCharArray().Where( x => !char.IsWhiteSpace( x ) );
|
||||
if( buildingInfo.Bib )
|
||||
{
|
||||
var i = 0;
|
||||
foreach (var c in row)
|
||||
dim.Y += 1;
|
||||
footprint = footprint.Concat( new char[ dim.X ] );
|
||||
}
|
||||
foreach( var tile in TilesWhere( unitInfo.Name, dim, footprint.ToArray(), a => a != '_' ) )
|
||||
yield return tile + position - AdjustForBuildingSize( buildingInfo );
|
||||
}
|
||||
|
||||
public static IEnumerable<int2> UnpathableTiles( UnitInfo unitInfo, int2 position )
|
||||
{
|
||||
var buildingInfo = unitInfo as UnitInfo.BuildingInfo;
|
||||
|
||||
var footprint = buildingInfo.Footprint.ToCharArray().Where( x => !char.IsWhiteSpace( x ) ).ToArray();
|
||||
foreach( var tile in TilesWhere( unitInfo.Name, buildingInfo.Dimensions, footprint, a => a == 'x' ) )
|
||||
yield return tile + position;
|
||||
}
|
||||
|
||||
static IEnumerable<int2> TilesWhere( string name, int2 dim, char[] footprint, Func<char, bool> cond )
|
||||
{
|
||||
if( footprint.Length != dim.X * dim.Y )
|
||||
throw new InvalidOperationException( "Invalid footprint for " + name );
|
||||
int index = 0;
|
||||
for( int y = 0 ; y < dim.Y ; y++ )
|
||||
{
|
||||
for( int x = 0 ; x < dim.X ; x++ )
|
||||
{
|
||||
if (c != '_')
|
||||
yield return position + new int2(i, j) - new int2(maxWidth / 2, footprint.Length / 2);
|
||||
++i;
|
||||
if( cond( footprint[ index ] ) )
|
||||
yield return new int2( x, y );
|
||||
++index;
|
||||
}
|
||||
++j;
|
||||
}
|
||||
}
|
||||
|
||||
public static IEnumerable<int2> UnpathableTiles( string name, int2 position )
|
||||
public static int2 AdjustForBuildingSize( string name )
|
||||
{
|
||||
var footprint = Rules.Footprint.GetFootprint( name );
|
||||
var j = 0;
|
||||
return AdjustForBuildingSize( Rules.UnitInfo[ name ] as UnitInfo.BuildingInfo );
|
||||
}
|
||||
|
||||
foreach( var row in footprint )
|
||||
{
|
||||
var i = 0;
|
||||
foreach( var c in row )
|
||||
{
|
||||
if( c == 'x' )
|
||||
yield return position + new int2( i, j );
|
||||
++i;
|
||||
}
|
||||
++j;
|
||||
}
|
||||
public static int2 AdjustForBuildingSize( UnitInfo.BuildingInfo unitInfo )
|
||||
{
|
||||
var dim = unitInfo.Dimensions;
|
||||
return new int2( dim.X / 2, ( dim.Y + 1 ) / 2 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,6 @@ namespace OpenRa.Game
|
||||
public static InfoLoader<WeaponInfo> WeaponInfo;
|
||||
public static InfoLoader<WarheadInfo> WarheadInfo;
|
||||
public static InfoLoader<ProjectileInfo> ProjectileInfo;
|
||||
public static Footprint Footprint;
|
||||
|
||||
public static void LoadRules( string mapFileName )
|
||||
{
|
||||
@@ -38,8 +37,6 @@ namespace OpenRa.Game
|
||||
|
||||
ProjectileInfo = new InfoLoader<ProjectileInfo>(
|
||||
Pair.New<string, Func<string, ProjectileInfo>>("ProjectileTypes", _ => new ProjectileInfo()));
|
||||
|
||||
Footprint = new Footprint(FileSystem.Open("footprint.txt"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -58,7 +58,6 @@ namespace OpenRa.Game.GameRules
|
||||
|
||||
public class InfantryInfo : MobileInfo
|
||||
{
|
||||
|
||||
public readonly bool C4 = false;
|
||||
public readonly bool FraidyCat = false;
|
||||
public readonly bool Infiltrate = false;
|
||||
@@ -78,6 +77,9 @@ namespace OpenRa.Game.GameRules
|
||||
|
||||
public class BuildingInfo : UnitInfo
|
||||
{
|
||||
public readonly int2 Dimensions = new int2( 1, 1 );
|
||||
public readonly string Footprint = "x";
|
||||
|
||||
public readonly bool BaseNormal = true;
|
||||
public readonly int Adjacent = 1;
|
||||
public readonly bool Bib = false;
|
||||
|
||||
@@ -24,13 +24,15 @@ namespace OpenRa.Game.Graphics
|
||||
|
||||
public void Scroll(float2 delta)
|
||||
{
|
||||
scrollPosition = (scrollPosition + delta).Constrain(float2.Zero, mapSize);
|
||||
scrollPosition = ( scrollPosition + delta ).Constrain( float2.Zero, mapSize );
|
||||
}
|
||||
|
||||
public Viewport(float2 size, float2 mapSize, Renderer renderer)
|
||||
{
|
||||
this.size = size;
|
||||
this.mapSize = Game.CellSize * mapSize - size + new float2(128, 0);
|
||||
if( this.mapSize.X < 0 ) this.mapSize.X = 0;
|
||||
if( this.mapSize.Y < 0 ) this.mapSize.Y = 0;
|
||||
this.renderer = renderer;
|
||||
cursorRenderer = new SpriteRenderer(renderer, true);
|
||||
}
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace OpenRa.Game
|
||||
public IEnumerable<Order> Order(int2 xy)
|
||||
{
|
||||
// todo: check that space is free
|
||||
if (Footprint.Tiles(Name, xy).Any(t => !Game.IsCellBuildable(t, UnitMovementType.Wheel)))
|
||||
if (Footprint.Tiles(Rules.UnitInfo[Name], xy).Any(t => !Game.IsCellBuildable(t, UnitMovementType.Wheel)))
|
||||
yield break;
|
||||
|
||||
yield return new PlaceBuildingOrder(this, xy);
|
||||
|
||||
@@ -10,41 +10,34 @@ namespace OpenRa.Game
|
||||
PlaceBuilding building;
|
||||
int2 xy;
|
||||
|
||||
public PlaceBuildingOrder(PlaceBuilding building, int2 xy)
|
||||
public PlaceBuildingOrder( PlaceBuilding building, int2 xy )
|
||||
{
|
||||
this.building = building;
|
||||
this.xy = xy;
|
||||
}
|
||||
|
||||
public override void Apply(bool leftMouseButton)
|
||||
public override void Apply( bool leftMouseButton )
|
||||
{
|
||||
if (leftMouseButton)
|
||||
if( leftMouseButton )
|
||||
{
|
||||
Game.world.AddFrameEndTask(_ =>
|
||||
Game.world.AddFrameEndTask( _ =>
|
||||
{
|
||||
Log.Write("Player \"{0}\" builds {1}", building.Owner.PlayerName, building.Name);
|
||||
Log.Write( "Player \"{0}\" builds {1}", building.Owner.PlayerName, building.Name );
|
||||
|
||||
//Adjust placement for cursor to be in middle
|
||||
var footprint = Rules.Footprint.GetFootprint(building.Name);
|
||||
int maxWidth = 0;
|
||||
foreach (var row in footprint)
|
||||
if (row.Length > maxWidth)
|
||||
maxWidth = row.Length;
|
||||
|
||||
Game.world.Add(new Actor(building.Name,
|
||||
xy - new int2(maxWidth / 2, footprint.Length / 2), building.Owner));
|
||||
Game.world.Add( new Actor( building.Name, xy - GameRules.Footprint.AdjustForBuildingSize( building.Name ), building.Owner ) );
|
||||
|
||||
Game.controller.orderGenerator = null;
|
||||
Game.worldRenderer.uiOverlay.KillOverlay();
|
||||
});
|
||||
} );
|
||||
}
|
||||
else
|
||||
{
|
||||
Game.world.AddFrameEndTask(_ =>
|
||||
Game.world.AddFrameEndTask( _ =>
|
||||
{
|
||||
Game.controller.orderGenerator = null;
|
||||
Game.worldRenderer.uiOverlay.KillOverlay();
|
||||
});
|
||||
} );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,14 +21,13 @@ namespace OpenRa.Game.Traits
|
||||
anim.PlayThen("make", () => anim.PlayRepeating("idle"));
|
||||
|
||||
// at this point, we already know where we are, so we can safely place the bib in the smudge
|
||||
if (((UnitInfo.BuildingInfo)self.unitInfo).Bib)
|
||||
var buildingInfo = (UnitInfo.BuildingInfo)self.unitInfo;
|
||||
if (buildingInfo.Bib)
|
||||
{
|
||||
var fp = Rules.Footprint.GetFootprint(self.unitInfo.Name);
|
||||
var bibOffset = fp.Length - 2;
|
||||
var size = fp.First().Length;
|
||||
var size = buildingInfo.Dimensions.X;
|
||||
var bibOffset = buildingInfo.Dimensions.Y - 1;
|
||||
var startIndex = (size == 2) ? SmallBibStart : LargeBibStart;
|
||||
|
||||
|
||||
for (int i = 0; i < 2 * size; i++)
|
||||
{
|
||||
var p = self.Location + Game.map.Offset + new int2(i % size, i / size + bibOffset);
|
||||
|
||||
@@ -35,9 +35,9 @@ namespace OpenRa.Game
|
||||
if (!hasOverlay)
|
||||
return;
|
||||
|
||||
foreach (var t in Footprint.Tiles(name,position))
|
||||
spriteRenderer.DrawSprite(Game.IsCellBuildable(t, UnitMovementType.Wheel)
|
||||
? buildOk : buildBlocked, Game.CellSize * t, 0);
|
||||
foreach( var t in Footprint.Tiles( Rules.UnitInfo[ name ], position ) )
|
||||
spriteRenderer.DrawSprite( Game.IsCellBuildable( t, UnitMovementType.Wheel )
|
||||
? buildOk : buildBlocked, Game.CellSize * t, 0 );
|
||||
|
||||
spriteRenderer.Flush();
|
||||
}
|
||||
|
||||
@@ -1,6 +1,178 @@
|
||||
[BuildingTypes]
|
||||
FCOM
|
||||
V01
|
||||
V02
|
||||
V03
|
||||
V04
|
||||
V05
|
||||
V06
|
||||
V07
|
||||
V08
|
||||
V09
|
||||
V10
|
||||
V11
|
||||
V12
|
||||
V13
|
||||
V14
|
||||
V15
|
||||
V16
|
||||
V17
|
||||
V18
|
||||
V19
|
||||
V20
|
||||
V21
|
||||
V22
|
||||
V23
|
||||
V24
|
||||
V25
|
||||
V26
|
||||
V27
|
||||
V28
|
||||
V29
|
||||
V30
|
||||
V31
|
||||
V32
|
||||
V33
|
||||
V34
|
||||
V35
|
||||
V36
|
||||
V37
|
||||
BARL
|
||||
BRL3
|
||||
MISS
|
||||
|
||||
[FCOM]
|
||||
Description=Forward Command Post
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
|
||||
[V01]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V02]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V03]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V04]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V05]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V06]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V07]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V08]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V09]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V10]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V11]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V12]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V13]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V14]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V15]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V16]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V17]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V18]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V19]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V20]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V21]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V22]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V23]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V24]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V25]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V26]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V27]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V28]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V29]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V30]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V31]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V32]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V33]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V34]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V35]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V36]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[V37]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[BARL]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[BRL3]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
[MISS]
|
||||
Traits=Building, RenderBuilding
|
||||
Image=FCOM
|
||||
|
||||
|
||||
|
||||
|
||||
[VehicleTypes]
|
||||
TRUK
|
||||
|
||||
[TRUK]
|
||||
Traits=Mobile, RenderUnit
|
||||
@@ -1,18 +0,0 @@
|
||||
#
|
||||
# Building footprints
|
||||
#
|
||||
|
||||
# default is indicated by *
|
||||
|
||||
x : ftur sbag brik fenc gun pbox hbox silo gap kenn *
|
||||
_ x : tsla agun
|
||||
xx xx == : powr dome barr tent domf hpad atek
|
||||
xxx xxx === : weap weaf stek
|
||||
___ xxx xxx === : apwr
|
||||
xxx xxx xxx === : fact facf
|
||||
xxx xxx xxx : syrf syrd spen spef
|
||||
xx : sam mslo
|
||||
_x_ xxx x== === : proc
|
||||
xxx xxx : afld
|
||||
_x_ xxx _x_ : fix
|
||||
xx xx : iron
|
||||
80
rules.ini
80
rules.ini
@@ -1721,7 +1721,7 @@ Strength=1
|
||||
Points=1
|
||||
Armor=none
|
||||
Cost=75
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
Adjacent=1
|
||||
Sight=0
|
||||
|
||||
@@ -1731,7 +1731,7 @@ Strength=1
|
||||
Points=1
|
||||
Armor=wood
|
||||
Cost=25
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
Adjacent=1
|
||||
Sight=0
|
||||
|
||||
@@ -1739,7 +1739,7 @@ Sight=0
|
||||
[WOOD]
|
||||
Strength=1
|
||||
Points=1
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
Adjacent=1
|
||||
Sight=0
|
||||
|
||||
@@ -1850,224 +1850,224 @@ BaseNormal=no
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
Capturable=true
|
||||
|
||||
[V02]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V03]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V04]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V05]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V06]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V07]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V08]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V09]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V10]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V11]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V12]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V13]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V14]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V15]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V16]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V17]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V18]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V19]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V20]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V21]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V22]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V23]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V24]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V25]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V26]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V27]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V28]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V29]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V30]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V31]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V32]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V33]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V34]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V35]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V36]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
[V37]
|
||||
Strength=400
|
||||
Points=5
|
||||
Armor=wood
|
||||
Repariable=false
|
||||
Repairable=false
|
||||
|
||||
|
||||
; ******* Weapon Statistics *******
|
||||
|
||||
@@ -169,6 +169,13 @@
|
||||
<sequence name="make" start="0" length="*" src="gunmake" />
|
||||
</unit>
|
||||
|
||||
<!-- AA gun -->
|
||||
<unit name="agun">
|
||||
<sequence name="idle" start="0" length="32"/>
|
||||
<sequence name="damaged-idle" start="32" length="32"/>
|
||||
<sequence name="make" start="0" length="*" src="agunmake" />
|
||||
</unit>
|
||||
|
||||
<!-- sam site -->
|
||||
<unit name="sam">
|
||||
<sequence name="idle" start="0" length="32"/>
|
||||
@@ -204,6 +211,13 @@
|
||||
<sequence name="make" start="0" length="*" src="hboxmake" />
|
||||
</unit>
|
||||
|
||||
<!-- gap generator -->
|
||||
<unit name="gap">
|
||||
<sequence name="idle" start="0" length="32"/>
|
||||
<sequence name="damaged-idle" start="32" length="32"/>
|
||||
<sequence name="make" start="0" length="*" src="gapmake" />
|
||||
</unit>
|
||||
|
||||
<!-- iron curtain -->
|
||||
<unit name="iron">
|
||||
<sequence name="idle" start="0" length="11"/>
|
||||
|
||||
73
units.ini
73
units.ini
@@ -143,105 +143,178 @@ SPEF
|
||||
DOMF
|
||||
; TODO? : campaign-specific stuff - FCOM, civilian buildings, etc
|
||||
|
||||
|
||||
; `Dimensions` is the size of a box that will include the whole building, excluding bib.
|
||||
; ("bib-ness" can be altered in rules.ini; we can't expect people to change this, too)
|
||||
; `Footprint` is the pathability and buildability of each cell occupied by the building
|
||||
; _ : Not occupied by the building (e.g: the holes in the refinery and the service depot)
|
||||
; x : Solid. cannot be walked on or built on.
|
||||
; = : Occupied by a building, but can be walked on normally. (e.g: the drop-off point on the refinery)
|
||||
[IRON]
|
||||
Description=Iron Curtain
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
[ATEK]
|
||||
Description=Allied Tech Center
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
[PDOX]
|
||||
Description=Chronosphere
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,1
|
||||
Footprint=xx
|
||||
[WEAP]
|
||||
Description=War Factory
|
||||
Traits=Building, RenderWarFactory
|
||||
Dimensions=3,2
|
||||
Footprint=xxx xxx
|
||||
[SYRD]
|
||||
Description=Shipyard
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
[SPEN]
|
||||
Description=Sub Pen
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
[PBOX]
|
||||
Description=Pillbox
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
[HBOX]
|
||||
Description=Camo Pillbox
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
[TSLA]
|
||||
Description=Tesla Coil
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,2
|
||||
Footprint=_ x
|
||||
[GUN]
|
||||
Description=Turret
|
||||
Traits=Building, Turreted, RenderBuildingTurreted
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
[AGUN]
|
||||
Description=AA Gun
|
||||
Traits=Building, Turreted, RenderBuildingTurreted
|
||||
Dimensions=1,2
|
||||
Footprint=_ x
|
||||
[FTUR]
|
||||
Description=Flame Turret
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
[FACT]
|
||||
Description=Construction Yard
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
[PROC]
|
||||
Description=Ore Refinery
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=_x_ xxx x==
|
||||
[SILO]
|
||||
Description=Silo
|
||||
Traits=Building, RenderBuildingOre
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
[HPAD]
|
||||
Description=Helipad
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
[DOME]
|
||||
Description=Radar Dome
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
[GAP]
|
||||
Description=Gap Generator
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,2
|
||||
Footprint=_ x
|
||||
[SAM]
|
||||
Description=SAM Site
|
||||
Traits=Building, Turreted, RenderBuildingTurreted
|
||||
Dimensions=2,1
|
||||
Footprint=xx
|
||||
[MSLO]
|
||||
Description=Missile Silo
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,1
|
||||
Footprint=xx
|
||||
[AFLD]
|
||||
Description=Airstrip
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,2
|
||||
Footprint=xxx xxx
|
||||
[POWR]
|
||||
Description=Power Plant
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
[APWR]
|
||||
Description=Advanced Power Plant
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=___ xxx xxx
|
||||
[STEK]
|
||||
Description=Soviet Tech Center
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,2
|
||||
Footprint=xxx xxx
|
||||
[BARR]
|
||||
Description=Soviet Barracks
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
[TENT]
|
||||
Description=Allied Barracks
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
[KENN]
|
||||
Description=Kennel
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=1,1
|
||||
Footprint=x
|
||||
[FIX]
|
||||
Description=Service Depot
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=_x_ xxx _x_
|
||||
[FACF]
|
||||
Description=Fake Construction Yard
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
[WEAF]
|
||||
Description=Fake War Factory
|
||||
Traits=Building, RenderWarFactory
|
||||
Dimensions=3,2
|
||||
Footprint=xxx xxx
|
||||
[SYRF]
|
||||
Description=Fake Shipyard
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
[SPEF]
|
||||
Description=Fake Sub Pen
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=3,3
|
||||
Footprint=xxx xxx xxx
|
||||
[DOMF]
|
||||
Description=Fake Radar Dome
|
||||
Traits=Building, RenderBuilding
|
||||
Dimensions=2,2
|
||||
Footprint=xx xx
|
||||
;[SBAG]
|
||||
;Description=Sandbags
|
||||
;[BRIK]
|
||||
|
||||
Reference in New Issue
Block a user