mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2024-12-13 00:45:13 +00:00
Merge pull request #300 from FunkinCrew/bugfix/vocal-offset-loading
Fixed bugs related to instrumental/vocal offsets not loading or being taken into account properly
This commit is contained in:
commit
a0b855c8bb
|
@ -235,6 +235,7 @@ class Song implements IPlayStateScriptedClass implements IRegistryEntry<SongMeta
|
||||||
difficulty.timeChanges = metadata.timeChanges;
|
difficulty.timeChanges = metadata.timeChanges;
|
||||||
difficulty.looped = metadata.looped;
|
difficulty.looped = metadata.looped;
|
||||||
difficulty.generatedBy = metadata.generatedBy;
|
difficulty.generatedBy = metadata.generatedBy;
|
||||||
|
difficulty.offsets = metadata?.offsets ?? new SongOffsets();
|
||||||
|
|
||||||
difficulty.stage = metadata.playData.stage;
|
difficulty.stage = metadata.playData.stage;
|
||||||
difficulty.noteStyle = metadata.playData.noteStyle;
|
difficulty.noteStyle = metadata.playData.noteStyle;
|
||||||
|
|
|
@ -1395,6 +1395,46 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
return currentSongMetadata.artist = value;
|
return currentSongMetadata.artist = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenience property to get the player charId for the current variation.
|
||||||
|
*/
|
||||||
|
var currentPlayerChar(get, set):String;
|
||||||
|
|
||||||
|
function get_currentPlayerChar():String
|
||||||
|
{
|
||||||
|
if (currentSongMetadata.playData.characters.player == null)
|
||||||
|
{
|
||||||
|
// Initialize to the default value if not set.
|
||||||
|
currentSongMetadata.playData.characters.player = Constants.DEFAULT_CHARACTER;
|
||||||
|
}
|
||||||
|
return currentSongMetadata.playData.characters.player;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_currentPlayerChar(value:String):String
|
||||||
|
{
|
||||||
|
return currentSongMetadata.playData.characters.player = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convenience property to get the opponent charId for the current variation.
|
||||||
|
*/
|
||||||
|
var currentOpponentChar(get, set):String;
|
||||||
|
|
||||||
|
function get_currentOpponentChar():String
|
||||||
|
{
|
||||||
|
if (currentSongMetadata.playData.characters.opponent == null)
|
||||||
|
{
|
||||||
|
// Initialize to the default value if not set.
|
||||||
|
currentSongMetadata.playData.characters.opponent = Constants.DEFAULT_CHARACTER;
|
||||||
|
}
|
||||||
|
return currentSongMetadata.playData.characters.opponent;
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_currentOpponentChar(value:String):String
|
||||||
|
{
|
||||||
|
return currentSongMetadata.playData.characters.opponent = value;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Convenience property to get the song offset data for the current variation.
|
* Convenience property to get the song offset data for the current variation.
|
||||||
*/
|
*/
|
||||||
|
@ -1430,6 +1470,23 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var currentVocalOffset(get, set):Float;
|
||||||
|
|
||||||
|
function get_currentVocalOffset():Float
|
||||||
|
{
|
||||||
|
// Currently there's only one vocal offset, so we just grab the player's offset since both should be the same.
|
||||||
|
// Should probably make it so we can set offsets for player + opponent individually, though.
|
||||||
|
return currentSongOffsets.getVocalOffset(currentPlayerChar);
|
||||||
|
}
|
||||||
|
|
||||||
|
function set_currentVocalOffset(value:Float):Float
|
||||||
|
{
|
||||||
|
// Currently there's only one vocal offset, so we just apply it to both characters.
|
||||||
|
currentSongOffsets.setVocalOffset(currentPlayerChar, value);
|
||||||
|
currentSongOffsets.setVocalOffset(currentOpponentChar, value);
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The variation ID for the difficulty which is currently being edited.
|
* The variation ID for the difficulty which is currently being edited.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -190,7 +190,7 @@ class ChartEditorAudioHandler
|
||||||
state.audioVisGroup.playerVis.detail = 1;
|
state.audioVisGroup.playerVis.detail = 1;
|
||||||
state.audioVisGroup.playerVis.y = Math.max(state.gridTiledSprite?.y ?? 0.0, ChartEditorState.GRID_INITIAL_Y_POS - ChartEditorState.GRID_TOP_PAD);
|
state.audioVisGroup.playerVis.y = Math.max(state.gridTiledSprite?.y ?? 0.0, ChartEditorState.GRID_INITIAL_Y_POS - ChartEditorState.GRID_TOP_PAD);
|
||||||
|
|
||||||
state.audioVocalTrackGroup.playerVoicesOffset = state.currentSongOffsets.getVocalOffset(charId);
|
state.audioVocalTrackGroup.playerVoicesOffset = state.currentVocalOffset;
|
||||||
return true;
|
return true;
|
||||||
case DAD:
|
case DAD:
|
||||||
state.audioVocalTrackGroup.addOpponentVoice(vocalTrack);
|
state.audioVocalTrackGroup.addOpponentVoice(vocalTrack);
|
||||||
|
@ -202,7 +202,7 @@ class ChartEditorAudioHandler
|
||||||
state.audioVisGroup.opponentVis.detail = 1;
|
state.audioVisGroup.opponentVis.detail = 1;
|
||||||
state.audioVisGroup.opponentVis.y = Math.max(state.gridTiledSprite?.y ?? 0.0, ChartEditorState.GRID_INITIAL_Y_POS - ChartEditorState.GRID_TOP_PAD);
|
state.audioVisGroup.opponentVis.y = Math.max(state.gridTiledSprite?.y ?? 0.0, ChartEditorState.GRID_INITIAL_Y_POS - ChartEditorState.GRID_TOP_PAD);
|
||||||
|
|
||||||
state.audioVocalTrackGroup.opponentVoicesOffset = state.currentSongOffsets.getVocalOffset(charId);
|
state.audioVocalTrackGroup.opponentVoicesOffset = state.currentVocalOffset;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
case OTHER:
|
case OTHER:
|
||||||
|
|
|
@ -150,7 +150,12 @@ class ChartEditorMetadataToolbox extends ChartEditorBaseToolbox
|
||||||
inputOffsetVocal.onChange = function(event:UIEvent) {
|
inputOffsetVocal.onChange = function(event:UIEvent) {
|
||||||
if (event.value == null) return;
|
if (event.value == null) return;
|
||||||
|
|
||||||
chartEditorState.currentSongMetadata.offsets.setVocalOffset(chartEditorState.currentSongMetadata.playData.characters.player, event.value);
|
chartEditorState.currentVocalOffset = event.value;
|
||||||
|
if (chartEditorState.audioVocalTrackGroup != null)
|
||||||
|
{
|
||||||
|
chartEditorState.audioVocalTrackGroup.playerVoicesOffset = event.value;
|
||||||
|
chartEditorState.audioVocalTrackGroup.opponentVoicesOffset = event.value;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
inputScrollSpeed.onChange = function(event:UIEvent) {
|
inputScrollSpeed.onChange = function(event:UIEvent) {
|
||||||
var valid:Bool = event.target.value != null && event.target.value > 0;
|
var valid:Bool = event.target.value != null && event.target.value > 0;
|
||||||
|
@ -191,6 +196,8 @@ class ChartEditorMetadataToolbox extends ChartEditorBaseToolbox
|
||||||
inputStage.value = chartEditorState.currentSongMetadata.playData.stage;
|
inputStage.value = chartEditorState.currentSongMetadata.playData.stage;
|
||||||
inputNoteStyle.value = chartEditorState.currentSongMetadata.playData.noteStyle;
|
inputNoteStyle.value = chartEditorState.currentSongMetadata.playData.noteStyle;
|
||||||
inputBPM.value = chartEditorState.currentSongMetadata.timeChanges[0].bpm;
|
inputBPM.value = chartEditorState.currentSongMetadata.timeChanges[0].bpm;
|
||||||
|
inputOffsetInst.value = chartEditorState.currentSongMetadata.offsets.getInstrumentalOffset();
|
||||||
|
inputOffsetVocal.value = chartEditorState.currentSongMetadata.offsets.getVocalOffset(chartEditorState.currentSongMetadata.playData.characters.player);
|
||||||
inputScrollSpeed.value = chartEditorState.currentSongChartScrollSpeed;
|
inputScrollSpeed.value = chartEditorState.currentSongChartScrollSpeed;
|
||||||
labelScrollSpeed.text = 'Scroll Speed: ${chartEditorState.currentSongChartScrollSpeed}x';
|
labelScrollSpeed.text = 'Scroll Speed: ${chartEditorState.currentSongChartScrollSpeed}x';
|
||||||
frameVariation.text = 'Variation: ${chartEditorState.selectedVariation.toTitleCase()}';
|
frameVariation.text = 'Variation: ${chartEditorState.selectedVariation.toTitleCase()}';
|
||||||
|
|
Loading…
Reference in a new issue