改改改
重大bug修复:track删除pathnode后不能正确更新 Signed-off-by: TRAfoer <lhf190@outlook.com>
This commit is contained in:
@@ -12,11 +12,11 @@ namespace Ichni.Editor
|
||||
public abstract class DynamicUIElement : MonoBehaviour
|
||||
{
|
||||
Inspector Inspector => EditorManager.instance.uiManager.inspector;
|
||||
|
||||
|
||||
public TMP_Text title;
|
||||
public CanvasGroup canvasGroup;
|
||||
public IBaseElement connectedBaseElement;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 参数名,通过反射获取饿修改对应变量的值
|
||||
/// </summary>
|
||||
@@ -24,6 +24,7 @@ namespace Ichni.Editor
|
||||
|
||||
public virtual void Initialize(IBaseElement baseElement, string title, string parameterName)
|
||||
{
|
||||
if (canvasGroup == null) canvasGroup = gameObject.AddComponent<CanvasGroup>();
|
||||
this.connectedBaseElement = baseElement;
|
||||
this.parameterName = parameterName;
|
||||
if (title != string.Empty)
|
||||
@@ -50,7 +51,7 @@ namespace Ichni.Editor
|
||||
|
||||
public abstract DynamicUIElement AddListenerFunction(UnityAction action);
|
||||
}
|
||||
|
||||
|
||||
public interface IHaveAutoUpdate
|
||||
{
|
||||
public bool isAutoUpdate { get; set; }
|
||||
@@ -59,12 +60,12 @@ namespace Ichni.Editor
|
||||
|
||||
public void UpdateContent()
|
||||
{
|
||||
if(isAutoUpdate && isReceiving)
|
||||
if (isAutoUpdate && isReceiving)
|
||||
{
|
||||
ApplyContent();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void ApplyContent();
|
||||
}
|
||||
}
|
||||
@@ -212,5 +212,16 @@ namespace Ichni.Editor
|
||||
subcontainer.dynamicUIElements.Add(stringListDropdown);
|
||||
return stringListDropdown;
|
||||
}
|
||||
|
||||
// 新增:HSV色盘生成方法
|
||||
public HsvDrawer GenerateHsvDrawer(IBaseElement baseElement, DynamicUISubcontainer subcontainer, string title, string parameterName)
|
||||
{
|
||||
HsvDrawer hsvDrawer = Object
|
||||
.Instantiate(EditorManager.instance.basePrefabs.hsvDrawer, subcontainer.rect)
|
||||
.GetComponent<HsvDrawer>();
|
||||
hsvDrawer.Initialize(baseElement, title, parameterName);
|
||||
subcontainer.dynamicUIElements.Add(hsvDrawer);
|
||||
return hsvDrawer;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -23,7 +23,7 @@ namespace Ichni.Editor
|
||||
public Button clipSaveButton;
|
||||
public Button clipLoadButton;
|
||||
public Button beatmapToolsButton;
|
||||
|
||||
|
||||
[Title("Windows")]
|
||||
public GeneralSecondaryWindow clipManagementWindow;
|
||||
|
||||
@@ -40,17 +40,17 @@ namespace Ichni.Editor
|
||||
beatmapToolsButton.onClick.AddListener(GenerateBeatmapToolsWindow);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public partial class ToolBar
|
||||
{
|
||||
private void GenerateEscapeConfirmWindow()
|
||||
{
|
||||
GeneralSecondaryWindow escapeConfirmWindow =
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
EditorManager.instance.uiManager.mainPage.mainCanvas.GetComponent<RectTransform>()).GetComponent<GeneralSecondaryWindow>();
|
||||
|
||||
|
||||
escapeConfirmWindow.Initialize("Confirm Escape");
|
||||
|
||||
|
||||
var container = escapeConfirmWindow.GenerateContainer();
|
||||
var clipSettings = container.GenerateSubcontainer(3);
|
||||
var applyClipButton = escapeConfirmWindow.GenerateButton(clipSettings, "Yes", () =>
|
||||
@@ -62,15 +62,15 @@ namespace Ichni.Editor
|
||||
escapeConfirmWindow.closeButton.onClick.Invoke();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void GenerateReloadConfirmWindow()
|
||||
{
|
||||
GeneralSecondaryWindow escapeConfirmWindow =
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
EditorManager.instance.uiManager.mainPage.mainCanvas.GetComponent<RectTransform>()).GetComponent<GeneralSecondaryWindow>();
|
||||
|
||||
|
||||
escapeConfirmWindow.Initialize("Confirm Reload");
|
||||
|
||||
|
||||
var container = escapeConfirmWindow.GenerateContainer();
|
||||
var clipSettings = container.GenerateSubcontainer(3);
|
||||
var applyClipButton = escapeConfirmWindow.GenerateButton(clipSettings, "Yes", () =>
|
||||
@@ -82,7 +82,7 @@ namespace Ichni.Editor
|
||||
escapeConfirmWindow.closeButton.onClick.Invoke();
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void GenerateSaveClipWindow()
|
||||
{
|
||||
GameElement currentElement = EditorManager.instance.operationManager.currentSelectedElements[0];
|
||||
@@ -100,11 +100,11 @@ namespace Ichni.Editor
|
||||
}
|
||||
|
||||
GeneralSecondaryWindow saveClipWindow =
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
EditorManager.instance.uiManager.mainPage.mainCanvas.GetComponent<RectTransform>()).GetComponent<GeneralSecondaryWindow>();
|
||||
clipManagementWindow = saveClipWindow;
|
||||
saveClipWindow.Initialize("Save Clip: " + currentElement.elementName, () => clipManagementWindow = null);
|
||||
|
||||
|
||||
var container = saveClipWindow.GenerateContainer();
|
||||
var clipSettings = container.GenerateSubcontainer(3);
|
||||
var clipNameInputField = saveClipWindow.GenerateInputField(clipSettings, "Clip Name", currentElement.elementName);
|
||||
@@ -117,13 +117,13 @@ namespace Ichni.Editor
|
||||
private void GenerateLoadClipWindow()
|
||||
{
|
||||
GameElement currentElement = EditorManager.instance.operationManager.currentSelectedElements[0];
|
||||
|
||||
|
||||
if (currentElement == null)
|
||||
{
|
||||
LogWindow.Log("No Game Element selected.", Color.red);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
GameElement loadTarget = currentElement == EditorManager.instance ? null : currentElement.parentElement;
|
||||
|
||||
if (clipManagementWindow != null)
|
||||
@@ -131,7 +131,7 @@ namespace Ichni.Editor
|
||||
LogWindow.Log("Clip Management Window already exists.", Color.red);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
GeneralSecondaryWindow loadClipWindow =
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
EditorManager.instance.uiManager.mainPage.mainCanvas.GetComponent<RectTransform>()).GetComponent<GeneralSecondaryWindow>();
|
||||
@@ -146,12 +146,12 @@ namespace Ichni.Editor
|
||||
EditorManager.instance.projectManager.beatmapClipManager.LoadClip(clipNameInputField.GetValue<string>());
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
private void GenerateMergeWindow()
|
||||
{
|
||||
GeneralSecondaryWindow mergeWindow = Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
EditorManager.instance.uiManager.mainPage.mainCanvas.GetComponent<RectTransform>()).GetComponent<GeneralSecondaryWindow>();
|
||||
|
||||
|
||||
mergeWindow.Initialize("Merge Beatmap");
|
||||
|
||||
var container = mergeWindow.GenerateContainer();
|
||||
@@ -169,11 +169,11 @@ namespace Ichni.Editor
|
||||
private void GenerateBeatmapToolsWindow()
|
||||
{
|
||||
GeneralSecondaryWindow beatmapToolsWindow =
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
Instantiate(EditorManager.instance.basePrefabs.generalSecondaryWindow,
|
||||
EditorManager.instance.uiManager.mainPage.mainCanvas.GetComponent<RectTransform>()).GetComponent<GeneralSecondaryWindow>();
|
||||
|
||||
|
||||
beatmapToolsWindow.Initialize("Beatmap Tools", () => clipManagementWindow = null);
|
||||
|
||||
|
||||
var container = beatmapToolsWindow.GenerateContainer("Note Tools");
|
||||
var beatmapToolsSettings = container.GenerateSubcontainer(3);
|
||||
var applyTimeOnNameButton = beatmapToolsWindow.GenerateButton(beatmapToolsSettings, "Apply Time On Note Name", () =>
|
||||
@@ -183,31 +183,32 @@ namespace Ichni.Editor
|
||||
List<Stay> allStays = allNotes.FindAll(x => x is Stay).ConvertAll(x => x as Stay);
|
||||
List<Hold> allHolds = allNotes.FindAll(x => x is Hold).ConvertAll(x => x as Hold);
|
||||
List<Flick> allFlicks = allNotes.FindAll(x => x is Flick).ConvertAll(x => x as Flick);
|
||||
|
||||
|
||||
foreach (var tap in allTaps.Where(tap => tap.elementName == "New Tap" || Regex.IsMatch(tap.elementName, @"Tap \(\d+\)")))
|
||||
{
|
||||
tap.elementName = "Tap (" + tap.exactJudgeTime + ")";
|
||||
tap.Refresh();
|
||||
}
|
||||
|
||||
|
||||
foreach (var stay in allStays.Where(stay => stay.elementName == "New Stay" || Regex.IsMatch(stay.elementName, @"Stay \(\d+\)")))
|
||||
{
|
||||
stay.elementName = "Stay (" + stay.exactJudgeTime + ")";
|
||||
stay.Refresh();
|
||||
}
|
||||
|
||||
|
||||
foreach (var hold in allHolds.Where(hold => hold.elementName == "New Hold" || Regex.IsMatch(hold.elementName, @"Hold \(\d+-\d+\)")))
|
||||
{
|
||||
hold.elementName = "Hold (" + hold.exactJudgeTime + "-" + hold.holdEndTime + ")";
|
||||
hold.Refresh();
|
||||
}
|
||||
|
||||
|
||||
foreach (var flick in allFlicks.Where(flick => flick.elementName == "New Flick" || Regex.IsMatch(flick.elementName, @"Flick \(\d+\)")))
|
||||
{
|
||||
flick.elementName = "Flick (" + flick.exactJudgeTime + ")";
|
||||
flick.Refresh();
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user