Remove MuzzleSplitFacings and expose MuzzleSequence to testing.

This commit is contained in:
Matthias Mailänder
2020-08-08 16:04:12 +02:00
committed by abcdefg30
parent b03ab1212f
commit c48eb572e3
9 changed files with 93 additions and 52 deletions

View File

@@ -53,6 +53,7 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Recoil recovery per-frame")]
public readonly WDist RecoilRecovery = new WDist(9);
[SequenceReference]
[Desc("Muzzle flash sequence to render")]
public readonly string MuzzleSequence = null;
@@ -60,9 +61,6 @@ namespace OpenRA.Mods.Common.Traits
[Desc("Palette to render Muzzle flash sequence in")]
public readonly string MuzzlePalette = "effect";
[Desc("Use multiple muzzle images if non-zero")]
public readonly int MuzzleSplitFacings = 0;
[GrantedConditionReference]
[Desc("Condition to grant while reloading.")]
public readonly string ReloadingCondition = null;

View File

@@ -173,10 +173,6 @@ namespace OpenRA.Mods.Common.Traits
// Muzzle facing is fixed once the firing starts
var muzzleAnim = new Animation(self.World, paxRender[a.Actor].GetImage(a.Actor), () => targetYaw);
var sequence = a.Info.MuzzleSequence;
if (a.Info.MuzzleSplitFacings > 0)
sequence += Util.IndexFacing(targetYaw, a.Info.MuzzleSplitFacings).ToString();
var muzzleFlash = new AnimationWithOffset(muzzleAnim,
() => PortOffset(self, port),
() => false,

View File

@@ -76,9 +76,6 @@ namespace OpenRA.Mods.Common.Traits.Render
return;
var sequence = a.Info.MuzzleSequence;
if (a.Info.MuzzleSplitFacings > 0)
sequence += Util.IndexFacing(getFacing(), a.Info.MuzzleSplitFacings).ToString();
visible[barrel] = true;
anims[barrel].Animation.PlayThen(sequence, () => visible[barrel] = false);
}

View File

@@ -0,0 +1,51 @@
#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.Collections.Generic;
namespace OpenRA.Mods.Common.UpdateRules.Rules
{
public class RemoveMuzzleSplitFacings : UpdateRule
{
public override string Name { get { return "Remove Armament.MuzzleSplitFacings."; } }
public override string Description
{
get
{
return "The legacy MuzzleSplitFacings option was removed from Armament.\n" +
"The same result can be created by using `Combine` in the sequence definitions to\n" +
"assemble the different facings sprites into a single sequence.";
}
}
public override IEnumerable<string> UpdateActorNode(ModData modData, MiniYamlNode actorNode)
{
foreach (var a in actorNode.ChildrenMatching("Armament"))
{
var muzzleSplitFacings = a.LastChildMatching("MuzzleSplitFacings");
var sequenceNode = a.LastChildMatching("MuzzleSequence");
if (muzzleSplitFacings != null && sequenceNode != null)
{
var sequence = sequenceNode.Value.Value;
var facings = muzzleSplitFacings.NodeValue<int>() - 1;
var actor = actorNode.Key.ToLowerInvariant();
yield return "The Armament muzzle effect has been removed from {0} ({1}).\n".F(actor, actorNode.Location.Filename) +
"If you would like to restore the muzzle effect you must redefine `MuzzleSequence: {0}`\n".F(sequence) +
"and replace the {0}0-{1} sequence definitions with a single `{0}` sequence that uses\n".F(sequence, facings) +
"the Combine syntax to assemble the different facing sprites.";
a.RemoveNode(muzzleSplitFacings);
a.RemoveNode(sequenceNode);
}
}
}
}
}

View File

@@ -72,6 +72,7 @@ namespace OpenRA.Mods.Common.UpdateRules
new ReplaceFacingAngles(),
new RenameSelfHealing(),
new ReplaceBurns(),
new RemoveMuzzleSplitFacings(),
})
};

View File

@@ -96,7 +96,6 @@ GACTWR:
LocalOffset: 588,120,1358
MuzzleSequence: muzzle
MuzzlePalette: effect-ignore-lighting
MuzzleSplitFacings: 8
Armament@VULCSECONDARY:
RequiresCondition: tower.vulcan
Name: secondary
@@ -104,7 +103,6 @@ GACTWR:
LocalOffset: 588,-120,1358
MuzzleSequence: muzzle
MuzzlePalette: effect-ignore-lighting
MuzzleSplitFacings: 8
Armament@ROCKET:
RequiresCondition: tower.rocket
Weapon: RPGTower

View File

@@ -30,7 +30,6 @@ BGGY:
LocalOffset: 0,-61,543, 0,61,543
MuzzleSequence: muzzle
MuzzlePalette: effect-ignore-lighting
MuzzleSplitFacings: 8
AttackFrontal:
Voice: Attack
PauseOnCondition: empdisable

View File

@@ -1210,36 +1210,26 @@ gactwr:
UseTilesetCode: false
turret-sam: gtctwr_d
Facings: 32
muzzle0: mgun-n
Length: *
Offset: 0, 0, 12
UseTilesetCode: false
muzzle1: mgun-nw
Length: *
Offset: 0, 0, 12
UseTilesetCode: false
muzzle2: mgun-w
Length: *
Offset: 0, 0, 12
UseTilesetCode: false
muzzle3: mgun-sw
Length: *
Offset: 0, 0, 12
UseTilesetCode: false
muzzle4: mgun-s
Length: *
Offset: 0, 0, 12
UseTilesetCode: false
muzzle5: mgun-se
Length: *
Offset: 0, 0, 12
UseTilesetCode: false
muzzle6: mgun-e
Length: *
Offset: 0, 0, 12
UseTilesetCode: false
muzzle7: mgun-ne
Length: *
muzzle:
Combine:
mgun-n:
Length: 6
mgun-nw:
Length: 6
mgun-w:
Length: 6
mgun-sw:
Length: 6
mgun-s:
Length: 6
mgun-se:
Length: 6
mgun-e:
Length: 6
mgun-ne:
Length: 6
Facings: 8
Length: 6
Offset: 0, 0, 12
UseTilesetCode: false
emp-overlay: emp_fx01

View File

@@ -105,16 +105,27 @@ bike:
bggy:
Inherits: ^VehicleOverlays
Defaults:
Length: *
Offset: 0, 0, 24
muzzle0: mgun-n
muzzle1: mgun-nw
muzzle2: mgun-w
muzzle3: mgun-sw
muzzle4: mgun-s
muzzle5: mgun-se
muzzle6: mgun-e
muzzle7: mgun-ne
muzzle:
Combine:
mgun-n:
Length: 6
mgun-nw:
Length: 6
mgun-w:
Length: 6
mgun-sw:
Length: 6
mgun-s:
Length: 6
mgun-se:
Length: 6
mgun-e:
Length: 6
mgun-ne:
Length: 6
Facings: 8
Length: 6
icon: bggyicon
Offset: 0, 0