Add composite destructible thresholds (#3102)

* Add composite destructible thresholds

* Reorder yaml properties

* Update YAML

* Fix YAML

* Re-fix YAML

* Add missing nullable enable

* Go back window component is explosive

* rider
This commit is contained in:
DrSmugleaf
2021-02-09 12:57:21 +01:00
committed by GitHub
parent 205c787773
commit 15f05b565a
58 changed files with 284 additions and 188 deletions

View File

@@ -12,11 +12,12 @@ using static Content.IntegrationTests.Tests.Destructible.DestructibleTestPrototy
namespace Content.IntegrationTests.Tests.Destructible
{
[TestFixture]
[TestOf(typeof(TotalDamageClassesTrigger))]
[TestOf(typeof(DamageClassTrigger))]
[TestOf(typeof(AndTrigger))]
public class DestructibleDamageClassTest : ContentIntegrationTest
{
[Test]
public async Task Test()
public async Task AndTest()
{
var server = StartServerDummyTicker(new ServerContentIntegrationOption
{
@@ -82,7 +83,12 @@ namespace Content.IntegrationTests.Tests.Destructible
Assert.That(threshold.Behaviors, Is.Empty);
Assert.NotNull(threshold.Trigger);
Assert.That(threshold.Triggered, Is.True);
Assert.IsInstanceOf<TotalDamageClassesTrigger>(threshold.Trigger);
Assert.IsInstanceOf<AndTrigger>(threshold.Trigger);
var trigger = (AndTrigger) threshold.Trigger;
Assert.IsInstanceOf<DamageClassTrigger>(trigger.Triggers[0]);
Assert.IsInstanceOf<DamageClassTrigger>(trigger.Triggers[1]);
sThresholdListenerComponent.ThresholdsReached.Clear();
@@ -139,7 +145,12 @@ namespace Content.IntegrationTests.Tests.Destructible
Assert.That(threshold.Behaviors, Is.Empty);
Assert.NotNull(threshold.Trigger);
Assert.That(threshold.Triggered, Is.True);
Assert.IsInstanceOf<TotalDamageClassesTrigger>(threshold.Trigger);
Assert.IsInstanceOf<AndTrigger>(threshold.Trigger);
trigger = (AndTrigger) threshold.Trigger;
Assert.IsInstanceOf<DamageClassTrigger>(trigger.Triggers[0]);
Assert.IsInstanceOf<DamageClassTrigger>(trigger.Triggers[1]);
sThresholdListenerComponent.ThresholdsReached.Clear();

View File

@@ -12,7 +12,8 @@ using static Content.IntegrationTests.Tests.Destructible.DestructibleTestPrototy
namespace Content.IntegrationTests.Tests.Destructible
{
[TestFixture]
[TestOf(typeof(TotalDamageTypesTrigger))]
[TestOf(typeof(DamageTypeTrigger))]
[TestOf(typeof(AndTrigger))]
public class DestructibleDamageTypeTest : ContentIntegrationTest
{
[Test]
@@ -82,7 +83,12 @@ namespace Content.IntegrationTests.Tests.Destructible
Assert.That(threshold.Behaviors, Is.Empty);
Assert.NotNull(threshold.Trigger);
Assert.That(threshold.Triggered, Is.True);
Assert.IsInstanceOf<TotalDamageTypesTrigger>(threshold.Trigger);
Assert.IsInstanceOf<AndTrigger>(threshold.Trigger);
var trigger = (AndTrigger) threshold.Trigger;
Assert.IsInstanceOf<DamageTypeTrigger>(trigger.Triggers[0]);
Assert.IsInstanceOf<DamageTypeTrigger>(trigger.Triggers[1]);
sThresholdListenerComponent.ThresholdsReached.Clear();
@@ -139,7 +145,12 @@ namespace Content.IntegrationTests.Tests.Destructible
Assert.That(threshold.Behaviors, Is.Empty);
Assert.NotNull(threshold.Trigger);
Assert.That(threshold.Triggered, Is.True);
Assert.IsInstanceOf<TotalDamageTypesTrigger>(threshold.Trigger);
Assert.IsInstanceOf<AndTrigger>(threshold.Trigger);
trigger = (AndTrigger) threshold.Trigger;
Assert.IsInstanceOf<DamageTypeTrigger>(trigger.Triggers[0]);
Assert.IsInstanceOf<DamageTypeTrigger>(trigger.Triggers[1]);
sThresholdListenerComponent.ThresholdsReached.Clear();

View File

@@ -21,11 +21,11 @@
- type: Destructible
thresholds:
- trigger:
!type:TotalDamageTrigger
!type:DamageTrigger
damage: 20
triggersOnce: false
- trigger:
!type:TotalDamageTrigger
!type:DamageTrigger
damage: 50
triggersOnce: false
behaviors:
@@ -48,7 +48,7 @@
- type: Destructible
thresholds:
- trigger:
!type:TotalDamageTrigger
!type:DamageTrigger
damage: 50
behaviors:
- !type:PlaySoundBehavior
@@ -70,13 +70,16 @@
- type: Destructible
thresholds:
- trigger:
!type:TotalDamageTypesTrigger
damage:
Blunt: 10
Slash: 10
!type:AndTrigger
triggers:
- !type:DamageTypeTrigger
type: Blunt
damage: 10
- !type:DamageTypeTrigger
type: Slash
damage: 10
- type: TestThresholdListener
- type: entity
id: {DestructibleDamageClassEntityId}
name: {DestructibleDamageClassEntityId}
@@ -85,10 +88,14 @@
- type: Destructible
thresholds:
- trigger:
!type:TotalDamageClassesTrigger
damage:
Brute: 10
Burn: 10
!type:AndTrigger
triggers:
- !type:DamageClassTrigger
class: Brute
damage: 10
- !type:DamageClassTrigger
class: Burn
damage: 10
- type: TestThresholdListener";
}
}

View File

@@ -191,7 +191,7 @@ namespace Content.IntegrationTests.Tests.Destructible
// Verify the first one, should be the lowest one (20)
msg = sThresholdListenerComponent.ThresholdsReached[0];
var trigger = (TotalDamageTrigger) msg.Threshold.Trigger;
var trigger = (DamageTrigger) msg.Threshold.Trigger;
Assert.NotNull(trigger);
Assert.That(trigger.Damage, Is.EqualTo(20));
@@ -202,7 +202,7 @@ namespace Content.IntegrationTests.Tests.Destructible
// Verify the second one, should be the highest one (50)
msg = sThresholdListenerComponent.ThresholdsReached[1];
trigger = (TotalDamageTrigger) msg.Threshold.Trigger;
trigger = (DamageTrigger) msg.Threshold.Trigger;
Assert.NotNull(trigger);
Assert.That(trigger.Damage, Is.EqualTo(50));