convert game playing..
This commit is contained in:
@@ -141,7 +141,7 @@ namespace BumpCombat.PlayModeTests
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator EnemyStatusVisual_LoadsBothSheetsAndSharesGroundAnchor()
|
||||
public IEnumerator EnemyStatusVisual_LoadsBothSheetsAndFollowsRenderedAnchor()
|
||||
{
|
||||
yield return LoadCombatPrototype();
|
||||
EnemyController enemy = FindOrSpawnEnemy();
|
||||
@@ -151,7 +151,7 @@ namespace BumpCombat.PlayModeTests
|
||||
Assert.That(source == null, Is.False);
|
||||
enemy.transform.localScale = Vector3.one * 0.8f;
|
||||
source.flipX = true;
|
||||
source.flipY = false;
|
||||
source.flipY = true;
|
||||
|
||||
Assert.That(enemy.ApplyIgnite(3f, 0.5f, 0.01f), Is.True);
|
||||
Assert.That(enemy.ApplyShock(3f, 0.2f), Is.True);
|
||||
@@ -172,15 +172,18 @@ namespace BumpCombat.PlayModeTests
|
||||
Assert.That(ignite.sprite.pixelsPerUnit, Is.EqualTo(32f).Within(0.01f));
|
||||
Assert.That(shock.sprite.pixelsPerUnit, Is.EqualTo(32f).Within(0.01f));
|
||||
|
||||
Vector3 expectedStatusPosition = ExpectedStatusPosition(enemy, source);
|
||||
Assert.That(
|
||||
Vector3.Distance(
|
||||
ignite.transform.position,
|
||||
(Vector3)enemy.GroundAnchorPosition),
|
||||
ignite.transform.parent,
|
||||
Is.EqualTo(GetCurrentVisualTransform(enemy)));
|
||||
Assert.That(
|
||||
shock.transform.parent,
|
||||
Is.EqualTo(GetCurrentVisualTransform(enemy)));
|
||||
Assert.That(
|
||||
Vector3.Distance(ignite.transform.position, expectedStatusPosition),
|
||||
Is.LessThan(0.0001f));
|
||||
Assert.That(
|
||||
Vector3.Distance(
|
||||
shock.transform.position,
|
||||
(Vector3)enemy.GroundAnchorPosition),
|
||||
Vector3.Distance(shock.transform.position, expectedStatusPosition),
|
||||
Is.LessThan(0.0001f));
|
||||
Assert.That(ignite.flipX, Is.EqualTo(source.flipX));
|
||||
Assert.That(shock.flipX, Is.EqualTo(source.flipX));
|
||||
@@ -203,6 +206,122 @@ namespace BumpCombat.PlayModeTests
|
||||
Assert.That(enemy.transform.Find("Stun Runes") == null, Is.False);
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator EnemyStatusVisual_UsesRenderedTransformWhenPhysicsPositionDiffers()
|
||||
{
|
||||
yield return LoadCombatPrototype();
|
||||
EnemyController enemy = FindOrSpawnEnemy();
|
||||
Assert.That(enemy, Is.Not.Null);
|
||||
|
||||
Rigidbody2D body = enemy.GetComponent<Rigidbody2D>();
|
||||
SpriteRenderer source = enemy.GetComponent<SpriteRenderer>();
|
||||
Assert.That(body, Is.Not.Null);
|
||||
Assert.That(source, Is.Not.Null);
|
||||
|
||||
Time.timeScale = 0f;
|
||||
body.simulated = false;
|
||||
|
||||
Vector2 physicalPosition = (Vector2)enemy.transform.position
|
||||
+ Vector2.down * 3f;
|
||||
Vector3 renderedPosition = enemy.transform.position
|
||||
+ Vector3.up * 1.5f;
|
||||
body.position = physicalPosition;
|
||||
enemy.transform.position = renderedPosition;
|
||||
|
||||
Assert.That(
|
||||
Vector2.Distance(body.position, enemy.transform.position),
|
||||
Is.GreaterThan(1f));
|
||||
Assert.That(enemy.ApplyIgnite(3f, 0.5f, 0.01f), Is.True);
|
||||
|
||||
ArtifactStatusVisual statusVisual =
|
||||
enemy.GetComponent<ArtifactStatusVisual>();
|
||||
Assert.That(statusVisual, Is.Not.Null);
|
||||
statusVisual.SendMessage(
|
||||
"LateUpdate",
|
||||
SendMessageOptions.RequireReceiver);
|
||||
|
||||
SpriteRenderer ignite = FindChildRenderer(enemy, IgniteVisualName);
|
||||
Assert.That(ignite, Is.Not.Null);
|
||||
Assert.That(
|
||||
Vector3.Distance(
|
||||
ignite.transform.position,
|
||||
ExpectedStatusPosition(enemy, source)),
|
||||
Is.LessThan(0.0001f));
|
||||
Assert.That(
|
||||
Vector2.Distance(ignite.transform.position, body.position),
|
||||
Is.GreaterThan(0.5f));
|
||||
|
||||
body.simulated = true;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator EnemyStatusVisual_FollowsLaunchAndFogVisibility()
|
||||
{
|
||||
yield return LoadCombatPrototype();
|
||||
EnemyController enemy = FindOrSpawnEnemy();
|
||||
Assert.That(enemy, Is.Not.Null);
|
||||
|
||||
SpriteRenderer source = enemy.GetComponent<SpriteRenderer>();
|
||||
Assert.That(source, Is.Not.Null);
|
||||
Assert.That(enemy.ApplyIgnite(3f, 0.5f, 0.01f), Is.True);
|
||||
yield return null;
|
||||
|
||||
SpriteRenderer ignite = FindChildRenderer(enemy, IgniteVisualName);
|
||||
Assert.That(ignite, Is.Not.Null);
|
||||
|
||||
enemy.PlayLaunchVisual(Vector2.right, 0.8f, 0.4f);
|
||||
yield return null;
|
||||
|
||||
Transform launchVisual = GetCurrentVisualTransform(enemy);
|
||||
Assert.That(enemy.IsLaunchVisualActive, Is.True);
|
||||
Assert.That(launchVisual, Is.Not.EqualTo(enemy.transform));
|
||||
Assert.That(ignite.transform.parent, Is.EqualTo(launchVisual));
|
||||
Assert.That(
|
||||
Vector3.Distance(
|
||||
ignite.transform.position,
|
||||
ExpectedStatusPosition(enemy, source)),
|
||||
Is.LessThan(0.0001f));
|
||||
|
||||
enemy.SetFogVisibility(false);
|
||||
yield return null;
|
||||
Assert.That(ignite.forceRenderingOff, Is.True);
|
||||
|
||||
SpriteRenderer airborneRenderer =
|
||||
launchVisual.GetComponent<SpriteRenderer>();
|
||||
Assert.That(airborneRenderer, Is.Not.Null);
|
||||
Assert.That(airborneRenderer.forceRenderingOff, Is.True);
|
||||
|
||||
Assert.That(enemy.ApplyShock(3f, 0.2f), Is.True);
|
||||
yield return null;
|
||||
SpriteRenderer shock = FindChildRenderer(enemy, ShockVisualName);
|
||||
Assert.That(shock, Is.Not.Null);
|
||||
Assert.That(shock.forceRenderingOff, Is.True);
|
||||
|
||||
enemy.SetFogVisibility(true);
|
||||
yield return null;
|
||||
Assert.That(ignite.forceRenderingOff, Is.False);
|
||||
Assert.That(shock.forceRenderingOff, Is.False);
|
||||
Assert.That(airborneRenderer.forceRenderingOff, Is.False);
|
||||
|
||||
yield return new WaitForSeconds(0.45f);
|
||||
yield return null;
|
||||
|
||||
Assert.That(enemy.IsLaunchVisualActive, Is.False);
|
||||
Assert.That(enemy.IsIgnited, Is.True);
|
||||
|
||||
SpriteRenderer landedIgnite =
|
||||
FindChildRenderer(enemy, IgniteVisualName);
|
||||
Assert.That(landedIgnite, Is.Not.Null);
|
||||
Assert.That(
|
||||
landedIgnite.transform.parent,
|
||||
Is.EqualTo(enemy.transform));
|
||||
Assert.That(
|
||||
Vector3.Distance(
|
||||
landedIgnite.transform.position,
|
||||
ExpectedStatusPosition(enemy, source)),
|
||||
Is.LessThan(0.0001f));
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator EnemyStatusVisual_FreezesDuringPauseAndAdvancesAfterResume()
|
||||
{
|
||||
@@ -438,6 +557,26 @@ namespace BumpCombat.PlayModeTests
|
||||
return null;
|
||||
}
|
||||
|
||||
private static Transform GetCurrentVisualTransform(EnemyController enemy)
|
||||
{
|
||||
Transform airborneVisual =
|
||||
enemy.transform.Find("Airborne Enemy Visual");
|
||||
return airborneVisual != null
|
||||
? airborneVisual
|
||||
: enemy.transform;
|
||||
}
|
||||
|
||||
private static Vector3 ExpectedStatusPosition(
|
||||
EnemyController enemy,
|
||||
SpriteRenderer source)
|
||||
{
|
||||
float anchorOffsetY = source.flipY
|
||||
? 13f / 32f
|
||||
: -13f / 32f;
|
||||
return GetCurrentVisualTransform(enemy).TransformPoint(
|
||||
new Vector3(0f, anchorOffsetY, 0f));
|
||||
}
|
||||
|
||||
private static SpriteRenderer FindChildRenderer(
|
||||
EnemyController enemy,
|
||||
string objectName)
|
||||
|
||||
Reference in New Issue
Block a user