forked from OpenRA/OpenRA
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Created FlashPaletteEffectWarhead and removed the hardcoded flashing …
…from NukeLaunch Not actually hardcoded, but there was a hard dependency in NukeLaunch on FlashPaletteEffect and explicit flashing checks.
- Loading branch information
Showing
9 changed files
with
105 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
61 changes: 61 additions & 0 deletions
61
OpenRA.Mods.Common/UpdateRules/Rules/20200503/CreateFlashPaletteEffectWarhead.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
#region Copyright & License Information | ||
/* | ||
* Copyright 2007-2020 The OpenRA Developers (see AUTHORS) | ||
* This file is part of OpenRA, which is free software. It is made | ||
* available to you under the terms of the GNU General Public License | ||
* as published by the Free Software Foundation, either version 3 of | ||
* the License, or (at your option) any later version. For more | ||
* information, see COPYING. | ||
*/ | ||
#endregion | ||
|
||
using System; | ||
using System.Collections.Generic; | ||
using System.Linq; | ||
|
||
namespace OpenRA.Mods.Common.UpdateRules.Rules | ||
{ | ||
public class CreateFlashPaletteEffectWarhead : UpdateRule | ||
{ | ||
public override string Name { get { return "Create FlashPaletteEffectWarhead to replace hardcoded nuke flashing."; } } | ||
|
||
public override string Description | ||
{ | ||
get | ||
{ | ||
return "The trait NukePower (via the NukeLaunch projectile that it uses) no longer has built-in palette flashing."; | ||
} | ||
} | ||
|
||
readonly List<Tuple<string, string, string>> weaponsToUpdate = new List<Tuple<string, string, string>>(); | ||
|
||
public override IEnumerable<string> UpdateActorNode(ModData modData, MiniYamlNode actorNode) | ||
{ | ||
var nukePowerTraits = actorNode.ChildrenMatching("NukePower"); | ||
foreach (var nukePowerTrait in nukePowerTraits) | ||
{ | ||
var traitName = nukePowerTrait.Key; | ||
var weaponNode = nukePowerTrait.ChildrenMatching("MissileWeapon").FirstOrDefault(); | ||
if (weaponNode == null) | ||
continue; | ||
|
||
var weaponName = weaponNode.Value.Value; | ||
|
||
weaponsToUpdate.Add(new Tuple<string, string, string>(weaponName, traitName, "{0} ({1})".F(actorNode.Key, actorNode.Location.Filename))); | ||
|
||
nukePowerTrait.RemoveNodes("FlashType"); | ||
} | ||
|
||
yield break; | ||
} | ||
|
||
public override IEnumerable<string> AfterUpdate(ModData modData) | ||
{ | ||
if (weaponsToUpdate.Any()) | ||
yield return "Add a FlashPaletteEffectWarhead to the following weapons:\n" + | ||
UpdateUtils.FormatMessageList(weaponsToUpdate.Select(x => "Weapon `{0}`, used by trait `{1}` on actor {2}".F(x.Item1, x.Item2, x.Item3))); | ||
|
||
weaponsToUpdate.Clear(); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
#region Copyright & License Information | ||
/* | ||
* Copyright 2007-2020 The OpenRA Developers (see AUTHORS) | ||
* This file is part of OpenRA, which is free software. It is made | ||
* available to you under the terms of the GNU General Public License | ||
* as published by the Free Software Foundation, either version 3 of | ||
* the License, or (at your option) any later version. For more | ||
* information, see COPYING. | ||
*/ | ||
#endregion | ||
|
||
using OpenRA.GameRules; | ||
using OpenRA.Mods.Common.Traits; | ||
using OpenRA.Traits; | ||
|
||
namespace OpenRA.Mods.Common.Warheads | ||
{ | ||
[Desc("Used to trigger a FlashPaletteEffect trait on the world actor.")] | ||
public class FlashPaletteEffectWarhead : Warhead | ||
{ | ||
[Desc("Corresponds to `Type` from `FlashPaletteEffect` on the world actor.")] | ||
public readonly string FlashType = null; | ||
|
||
[FieldLoader.Require] | ||
[Desc("Duration of the flashing, measured in ticks. Set to -1 to default to the `Length` of the `FlashPaletteEffect`.")] | ||
public readonly int Duration = 0; | ||
|
||
public override void DoImpact(Target target, WarheadArgs args) | ||
{ | ||
foreach (var flash in args.SourceActor.World.WorldActor.TraitsImplementing<FlashPaletteEffect>()) | ||
if (flash.Info.Type == FlashType) | ||
flash.Enable(Duration); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters