minelayer works in mod dll

This commit is contained in:
Chris Forbes
2010-01-17 09:57:58 +13:00
parent 47f95ff596
commit a2e1fe3d4f
10 changed files with 35 additions and 46 deletions

View File

@@ -3,6 +3,9 @@ using System.Collections.Generic;
using System.Linq;
using OpenRa.FileFormats;
using OpenRa.Traits;
using System.Reflection;
using IjwFramework.Types;
using System.IO;
namespace OpenRa.GameRules
{
@@ -49,16 +52,25 @@ namespace OpenRa.GameRules
return node;
}
// todo: use mod metadata to do this
static Pair<Assembly, string>[] ModAssemblies =
{
Pair.New( typeof(ITraitInfo).Assembly, typeof(ITraitInfo).Namespace ),
Pair.New( Assembly.LoadFile(Path.GetFullPath(@"mods\ra\OpenRa.Mods.RA.dll")), "OpenRa.Mods.RA" )
};
static ITraitInfo LoadTraitInfo(string traitName, MiniYaml my)
{
var fullTypeName = typeof(ITraitInfo).Namespace + "." + traitName + "Info";
var info = (ITraitInfo)typeof(ITraitInfo).Assembly.CreateInstance(fullTypeName);
foreach (var mod in ModAssemblies)
{
var fullTypeName = mod.Second + "." + traitName + "Info";
var info = (ITraitInfo)mod.First.CreateInstance(fullTypeName);
if (info == null) continue;
FieldLoader.Load(info, my);
return info;
}
if (info == null)
throw new NotImplementedException("Missing traitinfo type `{0}`".F(fullTypeName));
FieldLoader.Load(info, my);
return info;
throw new InvalidOperationException("Cannot locate trait: {0}".F(traitName));
}
}
}

View File

@@ -206,7 +206,6 @@
<Compile Include="Traits\Activities\Turn.cs" />
<Compile Include="Traits\Activities\UndeployMcv.cs" />
<Compile Include="Traits\Activities\UnloadCargo.cs" />
<Compile Include="Traits\Mine.cs" />
<Compile Include="Traits\AttackBase.cs" />
<Compile Include="Traits\AttackFrontal.cs" />
<Compile Include="Traits\AttackHeli.cs" />
@@ -237,8 +236,6 @@
<Compile Include="Traits\IronCurtain.cs" />
<Compile Include="Traits\IronCurtainable.cs" />
<Compile Include="Traits\LightPaletteRotator.cs" />
<Compile Include="Traits\MineImmune.cs" />
<Compile Include="Traits\Minelayer.cs" />
<Compile Include="Traits\LimitedAmmo.cs" />
<Compile Include="Traits\Passenger.cs" />
<Compile Include="Traits\ProvidesRadar.cs" />

View File

@@ -1,8 +0,0 @@
using System.Collections.Generic;
using System.Linq;
using OpenRa.Effects;
namespace OpenRa.Traits
{
}

View File

@@ -1,5 +0,0 @@

namespace OpenRa.Traits
{
}

View File

@@ -1,5 +0,0 @@
using System.Linq;
namespace OpenRa.Traits
{
}

View File

@@ -1,9 +1,7 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using OpenRa.Traits;
using OpenRa.Effects;
using OpenRa.Traits;
namespace OpenRa.Mods.RA
{
@@ -54,7 +52,4 @@ namespace OpenRa.Mods.RA
public IEnumerable<int2> OccupiedCells() { yield return self.Location; }
}
class MineImmuneInfo : StatelessTraitInfo<MineImmune> { }
class MineImmune { }
}

View File

@@ -0,0 +1,7 @@
using OpenRa.Traits;
namespace OpenRa.Mods.RA
{
class MineImmuneInfo : StatelessTraitInfo<MineImmune> { }
class MineImmune { }
}

View File

@@ -1,20 +1,11 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Linq;
using OpenRa.Traits;
using OpenRa;
namespace OpenRa.Mods.RA
{
class MinelayerInfo : ITraitInfo
class MinelayerInfo : StatelessTraitInfo<Minelayer>
{
public readonly string Mine = "minv";
public object Create(Actor self)
{
return new Minelayer();
}
}
class Minelayer : IIssueOrder, IResolveOrder

View File

@@ -46,6 +46,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Mine.cs" />
<Compile Include="MineImmune.cs" />
<Compile Include="Minelayer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
@@ -67,4 +68,8 @@
<Target Name="AfterBuild">
</Target>
-->
<PropertyGroup>
<PostBuildEvent>mkdir "$(SolutionDir)mods/ra/"
copy "$(TargetPath)" "$(SolutionDir)mods/ra/"</PostBuildEvent>
</PropertyGroup>
</Project>

BIN
mods/ra/OpenRa.Mods.RA.dll Normal file

Binary file not shown.