using UnityEngine;
using System.Linq;
using System;
using System.Collections.Generic;
using UnityEngine.UI;
using HMUI;
using VRUI;
using SongBrowserPlugin.DataAccess;
using System.IO;
using SongLoaderPlugin;
using System.Security.Cryptography;
using System.Text;
namespace SongBrowserPlugin.UI
{
///
/// Hijack the flow coordinator. Have access to all StandardLevel easily.
///
public class SongBrowserUI : MonoBehaviour
{
// Logging
public const String Name = "SongBrowserUI";
private const float SEGMENT_PERCENT = 0.1f;
private Logger _log = new Logger(Name);
// Beat Saber UI Elements
private StandardLevelSelectionFlowCoordinator _levelSelectionFlowCoordinator;
private StandardLevelListViewController _levelListViewController;
private StandardLevelDetailViewController _levelDetailViewController;
private StandardLevelDifficultyViewController _levelDifficultyViewController;
private StandardLevelSelectionNavigationController _levelSelectionNavigationController;
private StandardLevelListTableView _levelListTableView;
private RectTransform _tableViewRectTransform;
private Button _tableViewPageUpButton;
private Button _tableViewPageDownButton;
// New UI Elements
private List _sortButtonGroup;
private Button _addFavoriteButton;
private String _addFavoriteButtonText = null;
private SimpleDialogPromptViewController _simpleDialogPromptViewControllerPrefab;
private SimpleDialogPromptViewController _deleteDialog;
private Button _deleteButton;
private Button _pageUpTenPercent;
private Button _pageDownTenPercent;
private SearchKeyboardViewController _searchViewController;
// Debug
private int _sortButtonLastPushedIndex = 0;
private int _lastRow = 0;
// Model
private SongBrowserModel _model;
///
/// Constructor
///
public SongBrowserUI() : base()
{
if (_model == null)
{
_model = new SongBrowserModel();
}
_model.Init();
_sortButtonLastPushedIndex = (int)(_model.Settings.sortMode);
}
///
/// Builds the UI for this plugin.
///
public void CreateUI()
{
_log.Trace("CreateUI()");
try
{
if (_levelSelectionFlowCoordinator == null)
{
_levelSelectionFlowCoordinator = Resources.FindObjectsOfTypeAll().First();
}
if (_levelListViewController == null)
{
_levelListViewController = _levelSelectionFlowCoordinator.GetPrivateField("_levelListViewController");
}
if (_levelDetailViewController == null)
{
_levelDetailViewController = _levelSelectionFlowCoordinator.GetPrivateField("_levelDetailViewController");
}
if (_levelSelectionNavigationController == null)
{
_levelSelectionNavigationController = _levelSelectionFlowCoordinator.GetPrivateField("_levelSelectionNavigationController");
}
if (_levelDifficultyViewController == null)
{
_levelDifficultyViewController = _levelSelectionFlowCoordinator.GetPrivateField("_levelDifficultyViewController");
}
if (_levelListTableView == null)
{
_levelListTableView = this._levelListViewController.GetComponentInChildren();
}
_simpleDialogPromptViewControllerPrefab = Resources.FindObjectsOfTypeAll().First();
this._deleteDialog = UnityEngine.Object.Instantiate(this._simpleDialogPromptViewControllerPrefab);
this._deleteDialog.gameObject.SetActive(false);
this.CreateUIElements();
_levelListViewController.didSelectLevelEvent += OnDidSelectLevelEvent;
}
catch (Exception e)
{
_log.Exception("Exception during CreateUI: ", e);
}
}
///
/// Builds the SongBrowser UI
///
private void CreateUIElements()
{
_log.Trace("CreateUIElements");
try
{
// Gather some transforms and templates to use.
RectTransform sortButtonTransform = this._levelSelectionNavigationController.transform as RectTransform;
RectTransform otherButtonTransform = this._levelDetailViewController.transform as RectTransform;
Button sortButtonTemplate = Resources.FindObjectsOfTypeAll