Refactor support powers to use ticks instead of seconds for all delays - code changes

Also renamed ChargeTime to ChargeInterval.
This commit is contained in:
reaperrr
2017-11-15 22:07:54 +01:00
committed by Paul Chote
parent 3d62b1f9b3
commit b70e4de5ee
8 changed files with 40 additions and 10 deletions

View File

@@ -45,7 +45,7 @@ namespace OpenRA.Mods.Cnc.Effects
if (++frame == 19) if (++frame == 19)
{ {
var palette = info.SatellitePaletteIsPlayerPalette ? info.SatellitePalette + launcher.Owner.InternalName : info.SatellitePalette; var palette = info.SatellitePaletteIsPlayerPalette ? info.SatellitePalette + launcher.Owner.InternalName : info.SatellitePalette;
world.AddFrameEndTask(w => w.Add(new GpsSatellite(world, pos, info.SatelliteImage, info.SatelliteSequence, palette, info.RevealDelay * 25, launcher.Owner))); world.AddFrameEndTask(w => w.Add(new GpsSatellite(world, pos, info.SatelliteImage, info.SatelliteSequence, palette, info.RevealDelay, launcher.Owner)));
} }
} }

View File

@@ -25,8 +25,8 @@ namespace OpenRA.Mods.Cnc.Traits
[Desc("Target actor selection radius in cells.")] [Desc("Target actor selection radius in cells.")]
public readonly int Range = 1; public readonly int Range = 1;
[Desc("Seconds until returning after teleportation.")] [Desc("Ticks until returning after teleportation.")]
public readonly int Duration = 30; public readonly int Duration = 750;
[PaletteReference] public readonly string TargetOverlayPalette = TileSet.TerrainPaletteInternalName; [PaletteReference] public readonly string TargetOverlayPalette = TileSet.TerrainPaletteInternalName;
@@ -70,7 +70,7 @@ namespace OpenRA.Mods.Cnc.Traits
var cpi = Info as ChronoshiftPowerInfo; var cpi = Info as ChronoshiftPowerInfo;
if (self.Owner.Shroud.IsExplored(targetCell) && cs.CanChronoshiftTo(target, targetCell)) if (self.Owner.Shroud.IsExplored(targetCell) && cs.CanChronoshiftTo(target, targetCell))
cs.Teleport(target, targetCell, cpi.Duration * 25, cpi.KillCargo, self); cs.Teleport(target, targetCell, cpi.Duration, cpi.KillCargo, self);
} }
} }

View File

@@ -22,6 +22,7 @@ namespace OpenRA.Mods.Cnc.Traits
[Desc("Requires `GpsWatcher` on the player actor.")] [Desc("Requires `GpsWatcher` on the player actor.")]
class GpsPowerInfo : SupportPowerInfo class GpsPowerInfo : SupportPowerInfo
{ {
[Desc("Delay in ticks between launching and revealing the map.")]
public readonly int RevealDelay = 0; public readonly int RevealDelay = 0;
public readonly string DoorImage = "atek"; public readonly string DoorImage = "atek";

View File

@@ -24,7 +24,7 @@ namespace OpenRA.Mods.Cnc.Traits
[Desc("Actor to spawn when the attack starts")] [Desc("Actor to spawn when the attack starts")]
public readonly string CameraActor = null; public readonly string CameraActor = null;
[Desc("Amount of time to keep the camera alive")] [Desc("Number of ticks to keep the camera alive")]
public readonly int CameraRemoveDelay = 25; public readonly int CameraRemoveDelay = 25;
[Desc("Effect sequence sprite image")] [Desc("Effect sequence sprite image")]

View File

@@ -15,8 +15,8 @@ namespace OpenRA.Mods.Common.Traits
{ {
public abstract class SupportPowerInfo : PausableConditionalTraitInfo public abstract class SupportPowerInfo : PausableConditionalTraitInfo
{ {
[Desc("Measured in seconds.")] [Desc("Measured in ticks.")]
public readonly int ChargeTime = 0; public readonly int ChargeInterval = 0;
public readonly string Icon = null; public readonly string Icon = null;
public readonly string Description = ""; public readonly string Description = "";
public readonly string LongDesc = ""; public readonly string LongDesc = "";

View File

@@ -62,8 +62,8 @@ namespace OpenRA.Mods.Common.Traits
Powers.Add(key, new SupportPowerInstance(key, this) Powers.Add(key, new SupportPowerInstance(key, this)
{ {
Instances = new List<SupportPower>(), Instances = new List<SupportPower>(),
RemainingTime = t.Info.StartFullyCharged ? 0 : t.Info.ChargeTime * 25, RemainingTime = t.Info.StartFullyCharged ? 0 : t.Info.ChargeInterval,
TotalTime = t.Info.ChargeTime * 25, TotalTime = t.Info.ChargeInterval,
}); });
if (t.Info.Prerequisites.Any()) if (t.Info.Prerequisites.Any())

View File

@@ -1606,6 +1606,35 @@ namespace OpenRA.Mods.Common.UtilityCommands
} }
} }
if (engineVersion < 20171228)
{
var chargeTime = node.Value.Nodes.FirstOrDefault(n => n.Key == "ChargeTime");
if (chargeTime != null)
{
var chargeTimeValue = FieldLoader.GetValue<int>("ChargeTime", chargeTime.Value.Value);
if (chargeTimeValue > 0)
chargeTime.Value.Value = (chargeTimeValue * 25).ToString();
RenameNodeKey(chargeTime, "ChargeInterval");
}
if (node.Key.StartsWith("GpsPower", StringComparison.Ordinal))
{
var revealDelay = node.Value.Nodes.FirstOrDefault(n => n.Key == "RevealDelay");
var revealDelayValue = revealDelay != null ? FieldLoader.GetValue<int>("RevealDelay", revealDelay.Value.Value) : 0;
if (revealDelay != null && revealDelayValue > 0)
revealDelay.Value.Value = (revealDelayValue * 25).ToString();
}
if (node.Key.StartsWith("ChronoshiftPower", StringComparison.Ordinal))
{
var duration = node.Value.Nodes.FirstOrDefault(n => n.Key == "Duration");
var durationValue = duration != null ? FieldLoader.GetValue<int>("Duration", duration.Value.Value) : 0;
if (duration != null && durationValue > 0)
duration.Value.Value = (durationValue * 25).ToString();
}
}
UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1); UpgradeActorRules(modData, engineVersion, ref node.Value.Nodes, node, depth + 1);
} }

View File

@@ -60,7 +60,7 @@ namespace OpenRA.Mods.Common.Widgets.Logic
var descSize = descFont.Measure(descLabel.Text); var descSize = descFont.Measure(descLabel.Text);
var remaining = WidgetUtils.FormatTime(sp.RemainingTime, world.Timestep); var remaining = WidgetUtils.FormatTime(sp.RemainingTime, world.Timestep);
var total = WidgetUtils.FormatTime(sp.Info.ChargeTime * 25, world.Timestep); var total = WidgetUtils.FormatTime(sp.Info.ChargeInterval, world.Timestep);
timeLabel.Text = "{0} / {1}".F(remaining, total); timeLabel.Text = "{0} / {1}".F(remaining, total);
var timeSize = timeFont.Measure(timeLabel.Text); var timeSize = timeFont.Measure(timeLabel.Text);