Finished Charter & Options in Translation File

This commit is contained in:
Furo
2025-07-21 19:06:25 +02:00
parent 64f8553811
commit daa7550c35
21 changed files with 230 additions and 156 deletions
+6 -2
View File
@@ -37,9 +37,13 @@ class DebugOptionsScreen extends OptionsScreen {
}));
#end
add(new Checkbox(
"Resizable Editors",
"If checked, this will allow the editors to render beyond the base 1280x720 resolution of FNF (allowing for more detail and space...)",
getName("editorsResizable"),
getDesc("editorsResizable"),
"editorsResizable"));
add(new Checkbox(
getName("bypassEditorsResize"),
getDesc("bypassEditorsResize"),
"bypassEditorsResize"));
add(new Checkbox(
getName("editorSFX"),
getDesc("editorSFX"),
@@ -48,7 +48,7 @@ class CharacterCreationScreen extends UISubstateWindow {
[new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFAD1212), "$")]);
imageExplorer.maxSize.y -= 100;
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, "Save & Close", function() {
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, TU.translate("editor.saveClose"), function() {
close();
createCharacter();
}, 125);
@@ -436,7 +436,7 @@ class CharacterEditor extends UIState {
super.onResize(width, height);
if (!UIState.resolutionAware) return;
if (width < FlxG.initialWidth || height < FlxG.initialHeight) {
if ((width < FlxG.initialWidth || height < FlxG.initialHeight) && !Options.bypassEditorsResize) {
width = FlxG.initialWidth; height = FlxG.initialHeight;
}
@@ -42,7 +42,7 @@ class CharacterSpriteScreen extends UISubstateWindow {
ogImageSaveData = imageExplorer.getSaveData();
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20, windowSpr.y + windowSpr.bHeight - 20, "Save & Close", function() {
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20, windowSpr.y + windowSpr.bHeight - 20, TU.translate("editor.saveClose"), function() {
addToUndo(); // should be async?? -lunar
imageExplorer.saveFiles('${Paths.getAssetsRoot()}/images/characters', () -> {
onSave('${imageExplorer.saveData.directory.length > 0 ? '${imageExplorer.saveData.directory}/' : ""}' + imageExplorer.imageName, imageExplorer.isAtlas);
+83 -85
View File
@@ -34,6 +34,9 @@ class Charter extends UIState {
private function get_chart()
return PlayState.SONG;
inline function translate(id:String, ?args:Array<Dynamic>)
return TU.translate("charter." + id, args);
public static var instance(get, never):Charter;
private static inline function get_instance()
@@ -129,149 +132,143 @@ class Charter extends UIState {
topMenu = [
{
label: TU.translate("chart.topBar.file"),
label: translate("topBar.file"),
childs: [
/*{
label: TU.translate("chart.file.new")
label: translate("file.new")
},
null,*/
{
label: TU.translate("chart.file.save"),
label: translate("file.save"),
keybind: [CONTROL, S],
onSelect: _file_save_all,
},
null,
{
label: "Save chart",
keybind: [CONTROL, SHIFT, S],
onSelect: _file_save,
},
{
label: TU.translate("chart.file.saveAs"),
label: translate("file.saveAs"),
keybind: [CONTROL, SHIFT, S],
onSelect: _file_saveas,
},
null,
{
label: "Save global events",
label: translate("file.saveGlobalEvents"),
keybind: [CONTROL, B, S],
onSelect: _file_events_save,
},
{
label: "Save global events as...",
label: translate("file.saveGlobalEvents"),
onSelect: _file_events_saveas,
},
{
label: "Save chart without local events",
label: translate("file.saveNoLocalEvents"),
keybind: [CONTROL, ALT, S],
onSelect: _file_save_no_events,
},
{
label: "Save chart without local events as...",
label: translate("file.saveNoLocalEventsAs"),
onSelect: _file_saveas_no_events,
},
null,
{
label: TU.translate("chart.file.saveMeta"),
label: translate("file.saveMeta"),
keybind: [CONTROL, M, S],
onSelect: _file_meta_save,
},
{
label: TU.translate("chart.file.saveMetaAs"),
label: translate("file.saveMetaAs"),
onSelect: _file_meta_saveas,
},
null,
{
label: TU.translate("chart.file.exportFnfLegacy"),
label: translate("file.exportFnfLegacy"),
onSelect: _file_saveas_fnflegacy,
},
{
label: TU.translate("chart.file.exportPsych"),
label: translate("file.exportPsych"),
onSelect: _file_saveas_psych,
},
null,
{
label: TU.translate("chart.file.exit"),
label: translate("file.exit"),
onSelect: _file_exit
}
]
},
{
label: TU.translate("chart.topBar.edit"),
label: translate("topBar.edit"),
childs: [
{
label: TU.translate("chart.edit.undo"),
label: translate("edit.undo"),
keybind: [CONTROL, Z],
onSelect: _edit_undo
},
{
label: TU.translate("chart.edit.redo"),
label: translate("edit.redo"),
keybinds: [[CONTROL, Y], [CONTROL, SHIFT, Z]],
onSelect: _edit_redo
},
null,
{
label: TU.translate("chart.edit.copy"),
label: translate("edit.copy"),
keybind: [CONTROL, C],
onSelect: _edit_copy
},
{
label: TU.translate("chart.edit.paste"),
label: translate("edit.paste"),
keybind: [CONTROL, V],
onSelect: _edit_paste
},
null,
{
label: TU.translate("chart.edit.cut"),
label: translate("edit.cut"),
keybind: [CONTROL, X],
onSelect: _edit_cut
},
{
label: TU.translate("chart.edit.delete"),
label: translate("edit.delete"),
keybind: [DELETE],
onSelect: _edit_delete
}
]
},
{
label: TU.translate("chart.topBar.chart"),
label: translate("topBar.chart"),
childs: [
{
label: TU.translate("chart.chart.playtest"),
label: translate("chart.playtest"),
keybind: [ENTER],
onSelect: _chart_playtest
},
{
label: TU.translate("chart.chart.playtestHere"),
label: translate("chart.playtestHere"),
keybind: [SHIFT, ENTER],
onSelect: _chart_playtest_here
},
null,
{
label: TU.translate("chart.chart.playtestOpponent"),
label: translate("chart.playtestOpponent"),
keybind: [CONTROL, ENTER],
onSelect: _chart_playtest_opponent
},
{
label: TU.translate("chart.chart.playtestOpponentHere"),
label: translate("chart.playtestOpponentHere"),
keybind: [CONTROL, SHIFT, ENTER],
onSelect: _chart_playtest_opponent_here
},
null,
{
label: TU.translate("chart.chart.enableScripts"),
label: translate("chart.enableScripts"),
onSelect: _chart_enablescripts,
icon: Options.charterEnablePlaytestScripts ? 1 : 0
},
null,
{
label: TU.translate("chart.chart.editChartData"),
label: translate("chart.editChartData"),
color: 0xFF959829, icon: 4,
onCreate: function (button:UIContextMenuOptionSpr) {button.label.offset.x = button.icon.offset.x = -2;},
onSelect: chart_edit_data
},
{
label: TU.translate("chart.chart.editMetadata"),
label: translate("chart.editMetadata"),
color: 0xFF959829, icon: 4,
onCreate: function (button:UIContextMenuOptionSpr) {button.label.offset.x = button.icon.offset.x = -2;},
onSelect: chart_edit_metadata
@@ -279,133 +276,133 @@ class Charter extends UIState {
]
},
{
label: TU.translate("chart.topBar.view"),
label: translate("topBar.view"),
childs: [
{
label: TU.translate("chart.view.zoomIn"),
label: translate("view.zoomIn"),
keybind: [CONTROL, NUMPADPLUS],
onSelect: _view_zoomin
},
{
label: TU.translate("chart.view.zoomOut"),
label: translate("view.zoomOut"),
keybind: [CONTROL, NUMPADMINUS],
onSelect: _view_zoomout
},
{
label: TU.translate("chart.view.resetZoom"),
label: translate("view.resetZoom"),
keybind: [CONTROL, NUMPADZERO],
onSelect: _view_zoomreset
},
null,
{
label: TU.translate("chart.view.showSectionsSeparator"),
label: translate("view.showSectionsSeparator"),
onSelect: _view_showeventSecSeparator,
icon: Options.charterShowSections ? 1 : 0
},
{
label: TU.translate("chart.view.showBeatsSeparator"),
label: translate("view.showBeatsSeparator"),
onSelect: _view_showeventBeatSeparator,
icon: Options.charterShowBeats ? 1 : 0
},
null,
{
label: 'Rainbow Waveforms',
label: translate("view.rainbowWaveforms"),
onSelect: _view_switchWaveformRainbow,
icon: Options.charterRainbowWaveforms ? 1 : 0
},
{
label: TU.translate("chart.view.lowDetailWaveforms"),
label: translate("view.lowDetailWaveforms"),
onSelect: _view_switchWaveformDetail,
icon: Options.charterLowDetailWaveforms ? 1 : 0
},
null,
{
label: "Scroll left",
label: translate("view.scrollLeft"),
keybind: [SHIFT, LEFT],
onSelect: _view_scrollleft
},
{
label: "Scroll right",
label: translate("view.scrollRight"),
keybind: [SHIFT, RIGHT],
onSelect: _view_scrollright
},
{
label: "Reset scroll",
label: translate("view.scrollReset"),
keybind: [SHIFT, DOWN],
onSelect: _view_scrollreset
}
]
},
{
label: TU.translate("chart.topBar.song"),
label: translate("topBar.song"),
childs: buildSongUI()
},
{
label: TU.translate("chart.topBar.note") + " >",
label: translate("topBar.note") + " >",
childs: buildNoteTypesUI()
},
{
label: TU.translate("chart.topBar.snap") + " >",
label: translate("topBar.snap") + " >",
childs: buildSnapsUI()
},
{
label: TU.translate("chart.topBar.playback") + " >",
label: translate("topBar.playback") + " >",
childs: [
{
label: TU.translate("chart.playback.play"),
label: translate("playback.play"),
keybind: [SPACE],
onSelect: _playback_play
},
null,
{
label: TU.translate("chart.playback.speedRaise", ["25"]),
label: translate("playback.speedRaise", ["25"]),
keybind: [PERIOD],
onSelect: _playback_speed_raise
},
{
label: TU.translate("chart.playback.speedReset"),
label: translate("playback.speedReset"),
onSelect: _playback_speed_reset
},
{
label: TU.translate("chart.playback.speedLower", ["25"]),
label: translate("playback.speedLower", ["25"]),
keybind: [COMMA],
onSelect: _playback_speed_lower
},
null,
{
label: TU.translate("chart.playback.sectionBack"),
label: translate("playback.sectionBack"),
keybind: [A],
onSelect: _playback_back
},
{
label: TU.translate("chart.playback.sectionForward"),
label: translate("playback.sectionForward"),
keybind: [D],
onSelect: _playback_forward
},
{
label: "Go to start of section",
label: translate("playback.sectionStart"),
keybind: [SHIFT, S],
onSelect: _playback_section_start
},
null,
{
label: "Go back a step",
label: translate("playback.backStep"),
keybind: [W],
onSelect: _playback_back_step
},
{
label: "Go forward a step",
label: translate("playback.forwardStep"),
keybind: [S],
onSelect: _playback_forward_step
},
null,
{
label: TU.translate("chart.playback.metronome"),
label: translate("playback.metronome"),
onSelect: _playback_metronome,
icon: Options.charterMetronomeEnabled ? 1 : 0
},
/*{
label: TU.translate("chart.playback.visualMetronome")
label: translate("playback.visualMetronome")
},*/
]
}
@@ -431,7 +428,7 @@ class Charter extends UIState {
gridBackdrops = new CharterBackdropGroup(strumLines);
gridBackdrops.notesGroup = this.notesGroup;
leftEventRowText = new UIText(0, -40, 0, "Local Events\n(Only This Difficulty)", 12);
leftEventRowText = new UIText(0, -40, 0, translate("info.localEvents"), 12);
leftEventRowText.alignment = "center"; leftEventRowText.alpha = 0.75;
leftEventsBackdrop = new EventBackdrop(false);
@@ -441,7 +438,7 @@ class Charter extends UIState {
leftEventsGroup.eventsBackdrop = leftEventsBackdrop;
leftEventsGroup.eventsRowText = leftEventRowText;
rightEventRowText = new UIText(0, -40, 0, "Global Events\n(All Difficulties)", 12);
rightEventRowText = new UIText(0, -40, 0, translate("info.globalEvents"), 12);
rightEventRowText.alignment = "center"; rightEventRowText.alpha = 0.75;
rightEventsBackdrop = new EventBackdrop(true);
@@ -469,7 +466,7 @@ class Charter extends UIState {
topMenuSpr = new UITopMenu(topMenu);
topMenuSpr.cameras = uiGroup.cameras = [uiCamera];
noteTypeText = new UIText(0, 0, 0, "(0) " + TU.translate("chart.noteTypes.default"));
noteTypeText = new UIText(0, 0, 0, "(0) " + translate("noteTypes.default"));
noteTypeText.cameras = [uiCamera];
scrollBar = new UIScrollBar(FlxG.width - 20, topMenuSpr.bHeight, 1000, 0, 100);
@@ -507,12 +504,12 @@ class Charter extends UIState {
autoSaveNotif = new CharterAutoSaveUI(20, strumlineInfoBG.y + strumlineInfoBG.height + 20);
uiGroup.add(autoSaveNotif);
strumlineAddButton = new CharterStrumlineButton("editors/new", TU.translate("chart.createNew"));
strumlineAddButton = new CharterStrumlineButton("editors/new", translate("createNew"));
strumlineAddButton.onClick = createStrumWithUI;
strumlineAddButton.animationOnClick = false;
strumlineAddButton.textColorLerp = 0.5;
strumlineLockButton = new CharterStrumlineButton("editors/charter/lock-strumline", TU.translate("chart.lock-unlock"));
strumlineLockButton = new CharterStrumlineButton("editors/charter/lock-strumline", translate("lock-unlock"));
strumlineLockButton.onClick = function () {
if (strumLines != null) {
strumLines.draggable = !strumLines.draggable;
@@ -782,7 +779,7 @@ class Charter extends UIState {
if (Options.charterAutoSavesSeparateFolder)
__autoSaveLocation = __diff.toLowerCase() + DateTools.format(Date.now(), "%m-%d_%H-%M");
var filename = !Options.charterAutoSavesSeparateFolder ? '${__diff.toLowerCase()}.json' : '${__autoSaveLocation}.json';
autoSaveNotif.startAutoSave(autoSaveTimer, TU.translate("chart.popup.savedChartAt", [filename]));
autoSaveNotif.startAutoSave(autoSaveTimer, translate("popup.savedChartAt", [filename]));
}
if (autoSaveTimer <= 0) {
autoSaveTimer = Options.charterAutoSaveTime;
@@ -1331,7 +1328,7 @@ class Charter extends UIState {
noteTypeText.x = noteTopButton.x + noteTopButton.bWidth + 6;
noteTypeText.y = Std.int((noteTopButton.bHeight - noteTypeText.height) / 2);
}
noteTypeText.text = '($noteType) ' + (noteTypes[noteType-1] == null ? TU.translate("chart.noteTypes.default") : noteTypes[noteType-1]);
noteTypeText.text = '($noteType) ' + (noteTypes[noteType-1] == null ? translate("noteTypes.default") : noteTypes[noteType-1]);
super.update(elapsed);
@@ -1431,7 +1428,7 @@ class Charter extends UIState {
super.onResize(width, height);
if (!UIState.resolutionAware) return;
if (width < FlxG.initialWidth || height < FlxG.initialHeight) {
if ((width < FlxG.initialWidth || height < FlxG.initialHeight) && !Options.bypassEditorsResize) {
width = FlxG.initialWidth; height = FlxG.initialHeight;
}
@@ -1854,7 +1851,7 @@ class Charter extends UIState {
}
if (FlxG.keys.pressed.SHIFT)
addBookmarkAt("New Bookmark", 0xFF911DD9, curStepFloat);
addBookmarkAt(translate("bookmarks.newBookmarkName"), 0xFF911DD9, curStepFloat);
else {
FlxG.state.openSubState(new CharterBookmarkCreation(curStepFloat, (success, n, c, s) -> {
if (success)
@@ -1943,22 +1940,22 @@ class Charter extends UIState {
var songTopButton:UITopMenuButton = topMenuSpr == null ? null : cast topMenuSpr.members[songIndex];
var newChilds:Array<UIContextMenuOption> = [
{
label: TU.translate("chart.song.goStart"),
label: translate("song.goStart"),
keybind: [HOME],
onSelect: _song_start
},
{
label: TU.translate("chart.song.goEnd"),
label: translate("song.goEnd"),
keybind: [END],
onSelect: _song_end
},
null,
{
label: "Add Bookmark Here",
label: translate("bookmarks.addBookmarkHere"),
onSelect: _bookmarks_add
},
{
label: "Edit Bookmark List",
label: translate("bookmarks.editBookmarkList"),
color: 0xFF959829, icon: 4,
onCreate: function (button:UIContextMenuOptionSpr) {button.label.offset.x = button.icon.offset.x = -2; button.icon.offset.y = -1;},
onSelect: _bookmarks_edit_list
@@ -1970,10 +1967,11 @@ class Charter extends UIState {
if (bookmarks.length > 0)
{
var goToBookmark = TU.getRaw("charter.bookmarks.goTo");
for (b in bookmarks)
{
newChilds.push({
label: "Go To \"" + b.name + "\"",
label: goToBookmark.format([b.name]),
onSelect: function(_) { Conductor.songPosition = Conductor.getTimeForStep(b.time); }
});
}
@@ -1982,12 +1980,12 @@ class Charter extends UIState {
newChilds.push({
label: TU.translate("chart.song.muteInst"),
label: translate("song.muteInst"),
onSelect: _song_muteinst
});
newChilds.push({
label: TU.translate("chart.song.muteVoices"),
label: translate("song.muteVoices"),
onSelect: _song_mutevoices
});
@@ -2045,16 +2043,16 @@ class Charter extends UIState {
var snapsTopButton:UITopMenuButton = topMenuSpr == null ? null : cast topMenuSpr.members[snapIndex];
var newChilds:Array<UIContextMenuOption> = [
{
label: TU.translate("chart.snap.increaseSnap"),
label: translate("snap.increaseSnap"),
keybind: [X],
onSelect: _snap_increasesnap
},
{
label: TU.translate("chart.snap.resetSnap"),
label: translate("snap.resetSnap"),
onSelect: _snap_resetsnap
},
{
label: TU.translate("chart.snap.decreaseSnap"),
label: translate("snap.decreaseSnap"),
keybind: [Z],
onSelect: _snap_decreasesnap
},
@@ -2133,29 +2131,29 @@ class Charter extends UIState {
var noteTopButton:UITopMenuButton = topMenuSpr == null ? null : cast topMenuSpr.members[noteIndex];
var newChilds:Array<UIContextMenuOption> = [
{
label: TU.translate("chart.note.addSustainLength"),
label: translate("note.addSustainLength"),
keybind: [E],
onSelect: _note_addsustain
},
{
label: TU.translate("chart.note.subtractSustainLength"),
label: translate("note.subtractSustainLength"),
keybind: [Q],
onSelect: _note_subtractsustain
},
null,
{
label: TU.translate("chart.note.selectAll"),
label: translate("note.selectAll"),
keybind: [CONTROL, A],
onSelect: _note_selectall
},
{
label: TU.translate("chart.note.selectMeasure"),
label: translate("note.selectMeasure"),
keybind: [CONTROL, SHIFT, A],
onSelect: _note_selectmeasure
},
null,
{
label: "(0) " + TU.translate("chart.noteTypes.default"),
label: "(0) " + translate("noteTypes.default"),
keybind: [ZERO],
onSelect: (_) -> {changeNoteType(0);},
icon: this.noteType == 0 ? 1 : 0
@@ -2175,7 +2173,7 @@ class Charter extends UIState {
newChilds.push(newChild);
}
newChilds.push({
label: TU.translate("chart.note.editNoteTypesList"),
label: translate("note.editNoteTypesList"),
color: 0xFF959829, icon: 4,
onCreate: function (button:UIContextMenuOptionSpr) {button.label.offset.x = button.icon.offset.x = -2;},
onSelect: editNoteTypesList
@@ -20,7 +20,7 @@ class CharterBookmarkCreation extends UISubstateWindow {
winWidth = 320;
winHeight = 250;
winTitle = 'Creating New Bookmark';
winTitle = TU.translate("charter.bookmarks.createBookmarkTitle");
callback = close;
@@ -39,22 +39,22 @@ class CharterBookmarkCreation extends UISubstateWindow {
super.create();
textBox = new UITextBox(windowSpr.x + 20, windowSpr.y + 70, "New Bookmark", 276);
textBox = new UITextBox(windowSpr.x + 20, windowSpr.y + 70, TU.translate("charter.bookmarks.newBookmarkName"), 276);
textBox.antialiasing = true;
add(textBox);
addLabelOn(textBox, "Bookmark Name:");
addLabelOn(textBox, TU.translate("charter.bookmarks.createBookmarkName"));
colorPicker = new UICompactColorwheel(textBox.x, textBox.y + textBox.bHeight + 34, flixel.util.FlxColor.RED);
add(colorPicker);
addLabelOn(colorPicker, "Bookmark Color:");
addLabelOn(colorPicker, TU.translate("charter.bookmarks.createBookmarkColor"));
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, "Save & Close", function() {
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, TU.translate("editor.saveClose"), function() {
callback(true, textBox.label.text, colorPicker.curColor, bookmarkStep);
close();
}, 125);
add(saveButton);
closeButton = new UIButton(saveButton.x - 20, saveButton.y, "Close", function() {
closeButton = new UIButton(saveButton.x - 20, saveButton.y, TU.translate("editor.close"), function() {
callback(false, "", FlxColor.TRANSPARENT, -1);
close();
}, 125);
@@ -12,14 +12,14 @@ class CharterBookmarkList extends UISubstateWindow {
FlxG.sound.music.pause();
Charter.instance.vocals.pause();
winTitle = 'Bookmark List Editor';
winTitle = TU.translate("charter.bookmarks.editBookmarkListTitle");
winWidth = 380;
winHeight = 390;
super.create();
var title:UIText;
add(title = new UIText(windowSpr.x + 20, windowSpr.y + 30 + 16, 0, "Edit Bookmarks", 28));
add(title = new UIText(windowSpr.x + 20, windowSpr.y + 30 + 16, 0, TU.translate("charter.bookmarks.editBookmarksTitle"), 28));
bookmarkList = new UIButtonList<BookmarkButton>(20, title.y + title.height + 10, winWidth - 40, 342 - 85 - 16, null, FlxPoint.get(winWidth - 40, (342 - 85 - 16)/4), null, 0);
bookmarkList.cameraSpacing = 0;
@@ -32,13 +32,13 @@ class CharterBookmarkList extends UISubstateWindow {
bookmarkList.content.remove(bookmarkList.addButton); //i dont need it
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, "Save & Close", function() {
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, TU.translate("editor.saveClose"), function() {
saveList();
close();
}, 125);
add(saveButton);
closeButton = new UIButton(saveButton.x - 20, saveButton.y, "Close", function() {
closeButton = new UIButton(saveButton.x - 20, saveButton.y, TU.translate("editor.close"), function() {
close();
}, 125);
add(closeButton);
@@ -15,7 +15,7 @@ class CharterEventAdd extends UISliceSprite {
this.global = flipX = global;
sideText = new UIText(0, -40, 0, global ? "Global Event" : "Local Event", 12);
sideText = new UIText(0, -40, 0, TU.translate("charter.eventType-" + (global ? "global" : "local")), 12);
sideText.alignment = "center"; sideText.alpha = 0.75;
text = new UIText(0, 0, 0, "");
@@ -37,7 +37,7 @@ class CharterEventAdd extends UISliceSprite {
public override function update(elapsed:Float) {
super.update(elapsed);
text.follow(this, global ? bWidth - text.width - (text.text == "Add event" ? 15 : 20) : 20, (bHeight - text.height) / 2);
text.follow(this, global ? bWidth - text.width - (text.text == TU.translate("charter.addEvent") ? 15 : 20) : 20, (bHeight - text.height) / 2);
sideText.follow(this, (bWidth/2) - (sideText.fieldWidth/2), -(sideText.height + 2));
alpha = sprAlpha * 0.75;
text.alpha = sprAlpha;
@@ -122,7 +122,7 @@ class CharterStrumlineScreen extends UISubstateWindow {
hudSpacingStepper = new UINumericStepper(hudScaleStepper.x + 80 - 32 + 26, hudScaleStepper.y, strumLine.strumSpacing != null ? strumLine.strumSpacing : 1, 0.001, 10, null, null, 84);
add(hudSpacingStepper);
addLabelOn(hudSpacingStepper, "Spacing");
addLabelOn(hudSpacingStepper, TU.translate("charterStrumLine.spacing"));
var strOffset:Float = strumLine.strumLinePos == null ? (strumLine.type == 1 ? 0.75 : 0.25) : strumLine.strumLinePos;
@@ -175,7 +175,7 @@ class CharterStrumlineScreen extends UISubstateWindow {
keyCountStepper = new UINumericStepper(stagePositionDropdown.x, vocalsSuffixDropDown.y, strumLine.keyCount != null ? strumLine.keyCount : 4, 1, 0, 1, 1000, 84);
// if (Flags.CHARTER_ADVANCED_SETTINGS) {
add(keyCountStepper);
addLabelOn(keyCountStepper, "Key Count");
addLabelOn(keyCountStepper, TU.translate("charterStrumLine.keyCount"));
// }
strumLineCam = new HudCamera();
@@ -140,10 +140,10 @@ class SongCreationScreen extends UISubstateWindow {
translate("voicesAudio"),
[new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFAD1212), "$")]);*/
addLabelOn(voicesExplorer, "Vocal Audio File");
addLabelOn(voicesExplorer, translate("voicesAudio"));
importFrom = new UIButton(windowSpr.x + 20, windowSpr.y + windowSpr.bHeight - 16 - 32, "Import From...", function() {
winTitle = "Importing Song";
importFrom = new UIButton(windowSpr.x + 20, windowSpr.y + windowSpr.bHeight - 16 - 32, translate("importFrom"), function() {
winTitle = translate("win-title-importing");
isImporting = true;
updatePagesTexts();
refreshPages();
@@ -183,14 +183,14 @@ class SongCreationScreen extends UISubstateWindow {
{checkbox.y += 6; checkbox.x += 4;}
var menuTitle:UIText;
selectFormatGroup.add(menuTitle = new UIText(windowSpr.x + 20, windowSpr.y + 30 + 16, 0, "Import From:", 28));
selectFormatGroup.add(menuTitle = new UIText(windowSpr.x + 20, windowSpr.y + 30 + 16, 0, translate("importSource"), 28));
engineDropdown = new UIDropDown(menuTitle.x, menuTitle.y + menuTitle.height + 36, 480, 32, ["Psych/Legacy FNF", "V-Slice", "V-Slice Project (.fnfc)"]);
engineDropdown = new UIDropDown(menuTitle.x, menuTitle.y + menuTitle.height + 36, 480, 32, [translate("legacyOrPsych"), translate("vslice"), translate("vsliceProject")]);
selectFormatGroup.add(engineDropdown);
addLabelOn(engineDropdown, "Chart Format");
addLabelOn(engineDropdown, translate("importChartFormat"));
createSong = new UIButton(windowSpr.x + 20, windowSpr.y + windowSpr.bHeight - 16 - 32, "< Back", function() {
winTitle = "Creating New Song";
createSong = new UIButton(windowSpr.x + 20, windowSpr.y + windowSpr.bHeight - 16 - 32, "< " + translate("back"), function() {
winTitle = translate("win-title");
isImporting = false;
updatePagesTexts();
refreshPages();
@@ -198,7 +198,7 @@ class SongCreationScreen extends UISubstateWindow {
selectFormatGroup.add(createSong);
var menuTitle:UIText;
importAudioGroup.add(menuTitle = new UIText(windowSpr.x + 20, windowSpr.y + 30 + 16, 0, "Add Audios", 28));
importAudioGroup.add(menuTitle = new UIText(windowSpr.x + 20, windowSpr.y + 30 + 16, 0, translate("importAudios"), 28));
importInstExplorer = new UIFileExplorer(menuTitle.x, menuTitle.y + menuTitle.height + 36, null, null, Flags.SOUND_EXT, function (path, res) {
if (path == null || res == null) return;
@@ -207,8 +207,8 @@ class SongCreationScreen extends UISubstateWindow {
importInstExplorer.uiElement = audioPlayer;
});
importAudioGroup.add(importInstExplorer);
addLabelOn(importInstExplorer, "Inst Audio File").applyMarkup(
"Inst Audio File $* Required$",
addLabelOn(importInstExplorer, "").applyMarkup(
translate("instAudio"),
[new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFAD1212), "$")]);
importVoicesExplorer = new UIFileExplorer(importInstExplorer.x + 320 + 26, importInstExplorer.y, null, null, Flags.SOUND_EXT, function (path, res) {
@@ -218,26 +218,26 @@ class SongCreationScreen extends UISubstateWindow {
importVoicesExplorer.uiElement = audioPlayer;
});
importAudioGroup.add(importVoicesExplorer);
addLabelOn(importVoicesExplorer, "Vocal Audio File");
addLabelOn(importVoicesExplorer, translate("voicesAudio"));
var menuTitle:UIText;
importDataGroup.add(menuTitle = new UIText(windowSpr.x + 20, windowSpr.y + 30 + 16, 0, "Add Data", 28));
importDataGroup.add(importIdTextBox = new UITextBox(menuTitle.x, menuTitle.y + menuTitle.height + 36));
addLabelOn(importIdTextBox, "Song file name").applyMarkup(
"Song file name $* Required$",
addLabelOn(importIdTextBox, "").applyMarkup(
translate("songFileName"),
[new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFAD1212), "$")]);
importChartFile = new UIFileExplorer(importIdTextBox.x, importIdTextBox.y + importIdTextBox.height + 56, null, null, "fnfc", function (_, _) importIdTextBox.label.text = new haxe.io.Path(importChartFile.filePath).file);
importDataGroup.add(importChartFile);
addLabelOn(importChartFile, "Data/Chart File").applyMarkup(
"Data/Chart File $* Required$",
addLabelOn(importChartFile, "").applyMarkup(
translate("songDataFile"),
[new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFAD1212), "$")]);
importMetaFile = new UIFileExplorer(importChartFile.x + 320 + 26, importChartFile.y, null, null, "json");
importDataGroup.add(importMetaFile);
addLabelOn(importMetaFile, "Meta File").applyMarkup(
"Meta File $* Required$",
addLabelOn(importMetaFile, "").applyMarkup(
translate("songMetaFile"),
[new FlxTextFormatMarkerPair(new FlxTextFormat(0xFFAD1212), "$")]);
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, TU.translate("editor.saveClose"), function() {
@@ -291,7 +291,7 @@ class SongCreationScreen extends UISubstateWindow {
if (isImporting)
{
var name = engineDropdown.options[engineDropdown.index];
var project = name == "V-Slice Project (.fnfc)";
var project = name == translate("vsliceProject");
if (curPage == 1) {
importInstExplorer.selectable = importVoicesExplorer.selectable = !project;
@@ -299,7 +299,7 @@ class SongCreationScreen extends UISubstateWindow {
} else if (curPage == 2) {
importIdTextBox.selectable = !project;
importChartFile.fileType = project ? "fnfc" : "json";
importMetaFile.selectable = name == "V-Slice";
importMetaFile.selectable = name == translate("vslice");
saveButton.selectable = importChartFile.file != null && (!importMetaFile.selectable || importMetaFile.file != null) && (!importIdTextBox.selectable || importIdTextBox.label.text.trim().length > 0);
} else
saveButton.selectable = true;
@@ -331,7 +331,7 @@ class SongCreationScreen extends UISubstateWindow {
titleSpr.x = windowSpr.x + 25;
titleSpr.y = windowSpr.y + ((30 - titleSpr.height) / 2);
saveButton.field.text = curPage == pages.length-1 ? "Save & Close" : 'Next >';
saveButton.field.text = curPage == pages.length-1 ? TU.translate("editor.saveClose") : translate("next") + ' >';
titleSpr.text = '$winTitle (${curPage+1}/${pages.length})';
backButton.field.text = '< ' + translate("back");
@@ -358,9 +358,9 @@ class SongCreationScreen extends UISubstateWindow {
function saveSongInfo() {
if (isImporting)
{
try switch(engineDropdown.options[engineDropdown.index])
try switch(engineDropdown.index)
{
case "V-Slice Project (.fnfc)":
case 0 /*"V-Slice Project (.fnfc)"*/:
var files:Map<String, Any> = [];
for (field in new ZipReader(new BytesInput(importChartFile.file)).read()) {
var fileName = field.fileName;
@@ -368,7 +368,7 @@ class SongCreationScreen extends UISubstateWindow {
files.set(fileName, fileContent);
}
saveFromVSlice(files);
case "V-Slice":
case 1 /*"V-Slice"*/:
var songId = importIdTextBox.label.text;
var files:Map<String, Any> = [];
files.set('${songId}-metadata.json', importMetaFile.file);
@@ -43,7 +43,7 @@ class StageCreationScreen extends UISubstateWindow {
add(stagePathTextBox = new UITextBox(stageNameTextBox.x + 320 + 26, stageNameTextBox.y, "Stage Path"));
addLabelOn(stagePathTextBox, "Stage Path");
add(saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, "Save & Close", function() {
add(saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20 - 125, windowSpr.y + windowSpr.bHeight - 16 - 32, TU.translate("editor.saveClose"), function() {
saveStageInfo();
close();
}, 125));
@@ -88,6 +88,14 @@ class UIContextMenu extends MusicBeatSubstate {
for(o in separators)
o.y -= bg.bHeight;
}
if (bg.x + bg.bWidth > FlxG.width && bg.x > FlxG.width*0.5) {
bg.x -= bg.bWidth;
for(o in contextMenuOptions)
o.x -= bg.bWidth;
for(o in separators)
o.x -= bg.bWidth;
}
}
public function select(option:UIContextMenuOption) {
+1 -1
View File
@@ -4,7 +4,7 @@ import flixel.system.scaleModes.StageSizeScaleMode;
class UIScaleMode extends StageSizeScaleMode {
override public function onMeasure(Width:Int, Height:Int):Void {
if (Width < FlxG.initialWidth || Height < FlxG.initialHeight) {
if ((Width < FlxG.initialWidth || Height < FlxG.initialHeight) && !Options.bypassEditorsResize) {
@:privateAccess {
FlxG.width = FlxG.initialWidth;
FlxG.height = FlxG.initialHeight;
@@ -283,7 +283,7 @@ class UISoftcodedWindow extends UISubstateWindow {
addLayout(getArr(layout.elements));
if(get("hasSaveButton")) {
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20, windowSpr.y + windowSpr.bHeight - 20, "Save & Close", function() {
saveButton = new UIButton(windowSpr.x + windowSpr.bWidth - 20, windowSpr.y + windowSpr.bHeight - 20, TU.translate("editor.saveClose"), function() {
saveData();
close();
}, 125);
@@ -295,7 +295,7 @@ class UISoftcodedWindow extends UISubstateWindow {
if(get("hasCloseButton")) {
var x = saveButton != null ? saveButton.x - 20 : windowSpr.x + windowSpr.bWidth - 20;
var y = saveButton != null ? saveButton.y : windowSpr.y + windowSpr.bHeight - 20;
closeButton = new UIButton(x, y, "Close", function() {
closeButton = new UIButton(x, y, TU.translate("editor.close"), function() {
close();
}, 125);
if(saveButton != null)
+1
View File
@@ -56,6 +56,7 @@ class Options
public static var editorSFX:Bool = true;
public static var editorPrettyPrint:Bool = false;
public static var editorsResizable:Bool = true;
public static var bypassEditorsResize:Bool = false;
public static var maxUndos:Int = 120;
/**
@@ -44,12 +44,12 @@ class AppearanceOptions extends OptionsScreen {
}
#end
add(new Checkbox(
"Streamed Music",
"If checked, only musics will have streamed audio, ALSO freeing a LOT of memory with the downside of higher cpu usage if more audio are being streamed at once (EXPERIMENTAL). Turning this off will consume a lot of memory, especially on longer songs. If you aren't sure, leave this on.",
getName("streamedMusic"),
getDesc("streamedMusic"),
"streamedMusic"));
add(new Checkbox(
"Streamed Vocals",
"If checked, vocals will also be streamed if Streamed Music is checked, will impact the performance if the song uses alot of vocals (EXPERIMENTAL). If you aren't sure, leave this on.",
getName("streamedVocals"),
getDesc("streamedVocals"),
"streamedVocals"));
add(new Checkbox(
getName("autoPause"),
@@ -4,8 +4,8 @@ class MiscOptions extends OptionsScreen {
public override function new(title:String, desc:String) {
super(title, desc, "MiscOptions.");
add(new Checkbox(
"Developer Mode",
"If checked, you will be able to access developer features like certain keybinds, editors, developer options, state reloads, console and more.",
getName("devMode"),
getDesc("devMode"),
"devMode"));
#if UPDATE_CHECKING
add(new Checkbox(
@@ -100,18 +100,18 @@ class KeybindsOptions extends MusicBeatSubstate {
]
},
{
name: 'Volume',
name: translate("category.volume"),
settings: [
{
name: 'Up',
name: translate("up"),
control: 'VOLUME_UP'
},
{
name: 'Down',
name: translate("down"),
control: 'VOLUME_DOWN'
},
{
name: 'Mute',
name: translate("volume.mute"),
control: 'VOLUME_MUTE'
},
]
@@ -126,19 +126,19 @@ class KeybindsOptions extends MusicBeatSubstate {
]
},
{
name: 'Developer',
name: translate("category.developer"),
devModeOnly: true,
settings: [
{
name: 'Developer Menus',
name: translate("developer.devMenus"),
control: 'DEV_ACCESS'
},
{
name: 'Open Console',
name: translate("developer.openConsole"),
control: 'DEV_CONSOLE'
},
{
name: 'Reload State',
name: translate("developer.reloadState"),
control: 'DEV_RELOAD'
},
]