diff --git a/source/funkin/ui/debug/charting/commands/ModifyTimeChangeCommand.hx b/source/funkin/ui/debug/charting/commands/ModifyTimeChangeCommand.hx index 0c272f77b..01894237b 100644 --- a/source/funkin/ui/debug/charting/commands/ModifyTimeChangeCommand.hx +++ b/source/funkin/ui/debug/charting/commands/ModifyTimeChangeCommand.hx @@ -1,6 +1,7 @@ package funkin.ui.debug.charting.commands; import funkin.data.song.SongData.SongTimeChange; +import funkin.ui.debug.charting.toolboxes.ChartEditorMetadataToolbox; /** * A command which modifies the give time change in the current song's time changes. @@ -64,8 +65,12 @@ class ModifyTimeChangeCommand implements ChartEditorCommand state.notePreviewViewportBoundsDirty = true; state.scrollPositionInPixels = 0; + var metadataToolbox:ChartEditorMetadataToolbox = cast state.getToolbox(ChartEditorState.CHART_EDITOR_TOOLBOX_METADATA_LAYOUT); + Conductor.instance.mapTimeChanges(state.currentSongMetadata.timeChanges); + if (metadataToolbox != null) metadataToolbox.refreshTimeChangeInputs(); + state.updateSongTime(); state.updateGridHeight(); } @@ -92,8 +97,12 @@ class ModifyTimeChangeCommand implements ChartEditorCommand state.notePreviewViewportBoundsDirty = true; state.scrollPositionInPixels = 0; + var metadataToolbox:ChartEditorMetadataToolbox = cast state.getToolbox(ChartEditorState.CHART_EDITOR_TOOLBOX_METADATA_LAYOUT); + Conductor.instance.mapTimeChanges(state.currentSongMetadata.timeChanges); + if (metadataToolbox != null) metadataToolbox.refreshTimeChangeInputs(true); + state.updateSongTime(); state.updateGridHeight(); } diff --git a/source/funkin/ui/debug/charting/toolboxes/ChartEditorMetadataToolbox.hx b/source/funkin/ui/debug/charting/toolboxes/ChartEditorMetadataToolbox.hx index c8d870148..22bf21857 100644 --- a/source/funkin/ui/debug/charting/toolboxes/ChartEditorMetadataToolbox.hx +++ b/source/funkin/ui/debug/charting/toolboxes/ChartEditorMetadataToolbox.hx @@ -44,11 +44,14 @@ class ChartEditorMetadataToolbox extends ChartEditorBaseToolbox var inputScrollSpeed:Slider; var frameVariation:Frame; var frameDifficulty:Frame; + var tcDropdownItemRenderer:haxe.ui.core.ItemRenderer; public function new(chartEditorState2:ChartEditorState) { super(chartEditorState2); + tcDropdownItemRenderer = inputTimeChange.findComponent(haxe.ui.core.ItemRenderer); + initialize(); this.onDialogClosed = onClose; @@ -144,21 +147,9 @@ class ChartEditorMetadataToolbox extends ChartEditorBaseToolbox var startingValueNoteStyle = ChartEditorDropdowns.populateDropdownWithNoteStyles(inputNoteStyle, chartEditorState.currentSongMetadata.playData.noteStyle); inputNoteStyle.value = startingValueNoteStyle; - var tcDropdownItemRenderer = inputTimeChange.findComponent(haxe.ui.core.ItemRenderer); - inputTimeChange.onChange = function(event:UIEvent) { - - var currentTimeChange = chartEditorState.currentSongMetadata.timeChanges[inputTimeChange.selectedIndex]; - if (currentTimeChange == null) - { - trace("No time change in timeChanges at inputTimeChange's selectedIndex!"); - return; - } + var currentTimeChange = refreshTimeChangeInputs(); var previousTimeChange = chartEditorState.currentSongMetadata.timeChanges[inputTimeChange.selectedIndex - 1]; - inputBPM.value = currentTimeChange.bpm; - inputTSNum.value = currentTimeChange.timeSignatureNum; - inputTSDen.value = currentTimeChange.timeSignatureDen; - inputTimeStamp.value = currentTimeChange.timeStamp; // Set the step of the timestamp to the step. inputTimeStamp.step = ((Constants.SECS_PER_MIN / (previousTimeChange?.bpm ?? currentTimeChange?.bpm ?? 100)) * Constants.MS_PER_SEC) * (4 / (previousTimeChange?.timeSignatureDen ?? currentTimeChange?.timeSignatureDen ?? 4)) / Constants.STEPS_PER_BEAT; // Set the min max values of the input timestamp to previous and next time change timestamps to in the array, @@ -297,6 +288,26 @@ class ChartEditorMetadataToolbox extends ChartEditorBaseToolbox chartEditorState.updateSongTime(); } + public function refreshTimeChangeInputs(updateDropdownText:Bool = false):Null + { + var currentTimeChange = chartEditorState.currentSongMetadata.timeChanges[inputTimeChange.selectedIndex]; + if (currentTimeChange == null) + { + trace("No time change in timeChanges at inputTimeChange's selectedIndex!"); + return null; + } + inputBPM.value = currentTimeChange.bpm; + inputTSNum.value = currentTimeChange.timeSignatureNum; + inputTSDen.value = currentTimeChange.timeSignatureDen; + inputTimeStamp.value = currentTimeChange.timeStamp; + if (updateDropdownText) + { + inputTimeChange.value.text = '${currentTimeChange.timeStamp} : BPM: ${currentTimeChange.bpm} in ${currentTimeChange.timeSignatureNum}/${currentTimeChange.timeSignatureDen}'; + tcDropdownItemRenderer.data = inputTimeChange.value; + } + return currentTimeChange; + } + public override function refresh():Void { super.refresh();