mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2024-12-27 15:37:49 +00:00
UI BULLSHIT WIP
This commit is contained in:
parent
705f43c50a
commit
330aa69741
|
@ -48,9 +48,10 @@
|
||||||
|
|
||||||
<!--In case you want to use the addons package-->
|
<!--In case you want to use the addons package-->
|
||||||
<haxelib name="flixel-addons" />
|
<haxelib name="flixel-addons" />
|
||||||
|
<haxelib name="hscript" />
|
||||||
|
|
||||||
<!--In case you want to use the ui package-->
|
<!--In case you want to use the ui package-->
|
||||||
<!-- <haxelib name="flixel-ui" /> -->
|
<haxelib name="flixel-ui" />
|
||||||
|
|
||||||
<!--In case you want to use nape with flixel-->
|
<!--In case you want to use nape with flixel-->
|
||||||
<!--<haxelib name="nape-haxe4" />-->
|
<!--<haxelib name="nape-haxe4" />-->
|
||||||
|
|
3
assets/data/main-view.xml
Normal file
3
assets/data/main-view.xml
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
<vbox style="padding: 5px;">
|
||||||
|
<button text="Click Me!" onclick="this.text='Thanks!'" style="font-size: 24px;" />
|
||||||
|
</vbox>
|
|
@ -3,7 +3,10 @@ package;
|
||||||
import flixel.FlxG;
|
import flixel.FlxG;
|
||||||
import flixel.FlxSprite;
|
import flixel.FlxSprite;
|
||||||
import flixel.FlxState;
|
import flixel.FlxState;
|
||||||
|
import flixel.addons.ui.FlxUI9SliceSprite;
|
||||||
|
import flixel.addons.ui.FlxUICheckBox;
|
||||||
import flixel.group.FlxGroup.FlxTypedGroup;
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||||
|
import flixel.group.FlxGroup;
|
||||||
import flixel.text.FlxText;
|
import flixel.text.FlxText;
|
||||||
import flixel.ui.FlxButton;
|
import flixel.ui.FlxButton;
|
||||||
import flixel.ui.FlxSpriteButton;
|
import flixel.ui.FlxSpriteButton;
|
||||||
|
@ -13,6 +16,7 @@ import openfl.events.Event;
|
||||||
import openfl.events.IOErrorEvent;
|
import openfl.events.IOErrorEvent;
|
||||||
import openfl.events.IOErrorEvent;
|
import openfl.events.IOErrorEvent;
|
||||||
import openfl.events.IOErrorEvent;
|
import openfl.events.IOErrorEvent;
|
||||||
|
import openfl.geom.Rectangle;
|
||||||
import openfl.net.FileReference;
|
import openfl.net.FileReference;
|
||||||
|
|
||||||
class ChartingState extends MusicBeatState
|
class ChartingState extends MusicBeatState
|
||||||
|
@ -22,6 +26,8 @@ class ChartingState extends MusicBeatState
|
||||||
var sectionShit:FlxTypedGroup<DisplayNote>;
|
var sectionShit:FlxTypedGroup<DisplayNote>;
|
||||||
var notes:Array<Dynamic> = [];
|
var notes:Array<Dynamic> = [];
|
||||||
|
|
||||||
|
var UI_box:FlxUI9SliceSprite;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Array of notes showing when each section STARTS in STEPS
|
* Array of notes showing when each section STARTS in STEPS
|
||||||
* Usually rounded up??
|
* Usually rounded up??
|
||||||
|
@ -34,6 +40,10 @@ class ChartingState extends MusicBeatState
|
||||||
var strumLine:FlxSprite;
|
var strumLine:FlxSprite;
|
||||||
var curSong:String = 'Fresh';
|
var curSong:String = 'Fresh';
|
||||||
var amountSteps:Int = 0;
|
var amountSteps:Int = 0;
|
||||||
|
private var curNoteSelected:DisplayNote;
|
||||||
|
var bullshitUI:FlxGroup;
|
||||||
|
|
||||||
|
var highlight:FlxSprite;
|
||||||
|
|
||||||
override function create()
|
override function create()
|
||||||
{
|
{
|
||||||
|
@ -66,9 +76,59 @@ class ChartingState extends MusicBeatState
|
||||||
sectionData.set(0, 0);
|
sectionData.set(0, 0);
|
||||||
updateSectionColors();
|
updateSectionColors();
|
||||||
|
|
||||||
|
highlight = new FlxSprite().makeGraphic(10, 10, FlxColor.BLUE);
|
||||||
|
add(highlight);
|
||||||
|
|
||||||
|
UI_box = new FlxUI9SliceSprite(FlxG.width / 2, 20, null, new Rectangle(0, 0, FlxG.width * 0.46, 400));
|
||||||
|
add(UI_box);
|
||||||
|
|
||||||
|
bullshitUI = new FlxGroup();
|
||||||
|
add(bullshitUI);
|
||||||
|
|
||||||
super.create();
|
super.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function generateUI():Void
|
||||||
|
{
|
||||||
|
while (bullshitUI.members.length > 0)
|
||||||
|
{
|
||||||
|
bullshitUI.remove(bullshitUI.members[0], true);
|
||||||
|
}
|
||||||
|
|
||||||
|
// general shit
|
||||||
|
var title:FlxText = new FlxText(UI_box.x + 20, UI_box.y + 20, 0);
|
||||||
|
bullshitUI.add(title);
|
||||||
|
|
||||||
|
var loopCheck = new FlxUICheckBox(UI_box.x + 10, UI_box.y + 50, null, null, "Loops", 100, ['loop check']);
|
||||||
|
bullshitUI.add(loopCheck);
|
||||||
|
|
||||||
|
switch (curNoteSelected.type)
|
||||||
|
{
|
||||||
|
case DisplayNote.SECTION:
|
||||||
|
title.text = 'Section note';
|
||||||
|
case DisplayNote.PLAY_NOTE:
|
||||||
|
title.text = 'Play note';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override function getEvent(id:String, sender:Dynamic, data:Dynamic, ?params:Array<Dynamic>)
|
||||||
|
{
|
||||||
|
if (id == FlxUICheckBox.CLICK_EVENT)
|
||||||
|
{
|
||||||
|
var check:FlxUICheckBox = cast sender;
|
||||||
|
var label = check.getLabel().text;
|
||||||
|
switch (label)
|
||||||
|
{
|
||||||
|
case 'Loops':
|
||||||
|
curNoteSelected.doesLoop = check.checked;
|
||||||
|
trace(curNoteSelected.doesLoop);
|
||||||
|
}
|
||||||
|
FlxG.log.add(label);
|
||||||
|
}
|
||||||
|
|
||||||
|
// FlxG.log.add(id + " WEED " + sender + " WEED " + data + " WEED " + params);
|
||||||
|
}
|
||||||
|
|
||||||
function updateSectionColors():Void
|
function updateSectionColors():Void
|
||||||
{
|
{
|
||||||
sectionShit.forEach(function(note:DisplayNote)
|
sectionShit.forEach(function(note:DisplayNote)
|
||||||
|
@ -82,6 +142,14 @@ class ChartingState extends MusicBeatState
|
||||||
{
|
{
|
||||||
var sec:FlxText = new FlxText(strumLine.width, 0, 0, "Section " + i);
|
var sec:FlxText = new FlxText(strumLine.width, 0, 0, "Section " + i);
|
||||||
var sectionTex:DisplayNote = createDisplayNote(5, i - 1, sec);
|
var sectionTex:DisplayNote = createDisplayNote(5, i - 1, sec);
|
||||||
|
sectionTex.type = DisplayNote.SECTION;
|
||||||
|
|
||||||
|
sectionTex.onDown.callback = function()
|
||||||
|
{
|
||||||
|
curNoteSelected = sectionTex;
|
||||||
|
generateUI();
|
||||||
|
};
|
||||||
|
|
||||||
sectionTex.strumTime = sectionData.get(i) * Conductor.stepCrochet;
|
sectionTex.strumTime = sectionData.get(i) * Conductor.stepCrochet;
|
||||||
sequencer.add(sectionTex);
|
sequencer.add(sectionTex);
|
||||||
sectionShit.add(sectionTex);
|
sectionShit.add(sectionTex);
|
||||||
|
@ -107,14 +175,39 @@ class ChartingState extends MusicBeatState
|
||||||
for (i in 0...amountSteps)
|
for (i in 0...amountSteps)
|
||||||
{
|
{
|
||||||
notes[r].push(false);
|
notes[r].push(false);
|
||||||
var seqBtn:DisplayNote = createDisplayNote(r, i, null, function()
|
var seqBtn:DisplayNote = createDisplayNote(r, i, null);
|
||||||
{
|
|
||||||
if (notes[r][i] == 0)
|
|
||||||
notes[r][i] = 1;
|
|
||||||
else
|
|
||||||
notes[r][i] = 0;
|
|
||||||
});
|
|
||||||
|
|
||||||
|
/* seqBtn.onUp.callback = function()
|
||||||
|
{
|
||||||
|
if (seqBtn == curNoteSelected)
|
||||||
|
{
|
||||||
|
if (notes[r][i] == 0)
|
||||||
|
notes[r][i] = 1;
|
||||||
|
else
|
||||||
|
notes[r][i] = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
curNoteSelected = seqBtn;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
seqBtn.onDown.callback = function()
|
||||||
|
{
|
||||||
|
if (FlxG.keys.pressed.SHIFT)
|
||||||
|
{
|
||||||
|
curNoteSelected = seqBtn;
|
||||||
|
generateUI();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (notes[r][i] == 0)
|
||||||
|
notes[r][i] = 1;
|
||||||
|
else
|
||||||
|
notes[r][i] = 0;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
seqBtn.type = DisplayNote.PLAY_NOTE;
|
||||||
seqBtn.strumTime = Conductor.stepCrochet * i;
|
seqBtn.strumTime = Conductor.stepCrochet * i;
|
||||||
seqBtn.makeGraphic(30, 30, FlxColor.WHITE);
|
seqBtn.makeGraphic(30, 30, FlxColor.WHITE);
|
||||||
seqBtn.ID = i + (amountSteps * r);
|
seqBtn.ID = i + (amountSteps * r);
|
||||||
|
@ -127,6 +220,9 @@ class ChartingState extends MusicBeatState
|
||||||
{
|
{
|
||||||
Conductor.songPosition = FlxG.sound.music.time;
|
Conductor.songPosition = FlxG.sound.music.time;
|
||||||
|
|
||||||
|
if (curNoteSelected != null)
|
||||||
|
highlight.setPosition(curNoteSelected.getGraphicMidpoint().x, curNoteSelected.getGraphicMidpoint().y);
|
||||||
|
|
||||||
if (FlxG.mouse.justPressedMiddle && section > 0)
|
if (FlxG.mouse.justPressedMiddle && section > 0)
|
||||||
{
|
{
|
||||||
var pushSection:Int = Math.round(Conductor.songPosition / Conductor.crochet) * 4;
|
var pushSection:Int = Math.round(Conductor.songPosition / Conductor.crochet) * 4;
|
||||||
|
|
|
@ -6,6 +6,17 @@ import flixel.ui.FlxSpriteButton;
|
||||||
class DisplayNote extends FlxSpriteButton
|
class DisplayNote extends FlxSpriteButton
|
||||||
{
|
{
|
||||||
public var strumTime:Float = 0;
|
public var strumTime:Float = 0;
|
||||||
|
public var type:Int = 0;
|
||||||
|
|
||||||
|
public static inline var PLAY_NOTE:Int = 10;
|
||||||
|
public static inline var SECTION:Int = 20;
|
||||||
|
|
||||||
|
public var selected:Bool = false;
|
||||||
|
|
||||||
|
// SECTION SPECIFIC DATA
|
||||||
|
// If it's a simon says type section
|
||||||
|
public var doesLoop:Bool = true;
|
||||||
|
public var lengthInSteps:Int = 16;
|
||||||
|
|
||||||
public function new(x:Float, y:Float, label:FlxSprite, onClick:Void->Void)
|
public function new(x:Float, y:Float, label:FlxSprite, onClick:Void->Void)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
package;
|
package;
|
||||||
|
|
||||||
import flixel.addons.transition.FlxTransitionableState;
|
import flixel.addons.transition.FlxTransitionableState;
|
||||||
|
import flixel.addons.ui.FlxUIState;
|
||||||
|
|
||||||
class MusicBeatState extends FlxTransitionableState
|
class MusicBeatState extends FlxUIState
|
||||||
{
|
{
|
||||||
private var lastBeat:Float = 0;
|
private var lastBeat:Float = 0;
|
||||||
private var lastStep:Float = 0;
|
private var lastStep:Float = 0;
|
||||||
|
|
Loading…
Reference in a new issue