Strumline Button UI WIP (broke everything 😭)

This commit is contained in:
lunarcleint
2024-01-31 23:14:49 -07:00
parent 4231f671b5
commit fff3fd9cdc
3 changed files with 138 additions and 105 deletions
@@ -7,7 +7,7 @@ import haxe.io.Bytes;
typedef ChartCreationData = {
var name:String;
var chart:ChartData;
var meta:Dynamic;
var ?meta:Dynamic;
var ?instBytes:Bytes;
var ?voicesBytes:Bytes;
}
@@ -20,12 +20,6 @@ class ChartCreationScreen extends UISubstateWindow {
public var stageTextBox:UITextBox;
public var strumLineList:UIButtonList<StrumLineButton>;
public var instExplorer:UIFileExplorer;
public var voicesExplorer:UIFileExplorer;
public var bpmStepper:UINumericStepper;
public var beatsPerMeasureStepper:UINumericStepper;
public var stepsPerBeatStepper:UINumericStepper;
public var saveButton:UIButton;
public var closeButton:UIButton;
@@ -37,8 +31,8 @@ class ChartCreationScreen extends UISubstateWindow {
public override function create() {
winTitle = "Creating New Chart";
winWidth = 948 - 32 + 40;
winHeight = 520;
winWidth = 652;
winHeight = 600;
super.create();
@@ -55,55 +49,21 @@ class ChartCreationScreen extends UISubstateWindow {
add(difficultyNameTextBox);
addLabelOn(difficultyNameTextBox, "Difficulty Name");
scrollSpeedTextBox = new UINumericStepper(difficultyNameTextBox.x + 200 + 26, difficultyNameTextBox.y, 1.0, 0.1, 2, null, null, 90);
add(scrollSpeedTextBox);
addLabelOn(scrollSpeedTextBox, "Scroll Speed");
stageTextBox = new UITextBox(chartTitle.x, scrollSpeedTextBox.y + 32 + 36, "Stage", 125);
stageTextBox = new UITextBox(difficultyNameTextBox.x + 200 + 26, difficultyNameTextBox.y, "Stage", 125);
add(stageTextBox);
addLabelOn(stageTextBox, "Stage");
strumLineList = new UIButtonList<StrumLineButton>(scrollSpeedTextBox.x + 150 + 26, scrollSpeedTextBox.y, 520, 350, "", FlxPoint.get(510, 150), null, 5);
scrollSpeedTextBox = new UINumericStepper(stageTextBox.x + 125 + 26, difficultyNameTextBox.y, 1.0, 0.1, 2, null, null, 90);
add(scrollSpeedTextBox);
addLabelOn(scrollSpeedTextBox, "Scroll Speed");
strumLineList = new UIButtonList<StrumLineButton>(difficultyNameTextBox.x, difficultyNameTextBox.y+difficultyNameTextBox.bHeight+36, 620, (552-179)-16, "", FlxPoint.get(620, 246), null, 6);
strumLineList.frames = Paths.getFrames('editors/ui/inputbox');
strumLineList.cameraSpacing = 0;
strumLineList.add(new StrumLineButton(0, "dad", 0, true));
strumLineList.add(new StrumLineButton(1, "bf", 1, true));
strumLineList.add(new StrumLineButton(2, "gf", 2, false));
strumLineList.add(new StrumLineButton(0, "bf", 1, true));
add(strumLineList);
addLabelOn(strumLineList, "Strumlines");
var songTitle:UIText;
add(songTitle = new UIText(stageTextBox.x, stageTextBox.y + 32 + 26, 0, "Specific Song (OPTIONAL)", 28));
instExplorer = new UIFileExplorer(songTitle.x, songTitle.y + songTitle.height + 36, 174, null, Paths.SOUND_EXT, function (res) {
var audioPlayer:UIAudioPlayer = new UIAudioPlayer(instExplorer.x + 8, instExplorer.y + 8, res);
instExplorer.members.push(audioPlayer);
instExplorer.uiElement = audioPlayer;
});
add(instExplorer);
addLabelOn(instExplorer, "Inst Audio File");
voicesExplorer = new UIFileExplorer(instExplorer.x + 174 + 26, instExplorer.y, 174, null, Paths.SOUND_EXT, function (res) {
var audioPlayer:UIAudioPlayer = new UIAudioPlayer(voicesExplorer.x + 8, voicesExplorer.y + 8, res);
voicesExplorer.members.push(audioPlayer);
voicesExplorer.uiElement = audioPlayer;
});
add(voicesExplorer);
addLabelOn(voicesExplorer, "Voices Audio File");
bpmStepper = new UINumericStepper(instExplorer.x, instExplorer.y + 58 + 36, 100, 1, 2, 1, null, 90);
add(bpmStepper);
addLabelOn(bpmStepper, "BPM");
beatsPerMeasureStepper = new UINumericStepper(bpmStepper.x + 60 + 26, bpmStepper.y, 4, 1, 0, 1, null, 54);
add(beatsPerMeasureStepper);
addLabelOn(beatsPerMeasureStepper, "Time Signature");
add(new UIText(beatsPerMeasureStepper.x + 30, beatsPerMeasureStepper.y + 3, 0, "/", 22));
stepsPerBeatStepper = new UINumericStepper(beatsPerMeasureStepper.x + 30 + 24, beatsPerMeasureStepper.y, 4, 1, 0, 1, null, 54);
add(stepsPerBeatStepper);
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, "Create Chart", function() {
createChart();
close();
@@ -118,6 +78,7 @@ class ChartCreationScreen extends UISubstateWindow {
}
function createChart() {
/*
var strlines = [];
for (strline in strumLineList.buttons.members) {
strlines.push({
@@ -143,75 +104,148 @@ class ChartCreationScreen extends UISubstateWindow {
if (onSave != null) onSave({
name: difficultyNameTextBox.label.text,
chart: chartData,
meta: {
bpm: bpmStepper.value,
beatsPerMeasure: beatsPerMeasureStepper.value,
stepsPerBeat: stepsPerBeatStepper.value
},
instBytes: instExplorer.file,
voicesBytes: voicesExplorer.file
});
*/
}
}
class StrumLineButton extends UIButton {
public var numberText:UIText;
public var positionXStepper:UINumericStepper;
public var positionXStepperText:UIText;
public var positionYStepper:UINumericStepper;
public var positionYStepperText:UIText;
public var typeDropDownText:UIText;
public var typeDropDown:UIDropDown;
public var visibleCheckBoxText:UIText;
public var visibleCheckBox:UICheckbox;
public var characterList:UIButtonList<CompactCharacterButton>;
public var strumLineID:Int = -1;
public var strumLine:ChartStrumLine = {
characters: [
"bf"
],
type: 0,
notes: [],
position: "dad",
visible: true,
strumPos: [0,0],
strumLinePos: 0,
strumScale: 1,
vocalsSuffix: ""
};
public var idText:UIText;
public var charactersList:UIButtonList<CompactCharacterButton>;
public var typeDropdown:UIDropDown;
public var stagePositionDropdown:UIDropDown;
public var hudScaleStepper:UINumericStepper;
public var hudXStepper:UINumericStepper;
public var hudYStepper:UINumericStepper;
public var visibleCheckbox:UICheckbox;
public var scrollSpeedStepper:UINumericStepper;
public var usesChartscrollSpeed:UICheckbox;
public var deleteButton:UIButton;
public var deleteIcon:FlxSprite;
public var labels:Map<UISprite, UIText> = [];
public var XYComma:UIText;
public function new(id:Int, char:String, type:Int, visible:Bool) {
super(0, 0, '', function () {}, 510, 150);
numberText = new UIText(5, 5, 0, 'Strumline #$id');
members.push(numberText);
super(0, 0, '', function () {}, 620, 246);
positionXStepperText = new UIText(numberText.x, numberText.y + 26, 0, "X (ratio)");
members.push(positionXStepperText);
autoAlpha = false; frames = Paths.getFrames('editors/ui/inputbox');
positionXStepper = new UINumericStepper(positionXStepperText.x, positionXStepperText.y + 24, 1.0, 0.1, 2, null, null, 90);
members.push(positionXStepper);
function addLabelOn(ui:UISprite, text:String, ?size:Int):UIText {
var uiText:UIText = new UIText(ui.x, ui.y - 24, 0, text, size);
members.push(uiText); labels.set(ui, uiText);
return uiText;
}
positionYStepperText = new UIText(positionXStepper.x + 60 + 26, positionXStepper.y, 0, "Y");
members.push(positionYStepperText);
charactersList = new UIButtonList<CompactCharacterButton>(16, 8+26, 210, 160, "", FlxPoint.get(200, 40), null, 5);
charactersList.frames = Paths.getFrames('editors/ui/inputbox');
charactersList.cameraSpacing = 0;
charactersList.add(new CompactCharacterButton(char, [], charactersList));
members.push(charactersList);
idText = addLabelOn(charactersList, 'Strumline - #$id');
positionYStepper = new UINumericStepper(positionYStepperText.x, positionYStepperText.y + 24, 1.0, 0.1, 2, null, null, 90);
members.push(positionYStepper);
typeDropdown = new UIDropDown(charactersList.x + charactersList.bWidth + 16, 8+26, 200, 32, ["OPPONENT", "PLAYER", "ADDITIONAL"], strumLine.type);
members.push(typeDropdown);
addLabelOn(typeDropdown, "Type");
visibleCheckBoxText = new UIText(positionXStepper.x + 90 + 26, positionXStepper.y, 0, "Visible?");
members.push(visibleCheckBoxText);
var stagePositionI = strumLine.position == null ? strumLine.type : ["DAD", "BOYFRIEND", "GIRLFRIEND"].indexOf(strumLine.position.toUpperCase());
visibleCheckBox = new UICheckbox(visibleCheckBoxText.x, positionYStepperText.y + 24, "Visible", visible);
members.push(visibleCheckBox);
stagePositionDropdown = new UIDropDown(typeDropdown.x + 200 - 32 + 26, typeDropdown.y, 200, 32, ["DAD", "BOYFRIEND", "GIRLFRIEND"], stagePositionI);
members.push(stagePositionDropdown);
addLabelOn(stagePositionDropdown, "Stage Position");
typeDropDownText = new UIText(positionXStepper.x, positionXStepper.y + 32 + 36, 0, "Type");
members.push(typeDropDownText);
hudScaleStepper = new UINumericStepper(typeDropdown.x, typeDropdown.y + 64, strumLine.strumScale == null ? 1 : strumLine.strumScale, 0.001, 2, null, null, 74);
members.push(hudScaleStepper);
addLabelOn(hudScaleStepper, "Scale");
typeDropDown = new UIDropDown(typeDropDownText.x, typeDropDownText.y + 24, 165, 32, ["OPPONENT", "PLAYER", "ADDITIONAL"], type);
members.push(typeDropDown);
var strOffset:Float = strumLine.strumLinePos == null ? (strumLine.type == 1 ? 0.75 : 0.25) : strumLine.strumLinePos;
characterList = new UIButtonList<CompactCharacterButton>(numberText.x + 265 + 26, numberText.y, 210, 140, "", FlxPoint.get(200, 40), null, 5);
characterList.frames = Paths.getFrames('editors/ui/inputbox');
characterList.cameraSpacing = 0;
characterList.add(new CompactCharacterButton(char, [], characterList));
members.push(characterList);
var startingPos:FlxPoint = strumLine.strumLinePos == null ?
FlxPoint.get(strOffset, 50) :
FlxPoint.get(strOffset, strumLine.strumPos[1]);
hudXStepper = new UINumericStepper(hudScaleStepper.x + 80 - 32 + 26, hudScaleStepper.y, startingPos.x, 0.01, 2, 0, 2, 84);
members.push(hudXStepper);
addLabelOn(hudXStepper, "Hud Position (X,Y)");
members.push(XYComma = new UIText(hudXStepper.x + 84 - 32 + 0, hudXStepper.y + 9, 0, ",", 22));
hudYStepper = new UINumericStepper(hudXStepper.x + 84 - 32 + 26, hudXStepper.y, startingPos.y, 0.001, 2, null, null, 84);
members.push(hudYStepper);
visibleCheckbox = new UICheckbox(hudYStepper.x + hudYStepper.bWidth + 42, hudYStepper.y + 9, "Visible?", strumLine.visible);
members.push(visibleCheckbox);
scrollSpeedStepper = new UINumericStepper(typeDropdown.x, typeDropdown.y + 128, strumLine.scrollSpeed, 0.1, 2, 0, 10, 82);
if(strumLine.scrollSpeed == null)
{
scrollSpeedStepper.selectable = false;
} else {
scrollSpeedStepper.selectable = true;
}
members.push(scrollSpeedStepper);
addLabelOn(scrollSpeedStepper, "Scroll Speed");
usesChartscrollSpeed = new UICheckbox(scrollSpeedStepper.x + 104, typeDropdown.y + 135, "Uses charts scroll speed?", strumLine.scrollSpeed == null);
usesChartscrollSpeed.onChecked = function(b) {
if(b)
{
scrollSpeedStepper.value = PlayState.SONG.scrollSpeed;
scrollSpeedStepper.selectable = false;
} else {
scrollSpeedStepper.selectable = true;
}
}
members.push(usesChartscrollSpeed);
deleteButton = new UIButton(16, 246-32-11, "", function () {
// Shit
}, 620-32);
deleteButton.color = 0xFFFF0000;
deleteButton.autoAlpha = false;
members.push(deleteButton);
deleteIcon = new FlxSprite(deleteButton.x + ((deleteButton.bWidth/2)-(15/2)), deleteButton.y + ((deleteButton.bHeight/2)-(16/2))).loadGraphic(Paths.image('editors/delete-button'));
deleteIcon.antialiasing = false;
members.push(deleteIcon);
}
public override function update(elapsed) {
numberText.follow(this, 5, 5);
positionXStepperText.follow(numberText, 0, 26);
positionXStepper.follow(positionXStepperText, 0, 24);
positionYStepperText.follow(positionXStepperText, 65 + 26, 0);
positionYStepper.follow(positionYStepperText, 0, 24);
visibleCheckBoxText.follow(positionYStepperText, 65 + 26, 0);
visibleCheckBox.follow(visibleCheckBoxText, 0, 24);
typeDropDownText.follow(positionXStepper, 0, 36);
typeDropDown.follow(typeDropDownText, 0, 24);
characterList.follow(numberText, 265 + 26, 0);
public override function update(elapsed:Float) {
super.update(elapsed);
charactersList.follow(this, 16, 8+26);
typeDropdown.follow(this, charactersList.x + charactersList.bWidth + 16, 8+26);
stagePositionDropdown.follow(this, typeDropdown.x + 200 - 32 + 26, 8+26);
hudScaleStepper.follow(this, typeDropdown.x, 8+26 + 64);
hudXStepper.follow(this, hudScaleStepper.x + 80 - 32 + 26, 8+26 + 64);
hudYStepper.follow(this, hudXStepper.x + 84 - 32 + 26, 8+26 + 64);
visibleCheckbox.follow(this, hudYStepper.x + hudYStepper.bWidth + 42, 8+26 + 64 + 9);
scrollSpeedStepper.follow(this, typeDropdown.x, 8+26 + 128);
usesChartscrollSpeed.follow(this, scrollSpeedStepper.x + 104, 8+26 + 135);
deleteButton.follow(this, 16, 246-32-11);
deleteIcon.follow(this, 16 + ((deleteButton.bWidth/2)-(15/2)), (246-32-11) + ((deleteButton.bHeight/2)-(16/2)));
XYComma.follow(hudXStepper, 84 - 32, 9);
for (ui => text in labels)
text.follow(ui, 0, -24);
}
}
+1 -1
View File
@@ -1050,7 +1050,7 @@ class Charter extends UIState {
__autosaveElapsed += elapsed;
if (__autosaveElapsed > 5) {
trace("some autosaves");
// trace("some autosaves");
__autosaveElapsed = 0;
}
}
@@ -155,7 +155,7 @@ class CharterStrumlineScreen extends UISubstateWindow {
}
}
vocalsSuffixDropDown = new UIDropDown(typeDropdown.x, hudScaleStepper.y + 128, 200, 32, suffixlist, strumLine.vocalsSuffix != "" ? suffixlist.indexOf(strumLine.vocalsSuffix) : 0);
add(vocalsSuffixDropDown);
addLabelOn(vocalsSuffixDropDown, "Vocal Suffix");
@@ -192,7 +192,6 @@ class CharacterButton extends UIButton {
public function new(x:Float, y:Float, char:String, charsList:Array<String>, parent:UIButtonList<CharacterButton>) {
super(x, y, "", null, 250, 54);
autoAlpha = false;
charIcon = new HealthIcon(Character.getIconFromCharName(char));
charIcon.scale.set(0.3, 0.3);