This commit is contained in:
Chris Forbes
2009-12-28 18:21:03 +13:00
4 changed files with 41 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
@@ -184,6 +184,7 @@
<Compile Include="Traits\InvisibleToOthers.cs" />
<Compile Include="Traits\MineImmune.cs" />
<Compile Include="Traits\Minelayer.cs" />
<Compile Include="Traits\LimitedAmmo.cs" />
<Compile Include="Traits\SquishByTank.cs" />
<Compile Include="Traits\Plane.cs" />
<Compile Include="Traits\ProductionQueue.cs" />
@@ -266,4 +267,4 @@
<Target Name="AfterBuild">
</Target>
-->
</Project>
</Project>

View File

@@ -91,6 +91,11 @@ namespace OpenRa.Game.Traits
bool CheckFire(Actor self, Unit unit, string weaponName, ref int fireDelay, int[] offset, ref int burst)
{
if (fireDelay > 0) return false;
var limitedAmmo = self.traits.GetOrDefault<LimitedAmmo>();
if (!limitedAmmo.HasAmmo())
return false;
var weapon = Rules.WeaponInfo[weaponName];
if (weapon.Range * weapon.Range < (target.Location - self.Location).LengthSquared) return false;

View File

@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace OpenRa.Game.Traits
{
class LimitedAmmo : INotifyAttack, IPips
{
int ammo;
Actor self;
public LimitedAmmo(Actor self)
{
ammo = self.Info.Ammo;
this.self = self;
}
public bool HasAmmo() { return ammo > 0; }
public void Attacking(Actor self) { --ammo; }
public IEnumerable<PipType> GetPips()
{
return Graphics.Util.MakeArray(self.Info.Ammo,
i => ammo > i ? PipType.Green : PipType.Transparent);
}
}
}