mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-11-27 01:55:52 -05:00
Merge branch 'rewrite/master' into bugfix/pico-death-anim-fix
This commit is contained in:
commit
2fa5b1a9db
2 changed files with 103 additions and 16 deletions
|
@ -105,6 +105,7 @@ import haxe.ui.components.Label;
|
||||||
import haxe.ui.components.Button;
|
import haxe.ui.components.Button;
|
||||||
import haxe.ui.components.NumberStepper;
|
import haxe.ui.components.NumberStepper;
|
||||||
import haxe.ui.components.Slider;
|
import haxe.ui.components.Slider;
|
||||||
|
import haxe.ui.components.VerticalSlider;
|
||||||
import haxe.ui.components.TextField;
|
import haxe.ui.components.TextField;
|
||||||
import haxe.ui.containers.dialogs.CollapsibleDialog;
|
import haxe.ui.containers.dialogs.CollapsibleDialog;
|
||||||
import haxe.ui.containers.Frame;
|
import haxe.ui.containers.Frame;
|
||||||
|
@ -721,6 +722,34 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
return hitsoundsEnabledPlayer || hitsoundsEnabledOpponent;
|
return hitsoundsEnabledPlayer || hitsoundsEnabledOpponent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sound multiplier for vocals and hitsounds on the player's side.
|
||||||
|
*/
|
||||||
|
var soundMultiplierPlayer(default, set):Float = 1.0;
|
||||||
|
|
||||||
|
function set_soundMultiplierPlayer(value:Float):Float
|
||||||
|
{
|
||||||
|
soundMultiplierPlayer = value;
|
||||||
|
var vocalTargetVolume:Float = (menubarItemVolumeVocals.value ?? 100.0) / 100.0;
|
||||||
|
if (audioVocalTrackGroup != null) audioVocalTrackGroup.playerVolume = vocalTargetVolume * soundMultiplierPlayer;
|
||||||
|
|
||||||
|
return soundMultiplierPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sound multiplier for vocals and hitsounds on the opponent's side.
|
||||||
|
*/
|
||||||
|
var soundMultiplierOpponent(default, set):Float = 1.0;
|
||||||
|
|
||||||
|
function set_soundMultiplierOpponent(value:Float):Float
|
||||||
|
{
|
||||||
|
soundMultiplierOpponent = value;
|
||||||
|
var vocalTargetVolume:Float = (menubarItemVolumeVocals.value ?? 100.0) / 100.0;
|
||||||
|
if (audioVocalTrackGroup != null) audioVocalTrackGroup.opponentVolume = vocalTargetVolume * soundMultiplierOpponent;
|
||||||
|
|
||||||
|
return soundMultiplierOpponent;
|
||||||
|
}
|
||||||
|
|
||||||
// Auto-save
|
// Auto-save
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -1750,6 +1779,18 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
*/
|
*/
|
||||||
var buttonSelectEvent:Button;
|
var buttonSelectEvent:Button;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The slider above the grid that sets the volume of the player's sounds.
|
||||||
|
* Constructed manually and added to the layout so we can control its position.
|
||||||
|
*/
|
||||||
|
var sliderVolumePlayer:Slider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The slider above the grid that sets the volume of the opponent's sounds.
|
||||||
|
* Constructed manually and added to the layout so we can control its position.
|
||||||
|
*/
|
||||||
|
var sliderVolumeOpponent:Slider;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* RENDER OBJECTS
|
* RENDER OBJECTS
|
||||||
*/
|
*/
|
||||||
|
@ -1959,7 +2000,6 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
buildGrid();
|
buildGrid();
|
||||||
buildMeasureTicks();
|
buildMeasureTicks();
|
||||||
buildNotePreview();
|
buildNotePreview();
|
||||||
buildSelectionBox();
|
|
||||||
|
|
||||||
buildAdditionalUI();
|
buildAdditionalUI();
|
||||||
populateOpenRecentMenu();
|
populateOpenRecentMenu();
|
||||||
|
@ -2288,17 +2328,6 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
setNotePreviewViewportBounds(calculateNotePreviewViewportBounds());
|
setNotePreviewViewportBounds(calculateNotePreviewViewportBounds());
|
||||||
}
|
}
|
||||||
|
|
||||||
function buildSelectionBox():Void
|
|
||||||
{
|
|
||||||
if (selectionBoxSprite == null) throw 'ERROR: Tried to build selection box, but selectionBoxSprite is null! Check ChartEditorThemeHandler.updateTheme().';
|
|
||||||
|
|
||||||
selectionBoxSprite.scrollFactor.set(0, 0);
|
|
||||||
add(selectionBoxSprite);
|
|
||||||
selectionBoxSprite.zIndex = 30;
|
|
||||||
|
|
||||||
setSelectionBoxBounds();
|
|
||||||
}
|
|
||||||
|
|
||||||
function setSelectionBoxBounds(bounds:FlxRect = null):Void
|
function setSelectionBoxBounds(bounds:FlxRect = null):Void
|
||||||
{
|
{
|
||||||
if (selectionBoxSprite == null)
|
if (selectionBoxSprite == null)
|
||||||
|
@ -2320,6 +2349,19 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Automatically goes through and calls render on everything you added.
|
||||||
|
*/
|
||||||
|
override public function draw():Void
|
||||||
|
{
|
||||||
|
if (selectionBoxStartPos != null)
|
||||||
|
{
|
||||||
|
trace('selectionBoxSprite: ${selectionBoxSprite.visible} ${selectionBoxSprite.exists} ${this.members.contains(selectionBoxSprite)}');
|
||||||
|
}
|
||||||
|
|
||||||
|
super.draw();
|
||||||
|
}
|
||||||
|
|
||||||
function calculateNotePreviewViewportBounds():FlxRect
|
function calculateNotePreviewViewportBounds():FlxRect
|
||||||
{
|
{
|
||||||
var bounds:FlxRect = new FlxRect();
|
var bounds:FlxRect = new FlxRect();
|
||||||
|
@ -2558,6 +2600,37 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
performCommand(new SetItemSelectionCommand([], currentSongChartEventData));
|
performCommand(new SetItemSelectionCommand([], currentSongChartEventData));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function setupSideSlider(x, y):VerticalSlider
|
||||||
|
{
|
||||||
|
var slider = new VerticalSlider();
|
||||||
|
slider.allowFocus = false;
|
||||||
|
slider.x = x;
|
||||||
|
slider.y = y;
|
||||||
|
slider.width = NOTE_SELECT_BUTTON_HEIGHT;
|
||||||
|
slider.height = GRID_SIZE * 4;
|
||||||
|
slider.pos = slider.max;
|
||||||
|
slider.tooltip = "Slide to set the volume of sounds on this side.";
|
||||||
|
slider.zIndex = 110;
|
||||||
|
slider.styleNames = "sideSlider";
|
||||||
|
add(slider);
|
||||||
|
|
||||||
|
return slider;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sliderY = GRID_INITIAL_Y_POS + 34;
|
||||||
|
sliderVolumeOpponent = setupSideSlider(GRID_X_POS - 64, sliderY);
|
||||||
|
sliderVolumePlayer = setupSideSlider(buttonSelectEvent.x + buttonSelectEvent.width, sliderY);
|
||||||
|
|
||||||
|
sliderVolumePlayer.onChange = event -> {
|
||||||
|
var volume:Float = event.value.toFloat() / 100.0;
|
||||||
|
soundMultiplierPlayer = volume;
|
||||||
|
}
|
||||||
|
|
||||||
|
sliderVolumeOpponent.onChange = event -> {
|
||||||
|
var volume:Float = event.value.toFloat() / 100.0;
|
||||||
|
soundMultiplierOpponent = volume;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -2798,7 +2871,11 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
|
|
||||||
menubarItemVolumeVocals.onChange = event -> {
|
menubarItemVolumeVocals.onChange = event -> {
|
||||||
var volume:Float = event.value.toFloat() / 100.0;
|
var volume:Float = event.value.toFloat() / 100.0;
|
||||||
if (audioVocalTrackGroup != null) audioVocalTrackGroup.volume = volume;
|
if (audioVocalTrackGroup != null)
|
||||||
|
{
|
||||||
|
audioVocalTrackGroup.playerVolume = volume * soundMultiplierPlayer;
|
||||||
|
audioVocalTrackGroup.opponentVolume = volume * soundMultiplierOpponent;
|
||||||
|
}
|
||||||
menubarLabelVolumeVocals.text = 'Voices - ${Std.int(event.value)}%';
|
menubarLabelVolumeVocals.text = 'Voices - ${Std.int(event.value)}%';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5663,7 +5740,11 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
audioInstTrack.volume = instTargetVolume;
|
audioInstTrack.volume = instTargetVolume;
|
||||||
audioInstTrack.onComplete = null;
|
audioInstTrack.onComplete = null;
|
||||||
}
|
}
|
||||||
if (audioVocalTrackGroup != null) audioVocalTrackGroup.volume = vocalTargetVolume;
|
if (audioVocalTrackGroup != null)
|
||||||
|
{
|
||||||
|
audioVocalTrackGroup.playerVolume = vocalTargetVolume * soundMultiplierPlayer;
|
||||||
|
audioVocalTrackGroup.opponentVolume = vocalTargetVolume * soundMultiplierOpponent;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateTimeSignature():Void
|
function updateTimeSignature():Void
|
||||||
|
@ -5865,9 +5946,9 @@ class ChartEditorState extends UIState // UIState derives from MusicBeatState
|
||||||
switch (noteData.getStrumlineIndex())
|
switch (noteData.getStrumlineIndex())
|
||||||
{
|
{
|
||||||
case 0: // Player
|
case 0: // Player
|
||||||
if (hitsoundsEnabledPlayer) this.playSound(Paths.sound('chartingSounds/hitNotePlayer'), hitsoundVolume);
|
if (hitsoundsEnabledPlayer) this.playSound(Paths.sound('chartingSounds/hitNotePlayer'), hitsoundVolume * soundMultiplierPlayer);
|
||||||
case 1: // Opponent
|
case 1: // Opponent
|
||||||
if (hitsoundsEnabledOpponent) this.playSound(Paths.sound('chartingSounds/hitNoteOpponent'), hitsoundVolume);
|
if (hitsoundsEnabledOpponent) this.playSound(Paths.sound('chartingSounds/hitNoteOpponent'), hitsoundVolume * soundMultiplierOpponent);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -317,6 +317,12 @@ class ChartEditorThemeHandler
|
||||||
ChartEditorState.GRID_SIZE
|
ChartEditorState.GRID_SIZE
|
||||||
- (2 * SELECTION_SQUARE_BORDER_WIDTH + 8)),
|
- (2 * SELECTION_SQUARE_BORDER_WIDTH + 8)),
|
||||||
32, 32);
|
32, 32);
|
||||||
|
|
||||||
|
state.selectionBoxSprite.scrollFactor.set(0, 0);
|
||||||
|
state.selectionBoxSprite.zIndex = 30;
|
||||||
|
state.add(state.selectionBoxSprite);
|
||||||
|
|
||||||
|
state.setSelectionBoxBounds();
|
||||||
}
|
}
|
||||||
|
|
||||||
static function updateNotePreview(state:ChartEditorState):Void
|
static function updateNotePreview(state:ChartEditorState):Void
|
||||||
|
|
Loading…
Reference in a new issue