From ea1802aac77dd9f831f0efeea8203390a341ffe0 Mon Sep 17 00:00:00 2001
From: "DESKTOP-5VVRF18\\heal9" <heal9179@daum.net>
Date: Thu, 18 Jan 2018 21:36:32 +0900
Subject: [PATCH] Refactoring

---
 Assets/Script/Judge.cs        | 23 +++++---------
 Assets/Script/JudgeManager.cs | 56 +++++++++++++++++++++--------------
 2 files changed, 40 insertions(+), 39 deletions(-)

diff --git a/Assets/Script/Judge.cs b/Assets/Script/Judge.cs
index 5b844d6..029a8be 100644
--- a/Assets/Script/Judge.cs
+++ b/Assets/Script/Judge.cs
@@ -1,6 +1,4 @@
-using System;
-using System.Collections;
-using System.Collections.Generic;
+using System.Collections.Generic;
 using System.Linq;
 using UnityEngine;
 
@@ -14,16 +12,15 @@ public class Judge
         new Judge("MISS")    { Color = Color.red, IsBreak = true }
     };
 
-    private Judge()
+    internal Judge()
     {
-        ButtonTimingRange = 0f;
         ButtonTimingRange = 0f;
         Score = 0;
         IsBreak = false;
         Color = Color.black;
     }
 
-    private Judge(string name) : this() { Name = name; }
+    internal Judge(string name) : this() { Name = name; }
 
     public string Name { get; private set; }
 
@@ -39,20 +36,14 @@ public class Judge
     public static Judge TestJudge(Note note, float elapsedTime, bool end = false, bool test = false)
     {
         float timing = end ? note.EndTiming : note.StartTiming;
-        float difference = Mathf.Abs(elapsedTime - timing);
+        float difference = elapsedTime - timing;
 
         if (test)
-            Debug.Log(elapsedTime - timing);
+            Debug.Log(difference);
 
-        foreach (Judge judge in JudgeList)
-        {
-            if (difference < judge.ButtonTimingRange)
-            {
-                return judge;
-            }
-        }
+        var result = JudgeList.Where(x => Mathf.Abs(difference) < x.ButtonTimingRange).ToList();
 
-        return JudgeList.Last();
+        return result.Count == 0 ? JudgeList.Last() : result[0];
     }
 
     public static bool IsNonEmptyMiss(Note note, float elapsedTime, bool end = false)
diff --git a/Assets/Script/JudgeManager.cs b/Assets/Script/JudgeManager.cs
index 89f1038..ce7ce2e 100644
--- a/Assets/Script/JudgeManager.cs
+++ b/Assets/Script/JudgeManager.cs
@@ -95,7 +95,7 @@ public class JudgeManager : MonoBehaviour
         judgeText.SetActive(false);
         MotionGuageReset();
 
-        LoadNotes(GameManager.Instance.CurrentTrack.Notes);
+        LoadNotes();
 
         Instantiate(GameManager.Instance.defaultSound);
     }
@@ -271,8 +271,10 @@ public class JudgeManager : MonoBehaviour
         judgeText.GetComponent<Text>().color = judge.Color;
     }
 
-    private void LoadNotes(List<Note> notes)
+    private void LoadNotes()
     {
+        var notes = GameManager.Instance.CurrentTrack.Notes;
+
         foreach (Note note in notes)
         {
             GameObject obj = Instantiate(
@@ -280,35 +282,43 @@ public class JudgeManager : MonoBehaviour
                 noteobj.transform)
                 as GameObject;
 
-            if (note is MotionNote && !note.IsLong)
-                obj.transform.SetParent(smobj.transform);
-            else if (note is MotionNote && note.IsLong)
-                obj.transform.SetParent(lmobj.transform);
-            else if (note.Type == NoteType.MeasureLine || note.Type == NoteType.BeatLine)
-                obj.transform.SetParent(offset.transform);
+            SetNoteParent(note, obj);
 
             if (note.IsLong)
-            {
-                float length = note.Length * ScrollSpeed;
+                StretchLongNote(note, obj);
 
-                var holdTransform = obj.transform.GetChild(1)
-                    .GetComponent<RectTransform>();
-                var endTransform = obj.transform.GetChild(2)
-                    .GetComponent<RectTransform>();
-
-                holdTransform.SetSizeWithCurrentAnchors(
-                    RectTransform.Axis.Horizontal, length);
-                holdTransform.position += new Vector3(length / 2, 0, 0);
-                endTransform.position += new Vector3(length, 0, 0);
-            }
-
-            obj.transform.position += initialPos + new Vector3(
-                note.StartTiming * ScrollSpeed, 0, 0);
+            obj.transform.position += initialPos +
+                (Vector3.right * (note.StartTiming * ScrollSpeed));
 
             obj.AddComponent<Note.Controller>().Instance = note;
         }
     }
 
+    void SetNoteParent(Note note, GameObject obj)
+    {
+        if (note is MotionNote && !note.IsLong)
+            obj.transform.SetParent(smobj.transform);
+        else if (note is MotionNote && note.IsLong)
+            obj.transform.SetParent(lmobj.transform);
+        else if (note.Type == NoteType.MeasureLine || note.Type == NoteType.BeatLine)
+            obj.transform.SetParent(offset.transform);
+    }
+
+    void StretchLongNote(Note note, GameObject obj)
+    {
+        float length = note.Length * ScrollSpeed;
+
+        var holdTransform = obj.transform.GetChild(1)
+            .GetComponent<RectTransform>();
+        var endTransform = obj.transform.GetChild(2)
+            .GetComponent<RectTransform>();
+
+        holdTransform.SetSizeWithCurrentAnchors(
+            RectTransform.Axis.Horizontal, length);
+        holdTransform.position += new Vector3(length / 2, 0, 0);
+        endTransform.position += new Vector3(length, 0, 0);
+    }
+
     private bool onResult = false;
 
     private void ShowResult()
-- 
2.22.0