moved the rest of the mine crap into mod dll

This commit is contained in:
Chris Forbes
2010-01-17 09:35:51 +13:00
parent 59c0791d93
commit 47f95ff596
16 changed files with 105 additions and 96 deletions

View File

@@ -4,51 +4,5 @@ using OpenRa.Effects;
namespace OpenRa.Traits
{
class MineInfo : ITraitInfo
{
public readonly int Damage = 0;
public readonly UnitMovementType[] TriggeredBy = { };
public readonly string Warhead = "ATMine";
public readonly bool AvoidFriendly = true;
public object Create(Actor self) { return new Mine(self); }
}
class Mine : ICrushable, IOccupySpace
{
readonly Actor self;
public Mine(Actor self)
{
this.self = self;
Game.UnitInfluence.Add(self, this);
}
public void OnCrush(Actor crusher)
{
if (crusher.traits.Contains<MineImmune>() && crusher.Owner == self.Owner)
return;
var info = self.Info.Traits.Get<MineInfo>();
var warhead = Rules.WarheadInfo[info.Warhead];
Game.world.AddFrameEndTask(_ =>
{
Game.world.Remove(self);
Game.world.Add(new Explosion(self.CenterLocation.ToInt2(), warhead.Explosion, false));
crusher.InflictDamage(crusher, info.Damage, warhead);
});
}
public bool IsPathableCrush(UnitMovementType umt, Player player)
{
return !self.Info.Traits.Get<MineInfo>().AvoidFriendly || (player != Game.LocalPlayer);
}
public bool IsCrushableBy(UnitMovementType umt, Player player)
{
return self.Info.Traits.Get<MineInfo>().TriggeredBy.Contains(umt);
}
public IEnumerable<int2> OccupiedCells() { yield return self.Location; }
}
}

View File

@@ -1,6 +1,5 @@
namespace OpenRa.Traits
{
class MineImmuneInfo : StatelessTraitInfo<MineImmune> { }
class MineImmune { }
}

View File

@@ -32,19 +32,19 @@ namespace OpenRa.Traits
}
public interface IOccupySpace { IEnumerable<int2> OccupiedCells(); }
interface INotifyAttack { void Attacking(Actor self); }
interface IRenderModifier { IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r); }
interface IDamageModifier { float GetDamageModifier(); }
interface ISpeedModifier { float GetSpeedModifier(); }
interface IPaletteModifier { void AdjustPalette(Bitmap b); }
interface IPips { IEnumerable<PipType> GetPips(Actor self); }
interface ITags { IEnumerable<TagType> GetTags(); }
interface IMovement
public interface IRenderModifier { IEnumerable<Renderable> ModifyRender(Actor self, IEnumerable<Renderable> r); }
public interface IDamageModifier { float GetDamageModifier(); }
public interface ISpeedModifier { float GetSpeedModifier(); }
public interface IPaletteModifier { void AdjustPalette(Bitmap b); }
public interface IPips { IEnumerable<PipType> GetPips(Actor self); }
public interface ITags { IEnumerable<TagType> GetTags(); }
public interface IMovement
{
UnitMovementType GetMovementType();
bool CanEnterCell(int2 location);
}
interface ICrushable
public interface ICrushable
{
void OnCrush(Actor crusher);
bool IsCrushableBy(UnitMovementType umt, Player player);
@@ -75,7 +75,7 @@ namespace OpenRa.Traits
public interface ITraitInfo { object Create(Actor self); }
class StatelessTraitInfo<T> : ITraitInfo
public class StatelessTraitInfo<T> : ITraitInfo
where T : new()
{
static Lazy<T> Instance = Lazy.New(() => new T());