Commit 3958d258 authored by 16이상민's avatar 16이상민

Refactoring class 'TrackManager' and 'MotionView'.

parent b5ddc19c
This diff is collapsed.
using System.Collections;
using System.Collections.Generic;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
public class TrackManager : MonoBehaviour {
......@@ -21,41 +19,22 @@ public class TrackManager : MonoBehaviour {
[SerializeField]
Texture2D[] backgrounds;
private int currentBackgroundIndex = 0;
private int textureID = 0;
Texture buffer;
public Text Artist;
public Text BPM;
private GameObject selectedTrackItem = null;
private void TrackBrowse()
{
currentBackgroundIndex = (currentBackgroundIndex + 1) % 2;
trackList.GetComponent<RawImage>().texture = backgrounds[currentBackgroundIndex];
if (selectedTrackItem != null)
selectedTrackItem.GetComponentInChildren<Text>().color = Color.white;
selectedTrackItem = trackList.transform.GetChild(2).gameObject;
selectedTrackItem.GetComponentInChildren<Text>().color = Color.black;
if (selectedTrackItem == null)
return;
Artist.text = "Artist :" + selectedTrackItem.gameObject.GetComponent<TrackInfoHolder>().trackInfo.Artist.ToString();
BPM.text = "BPM :" + selectedTrackItem.gameObject.GetComponent<TrackInfoHolder>().trackInfo.BPM.ToString();
for (int i = 0; i < trackInfo.transform.childCount; i++)
Destroy(trackInfo.transform.GetChild(i).gameObject);
foreach (string trackItem in selectedTrackItem.gameObject.GetComponent<TrackInfoHolder>().trackInfo.TrackList)
{
Instantiate(trackInfoItemPrefab, trackInfo.transform).GetComponent<Text>().text = trackItem;
}
}
private GameObject selected = null;
// Use this for initialization
void Start()
{
LoadTracks();
StretchTrackInfoList(GenerateTrackInfos())
.ToList()
.ForEach(x => MakeTrackObject(x));
TrackBrowse();
}
......@@ -78,35 +57,60 @@ public class TrackManager : MonoBehaviour {
if (InputManager.Instance.IsButtonPressed)
StartTrack();
}
void LoadTracks()
IEnumerable<TrackInfo> GenerateTrackInfos()
{
return new DirectoryInfo("Assets/Tracks")
.GetFiles("*.bpe", SearchOption.AllDirectories)
.Select(s => new TrackInfo(s));
}
IEnumerable<TrackInfo> StretchTrackInfoList(IEnumerable<TrackInfo> tracks)
{
foreach (TrackInfo track in LoadTrackInfos())
{
var trackItem = Instantiate(trackItemPrefab, trackList.transform);
var stretched = Enumerable.Empty<TrackInfo>();
Enumerable.Range(0, 1 + (4 / tracks.Count()))
.ToList()
.ForEach(x => stretched.Concat(tracks));
trackItem.AddComponent<TrackInfoHolder>().trackInfo = track;
}
return stretched;
}
void MakeTrackObject(TrackInfo info)
{
Instantiate(trackItemPrefab, trackList.transform)
.AddComponent<TrackInfoHolder>().trackInfo = info;
}
List<TrackInfo> LoadTrackInfos()
private void TrackBrowse()
{
var files = new DirectoryInfo("Assets/Tracks").GetFiles("*.bpe", SearchOption.AllDirectories);
trackList.GetComponent<RawImage>().texture = backgrounds[(textureID ^= 1)];
if (selected != null)
selected.GetComponentInChildren<Text>().color = Color.white;
selected = trackList.transform.GetChild(2).gameObject;
selected.GetComponentInChildren<Text>().color = Color.black;
var tracks = files.Select(s => new TrackInfo(s)).ToList();
while (tracks.Count() < 5)
tracks.AddRange(tracks);
var info = selected.GetComponent<TrackInfoHolder>().trackInfo;
return tracks;
Artist.text = "Artist :" + info.Artist.ToString();
BPM.text = "BPM :" + info.BPM .ToString();
trackInfo.GetComponentsInChildren<Transform>()
.ToList()
.ForEach(x => Destroy(x));
info.TrackList
.ForEach(x => Instantiate(trackInfoItemPrefab, trackInfo.transform)
.GetComponent<Text>()
.text = x);
}
public void StartTrack()
{
// TODO: disable start button if nothing selected
var holder = selectedTrackItem.GetComponent<TrackInfoHolder>();
GameManager.Instance.CurrentTrack = holder.trackInfo;
GameManager.Instance.CurrentTrack = selected.GetComponent<TrackInfoHolder>().trackInfo;
Destroy(GetComponent<InputManager>());
Destroy(this);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment