Skip to content

Commit 6f9e9c2

Browse files
code refactoring, interrupting attack animation if changing combat target
1 parent afb70e7 commit 6f9e9c2

File tree

3 files changed

+28
-12
lines changed

3 files changed

+28
-12
lines changed

Combat/CombatTarget.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
using RPG.Attributes;
22
using RPG.Core;
3-
using RPG.NPC;
43
using UnityEngine;
54

65
namespace RPG.Combat {
76

87
[RequireComponent(typeof(Health))]
9-
public class CombatTarget : NPCBase {
8+
public class CombatTarget : MonoBehaviour, IRaycastable {
109

11-
public new CursorType Cursor => CursorType.Combat;
10+
public CursorType Cursor => CursorType.Combat;
1211

13-
public new bool HandleRaycast(GameObject callingObject) {
12+
public bool HandleRaycast(GameObject callingObject) {
1413
Fighter fighter = callingObject.GetComponent<Fighter>();
1514
if (!fighter.CanAttack(gameObject)) {
1615
return false;

Combat/Fighter.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public class Fighter : MonoBehaviour, IAction, ISaveable, IModifierProvider {
2222
private const string ATTACK_TRIGGER = "attack";
2323
private const string STOP_ATTACK_TRIGGER = "stopAttack";
2424
private Health target;
25+
private Health prevTarget;
2526
private Mover mover;
2627
private ActionScheduler actionScheduler;
2728
private Animator animator;
@@ -73,6 +74,10 @@ private void Update() {
7374
return;
7475
}
7576

77+
if (CombatTargetChanged(target)) {
78+
StopAttack();
79+
}
80+
7681
if (!GetIsInRange(target.transform)) {
7782
mover.MoveTo(target.transform.position, 1f);
7883
stopped = false;
@@ -85,6 +90,18 @@ private void Update() {
8590
}
8691
}
8792

93+
private bool CombatTargetChanged(Health newTarget) {
94+
if (prevTarget == null) {
95+
prevTarget = newTarget;
96+
return false;
97+
}
98+
if (newTarget != prevTarget) {
99+
prevTarget = newTarget;
100+
return true;
101+
}
102+
return false;
103+
}
104+
88105
private Weapon SetupDefaultWeapon() {
89106
return defaultWeapon.Spawn(rightHandTransform, leftHandTransform, animator);
90107
}

SceneManagement/SavingWrapper.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,6 @@ private void Awake() {
1414
StartCoroutine(LoadLastScene());
1515
}
1616

17-
private IEnumerator LoadLastScene() {
18-
savingSystem = GetComponent<SavingSystem>();
19-
yield return savingSystem.LoadLastScene(defaultSaveFile);
20-
fader = FindObjectOfType<Fader>();
21-
fader.FadeOutImmediate();
22-
yield return fader.FadeIn(fadeOutTime);
23-
}
24-
2517
private void Update() {
2618
if (Input.GetKeyDown(KeyCode.S)) {
2719
Save();
@@ -34,6 +26,14 @@ private void Update() {
3426
}
3527
}
3628

29+
private IEnumerator LoadLastScene() {
30+
savingSystem = GetComponent<SavingSystem>();
31+
yield return savingSystem.LoadLastScene(defaultSaveFile);
32+
fader = FindObjectOfType<Fader>();
33+
fader.FadeOutImmediate();
34+
yield return fader.FadeIn(fadeOutTime);
35+
}
36+
3737
public void Save() {
3838
savingSystem.Save(defaultSaveFile);
3939
}

0 commit comments

Comments
 (0)