Move ruleset config to main scene. Add title for UI.

This commit is contained in:
2023-02-06 22:55:14 +08:00
parent c0744a3464
commit da68c8b877
27 changed files with 94 additions and 35 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -1,7 +1,8 @@
fileFormatVersion: 2
guid: 215ebdd4cb9187741a2e24f5e7d8511d
DefaultImporter:
guid: 2e0c61e29fd90f04b9e41265d93e2029
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d815e4d844e6a1c4d849e96e199f8881
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 82867c59112ff5a419fbea2ebff2d3b9
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 7400000
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,10 @@
using UnityEngine;
namespace Cryville.Common.Unity.UI {
public class SetIntegerParameterBehaviour : SetParameterBehaviour {
[SerializeField] int m_value;
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) {
animator.SetInteger(m_name, m_value);
}
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 57079cdf55a0d1149903f00ee732fa85
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
using UnityEngine;
namespace Cryville.Common.Unity.UI {
public abstract class SetParameterBehaviour : StateMachineBehaviour {
[SerializeField] protected string m_name;
public override abstract void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex);
}
}

View File

@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: d48088ca586ef5a41a42f6564e35b230
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,6 @@
using Cryville.Common;
using Cryville.Common.Unity.UI;
using Cryville.Crtr.Config;
using Newtonsoft.Json;
using System.Collections.Generic;
using UnityEngine;
@@ -12,11 +13,12 @@ namespace Cryville.Crtr.Browsing {
private Button m_playButton;
[SerializeField]
private Button m_configButton;
[SerializeField]
private ConfigPanelMaster m_configPanel;
private DockLayoutGroup _group;
public ResourceBrowser MainBrowser { get; private set; }
private DetailPanel _detailPanel;
private SettingsPanel _settingsPanel;
readonly List<ResourceBrowserUnit> _units = new List<ResourceBrowserUnit>();
#pragma warning disable IDE0051
@@ -25,7 +27,6 @@ namespace Cryville.Crtr.Browsing {
MainBrowser = transform.GetChild(0).GetComponent<ResourceBrowser>();
MainBrowser.ResourceManager = new LegacyResourceManager(Settings.Default.GameDataPath);
_detailPanel = transform.GetChild(1).GetComponent<DetailPanel>();
_settingsPanel = transform.GetChild(2).GetComponent<SettingsPanel>();
_units.Add(MainBrowser);
_units.Add(_detailPanel);
}
@@ -80,12 +81,6 @@ namespace Cryville.Crtr.Browsing {
public void OpenConfig(int id, ChartDetail detail) {
SetDataSettings(id, detail);
#if UNITY_5_3_OR_NEWER
SceneManager.LoadScene("Config", LoadSceneMode.Additive);
#else
Application.LoadLevelAdditive("Config");
#endif
GameObject.Find("/Master").GetComponent<Master>().HideMenu();
}
void SetDataSettings(int id, ChartDetail detail) {

View File

@@ -3,11 +3,13 @@ using System;
using System.IO;
using System.Text;
using UnityEngine;
using UnityEngine.SceneManagement;
using Logger = Cryville.Common.Logger;
namespace Cryville.Crtr.Config {
public class ConfigScene : MonoBehaviour {
public class ConfigPanelMaster : MonoBehaviour {
[SerializeField]
Menu m_menu;
[SerializeField]
Transform m_content;
@@ -20,7 +22,7 @@ namespace Cryville.Crtr.Config {
public Ruleset ruleset;
RulesetConfig _rscfg;
void Start() {
void OnEnable() {
try {
ChartPlayer.etor = new PdtEvaluator();
FileInfo file = new FileInfo(
@@ -57,11 +59,13 @@ namespace Cryville.Crtr.Config {
var proxy = new InputProxy(ruleset.Root, null);
proxy.LoadFrom(_rscfg.inputs);
m_inputConfigPanel.proxy = proxy;
m_inputConfigPanel.OnConfigEnable();
}
catch (Exception ex) {
Popup.CreateException(ex);
Logger.Log("main", 4, "Config", "An error occured while loading the config: {0}", ex);
ReturnToMenu();
m_menu.Back();
}
}
@@ -72,7 +76,7 @@ namespace Cryville.Crtr.Config {
cat.SetActive(true);
}
public void SaveAndReturnToMenu() {
void OnDisable() {
m_inputConfigPanel.proxy.SaveTo(_rscfg.inputs);
m_inputConfigPanel.proxy.Dispose();
FileInfo cfgfile = new FileInfo(
@@ -81,15 +85,7 @@ namespace Cryville.Crtr.Config {
using (StreamWriter cfgwriter = new StreamWriter(cfgfile.FullName, false, Encoding.UTF8)) {
cfgwriter.Write(JsonConvert.SerializeObject(_rscfg, Game.GlobalJsonSerializerSettings));
}
ReturnToMenu();
}
public void ReturnToMenu() {
GameObject.Find("Master").GetComponent<Master>().ShowMenu();
#if UNITY_5_5_OR_NEWER
SceneManager.UnloadSceneAsync("Config");
#elif UNITY_5_3_OR_NEWER
SceneManager.UnloadScene("Config");
#endif
m_inputConfigPanel.OnConfigDisable();
}
}
}

View File

@@ -7,7 +7,7 @@ using UnityEngine.UI;
namespace Cryville.Crtr.Config {
public class InputConfigPanel : MonoBehaviour {
[SerializeField]
ConfigScene m_configScene;
ConfigPanelMaster m_configScene;
[SerializeField]
GameObject m_inputDialog;
@@ -24,7 +24,7 @@ namespace Cryville.Crtr.Config {
[SerializeField]
GameObject m_prefabInputConfigEntry;
readonly SimpleInputConsumer _consumer = new SimpleInputConsumer(Game.InputManager);
SimpleInputConsumer _consumer;
public InputProxy proxy;
readonly Dictionary<string, InputConfigPanelEntry> _entries = new Dictionary<string, InputConfigPanelEntry>();
@@ -50,7 +50,10 @@ namespace Cryville.Crtr.Config {
CloseDialog();
}
void Start() {
public void OnConfigEnable() {
CallHelper.Purge(m_entryList);
_entries.Clear();
_consumer = new SimpleInputConsumer(Game.InputManager);
_consumer.Activate();
foreach (var i in m_configScene.ruleset.Root.inputs) {
var e = GameObject.Instantiate(m_prefabInputConfigEntry, m_entryList.transform).GetComponent<InputConfigPanelEntry>();
@@ -61,7 +64,7 @@ namespace Cryville.Crtr.Config {
proxy.ProxyChanged += OnProxyChanged;
}
void OnDestroy() {
public void OnConfigDisable() {
_consumer.Deactivate();
}

View File

@@ -7,13 +7,8 @@ namespace Cryville.Crtr {
private GameObject m_menu;
#pragma warning restore IDE0044
internal void ShowMenu() {
m_menu.SetActive(true);
}
internal void HideMenu() {
m_menu.SetActive(false);
}
internal void ShowMenu() { m_menu.SetActive(true); }
internal void HideMenu() { m_menu.SetActive(false); }
void OnApplicationQuit() {
Game.Shutdown();

View File

@@ -1,5 +1,7 @@
using Cryville.Common.Unity.UI;
using Cryville.Crtr.Browsing;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
namespace Cryville.Crtr {
@@ -13,6 +15,8 @@ namespace Cryville.Crtr {
ProgressBar m_progressBar;
[SerializeField]
SettingsPanel m_settingsPanel;
[SerializeField]
TMP_Text m_title;
#pragma warning restore IDE0044
int frameIndex = 2;
@@ -23,6 +27,7 @@ namespace Cryville.Crtr {
Game.Init();
transform.parent.Find("Canvas/Contents").gameObject.SetActive(true);
m_settingsPanel.Target = Settings.Default;
PushTitle("Chart Browser");
}
void Update() {
if (!initialized) {
@@ -54,9 +59,17 @@ namespace Cryville.Crtr {
}
#pragma warning restore IDE0051
readonly Stack<string> _uiStack = new Stack<string>();
public void PushTitle(string title) {
_uiStack.Push(title);
m_title.SetText(title);
}
public void Back() {
if (m_browserMaster.Back()) return;
m_targetAnimator.SetTrigger("G_Back");
if (_uiStack.Count <= 1) return;
_uiStack.Pop();
m_title.SetText(_uiStack.Peek());
}
public void Quit() {
Application.Quit();

Binary file not shown.