Merge branch 'master' of git://github.com/beedee/OpenRA

This commit is contained in:
Chris Forbes
2009-10-11 08:54:45 +13:00
5 changed files with 2868 additions and 2807 deletions

View File

@@ -62,6 +62,7 @@ namespace OpenRa.Game
///// TODO: planes ///// ///// TODO: planes /////
///// buildings ///// ///// buildings /////
//TODO: SBAG, BRIK, FENC, etc
case "iron": case "iron":
case "pdox": case "pdox":
case "mslo": case "mslo":
@@ -81,13 +82,16 @@ namespace OpenRa.Game
case "fix": case "fix":
case "spen": case "spen":
case "syrd": case "syrd":
//GAP case "gap":
//SBAG, BRIK, FENC
//FACF, WEAF, SYRF, SPEF, DOMF
case "pbox": case "pbox":
case "hbox": case "hbox":
case "tsla": case "tsla":
case "ftur": case "ftur":
case "facf":
case "weaf":
case "syrf":
case "spef":
case "domf":
traits.Add( new Traits.Building( this ) ); traits.Add( new Traits.Building( this ) );
traits.Add( new Traits.RenderBuilding( this ) ); traits.Add( new Traits.RenderBuilding( this ) );
break; break;
@@ -102,6 +106,7 @@ namespace OpenRa.Game
traits.Add( new Traits.Turreted( this ) ); traits.Add( new Traits.Turreted( this ) );
traits.Add( new Traits.RenderBuildingTurreted( this ) ); traits.Add( new Traits.RenderBuildingTurreted( this ) );
break; break;
default: default:
throw new NotImplementedException( "Actor traits for " + name ); throw new NotImplementedException( "Actor traits for " + name );
} }
@@ -159,7 +164,7 @@ namespace OpenRa.Game
public RenderSimple( Actor self ) public RenderSimple( Actor self )
{ {
anim = new Animation( self.unitInfo.Name ); anim = new Animation( self.unitInfo.Image ?? self.unitInfo.Name );
} }
public abstract IEnumerable<Pair<Sprite, float2>> Render( Actor self ); public abstract IEnumerable<Pair<Sprite, float2>> Render( Actor self );

View File

@@ -96,7 +96,7 @@ namespace OpenRa.Game.GameRules
field.SetValue( this, float.Parse( x.Value ) ); field.SetValue( this, float.Parse( x.Value ) );
else if( field.FieldType == typeof( string ) ) else if( field.FieldType == typeof( string ) )
field.SetValue( this, x.Value ); field.SetValue( this, x.Value.ToLowerInvariant() );
else if( field.FieldType == typeof( ArmorType ) ) else if( field.FieldType == typeof( ArmorType ) )
field.SetValue( this, Enum<ArmorType>.Parse(x.Value) ); field.SetValue( this, Enum<ArmorType>.Parse(x.Value) );

View File

@@ -14,7 +14,33 @@ namespace OpenRa.Game.Graphics
"gold01", "gold02", "gold03", "gold04", "gold01", "gold02", "gold03", "gold04",
"gem01", "gem02", "gem03", "gem04", "gem01", "gem02", "gem03", "gem04",
"v12", "v13", "v14", "v15", "v16", "v17", "v18", "v12", "v13", "v14", "v15", "v16", "v17", "v18",
"fpls", "wcrate", "scrate", "barb", "sbag" "fpls", "wcrate", "scrate", "barb", "sbag",
};
static bool[] overlayIsFence = new bool[]
{
true, true, true, true, true,
false, false, false, false,
false, false, false, false,
false, false, false, false, false, false, false,
false, false, false, true, true,
};
static bool[] overlayIsOre = new bool[]
{
false, false, false, false, false,
true, true, true, true,
false, false, false, false,
false, false, false, false, false, false, false,
false, false, false, false, false,
};
static bool[] overlayIsGems = new bool[]
{
false, false, false, false, false,
false, false, false, false,
true, true, true, true,
false, false, false, false, false, false, false,
false, false, false, false, false,
}; };
Sprite[][] overlaySprites; Sprite[][] overlaySprites;
@@ -41,12 +67,41 @@ namespace OpenRa.Game.Graphics
{ {
var location = new int2( x, y ); var location = new int2( x, y );
var sprites = overlaySprites[ map.MapTiles[ x, y ].overlay ]; var sprites = overlaySprites[ map.MapTiles[ x, y ].overlay ];
spriteRenderer.DrawSprite( sprites[ sprites.Length / 2-1 ], 24 * (float2)( location - map.Offset ), 0 ); var spriteIndex = 0;
if( overlayIsFence[ map.MapTiles[ x, y ].overlay ] )
spriteIndex = NearbyFences( x, y );
else if( overlayIsOre[ map.MapTiles[ x, y ].overlay ] )
spriteIndex = 11;
else if( overlayIsGems[ map.MapTiles[ x, y ].overlay ] )
spriteIndex = 2;
spriteRenderer.DrawSprite( sprites[ spriteIndex ], 24 * (float2)( location - map.Offset ), 0 );
} }
} }
} }
spriteRenderer.Flush(); spriteRenderer.Flush();
} }
bool IsFence( int x, int y )
{
var o = map.MapTiles[ x, y ].overlay;
if( o < overlayIsFence.Length )
return overlayIsFence[ o ];
return false;
}
int NearbyFences( int x, int y )
{
int ret = 0;
if( IsFence( x, y - 1 ) )
ret |= 1;
if( IsFence( x + 1, y ) )
ret |= 2;
if( IsFence( x, y + 1 ) )
ret |= 4;
if( IsFence( x - 1, y ) )
ret |= 8;
return ret;
}
} }
} }

View File

@@ -29,6 +29,7 @@ namespace OpenRa.Game
FileSystem.Mount(new Package("redalert.mix")); FileSystem.Mount(new Package("redalert.mix"));
FileSystem.Mount(new Package("conquer.mix")); FileSystem.Mount(new Package("conquer.mix"));
FileSystem.Mount(new Package("hires.mix")); FileSystem.Mount(new Package("hires.mix"));
FileSystem.Mount(new Package("general.mix"));
FormBorderStyle = FormBorderStyle.None; FormBorderStyle = FormBorderStyle.None;
BackColor = Color.Black; BackColor = Color.Black;

View File

@@ -478,10 +478,10 @@ width=3
height=2 height=2
tiletype0=8 tiletype0=8
tiletype1=8 tiletype1=8
tiletype0=5 tiletype2=5
tiletype1=0 tiletype3=0
tiletype0=5 tiletype4=5
tiletype1=6 tiletype5=6
[TEM33] [TEM33]
Name=SH31 Name=SH31
@@ -1282,7 +1282,7 @@ tiletype8=5
tiletype9=5 tiletype9=5
tiletype10=3 tiletype10=3
tiletype11=3 tiletype11=3
tiletype11=3 tiletype12=3
tiletype13=3 tiletype13=3
tiletype14=3 tiletype14=3
tiletype16=3 tiletype16=3