mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2024-12-22 21:26:49 +00:00
mod menu prototyping
This commit is contained in:
parent
ab4fa026a1
commit
bfd6325c43
|
@ -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' /> -->
|
||||
|
||||
|
|
1
example_mods/introMod/assets/preload/data/introText.txt
Normal file
1
example_mods/introMod/assets/preload/data/introText.txt
Normal file
|
@ -0,0 +1 @@
|
|||
awesomes tream--really awesome
|
BIN
example_mods/introMod/assets/preload/images/gfDanceTitle.png
Normal file
BIN
example_mods/introMod/assets/preload/images/gfDanceTitle.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.3 MiB |
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue