using UnityEngine; using System.Linq; using System; using System.Collections.Generic; using System.Security.Cryptography; using UnityEngine.Events; using UnityEngine.SceneManagement; using UnityEngine.UI; using System.Text; using HMUI; using System.Text.RegularExpressions; using System.IO; namespace SongBrowserPlugin { public class SongSortButton { public SongSortMode SortMode; public Button Button; } public class SongBrowserMasterViewController : MonoBehaviour { // Which Scene index to run on public const int MenuIndex = 1; private Logger _log = new Logger("SongBrowserMasterViewController"); // Private UI fields private SongSelectionMasterViewController _songSelectionMasterView; private SongDetailViewController _songDetailViewController; private SongListViewController _songListViewController; private MainMenuViewController _mainMenuViewController; private Dictionary _icons; private Button _buttonInstance; private List _sortButtonGroup; private Button _addFavoriteButton; private String _addFavoriteButtonText = null; // Model private SongBrowserModel _model; /// /// Unity OnLoad /// public static void OnLoad() { if (Instance != null) return; new GameObject("Song Browser").AddComponent(); } public static SongBrowserMasterViewController Instance; /// /// Builds the UI for this plugin. /// private void Awake() { _log.Debug("Awake()"); Instance = this; SceneManager.activeSceneChanged += SceneManagerOnActiveSceneChanged; SongLoaderPlugin.SongLoader.SongsLoaded.AddListener(OnSongLoaderLoadedSongs); DontDestroyOnLoad(gameObject); } /// /// Get a handle to the view controllers we are going to add elements to. /// public void AcquireUIElements() { _icons = new Dictionary(); foreach (Sprite sprite in Resources.FindObjectsOfTypeAll()) { if (_icons.ContainsKey(sprite.name)) { continue; } _icons.Add(sprite.name, sprite); } try { _buttonInstance = Resources.FindObjectsOfTypeAll