Convert firepower modifiers to integer percentages.

This commit is contained in:
Paul Chote
2014-08-09 22:04:20 +12:00
parent 84d3497e96
commit 01cd6efbd0
5 changed files with 13 additions and 6 deletions

View File

@@ -157,7 +157,7 @@ namespace OpenRA.Traits
public interface IRenderModifier { IEnumerable<IRenderable> ModifyRender(Actor self, WorldRenderer wr, IEnumerable<IRenderable> r); }
public interface IDamageModifier { int GetDamageModifier(Actor attacker, DamageWarhead warhead); }
public interface ISpeedModifier { int GetSpeedModifier(); }
public interface IFirepowerModifier { float GetFirepowerModifier(); }
public interface IFirepowerModifier { int GetFirepowerModifier(); }
public interface ILoadsPalettes { void LoadPalettes(WorldRenderer wr); }
public interface IPaletteModifier { void AdjustPalette(IReadOnlyDictionary<string, MutablePalette> b); }
public interface IPips { IEnumerable<PipType> GetPips(Actor self); }

View File

@@ -48,8 +48,10 @@ namespace OpenRA.Mods.D2k
{
Weapon = wep,
Facing = self.World.SharedRandom.Next(-1, 255),
// TODO: Convert to ints
FirepowerModifier = self.TraitsImplementing<IFirepowerModifier>()
.Select(a => a.GetFirepowerModifier())
.Select(a => a.GetFirepowerModifier() / 100f)
.Product(),
Source = self.CenterPosition,

View File

@@ -153,8 +153,10 @@ namespace OpenRA.Mods.RA
{
Weapon = Weapon,
Facing = legacyFacing,
// TODO: Convert to ints
FirepowerModifier = self.TraitsImplementing<IFirepowerModifier>()
.Select(a => a.GetFirepowerModifier())
.Select(a => a.GetFirepowerModifier() / 100f)
.Product(),
Source = muzzlePosition,

View File

@@ -19,7 +19,7 @@ namespace OpenRA.Mods.RA
public class GainsStatUpgradesInfo : ITraitInfo
{
public readonly string FirepowerUpgrade = "firepower";
public readonly float[] FirepowerModifier = { 1.1f, 1.15f, 1.2f, 1.5f };
public readonly int[] FirepowerModifier = { 110, 115, 120, 150 };
public readonly string ArmorUpgrade = "armor";
public readonly int[] ArmorModifier = { 110, 120, 130, 150 };
@@ -65,9 +65,9 @@ namespace OpenRA.Mods.RA
return armorLevel > 0 ? 1 / info.ArmorModifier[armorLevel - 1] : 100;
}
public float GetFirepowerModifier()
public int GetFirepowerModifier()
{
return firepowerLevel > 0 ? info.FirepowerModifier[firepowerLevel - 1] : 1;
return firepowerLevel > 0 ? info.FirepowerModifier[firepowerLevel - 1] : 100;
}
public int GetSpeedModifier()

View File

@@ -428,6 +428,9 @@ namespace OpenRA.Utility
if (depth == 2 && node.Key == "SpeedModifier" && parentKey == "GainsStatUpgrades")
ConvertFloatArrayToPercentArray(ref node.Value.Value);
if (depth == 2 && node.Key == "FirepowerModifier" && parentKey == "GainsStatUpgrades")
ConvertFloatArrayToPercentArray(ref node.Value.Value);
}
UpgradeActorRules(engineVersion, ref node.Value.Nodes, node, depth + 1);