From 172d1e403b5586a2092934e7d498cca49a727564 Mon Sep 17 00:00:00 2001
From: dgg1dbg <jeongminx@snu.ac.kr>
Date: Wed, 11 Dec 2024 20:06:30 +0900
Subject: [PATCH 1/2] =?UTF-8?q?particle=20=EC=A0=81=EC=9A=A9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 Assets/Scenes/LevelOneScene.unity             | 48 +++++++++++++++++++
 Assets/Scenes/LevelTwoScene.unity             | 48 +++++++++++++++++++
 Assets/Scripts/LevelClear.cs                  |  2 +-
 Assets/Scripts/ParticleManager.cs             | 36 ++++++++++++++
 Assets/Scripts/ParticleManager.cs.meta        | 11 +++++
 Assets/Scripts/PlayerBehaviour.cs             | 13 +++--
 .../Settings.json                             | 12 ++---
 7 files changed, 160 insertions(+), 10 deletions(-)
 create mode 100644 Assets/Scripts/ParticleManager.cs
 create mode 100644 Assets/Scripts/ParticleManager.cs.meta

diff --git a/Assets/Scenes/LevelOneScene.unity b/Assets/Scenes/LevelOneScene.unity
index 8277a39..8c25526 100644
--- a/Assets/Scenes/LevelOneScene.unity
+++ b/Assets/Scenes/LevelOneScene.unity
@@ -16555,6 +16555,53 @@ Transform:
   m_CorrespondingSourceObject: {fileID: 253986412282149583, guid: ca1aa9b18dfd040b4a78ed24cb2df9bf, type: 3}
   m_PrefabInstance: {fileID: 666104837}
   m_PrefabAsset: {fileID: 0}
+--- !u!1 &666761484
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 666761486}
+  - component: {fileID: 666761485}
+  m_Layer: 0
+  m_Name: ParticleManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &666761485
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 666761484}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d8c95c6be162b4134b6a802f6274b722, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  respawnEffect: {fileID: 2641121113345803941, guid: bac9dfb673bd44a83b396dc74e134bbf, type: 3}
+  disposeEffect: {fileID: 2641121113345803941, guid: 2bf7e45ce383a43e6bfa101d3113d1a7, type: 3}
+  clearEffect: {fileID: 2641121113345803941, guid: 2bf7e45ce383a43e6bfa101d3113d1a7, type: 3}
+--- !u!4 &666761486
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 666761484}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 23.554657, y: -436.81015, z: 596.1596}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 12
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &666771378
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -44288,6 +44335,7 @@ MonoBehaviour:
   moveSpeed: 2
   rotationSpeed: 10
   referenceSpeed: 0.5
+  particleManager: {fileID: 666761485}
 --- !u!114 &1793613793
 MonoBehaviour:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scenes/LevelTwoScene.unity b/Assets/Scenes/LevelTwoScene.unity
index 68e73f0..38251cc 100644
--- a/Assets/Scenes/LevelTwoScene.unity
+++ b/Assets/Scenes/LevelTwoScene.unity
@@ -5624,6 +5624,53 @@ MonoBehaviour:
   zStart: 0.5
   zStep: 1
   y: 0.49
+--- !u!1 &84927914
+GameObject:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  serializedVersion: 6
+  m_Component:
+  - component: {fileID: 84927916}
+  - component: {fileID: 84927915}
+  m_Layer: 0
+  m_Name: ParticleManager
+  m_TagString: Untagged
+  m_Icon: {fileID: 0}
+  m_NavMeshLayer: 0
+  m_StaticEditorFlags: 0
+  m_IsActive: 1
+--- !u!114 &84927915
+MonoBehaviour:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 84927914}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: d8c95c6be162b4134b6a802f6274b722, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
+  respawnEffect: {fileID: 2641121113345803941, guid: bac9dfb673bd44a83b396dc74e134bbf, type: 3}
+  disposeEffect: {fileID: 2641121113345803941, guid: 2bf7e45ce383a43e6bfa101d3113d1a7, type: 3}
+  clearEffect: {fileID: 2641121113345803941, guid: 2bf7e45ce383a43e6bfa101d3113d1a7, type: 3}
+--- !u!4 &84927916
+Transform:
+  m_ObjectHideFlags: 0
+  m_CorrespondingSourceObject: {fileID: 0}
+  m_PrefabInstance: {fileID: 0}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 84927914}
+  m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+  m_LocalPosition: {x: 23.554657, y: -436.81015, z: 596.1596}
+  m_LocalScale: {x: 1, y: 1, z: 1}
+  m_ConstrainProportionsScale: 0
+  m_Children: []
+  m_Father: {fileID: 0}
+  m_RootOrder: 14
+  m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
 --- !u!1001 &85619834
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -33274,6 +33321,7 @@ MonoBehaviour:
   moveSpeed: 2
   rotationSpeed: 10
   referenceSpeed: 0.5
+  particleManager: {fileID: 84927915}
 --- !u!114 &508233734
 MonoBehaviour:
   m_ObjectHideFlags: 0
diff --git a/Assets/Scripts/LevelClear.cs b/Assets/Scripts/LevelClear.cs
index 9194aa5..a0768c5 100644
--- a/Assets/Scripts/LevelClear.cs
+++ b/Assets/Scripts/LevelClear.cs
@@ -119,6 +119,6 @@ public void Restart()
         }
 
         AudioManager.Instance.PlaySFX("ButtonClick");
-        SceneManager.LoadScene("Level" + level.ToString());
+        
     }
 }
diff --git a/Assets/Scripts/ParticleManager.cs b/Assets/Scripts/ParticleManager.cs
new file mode 100644
index 0000000..b376457
--- /dev/null
+++ b/Assets/Scripts/ParticleManager.cs
@@ -0,0 +1,36 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ParticleManager : MonoBehaviour
+{
+    public ParticleSystem respawnEffect;
+    public ParticleSystem disposeEffect;
+    public ParticleSystem clearEffect;
+
+    public void PlayRespawnEffect(Vector3 position)
+    {
+        if (respawnEffect != null)
+        {
+            Instantiate(respawnEffect, position, Quaternion.identity).Play();
+        }
+    }
+    
+    public void PlayDisposeEffect(Vector3 position)
+    {
+        if (disposeEffect != null)
+        {
+            Instantiate(disposeEffect, position, Quaternion.identity).Play();
+        }
+    }
+    
+    public IEnumerator PlayLevelClearEffect(Vector3 position)
+    {
+        if (clearEffect != null)
+        {
+            Instantiate(clearEffect, position, Quaternion.identity).Play();
+        }
+        yield return new WaitForSeconds(1.5f);
+    }
+    
+}
diff --git a/Assets/Scripts/ParticleManager.cs.meta b/Assets/Scripts/ParticleManager.cs.meta
new file mode 100644
index 0000000..1c5f812
--- /dev/null
+++ b/Assets/Scripts/ParticleManager.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: d8c95c6be162b4134b6a802f6274b722
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 
diff --git a/Assets/Scripts/PlayerBehaviour.cs b/Assets/Scripts/PlayerBehaviour.cs
index b7a3e91..ba80d58 100644
--- a/Assets/Scripts/PlayerBehaviour.cs
+++ b/Assets/Scripts/PlayerBehaviour.cs
@@ -38,6 +38,8 @@ public class PlayerBehaviour : MonoBehaviour
 
     private float goalZ;
 
+    [SerializeField] private ParticleManager particleManager;
+
     private void Start()
     {
         _obstacleTilemap = obstacleGrid.GetComponentInChildren<Tilemap>();
@@ -85,12 +87,13 @@ private void Update()
 
         if (transform.position.z >= goalZ)
         {
-            ClearGame();
+            StartCoroutine(ClearGame());
         }
     }
 
-    private void ClearGame()
+    private IEnumerator ClearGame()
     {
+        yield return StartCoroutine(particleManager.PlayLevelClearEffect(transform.position));
         int level = DataManager.Instance.GetActiveLevelData().level;
         int score = ScoreModel.Instance.CalculateFinalScore(transform.position.z);
         ActiveLevelData levelClearData = new ActiveLevelData(level, score);
@@ -201,7 +204,7 @@ public void Respawn()
         // If respawn position is past goal, clear game
         if (transform.position.z >= goalZ)
         {
-            ClearGame();
+            StartCoroutine(ClearGame());
             return;
         }
 
@@ -220,6 +223,9 @@ public void Respawn()
         // Stop walking animation
         _isWalking = false;
         _animator.SetBool("isWalking", false);
+        
+        // Play Respawn Particle
+        particleManager.PlayRespawnEffect(transform.position);
     }
 
     private void QuantizePosition()
@@ -272,6 +278,7 @@ public void DisposeTrash()
             StageManager.Instance.bagController.RemoveTrash();
             trashType = StageManager.Instance.bagController.GetFirstTrashType();
         }
+        particleManager.PlayDisposeEffect(transform.position);
 
         StartCoroutine(nameof(TrashDisposeCooldownRoutine));
     }
diff --git a/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json b/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
index 757e1a0..ad11087 100644
--- a/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
+++ b/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
@@ -1,7 +1,7 @@
 {
-  "m_Name": "Settings",
-  "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json",
-  "m_Dictionary": {
-    "m_DictionaryValues": []
-  }
-}
+    "m_Name": "Settings",
+    "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json",
+    "m_Dictionary": {
+        "m_DictionaryValues": []
+    }
+}
\ No newline at end of file

From c434e8f45a8ab76bb91cda9d9a00f3e910aab396 Mon Sep 17 00:00:00 2001
From: super-linter <super-linter@super-linter.dev>
Date: Wed, 11 Dec 2024 11:14:44 +0000
Subject: [PATCH 2/2] chore: fix linting issues

---
 Assets/Scripts/LevelClear.cs                         |  2 +-
 Assets/Scripts/ParticleManager.cs                    |  6 +++---
 Assets/Scripts/PlayerBehaviour.cs                    |  6 +++---
 .../com.unity.testtools.codecoverage/Settings.json   | 12 ++++++------
 4 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/Assets/Scripts/LevelClear.cs b/Assets/Scripts/LevelClear.cs
index a0768c5..8bcf056 100644
--- a/Assets/Scripts/LevelClear.cs
+++ b/Assets/Scripts/LevelClear.cs
@@ -119,6 +119,6 @@ public void Restart()
         }
 
         AudioManager.Instance.PlaySFX("ButtonClick");
-        
+
     }
 }
diff --git a/Assets/Scripts/ParticleManager.cs b/Assets/Scripts/ParticleManager.cs
index b376457..9b8dc4f 100644
--- a/Assets/Scripts/ParticleManager.cs
+++ b/Assets/Scripts/ParticleManager.cs
@@ -15,7 +15,7 @@ public void PlayRespawnEffect(Vector3 position)
             Instantiate(respawnEffect, position, Quaternion.identity).Play();
         }
     }
-    
+
     public void PlayDisposeEffect(Vector3 position)
     {
         if (disposeEffect != null)
@@ -23,7 +23,7 @@ public void PlayDisposeEffect(Vector3 position)
             Instantiate(disposeEffect, position, Quaternion.identity).Play();
         }
     }
-    
+
     public IEnumerator PlayLevelClearEffect(Vector3 position)
     {
         if (clearEffect != null)
@@ -32,5 +32,5 @@ public IEnumerator PlayLevelClearEffect(Vector3 position)
         }
         yield return new WaitForSeconds(1.5f);
     }
-    
+
 }
diff --git a/Assets/Scripts/PlayerBehaviour.cs b/Assets/Scripts/PlayerBehaviour.cs
index ba80d58..605a566 100644
--- a/Assets/Scripts/PlayerBehaviour.cs
+++ b/Assets/Scripts/PlayerBehaviour.cs
@@ -222,9 +222,9 @@ public void Respawn()
 
         // Stop walking animation
         _isWalking = false;
-        _animator.SetBool("isWalking", false);
-        
-        // Play Respawn Particle
+        _animator.SetBool("isWalking", false);
+
+        // Play Respawn Particle
         particleManager.PlayRespawnEffect(transform.position);
     }
 
diff --git a/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json b/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
index ad11087..757e1a0 100644
--- a/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
+++ b/ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json
@@ -1,7 +1,7 @@
 {
-    "m_Name": "Settings",
-    "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json",
-    "m_Dictionary": {
-        "m_DictionaryValues": []
-    }
-}
\ No newline at end of file
+  "m_Name": "Settings",
+  "m_Path": "ProjectSettings/Packages/com.unity.testtools.codecoverage/Settings.json",
+  "m_Dictionary": {
+    "m_DictionaryValues": []
+  }
+}