mod menu prototyping

This commit is contained in:
Cameron Taylor 2021-03-10 00:27:57 -05:00
parent 141c01c8b8
commit 61ab98c879
5 changed files with 136 additions and 8 deletions

View File

@ -96,7 +96,10 @@
<assets path="assets/week7" library="week7" exclude="*.ogg" if="web"/>
<assets path="assets/week7" library="week7" exclude="*.mp3" unless="web"/>
<assets path='example_mods' rename='mods' embed='false'/>
<!-- <assets path='example_mods' rename='mods' embed='false'/> -->
<template path="example_mods" rename="mods" />
<assets path='art/readme.txt' rename='do NOT readme.txt' />
<!-- <template path='mods' /> -->

View File

@ -0,0 +1 @@
awesomes tream--really awesome

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

View File

@ -1,33 +1,146 @@
package;
import Controls.Control;
import flixel.FlxG;
import flixel.group.FlxGroup.FlxTypedGroup;
import flixel.text.FlxText;
import flixel.util.FlxColor;
import polymod.Polymod;
import sys.FileSystem;
class ModdingSubstate extends MusicBeatSubstate
{
var grpMods:FlxTypedGroup<ModMenuItem>;
var enabledMods:Array<String> = [];
var modFolders:Array<String> = [];
var curSelected:Int = 0;
public function new():Void
{
super();
// var pathShit
grpMods = new FlxTypedGroup<ModMenuItem>();
add(grpMods);
refreshModList();
}
override function update(elapsed:Float)
{
if (FlxG.keys.justPressed.R)
refreshModList();
selections();
if (controls.UP_P)
selections(-1);
if (controls.DOWN_P)
selections(1);
if (FlxG.keys.justPressed.SPACE)
grpMods.members[curSelected].modEnabled = !grpMods.members[curSelected].modEnabled;
if (FlxG.keys.justPressed.I && curSelected != 0)
{
var oldOne = grpMods.members[curSelected - 1];
grpMods.members[curSelected - 1] = grpMods.members[curSelected];
grpMods.members[curSelected] = oldOne;
selections(-1);
}
if (FlxG.keys.justPressed.K && curSelected < grpMods.members.length - 1)
{
var oldOne = grpMods.members[curSelected + 1];
grpMods.members[curSelected + 1] = grpMods.members[curSelected];
grpMods.members[curSelected] = oldOne;
selections(1);
}
super.update(elapsed);
}
private function selections(change:Int = 0):Void
{
curSelected += change;
if (curSelected >= modFolders.length)
curSelected = 0;
if (curSelected < 0)
curSelected = modFolders.length - 1;
for (txt in 0...grpMods.length)
{
if (txt == curSelected)
{
grpMods.members[txt].color = FlxColor.YELLOW;
}
else
grpMods.members[txt].color = FlxColor.WHITE;
}
organizeByY();
}
private function refreshModList():Void
{
while (grpMods.members.length > 0)
{
grpMods.remove(grpMods.members[0], true);
}
var modList = [];
modFolders = [];
for (file in FileSystem.readDirectory('./mods'))
{
if (FileSystem.isDirectory("./mods/" + file))
modList.push(file);
if (FileSystem.isDirectory('./mods/' + file))
modFolders.push(file);
}
enabledMods = [];
modList = Polymod.scan('./mods');
trace(modList);
var loopNum:Int = 0;
for (i in modList)
for (i in modFolders)
{
var txt:FlxText = new FlxText(0, 10 + (40 * loopNum), 0, i, 32);
add(txt);
var txt:ModMenuItem = new ModMenuItem(0, 10 + (40 * loopNum), 0, i, 32);
txt.text = i;
grpMods.add(txt);
loopNum++;
}
}
private function organizeByY():Void
{
for (i in 0...grpMods.length)
{
grpMods.members[i].y = 10 + (40 * i);
}
}
}
class ModMenuItem extends FlxText
{
public var modEnabled:Bool = false;
public var daMod:String;
public function new(x:Float, y:Float, w:Float, str:String, size:Int)
{
super(x, y, w, str, size);
}
override function update(elapsed:Float)
{
if (modEnabled)
alpha = 1;
else
alpha = 0.5;
super.update(elapsed);
}
}

View File

@ -37,7 +37,7 @@ class TitleState extends MusicBeatState
override public function create():Void
{
#if polymod
polymod.Polymod.init({modRoot: "mods", dirs: ['introMod']});
polymod.Polymod.init({modRoot: "mods", dirs: ['introMod'], framework: OPENFL});
#end
PlayerSettings.init();
@ -216,6 +216,17 @@ class TitleState extends MusicBeatState
override function update(elapsed:Float)
{
/*
if (FlxG.keys.justPressed.R)
{
#if polymod
polymod.Polymod.init({modRoot: "mods", dirs: ['introMod']});
trace('reinitialized');
#end
}
*/
if (FlxG.sound.music != null)
Conductor.songPosition = FlxG.sound.music.time;
// FlxG.watch.addQuick('amp', FlxG.sound.music.amplitude);