1
0
mirror of https://github.com/Melon-Bread/Pet.GB synced 2024-11-24 20:58:19 -05:00
Pet.GB/source/ConfigMenu.hx

195 lines
4.4 KiB
Haxe
Raw Normal View History

package;
import flixel.FlxG;
import flixel.FlxSprite;
import flixel.group.FlxGroup;
import flixel.text.FlxText;
import flixel.util.FlxColor;
import flixel.util.FlxSave;
import haxe.xml.Parser;
class ConfigMenu extends FlxTypedGroup<FlxSprite>
{
private var _sprBackground:FlxSprite;
private var _sprCursor:FlxSprite;
private var _menuChoice:Int = 0;
private var _txtTitle:FlxText;
private var _txtVolume:FlxText;
private var _txtControls:FlxText;
private var _txtFooter:FlxText;
private var _gameMuted:Bool = false;
private var _strMuted:String = "On";
private var _usingArrows:Bool = true;
private var _strControls:String = "Arrows";
public function new()
{
super();
loadSettings();
_sprBackground = new FlxSprite(9, 9, AssetPaths.Menu__png);
add(_sprBackground);
// Title
_txtTitle = new FlxText((_sprBackground.x + 11), (_sprBackground.y + 2), 0, "Config", 16);
_txtTitle.setFormat(AssetPaths.EarlyGameBoy__ttf, 16, FlxColor.fromRGB(8, 24, 32, 0), CENTER);
_txtTitle.x = (FlxG.width/2) - (_txtTitle.width/2);
add(_txtTitle);
_sprCursor = new FlxSprite(0, 0, AssetPaths.Cursor__png);
_sprCursor.x = (_txtTitle.x - 15);
_sprCursor.y = (_sprBackground.y + 37);
add(_sprCursor);
// Content
_txtVolume = new FlxText((_sprCursor.x + _sprCursor.width), (_sprBackground.y + 33), 0 , "Sound: " + _strMuted);
_txtVolume.setFormat(AssetPaths.EarlyGameBoy__ttf, 8, FlxColor.fromRGB(8, 24, 32, 0), CENTER);
add(_txtVolume);
_txtControls = new FlxText(_txtVolume.x, (_txtVolume.y + _txtVolume.height + 1), 0, "Controls: " + _strControls);
_txtControls.setFormat(AssetPaths.EarlyGameBoy__ttf, 8, FlxColor.fromRGB(8, 24, 32, 0), CENTER);
add (_txtControls);
// Footer
_txtFooter = new FlxText((_sprBackground.x), (_sprBackground.height - 12), 0, "Press Start To Save", 8);
_txtFooter.setFormat(AssetPaths.EarlyGameBoy__ttf, 8, FlxColor.fromRGB(8, 24, 32, 0), CENTER);
add(_txtFooter);
active = false;
visible = false;
}
override public function update(elapsed:Float):Void
{
super.update(elapsed);
if (FlxG.keys.pressed.ENTER || FlxG.gamepads.anyJustPressed(START))
saveConfig();
if (_usingArrows)
{
if (FlxG.keys.justPressed.UP || FlxG.gamepads.anyJustPressed(DPAD_UP))
nextChoice(-1);
else if (FlxG.keys.justPressed.DOWN || FlxG.gamepads.anyJustPressed(DPAD_DOWN))
nextChoice(1);
else if (FlxG.keys.justPressed.LEFT || FlxG.gamepads.anyJustPressed(DPAD_LEFT))
makeChoice();
else if (FlxG.keys.justPressed.RIGHT || FlxG.gamepads.anyJustPressed(DPAD_RIGHT))
makeChoice();
}
else
{
if (FlxG.keys.justPressed.W || FlxG.gamepads.anyJustPressed(DPAD_UP))
nextChoice(-1);
else if (FlxG.keys.justPressed.S || FlxG.gamepads.anyJustPressed(DPAD_DOWN))
nextChoice(1);
else if (FlxG.keys.justPressed.A || FlxG.gamepads.anyJustPressed(DPAD_LEFT))
makeChoice();
else if (FlxG.keys.justPressed.D || FlxG.gamepads.anyJustPressed(DPAD_RIGHT))
makeChoice();
}
}
private function nextChoice(amount:Int)
{
_menuChoice += amount;
if (_menuChoice < 0)
_menuChoice = 2;
else if (_menuChoice > 1)
_menuChoice = 0;
switch (_menuChoice)
{
case 0:
_sprCursor.y = (_sprBackground.y + 37);
case 1:
_sprCursor.y = (_txtControls.y + 4);
}
}
private function makeChoice()
{
switch (_menuChoice)
{
case 0:
_gameMuted = !_gameMuted;
case 1:
_usingArrows = !_usingArrows;
}
updateInfo();
}
private function saveConfig():Void
{
var _save = new FlxSave();
_save.bind("Pet.GB");
if (_gameMuted)
_save.data.muted = true;
else if (!_gameMuted)
_save.data.muted = false;
if (_usingArrows)
_save.data.arrowInput = true;
else if (!_usingArrows)
_save.data.arrowInput = false;
_save.close();
closeMenu();
}
public function OpenMenu():Void
{
loadSettings();
visible = true;
active = true;
updateInfo();
}
private function closeMenu():Void
{
active = false;
visible = false;
}
private function updateInfo():Void
{
if (!_gameMuted)
_strMuted = "On";
else
_strMuted = "Off";
if (_usingArrows)
_strControls = "Arrows";
else
_strControls = "WASD";
_txtVolume.text = "Volume: " + _strMuted;
_txtControls.text = "Controls: " + _strControls;
}
private function loadSettings():Void
{
var _save = new FlxSave();
_save.bind("Pet.GB");
_usingArrows = _save.data.arrowInput;
FlxG.sound.muted = _save.data.muted;
_save.close();
}
}