From 177280bd5b46ff91bebd3ed00e035d9dfdda89d6 Mon Sep 17 00:00:00 2001 From: PKPenguin321 Date: Wed, 27 Jan 2021 00:58:58 -0800 Subject: [PATCH] controls.txt and options UI very scuffed, OptionsMenu.hx is now mostly copied from FreeplayState.hx with no actual functionality currently it reads lines off of controls.txt and displays them on Options menu which is now accessible from main menu controls.txt has control functions prefixed with "set", IE "setUP", then the corresponding key on the following line IE "W" --- assets/data/controls.txt | 32 +++++++++++++++++ source/MainMenuState.hx | 2 +- source/OptionsMenu.hx | 76 ++++++++++++++++++++++++++++++++++++++-- 3 files changed, 106 insertions(+), 4 deletions(-) create mode 100644 assets/data/controls.txt diff --git a/assets/data/controls.txt b/assets/data/controls.txt new file mode 100644 index 0000000..7db8a8a --- /dev/null +++ b/assets/data/controls.txt @@ -0,0 +1,32 @@ +setUP +W +setUP (ALTERNATE) +FlxKey.UP +setDOWN +S +setDOWN (ALTERNATE) +FlxKey.DOWN +setLEFT +A +setLEFT (ALTERNATE) +FlxKey.LEFT +setRIGHT +D +setRIGHT (ALTERNATE) +FlxKey.RIGHT +setACCEPT +Z +setACCEPT (ALTERNATE) +ENTER +setBACK +BACKSPACE +setBACK (ALTERNATE) +ESCAPE +setPAUSE +P +setPAUSE (ALTERNATE) +ENTER +setRESET +R +setRESET (ALTERNATE) +null \ No newline at end of file diff --git a/source/MainMenuState.hx b/source/MainMenuState.hx index e1a1db2..02e4043 100644 --- a/source/MainMenuState.hx +++ b/source/MainMenuState.hx @@ -22,7 +22,7 @@ class MainMenuState extends MusicBeatState var menuItems:FlxTypedGroup; #if !switch - var optionShit:Array = ['story mode', 'freeplay', 'donate']; + var optionShit:Array = ['story mode', 'freeplay', 'donate', 'options']; #else var optionShit:Array = ['story mode', 'freeplay']; #end diff --git a/source/OptionsMenu.hx b/source/OptionsMenu.hx index 9e9f354..d4d188d 100644 --- a/source/OptionsMenu.hx +++ b/source/OptionsMenu.hx @@ -1,14 +1,29 @@ package; +import flash.text.TextField; import flixel.FlxG; import flixel.FlxSprite; +import flixel.addons.display.FlxGridOverlay; +import flixel.group.FlxGroup.FlxTypedGroup; +import flixel.math.FlxMath; +import flixel.text.FlxText; import flixel.util.FlxColor; - +import lime.utils.Assets; + class OptionsMenu extends MusicBeatState { + + var selector:FlxText; + var curSelected:Int = 0; + + var controlsStrings:Array = []; + + private var grpControls:FlxTypedGroup; + override function create() { var menuBG:FlxSprite = new FlxSprite().loadGraphic('assets/images/menuDesat.png'); + controlsStrings = CoolUtil.coolTextFile('assets/data/controls.txt'); menuBG.color = 0xFFea71fd; menuBG.setGraphicSize(Std.int(menuBG.width * 1.1)); menuBG.updateHitbox(); @@ -16,14 +31,69 @@ class OptionsMenu extends MusicBeatState menuBG.antialiasing = true; add(menuBG); + grpControls = new FlxTypedGroup(); + add(grpControls); + + for (i in 0...controlsStrings.length) + { + if(controlsStrings[i].indexOf('set') != -1){ + var controlLabel:Alphabet = new Alphabet(0, (70 * i) + 30, controlsStrings[i].substring(3)+': '+controlsStrings[i+1], true, false); + controlLabel.isMenuItem = true; + controlLabel.targetY = i; + grpControls.add(controlLabel); + } + // DONT PUT X IN THE FIRST PARAMETER OF new ALPHABET() !! + } + super.create(); } override function update(elapsed:Float) { + super.update(elapsed); + if (controls.BACK) FlxG.switchState(new MainMenuState()); - - super.update(elapsed); + if(controls.UP_P) + changeSelection(-1); + if(controls.DOWN_P) + changeSelection(1); + } + + function changeSelection(change:Int = 0) + { + #if !switch + NGio.logEvent('Fresh'); + #end + + FlxG.sound.play('assets/sounds/scrollMenu' + TitleState.soundExt, 0.4); + + curSelected += change; + + if (curSelected < 0) + curSelected = controlsStrings.length - 1; + if (curSelected >= controlsStrings.length) + curSelected = 0; + + // selector.y = (70 * curSelected) + 30; + + var bullShit:Int = 0; + + for (item in grpControls.members) + { + item.targetY = bullShit - curSelected; + bullShit++; + + item.alpha = 0.6; + // item.setGraphicSize(Std.int(item.width * 0.8)); + + if (item.targetY == 0) + { + item.alpha = 1; + // item.setGraphicSize(Std.int(item.width)); + } + } + } + }