Soft-coding of additional Weeks and additional songs
Fixes to mod functions
This commit is contained in:
parent
f3cf6e7240
commit
72063c24b1
|
@ -60,6 +60,7 @@
|
||||||
<library name="week5" preload="true" />
|
<library name="week5" preload="true" />
|
||||||
<library name="week6" preload="true" />
|
<library name="week6" preload="true" />
|
||||||
<library name="week7" preload="true" />
|
<library name="week7" preload="true" />
|
||||||
|
<library name="weeks" preload="true" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section if="NO_PRELOAD_ALL">
|
<section if="NO_PRELOAD_ALL">
|
||||||
|
@ -73,6 +74,7 @@
|
||||||
<library name="week5" preload="false" />
|
<library name="week5" preload="false" />
|
||||||
<library name="week6" preload="false" />
|
<library name="week6" preload="false" />
|
||||||
<library name="week7" preload="false" />
|
<library name="week7" preload="false" />
|
||||||
|
<library name="weeks" preload="false" />
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<assets path="assets/songs" library="songs" exclude="*.fla|*.ogg" if="web"/>
|
<assets path="assets/songs" library="songs" exclude="*.fla|*.ogg" if="web"/>
|
||||||
|
@ -95,6 +97,8 @@
|
||||||
<assets path="assets/week6" library="week6" exclude="*.fla|*.mp3" unless="web"/>
|
<assets path="assets/week6" library="week6" exclude="*.fla|*.mp3" unless="web"/>
|
||||||
<assets path="assets/week7" library="week7" exclude="*.fla|*.ogg" if="web"/>
|
<assets path="assets/week7" library="week7" exclude="*.fla|*.ogg" if="web"/>
|
||||||
<assets path="assets/week7" library="week7" exclude="*.fla|*.mp3" unless="web"/>
|
<assets path="assets/week7" library="week7" exclude="*.fla|*.mp3" unless="web"/>
|
||||||
|
<assets path="assets/weeks" library="weeks" exclude="*.fla|*.ogg" if="web"/>
|
||||||
|
<assets path="assets/weeks" library="weeks" exclude="*.fla|*.mp3" unless="web"/>
|
||||||
|
|
||||||
<!-- <assets path='example_mods' rename='mods' embed='false'/> -->
|
<!-- <assets path='example_mods' rename='mods' embed='false'/> -->
|
||||||
|
|
||||||
|
@ -189,6 +193,8 @@
|
||||||
|
|
||||||
<haxedef name="POLYMOD_SCRIPT_EXT" value=".hscript" />
|
<haxedef name="POLYMOD_SCRIPT_EXT" value=".hscript" />
|
||||||
|
|
||||||
|
<haxedef name="HXCPP_GC_BIG_BLOCKS" />
|
||||||
|
|
||||||
<!-- _________________________________ Custom _______________________________ -->
|
<!-- _________________________________ Custom _______________________________ -->
|
||||||
|
|
||||||
<!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)-->
|
<!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)-->
|
||||||
|
|
|
@ -44,6 +44,7 @@ Run build-Itch-WINDOWS.bat in /art/ and build.
|
||||||
* nennneko5787 - Programmer
|
* nennneko5787 - Programmer
|
||||||
* ShadowMario - The StrumNote.hx code I stole and modified from PsychEngine
|
* ShadowMario - The StrumNote.hx code I stole and modified from PsychEngine
|
||||||
* k.net(brightfyre) - Window focus & unfocus source code I stole from Indie Cross
|
* k.net(brightfyre) - Window focus & unfocus source code I stole from Indie Cross
|
||||||
|
* Leather128 - Part of the 5K+ support code stolen from LeatherEngine and part of the Mod Menu code
|
||||||
## Funkin
|
## Funkin
|
||||||
* ninjamuffin99 - Programmer
|
* ninjamuffin99 - Programmer
|
||||||
* PhantomArcade3K and Evilsk8r - Art
|
* PhantomArcade3K and Evilsk8r - Art
|
||||||
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
@echo off
|
||||||
|
color 0a
|
||||||
|
cd ..
|
||||||
|
echo Install the latest Haxe ( https://haxe.org/download/ ) and Git ( https://git-scm.com/downloads ). After that, press the Enter key.
|
||||||
|
pause
|
||||||
|
@echo on
|
||||||
|
haxelib install lime
|
||||||
|
haxelib install openfl
|
||||||
|
haxelib install flixel
|
||||||
|
haxelib run lime setup flixel
|
||||||
|
haxelib run lime setup
|
||||||
|
haxelib install flixel-tools
|
||||||
|
haxelib run flixel-tools setup
|
||||||
|
haxelib install flixel-addons
|
||||||
|
haxelib install flixel-ui
|
||||||
|
haxelib install hscript
|
||||||
|
haxelib install newgrounds 1.1.5
|
||||||
|
haxelib install hxCodec
|
||||||
|
haxelib install hxcpp-debug-server
|
||||||
|
haxelib git polymod https://github.com/larsiusprime/polymod.git
|
||||||
|
haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
|
haxelib git flixel-addons https://github.com/HaxeFlixel/flixel-addons
|
||||||
|
@echo off
|
||||||
|
echo Setup Successful!
|
||||||
|
pause
|
|
@ -0,0 +1,24 @@
|
||||||
|
@echo off
|
||||||
|
color 0a
|
||||||
|
cd ..
|
||||||
|
echo update the latest Haxe ( https://haxe.org/download/ ) and Git ( https://git-scm.com/downloads ). After that, press the Enter key.
|
||||||
|
pause
|
||||||
|
@echo on
|
||||||
|
haxelib update lime
|
||||||
|
haxelib update openfl
|
||||||
|
haxelib update flixel
|
||||||
|
haxelib run lime setup flixel
|
||||||
|
haxelib run lime setup
|
||||||
|
haxelib update flixel-tools
|
||||||
|
haxelib run flixel-tools setup
|
||||||
|
haxelib update flixel-addons
|
||||||
|
haxelib update flixel-ui
|
||||||
|
haxelib update hscript
|
||||||
|
haxelib update hxCodec
|
||||||
|
haxelib update hxcpp-debug-server
|
||||||
|
haxelib git polymod https://github.com/larsiusprime/polymod.git
|
||||||
|
haxelib git discord_rpc https://github.com/Aidan63/linc_discord-rpc
|
||||||
|
haxelib git flixel-addons https://github.com/HaxeFlixel/flixel-addons
|
||||||
|
@echo off
|
||||||
|
echo Update Successful!
|
||||||
|
pause
|
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"songs":["Bopeebo", "Fresh", "Dadbattle"],
|
||||||
|
"weekid":1,
|
||||||
|
"weekIcon":["dad"]
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"songs":["Spookeez", "South", "Monster"],
|
||||||
|
"weekid":2,
|
||||||
|
"weekIcon":["spooky", "spooky", "monster"]
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"songs":["Pico", "Philly", "Blammed"],
|
||||||
|
"weekid":3,
|
||||||
|
"weekIcon":["pico"]
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"songs":["Satin-Panties", "High", "Milf"],
|
||||||
|
"weekid":4,
|
||||||
|
"weekIcon":["mom"]
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"songs":["Cocoa", "Eggnog", "Winter-Horrorland"],
|
||||||
|
"weekid":5,
|
||||||
|
"weekIcon":["parents-christmas", "parents-christmas", "monster-christmas"]
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"songs":["Senpai", "Roses", "Thorns"],
|
||||||
|
"weekid":6,
|
||||||
|
"weekIcon":["senpai", "senpai", "spirit"]
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"songs":["Ugh", "Guns", "Stress"],
|
||||||
|
"weekid":7,
|
||||||
|
"weekIcon":["tankman"]
|
||||||
|
}
|
|
@ -8,7 +8,7 @@
|
||||||
"role": "Developer"
|
"role": "Developer"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"api_version":"0.2.8",
|
"api_version":"0.0.1",
|
||||||
"mod_version":"0.0.1",
|
"mod_version":"0.0.1",
|
||||||
"license":"unknown"
|
"license":"unknown"
|
||||||
}
|
}
|
Before Width: | Height: | Size: 2.3 MiB After Width: | Height: | Size: 2.3 MiB |
|
@ -1 +0,0 @@
|
||||||
introMod
|
|
|
@ -65,8 +65,9 @@ class ChartingState extends MusicBeatState
|
||||||
var curRenderedSustains:FlxTypedGroup<FlxSprite>;
|
var curRenderedSustains:FlxTypedGroup<FlxSprite>;
|
||||||
|
|
||||||
var gridBG:FlxSprite;
|
var gridBG:FlxSprite;
|
||||||
|
var gridBlackLine:FlxSprite;
|
||||||
|
|
||||||
var _song:SwagSong;
|
public static var _song:SwagSong;
|
||||||
|
|
||||||
var typingShit:FlxInputText;
|
var typingShit:FlxInputText;
|
||||||
/*
|
/*
|
||||||
|
@ -81,6 +82,8 @@ class ChartingState extends MusicBeatState
|
||||||
var leftIcon:HealthIcon;
|
var leftIcon:HealthIcon;
|
||||||
var rightIcon:HealthIcon;
|
var rightIcon:HealthIcon;
|
||||||
|
|
||||||
|
var diff:Int = 1;
|
||||||
|
|
||||||
override function create()
|
override function create()
|
||||||
{
|
{
|
||||||
curSection = lastSection;
|
curSection = lastSection;
|
||||||
|
@ -102,7 +105,7 @@ class ChartingState extends MusicBeatState
|
||||||
leftIcon.setPosition(0, -100);
|
leftIcon.setPosition(0, -100);
|
||||||
rightIcon.setPosition(gridBG.width / 2, -100);
|
rightIcon.setPosition(gridBG.width / 2, -100);
|
||||||
|
|
||||||
var gridBlackLine:FlxSprite = new FlxSprite(gridBG.x + gridBG.width / 2).makeGraphic(2, Std.int(gridBG.height), FlxColor.BLACK);
|
gridBlackLine = new FlxSprite(gridBG.x + gridBG.width / 2).makeGraphic(2, Std.int(gridBG.height), FlxColor.BLACK);
|
||||||
add(gridBlackLine);
|
add(gridBlackLine);
|
||||||
|
|
||||||
curRenderedNotes = new FlxTypedGroup<Note>();
|
curRenderedNotes = new FlxTypedGroup<Note>();
|
||||||
|
@ -120,7 +123,9 @@ class ChartingState extends MusicBeatState
|
||||||
player1: 'bf',
|
player1: 'bf',
|
||||||
player2: 'dad',
|
player2: 'dad',
|
||||||
speed: 1,
|
speed: 1,
|
||||||
validScore: false
|
validScore: false,
|
||||||
|
p1KeyCount: 4,
|
||||||
|
p2KeyCount: 4
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,8 +163,8 @@ class ChartingState extends MusicBeatState
|
||||||
UI_box = new FlxUITabMenu(null, tabs, true);
|
UI_box = new FlxUITabMenu(null, tabs, true);
|
||||||
|
|
||||||
UI_box.resize(300, 400);
|
UI_box.resize(300, 400);
|
||||||
UI_box.x = FlxG.width / 2;
|
UI_box.x = 0;
|
||||||
UI_box.y = 20;
|
UI_box.y = 100;
|
||||||
add(UI_box);
|
add(UI_box);
|
||||||
|
|
||||||
addSongUI();
|
addSongUI();
|
||||||
|
@ -178,6 +183,10 @@ class ChartingState extends MusicBeatState
|
||||||
var UI_songTitle = new FlxUIInputText(10, 10, 70, _song.song, 8);
|
var UI_songTitle = new FlxUIInputText(10, 10, 70, _song.song, 8);
|
||||||
typingShit = UI_songTitle;
|
typingShit = UI_songTitle;
|
||||||
|
|
||||||
|
var stepperdiff:FlxUINumericStepper = new FlxUINumericStepper(10, 40, 1, 0, 0, 3, 2);
|
||||||
|
stepperdiff.value = diff;
|
||||||
|
stepperdiff.name = 'song_diff';
|
||||||
|
|
||||||
var check_voices = new FlxUICheckBox(10, 25, null, null, "Has voice track", 100);
|
var check_voices = new FlxUICheckBox(10, 25, null, null, "Has voice track", 100);
|
||||||
check_voices.checked = _song.needsVoices;
|
check_voices.checked = _song.needsVoices;
|
||||||
// _song.needsVoices = check_voices.checked;
|
// _song.needsVoices = check_voices.checked;
|
||||||
|
@ -240,6 +249,15 @@ class ChartingState extends MusicBeatState
|
||||||
});
|
});
|
||||||
player2DropDown.selectedLabel = _song.player2;
|
player2DropDown.selectedLabel = _song.player2;
|
||||||
|
|
||||||
|
var stepperp1KeyCount:FlxUINumericStepper = new FlxUINumericStepper(10, 130, 1, 4, 1, 21, 2);
|
||||||
|
stepperp1KeyCount.value = _song.p1KeyCount;
|
||||||
|
stepperp1KeyCount.name = 'song_p1KeyCount';
|
||||||
|
|
||||||
|
|
||||||
|
var stepperp2KeyCount:FlxUINumericStepper = new FlxUINumericStepper(140, 130, 1, 4, 1, 21, 2);
|
||||||
|
stepperp2KeyCount.value = _song.p2KeyCount;
|
||||||
|
stepperp2KeyCount.name = 'song_p2KeyCount';
|
||||||
|
|
||||||
var tab_group_song = new FlxUI(null, UI_box);
|
var tab_group_song = new FlxUI(null, UI_box);
|
||||||
tab_group_song.name = "Song";
|
tab_group_song.name = "Song";
|
||||||
tab_group_song.add(UI_songTitle);
|
tab_group_song.add(UI_songTitle);
|
||||||
|
@ -254,6 +272,10 @@ class ChartingState extends MusicBeatState
|
||||||
tab_group_song.add(stepperSpeed);
|
tab_group_song.add(stepperSpeed);
|
||||||
tab_group_song.add(player1DropDown);
|
tab_group_song.add(player1DropDown);
|
||||||
tab_group_song.add(player2DropDown);
|
tab_group_song.add(player2DropDown);
|
||||||
|
|
||||||
|
tab_group_song.add(stepperdiff);
|
||||||
|
tab_group_song.add(stepperp1KeyCount);
|
||||||
|
tab_group_song.add(stepperp2KeyCount);
|
||||||
|
|
||||||
UI_box.addGroup(tab_group_song);
|
UI_box.addGroup(tab_group_song);
|
||||||
UI_box.scrollFactor.set();
|
UI_box.scrollFactor.set();
|
||||||
|
@ -439,6 +461,21 @@ class ChartingState extends MusicBeatState
|
||||||
_song.notes[curSection].bpm = nums.value;
|
_song.notes[curSection].bpm = nums.value;
|
||||||
updateGrid();
|
updateGrid();
|
||||||
}
|
}
|
||||||
|
else if (wname == "song_p1KeyCount")
|
||||||
|
{
|
||||||
|
_song.p1KeyCount = Std.int(nums.value);
|
||||||
|
updateGrid();
|
||||||
|
}
|
||||||
|
else if (wname == "song_p2KeyCount")
|
||||||
|
{
|
||||||
|
_song.p2KeyCount = Std.int(nums.value);
|
||||||
|
updateGrid();
|
||||||
|
}
|
||||||
|
else if (wname == "song_diff")
|
||||||
|
{
|
||||||
|
diff = Std.int(nums.value);
|
||||||
|
updateGrid();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// FlxG.log.add(id + " WEED " + sender + " WEED " + data + " WEED " + params);
|
// FlxG.log.add(id + " WEED " + sender + " WEED " + data + " WEED " + params);
|
||||||
|
@ -829,6 +866,27 @@ class ChartingState extends MusicBeatState
|
||||||
|
|
||||||
function updateGrid():Void
|
function updateGrid():Void
|
||||||
{
|
{
|
||||||
|
//Thanks For LeatherEngine
|
||||||
|
remove(gridBG);
|
||||||
|
gridBG.kill();
|
||||||
|
gridBG.destroy();
|
||||||
|
|
||||||
|
gridBG = FlxGridOverlay.create(GRID_SIZE, GRID_SIZE, GRID_SIZE * (_song.p1KeyCount + _song.p2KeyCount),
|
||||||
|
Std.int(GRID_SIZE * 10));
|
||||||
|
add(gridBG);
|
||||||
|
|
||||||
|
remove(gridBlackLine);
|
||||||
|
gridBlackLine.kill();
|
||||||
|
gridBlackLine.destroy();
|
||||||
|
|
||||||
|
gridBlackLine = new FlxSprite(gridBG.x
|
||||||
|
+ (GRID_SIZE * ((!_song.notes[curSection].mustHitSection ? _song.p1KeyCount - 1: _song.p2KeyCount)
|
||||||
|
+ 1))).makeGraphic(2, Std.int(gridBG.height), FlxColor.BLACK);
|
||||||
|
add(gridBlackLine);
|
||||||
|
|
||||||
|
if (strumLine != null)
|
||||||
|
strumLine.makeGraphic(Std.int(gridBG.width), 4);
|
||||||
|
|
||||||
while (curRenderedNotes.members.length > 0)
|
while (curRenderedNotes.members.length > 0)
|
||||||
{
|
{
|
||||||
curRenderedNotes.remove(curRenderedNotes.members[0], true);
|
curRenderedNotes.remove(curRenderedNotes.members[0], true);
|
||||||
|
@ -883,6 +941,8 @@ class ChartingState extends MusicBeatState
|
||||||
note.x = Math.floor(daNoteInfo * GRID_SIZE);
|
note.x = Math.floor(daNoteInfo * GRID_SIZE);
|
||||||
note.y = Math.floor(getYfromStrum((daStrumTime - sectionStartTime()) % (Conductor.stepCrochet * _song.notes[curSection].lengthInSteps)));
|
note.y = Math.floor(getYfromStrum((daStrumTime - sectionStartTime()) % (Conductor.stepCrochet * _song.notes[curSection].lengthInSteps)));
|
||||||
|
|
||||||
|
note.rawNoteData = daNoteInfo;
|
||||||
|
|
||||||
curRenderedNotes.add(note);
|
curRenderedNotes.add(note);
|
||||||
|
|
||||||
if (daSus > 0)
|
if (daSus > 0)
|
||||||
|
@ -915,7 +975,7 @@ class ChartingState extends MusicBeatState
|
||||||
|
|
||||||
for (i in _song.notes[curSection].sectionNotes)
|
for (i in _song.notes[curSection].sectionNotes)
|
||||||
{
|
{
|
||||||
if (i.strumTime == note.strumTime && i.noteData % 4 == note.noteData)
|
if (i.strumTime == note.strumTime && i.noteData % _song.p1KeyCount == note.noteData)
|
||||||
{
|
{
|
||||||
curSelectedNote = _song.notes[curSection].sectionNotes[swagNum];
|
curSelectedNote = _song.notes[curSection].sectionNotes[swagNum];
|
||||||
}
|
}
|
||||||
|
@ -931,7 +991,7 @@ class ChartingState extends MusicBeatState
|
||||||
{
|
{
|
||||||
for (i in _song.notes[curSection].sectionNotes)
|
for (i in _song.notes[curSection].sectionNotes)
|
||||||
{
|
{
|
||||||
if (i[0] == note.strumTime && i[1] % 4 == note.noteData)
|
if (i[0] == note.strumTime && i[1] == note.rawNoteData)
|
||||||
{
|
{
|
||||||
FlxG.log.add('FOUND EVIL NUMBER');
|
FlxG.log.add('FOUND EVIL NUMBER');
|
||||||
_song.notes[curSection].sectionNotes.remove(i);
|
_song.notes[curSection].sectionNotes.remove(i);
|
||||||
|
@ -971,7 +1031,7 @@ class ChartingState extends MusicBeatState
|
||||||
|
|
||||||
if (FlxG.keys.pressed.CONTROL)
|
if (FlxG.keys.pressed.CONTROL)
|
||||||
{
|
{
|
||||||
_song.notes[curSection].sectionNotes.push([noteStrum, (noteData + 4) % 8, noteSus, noteAlt]);
|
_song.notes[curSection].sectionNotes.push([noteStrum, (noteData + _song.p1KeyCount) % (_song.p1KeyCount + _song.p2KeyCount), noteSus, noteAlt]);
|
||||||
}
|
}
|
||||||
|
|
||||||
trace(noteStrum);
|
trace(noteStrum);
|
||||||
|
@ -1037,7 +1097,8 @@ class ChartingState extends MusicBeatState
|
||||||
|
|
||||||
function loadJson(song:String):Void
|
function loadJson(song:String):Void
|
||||||
{
|
{
|
||||||
PlayState.SONG = Song.loadFromJson(song.toLowerCase(), song.toLowerCase());
|
var poop:String = Highscore.formatSong(song.toLowerCase(), diff);
|
||||||
|
PlayState.SONG = Song.loadFromJson(poop, song.toLowerCase());
|
||||||
LoadingState.loadAndSwitchState(new ChartingState());
|
LoadingState.loadAndSwitchState(new ChartingState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,10 @@ import flixel.system.FlxAssets.FlxGraphicAsset;
|
||||||
import haxe.Json;
|
import haxe.Json;
|
||||||
import lime.math.Rectangle;
|
import lime.math.Rectangle;
|
||||||
import lime.utils.Assets;
|
import lime.utils.Assets;
|
||||||
|
#if desktop
|
||||||
|
import sys.FileSystem;
|
||||||
|
import sys.io.File;
|
||||||
|
#end
|
||||||
|
|
||||||
using StringTools;
|
using StringTools;
|
||||||
|
|
||||||
|
@ -36,6 +40,20 @@ class CoolUtil
|
||||||
return daList;
|
return daList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if desktop
|
||||||
|
public static function hotTextFile(path:String):Array<String>
|
||||||
|
{
|
||||||
|
var daList:Array<String> = File.getContent(path).trim().split('\n');
|
||||||
|
|
||||||
|
for (i in 0...daList.length)
|
||||||
|
{
|
||||||
|
daList[i] = daList[i].trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
return daList;
|
||||||
|
}
|
||||||
|
#end
|
||||||
|
|
||||||
public static function numberArray(max:Int, ?min = 0):Array<Int>
|
public static function numberArray(max:Int, ?min = 0):Array<Int>
|
||||||
{
|
{
|
||||||
var dumbArray:Array<Int> = [];
|
var dumbArray:Array<Int> = [];
|
||||||
|
|
|
@ -16,6 +16,8 @@ import lime.utils.Assets;
|
||||||
#if desktop
|
#if desktop
|
||||||
import sys.FileSystem;
|
import sys.FileSystem;
|
||||||
import sys.io.File;
|
import sys.io.File;
|
||||||
|
import haxe.Json;
|
||||||
|
import haxe.format.JsonParser;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
using StringTools;
|
using StringTools;
|
||||||
|
@ -35,6 +37,7 @@ class FreeplayState extends MusicBeatState
|
||||||
var lerpScore:Float = 0;
|
var lerpScore:Float = 0;
|
||||||
var intendedScore:Int = 0;
|
var intendedScore:Int = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
var coolColors:Array<Int> = [
|
var coolColors:Array<Int> = [
|
||||||
0xff9271fd,
|
0xff9271fd,
|
||||||
0xff9271fd,
|
0xff9271fd,
|
||||||
|
@ -45,6 +48,7 @@ class FreeplayState extends MusicBeatState
|
||||||
0xffff78bf,
|
0xffff78bf,
|
||||||
0xfff6b604
|
0xfff6b604
|
||||||
];
|
];
|
||||||
|
*/
|
||||||
|
|
||||||
private var grpSongs:FlxTypedGroup<Alphabet>;
|
private var grpSongs:FlxTypedGroup<Alphabet>;
|
||||||
private var curPlaying:Bool = false;
|
private var curPlaying:Bool = false;
|
||||||
|
@ -67,12 +71,14 @@ class FreeplayState extends MusicBeatState
|
||||||
addSong('Test', 1, 'bf-pixel');
|
addSong('Test', 1, 'bf-pixel');
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
/*
|
||||||
var initSonglist = CoolUtil.coolTextFile(Paths.txt('freeplaySonglist'));
|
var initSonglist = CoolUtil.coolTextFile(Paths.txt('freeplaySonglist'));
|
||||||
|
|
||||||
for (i in 0...initSonglist.length)
|
for (i in 0...initSonglist.length)
|
||||||
{
|
{
|
||||||
songs.push(new SongMetadata(initSonglist[i], 1, 'gf'));
|
songs.push(new SongMetadata(initSonglist[i], 1, 'gf'));
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
if (FlxG.sound.music != null)
|
if (FlxG.sound.music != null)
|
||||||
{
|
{
|
||||||
|
@ -80,7 +86,21 @@ class FreeplayState extends MusicBeatState
|
||||||
FlxG.sound.playMusic(Paths.music('freakyMenu'));
|
FlxG.sound.playMusic(Paths.music('freakyMenu'));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (StoryMenuState.weekUnlocked[2] || isDebug)
|
#if desktop
|
||||||
|
var weekList:Array<String> = sys.FileSystem.readDirectory("assets/weeks/");
|
||||||
|
var weekJson:String;
|
||||||
|
var weekParseJson:Dynamic;
|
||||||
|
for(i in 0...weekList.length) {
|
||||||
|
weekJson = File.getContent("assets/weeks/"+weekList[i]);
|
||||||
|
weekParseJson = haxe.Json.parse(weekJson);
|
||||||
|
var weekSongs:Array<String> = Reflect.getProperty(weekParseJson, "songs");
|
||||||
|
var weekid:Int = Reflect.getProperty(weekParseJson, "weekid");
|
||||||
|
var weekIcon:Array<String> = Reflect.getProperty(weekParseJson, "weekIcon");
|
||||||
|
addWeek(weekSongs, weekid, weekIcon);
|
||||||
|
trace("Add Week: "+weekList[i]);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (StoryMenuState.weekUnlocked[1] || isDebug)
|
||||||
addWeek(['Bopeebo', 'Fresh', 'Dadbattle'], 1, ['dad']);
|
addWeek(['Bopeebo', 'Fresh', 'Dadbattle'], 1, ['dad']);
|
||||||
|
|
||||||
if (StoryMenuState.weekUnlocked[2] || isDebug)
|
if (StoryMenuState.weekUnlocked[2] || isDebug)
|
||||||
|
@ -100,7 +120,7 @@ class FreeplayState extends MusicBeatState
|
||||||
|
|
||||||
if (StoryMenuState.weekUnlocked[7] || isDebug)
|
if (StoryMenuState.weekUnlocked[7] || isDebug)
|
||||||
addWeek(['Ugh', 'Guns', 'Stress'], 7, ['tankman']);
|
addWeek(['Ugh', 'Guns', 'Stress'], 7, ['tankman']);
|
||||||
|
#end
|
||||||
// LOAD MUSIC
|
// LOAD MUSIC
|
||||||
|
|
||||||
// LOAD CHARACTERS
|
// LOAD CHARACTERS
|
||||||
|
@ -219,7 +239,7 @@ class FreeplayState extends MusicBeatState
|
||||||
}
|
}
|
||||||
|
|
||||||
lerpScore = CoolUtil.coolLerp(lerpScore, intendedScore, 0.4);
|
lerpScore = CoolUtil.coolLerp(lerpScore, intendedScore, 0.4);
|
||||||
bg.color = FlxColor.interpolate(bg.color, coolColors[songs[curSelected].week % coolColors.length], CoolUtil.camLerpShit(0.045));
|
bg.color = FlxColor.interpolate(bg.color, 0xff9271fd, CoolUtil.camLerpShit(0.045));
|
||||||
|
|
||||||
scoreText.text = "PERSONAL BEST:" + Math.round(lerpScore);
|
scoreText.text = "PERSONAL BEST:" + Math.round(lerpScore);
|
||||||
|
|
||||||
|
@ -259,6 +279,17 @@ class FreeplayState extends MusicBeatState
|
||||||
trace('CUR WEEK' + PlayState.storyWeek);
|
trace('CUR WEEK' + PlayState.storyWeek);
|
||||||
LoadingState.loadAndSwitchState(new PlayState());
|
LoadingState.loadAndSwitchState(new PlayState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (FlxG.keys.pressed.SHIFT){
|
||||||
|
var poop:String = Highscore.formatSong(songs[curSelected].songName.toLowerCase(), curDifficulty);
|
||||||
|
PlayState.SONG = Song.loadFromJson(poop, songs[curSelected].songName.toLowerCase());
|
||||||
|
PlayState.isStoryMode = false;
|
||||||
|
PlayState.storyDifficulty = curDifficulty;
|
||||||
|
|
||||||
|
PlayState.storyWeek = songs[curSelected].week;
|
||||||
|
trace('CUR WEEK' + PlayState.storyWeek);
|
||||||
|
LoadingState.loadAndSwitchState(new ChartingState());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function changeDiff(change:Int = 0)
|
function changeDiff(change:Int = 0)
|
||||||
|
|
|
@ -16,7 +16,7 @@ class Highscore
|
||||||
var formattedSong:String = formatSong(song, diff);
|
var formattedSong:String = formatSong(song, diff);
|
||||||
|
|
||||||
#if newgrounds
|
#if newgrounds
|
||||||
NGio.postScore(score, song);
|
//NGio.postScore(score, song);
|
||||||
#end
|
#end
|
||||||
|
|
||||||
if (songScores.exists(formattedSong))
|
if (songScores.exists(formattedSong))
|
||||||
|
|
|
@ -0,0 +1,48 @@
|
||||||
|
package;
|
||||||
|
|
||||||
|
import Controls;
|
||||||
|
import flixel.FlxG;
|
||||||
|
|
||||||
|
class ManiaTools
|
||||||
|
{
|
||||||
|
private static var controls(get, never):Controls;
|
||||||
|
|
||||||
|
private static function get_controls():Controls
|
||||||
|
return PlayerSettings.player1.controls;
|
||||||
|
|
||||||
|
public static function getHoldKeysToNumber(keyCount:Int = 4):Array<Bool>
|
||||||
|
{
|
||||||
|
if (keyCount == 1) return [FlxG.keys.pressed.SPACE];
|
||||||
|
if (keyCount == 2) return [FlxG.keys.pressed.F, FlxG.keys.pressed.J];
|
||||||
|
if (keyCount == 3) return [FlxG.keys.pressed.F, FlxG.keys.pressed.SPACE, FlxG.keys.pressed.J];
|
||||||
|
if (keyCount == 4) return [controls.NOTE_LEFT, controls.NOTE_DOWN, controls.NOTE_UP, controls.NOTE_RIGHT];
|
||||||
|
if (keyCount == 5) return [FlxG.keys.pressed.D, FlxG.keys.pressed.F, FlxG.keys.pressed.SPACE, FlxG.keys.pressed.J, FlxG.keys.pressed.K];
|
||||||
|
if (keyCount == 6) return [FlxG.keys.pressed.S, FlxG.keys.pressed.D, FlxG.keys.pressed.F, FlxG.keys.pressed.J, FlxG.keys.pressed.K, FlxG.keys.pressed.L];
|
||||||
|
|
||||||
|
return [controls.NOTE_LEFT, controls.NOTE_DOWN, controls.NOTE_UP, controls.NOTE_RIGHT];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getPressedKeysToNumber(keyCount:Int = 4):Array<Bool>
|
||||||
|
{
|
||||||
|
if (keyCount == 1) return [FlxG.keys.justPressed.SPACE];
|
||||||
|
if (keyCount == 2) return [FlxG.keys.justPressed.F, FlxG.keys.justPressed.J];
|
||||||
|
if (keyCount == 3) return [FlxG.keys.justPressed.F, FlxG.keys.justPressed.SPACE, FlxG.keys.justPressed.J];
|
||||||
|
if (keyCount == 4) return [controls.NOTE_LEFT, controls.NOTE_DOWN, controls.NOTE_UP, controls.NOTE_RIGHT];
|
||||||
|
if (keyCount == 5) return [FlxG.keys.justPressed.D, FlxG.keys.justPressed.F, FlxG.keys.justPressed.SPACE, FlxG.keys.justPressed.J, FlxG.keys.justPressed.K];
|
||||||
|
if (keyCount == 6) return [FlxG.keys.justPressed.S, FlxG.keys.justPressed.D, FlxG.keys.justPressed.F, FlxG.keys.justPressed.J, FlxG.keys.justPressed.K, FlxG.keys.justPressed.L];
|
||||||
|
|
||||||
|
return [controls.NOTE_LEFT, controls.NOTE_DOWN, controls.NOTE_UP, controls.NOTE_RIGHT];
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function getReleasedKeysToNumber(keyCount:Int = 4):Array<Bool>
|
||||||
|
{
|
||||||
|
if (keyCount == 1) return [FlxG.keys.justReleased.SPACE];
|
||||||
|
if (keyCount == 2) return [FlxG.keys.justReleased.F, FlxG.keys.justReleased.J];
|
||||||
|
if (keyCount == 3) return [FlxG.keys.justReleased.F, FlxG.keys.justReleased.SPACE, FlxG.keys.justReleased.J];
|
||||||
|
if (keyCount == 4) return [controls.NOTE_LEFT, controls.NOTE_DOWN, controls.NOTE_UP, controls.NOTE_RIGHT];
|
||||||
|
if (keyCount == 5) return [FlxG.keys.justReleased.D, FlxG.keys.justReleased.F, FlxG.keys.justReleased.SPACE, FlxG.keys.justReleased.J, FlxG.keys.justReleased.K];
|
||||||
|
if (keyCount == 6) return [FlxG.keys.justReleased.S, FlxG.keys.justReleased.D, FlxG.keys.justReleased.F, FlxG.keys.justReleased.J, FlxG.keys.justReleased.K, FlxG.keys.justReleased.L];
|
||||||
|
|
||||||
|
return [controls.NOTE_LEFT, controls.NOTE_DOWN, controls.NOTE_UP, controls.NOTE_RIGHT];
|
||||||
|
}
|
||||||
|
}
|
|
@ -26,6 +26,8 @@ class Note extends FlxSprite
|
||||||
public var wasGoodHit:Bool = false;
|
public var wasGoodHit:Bool = false;
|
||||||
public var prevNote:Note;
|
public var prevNote:Note;
|
||||||
|
|
||||||
|
public var rawNoteData:Int = 0;
|
||||||
|
|
||||||
private var willMiss:Bool = false;
|
private var willMiss:Bool = false;
|
||||||
|
|
||||||
public var altNote:Bool = false;
|
public var altNote:Bool = false;
|
||||||
|
@ -62,6 +64,26 @@ class Note extends FlxSprite
|
||||||
|
|
||||||
this.noteData = noteData;
|
this.noteData = noteData;
|
||||||
|
|
||||||
|
if (PlayState.SONG != null){
|
||||||
|
if (mustPress)
|
||||||
|
{
|
||||||
|
scale.x = scale.x / (PlayState.SONG.p1KeyCount - 3);
|
||||||
|
scale.y = scale.y / (PlayState.SONG.p1KeyCount - 3);
|
||||||
|
}else{
|
||||||
|
scale.x = scale.x / (PlayState.SONG.p2KeyCount - 3);
|
||||||
|
scale.y = scale.y / (PlayState.SONG.p2KeyCount - 3);
|
||||||
|
}
|
||||||
|
}else{
|
||||||
|
if (mustPress)
|
||||||
|
{
|
||||||
|
scale.x = scale.x / (ChartingState._song.p1KeyCount - 3);
|
||||||
|
scale.y = scale.y / (ChartingState._song.p1KeyCount - 3);
|
||||||
|
}else{
|
||||||
|
scale.x = scale.x / (ChartingState._song.p2KeyCount - 3);
|
||||||
|
scale.y = scale.y / (ChartingState._song.p2KeyCount - 3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var daStage:String = PlayState.curStage;
|
var daStage:String = PlayState.curStage;
|
||||||
|
|
||||||
switch (daStage)
|
switch (daStage)
|
||||||
|
@ -126,19 +148,16 @@ class Note extends FlxSprite
|
||||||
shader = colorSwap.shader;
|
shader = colorSwap.shader;
|
||||||
updateColors();
|
updateColors();
|
||||||
|
|
||||||
switch (noteData)
|
x += swagWidth * Math.abs(noteData);
|
||||||
|
switch (Math.abs(noteData) % 4)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
x += swagWidth * 0;
|
|
||||||
animation.play('purpleScroll');
|
animation.play('purpleScroll');
|
||||||
case 1:
|
case 1:
|
||||||
x += swagWidth * 1;
|
|
||||||
animation.play('blueScroll');
|
animation.play('blueScroll');
|
||||||
case 2:
|
case 2:
|
||||||
x += swagWidth * 2;
|
|
||||||
animation.play('greenScroll');
|
animation.play('greenScroll');
|
||||||
case 3:
|
case 3:
|
||||||
x += swagWidth * 3;
|
|
||||||
animation.play('redScroll');
|
animation.play('redScroll');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -157,7 +176,7 @@ class Note extends FlxSprite
|
||||||
|
|
||||||
x += width / 2;
|
x += width / 2;
|
||||||
|
|
||||||
switch (noteData)
|
switch (Math.abs(noteData) % 4)
|
||||||
{
|
{
|
||||||
case 2:
|
case 2:
|
||||||
animation.play('greenholdend');
|
animation.play('greenholdend');
|
||||||
|
@ -178,7 +197,7 @@ class Note extends FlxSprite
|
||||||
|
|
||||||
if (prevNote.isSustainNote)
|
if (prevNote.isSustainNote)
|
||||||
{
|
{
|
||||||
switch (prevNote.noteData)
|
switch (Math.abs(prevNote.noteData) % 4)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
prevNote.animation.play('purplehold');
|
prevNote.animation.play('purplehold');
|
||||||
|
|
|
@ -49,7 +49,7 @@ import ui.PreferencesMenu;
|
||||||
import StrumNote;
|
import StrumNote;
|
||||||
|
|
||||||
#if hxCodec
|
#if hxCodec
|
||||||
import vlc.MP4Handler;
|
import hxcodec.VideoHandler;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
using StringTools;
|
using StringTools;
|
||||||
|
@ -963,7 +963,7 @@ class PlayState extends MusicBeatState
|
||||||
inCutscene = true;
|
inCutscene = true;
|
||||||
FlxG.sound.music.stop();
|
FlxG.sound.music.stop();
|
||||||
|
|
||||||
var video:MP4Handler = new MP4Handler();
|
var video:VideoHandler = new VideoHandler();
|
||||||
video.finishCallback = function()
|
video.finishCallback = function()
|
||||||
{
|
{
|
||||||
inCutscene = false;
|
inCutscene = false;
|
||||||
|
@ -1510,8 +1510,8 @@ class PlayState extends MusicBeatState
|
||||||
inCutscene = false;
|
inCutscene = false;
|
||||||
camHUD.visible = true;
|
camHUD.visible = true;
|
||||||
|
|
||||||
generateStaticArrows(0);
|
generateStaticArrows(0,SONG.p1KeyCount);
|
||||||
generateStaticArrows(1);
|
generateStaticArrows(1,SONG.p2KeyCount);
|
||||||
|
|
||||||
talking = false;
|
talking = false;
|
||||||
startedCountdown = true;
|
startedCountdown = true;
|
||||||
|
@ -1645,14 +1645,13 @@ class PlayState extends MusicBeatState
|
||||||
for (songNotes in section.sectionNotes)
|
for (songNotes in section.sectionNotes)
|
||||||
{
|
{
|
||||||
var daStrumTime:Float = songNotes[0];
|
var daStrumTime:Float = songNotes[0];
|
||||||
var daNoteData:Int = Std.int(songNotes[1] % 4);
|
|
||||||
|
|
||||||
var gottaHitNote:Bool = section.mustHitSection;
|
var gottaHitNote:Bool = section.mustHitSection;
|
||||||
|
|
||||||
if (songNotes[1] > 3)
|
if (songNotes[1] >= (!gottaHitNote ? SONG.p1KeyCount : SONG.p2KeyCount))
|
||||||
gottaHitNote = !section.mustHitSection;
|
gottaHitNote = !section.mustHitSection;
|
||||||
|
|
||||||
var oldNote:Note;
|
var oldNote:Note;
|
||||||
|
var daNoteData:Int = Std.int(songNotes[1] % (!gottaHitNote ? SONG.p1KeyCount : SONG.p2KeyCount));
|
||||||
if (unspawnNotes.length > 0)
|
if (unspawnNotes.length > 0)
|
||||||
oldNote = unspawnNotes[Std.int(unspawnNotes.length - 1)];
|
oldNote = unspawnNotes[Std.int(unspawnNotes.length - 1)];
|
||||||
else
|
else
|
||||||
|
@ -1711,12 +1710,12 @@ class PlayState extends MusicBeatState
|
||||||
|
|
||||||
// ^ These two sorts also look cute together ^
|
// ^ These two sorts also look cute together ^
|
||||||
|
|
||||||
private function generateStaticArrows(player:Int):Void
|
private function generateStaticArrows(player:Int, keyCount:Int = 4):Void
|
||||||
{
|
{
|
||||||
for (i in 0...4)
|
for (i in 0...keyCount)
|
||||||
{
|
{
|
||||||
// FlxG.log.add(i);
|
// FlxG.log.add(i);
|
||||||
var babyArrow:StrumNote = new StrumNote(0, strumLine.y, i, player);
|
var babyArrow:StrumNote = new StrumNote(0, strumLine.y, i, player, keyCount);
|
||||||
var colorswap:ColorSwap = new ColorSwap();
|
var colorswap:ColorSwap = new ColorSwap();
|
||||||
babyArrow.shader = colorswap.shader;
|
babyArrow.shader = colorswap.shader;
|
||||||
colorswap.update(Note.arrowColors[i]);
|
colorswap.update(Note.arrowColors[i]);
|
||||||
|
@ -2628,19 +2627,9 @@ class PlayState extends MusicBeatState
|
||||||
private function keyShit():Void
|
private function keyShit():Void
|
||||||
{
|
{
|
||||||
// control arrays, order L D R U
|
// control arrays, order L D R U
|
||||||
var holdArray:Array<Bool> = [controls.NOTE_LEFT, controls.NOTE_DOWN, controls.NOTE_UP, controls.NOTE_RIGHT];
|
var holdArray:Array<Bool> = ManiaTools.getHoldKeysToNumber(SONG.p2KeyCount);
|
||||||
var pressArray:Array<Bool> = [
|
var pressArray:Array<Bool> = ManiaTools.getPressedKeysToNumber(SONG.p2KeyCount);
|
||||||
controls.NOTE_LEFT_P,
|
var releaseArray:Array<Bool> = ManiaTools.getReleasedKeysToNumber(SONG.p2KeyCount);
|
||||||
controls.NOTE_DOWN_P,
|
|
||||||
controls.NOTE_UP_P,
|
|
||||||
controls.NOTE_RIGHT_P
|
|
||||||
];
|
|
||||||
var releaseArray:Array<Bool> = [
|
|
||||||
controls.NOTE_LEFT_R,
|
|
||||||
controls.NOTE_DOWN_R,
|
|
||||||
controls.NOTE_UP_R,
|
|
||||||
controls.NOTE_RIGHT_R
|
|
||||||
];
|
|
||||||
|
|
||||||
// HOLDS, check for sustain notes
|
// HOLDS, check for sustain notes
|
||||||
if (holdArray.contains(true) && /*!boyfriend.stunned && */ generatedMusic)
|
if (holdArray.contains(true) && /*!boyfriend.stunned && */ generatedMusic)
|
||||||
|
|
|
@ -18,6 +18,9 @@ typedef SwagSong =
|
||||||
var player1:String;
|
var player1:String;
|
||||||
var player2:String;
|
var player2:String;
|
||||||
var validScore:Bool;
|
var validScore:Bool;
|
||||||
|
|
||||||
|
var p1KeyCount:Null<Int>;
|
||||||
|
var p2KeyCount:Null<Int>;
|
||||||
}
|
}
|
||||||
|
|
||||||
class Song
|
class Song
|
||||||
|
@ -31,6 +34,9 @@ class Song
|
||||||
public var player1:String = 'bf';
|
public var player1:String = 'bf';
|
||||||
public var player2:String = 'dad';
|
public var player2:String = 'dad';
|
||||||
|
|
||||||
|
public var p1KeyCount:Int = 4;
|
||||||
|
public var p2KeyCount:Int = 4;
|
||||||
|
|
||||||
public function new(song, notes, bpm)
|
public function new(song, notes, bpm)
|
||||||
{
|
{
|
||||||
this.song = song;
|
this.song = song;
|
||||||
|
@ -71,6 +77,9 @@ class Song
|
||||||
{
|
{
|
||||||
var swagShit:SwagSong = cast Json.parse(rawJson).song;
|
var swagShit:SwagSong = cast Json.parse(rawJson).song;
|
||||||
swagShit.validScore = true;
|
swagShit.validScore = true;
|
||||||
|
if (swagShit.p1KeyCount == null) swagShit.p1KeyCount = 4;
|
||||||
|
if (swagShit.p2KeyCount == null) swagShit.p2KeyCount = swagShit.p1KeyCount;
|
||||||
|
|
||||||
return swagShit;
|
return swagShit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,6 +15,12 @@ import flixel.tweens.FlxTween;
|
||||||
import flixel.util.FlxColor;
|
import flixel.util.FlxColor;
|
||||||
import flixel.util.FlxTimer;
|
import flixel.util.FlxTimer;
|
||||||
import lime.net.curl.CURLCode;
|
import lime.net.curl.CURLCode;
|
||||||
|
#if desktop
|
||||||
|
import sys.FileSystem;
|
||||||
|
import sys.io.File;
|
||||||
|
import haxe.Json;
|
||||||
|
import haxe.format.JsonParser;
|
||||||
|
#end
|
||||||
|
|
||||||
using StringTools;
|
using StringTools;
|
||||||
|
|
||||||
|
@ -22,41 +28,14 @@ class StoryMenuState extends MusicBeatState
|
||||||
{
|
{
|
||||||
var scoreText:FlxText;
|
var scoreText:FlxText;
|
||||||
|
|
||||||
var weekData:Array<Dynamic> = [
|
var weekData:Array<Dynamic> = [];
|
||||||
['Tutorial'],
|
|
||||||
['Bopeebo', 'Fresh', 'Dadbattle'],
|
|
||||||
['Spookeez', 'South', "Monster"],
|
|
||||||
['Pico', 'Philly', "Blammed"],
|
|
||||||
['Satin-Panties', "High", "Milf"],
|
|
||||||
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
|
||||||
['Senpai', 'Roses', 'Thorns'],
|
|
||||||
['Ugh', 'Guns', 'Stress']
|
|
||||||
];
|
|
||||||
var curDifficulty:Int = 1;
|
var curDifficulty:Int = 1;
|
||||||
|
|
||||||
public static var weekUnlocked:Array<Bool> = [true, true, true, true, true, true, true, true];
|
public static var weekUnlocked:Array<Bool> = [true, true, true, true, true, true, true, true];
|
||||||
|
|
||||||
var weekCharacters:Array<Dynamic> = [
|
var weekCharacters:Array<Dynamic> = [];
|
||||||
['dad', 'bf', 'gf'],
|
|
||||||
['dad', 'bf', 'gf'],
|
|
||||||
['spooky', 'bf', 'gf'],
|
|
||||||
['pico', 'bf', 'gf'],
|
|
||||||
['mom', 'bf', 'gf'],
|
|
||||||
['parents-christmas', 'bf', 'gf'],
|
|
||||||
['senpai', 'bf', 'gf'],
|
|
||||||
['tankman', 'bf', 'gf']
|
|
||||||
];
|
|
||||||
|
|
||||||
var weekNames:Array<String> = [
|
var weekNames:Array<String> = [];
|
||||||
"",
|
|
||||||
"Daddy Dearest",
|
|
||||||
"Spooky Month",
|
|
||||||
"PICO",
|
|
||||||
"MOMMY MUST MURDER",
|
|
||||||
"RED SNOW",
|
|
||||||
"hating simulator ft. moawling",
|
|
||||||
"TANKMAN"
|
|
||||||
];
|
|
||||||
|
|
||||||
var txtWeekTitle:FlxText;
|
var txtWeekTitle:FlxText;
|
||||||
|
|
||||||
|
@ -85,6 +64,56 @@ class StoryMenuState extends MusicBeatState
|
||||||
FlxG.sound.playMusic(Paths.music('freakyMenu'));
|
FlxG.sound.playMusic(Paths.music('freakyMenu'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if desktop
|
||||||
|
var weekList:Array<String> = sys.FileSystem.readDirectory("assets/weeks/");
|
||||||
|
var weekJson:String;
|
||||||
|
var weekParseJson:Dynamic;
|
||||||
|
for(i in 0...weekList.length) {
|
||||||
|
weekJson = File.getContent("assets/weeks/"+weekList[i]);
|
||||||
|
weekParseJson = haxe.Json.parse(weekJson);
|
||||||
|
var weekSongs:Array<String> = Reflect.getProperty(weekParseJson, "songs");
|
||||||
|
var weekChars:Array<String> = Reflect.getProperty(weekParseJson, "weekCharacter");
|
||||||
|
var weekName:String = Reflect.getProperty(weekParseJson, "weekName");
|
||||||
|
weekData.push(weekSongs);
|
||||||
|
weekCharacters.push(weekChars);
|
||||||
|
weekNames.push(weekName);
|
||||||
|
trace("Add Week: "+weekList[i]);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
weekData = [
|
||||||
|
['Tutorial'],
|
||||||
|
['Bopeebo', 'Fresh', 'Dadbattle'],
|
||||||
|
['Spookeez', 'South', "Monster"],
|
||||||
|
['Pico', 'Philly', "Blammed"],
|
||||||
|
['Satin-Panties', "High", "Milf"],
|
||||||
|
['Cocoa', 'Eggnog', 'Winter-Horrorland'],
|
||||||
|
['Senpai', 'Roses', 'Thorns'],
|
||||||
|
['Ugh', 'Guns', 'Stress']
|
||||||
|
];
|
||||||
|
|
||||||
|
weekCharacters = [
|
||||||
|
['dad', 'bf', 'gf'],
|
||||||
|
['dad', 'bf', 'gf'],
|
||||||
|
['spooky', 'bf', 'gf'],
|
||||||
|
['pico', 'bf', 'gf'],
|
||||||
|
['mom', 'bf', 'gf'],
|
||||||
|
['parents-christmas', 'bf', 'gf'],
|
||||||
|
['senpai', 'bf', 'gf'],
|
||||||
|
['tankman', 'bf', 'gf']
|
||||||
|
];
|
||||||
|
|
||||||
|
var weekNames = [
|
||||||
|
"",
|
||||||
|
"Daddy Dearest",
|
||||||
|
"Spooky Month",
|
||||||
|
"PICO",
|
||||||
|
"MOMMY MUST MURDER",
|
||||||
|
"RED SNOW",
|
||||||
|
"hating simulator ft. moawling",
|
||||||
|
"TANKMAN"
|
||||||
|
];
|
||||||
|
#end
|
||||||
|
|
||||||
persistentUpdate = persistentDraw = true;
|
persistentUpdate = persistentDraw = true;
|
||||||
|
|
||||||
scoreText = new FlxText(10, 10, 0, "SCORE: 49324858", 36);
|
scoreText = new FlxText(10, 10, 0, "SCORE: 49324858", 36);
|
||||||
|
|
|
@ -17,6 +17,7 @@ class StrumNote extends FlxSprite
|
||||||
public var direction:Float = 90;//plan on doing scroll directions soon -bb
|
public var direction:Float = 90;//plan on doing scroll directions soon -bb
|
||||||
public var downScroll:Bool = false;//plan on doing scroll directions soon -bb
|
public var downScroll:Bool = false;//plan on doing scroll directions soon -bb
|
||||||
public var sustainReduce:Bool = true;
|
public var sustainReduce:Bool = true;
|
||||||
|
public var keyCount:Int = 4;
|
||||||
|
|
||||||
private var player:Int;
|
private var player:Int;
|
||||||
|
|
||||||
|
@ -29,13 +30,14 @@ class StrumNote extends FlxSprite
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function new(x:Float, y:Float, leData:Int, player:Int) {
|
public function new(x:Float, y:Float, leData:Int, player:Int, keyCount:Int = 4) {
|
||||||
x += Note.swagWidth * leData;
|
x += Note.swagWidth * leData;
|
||||||
colorSwap = new ColorSwap();
|
colorSwap = new ColorSwap();
|
||||||
shader = colorSwap.shader;
|
shader = colorSwap.shader;
|
||||||
noteData = leData;
|
noteData = leData;
|
||||||
this.player = player;
|
this.player = player;
|
||||||
this.noteData = leData;
|
this.noteData = leData;
|
||||||
|
this.keyCount = keyCount;
|
||||||
super(x, y);
|
super(x, y);
|
||||||
|
|
||||||
var skin:String = 'NOTE_assets';
|
var skin:String = 'NOTE_assets';
|
||||||
|
@ -182,8 +184,14 @@ class StrumNote extends FlxSprite
|
||||||
if(animation.curAnim.name == 'confirm' && !PlayState.curStage.startsWith('school')) {
|
if(animation.curAnim.name == 'confirm' && !PlayState.curStage.startsWith('school')) {
|
||||||
centerOrigin();
|
centerOrigin();
|
||||||
centerOffsets();
|
centerOffsets();
|
||||||
offset.x -= 13;
|
//Thanks For LeatherEngine
|
||||||
offset.y -= 13;
|
offset.x = frameWidth / 2;
|
||||||
|
offset.y = frameHeight / 2;
|
||||||
|
|
||||||
|
var scale = keyCount;
|
||||||
|
|
||||||
|
offset.x -= 156 * scale / 2;
|
||||||
|
offset.y -= 156 * scale / 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,10 +75,11 @@ class TitleState extends MusicBeatState
|
||||||
override public function create():Void
|
override public function create():Void
|
||||||
{
|
{
|
||||||
#if polymod
|
#if polymod
|
||||||
|
var mods:Array<String> = CoolUtil.hotTextFile("mods/modList.txt");
|
||||||
//Thanks For Leather Engine
|
//Thanks For Leather Engine
|
||||||
Polymod.init({
|
Polymod.init({
|
||||||
modRoot:"mods/",
|
modRoot:"mods/",
|
||||||
dirs: ['introMod'],
|
dirs: mods,
|
||||||
framework: FLIXEL,
|
framework: FLIXEL,
|
||||||
errorCallback: function(error:PolymodError)
|
errorCallback: function(error:PolymodError)
|
||||||
{
|
{
|
||||||
|
@ -91,11 +92,24 @@ class TitleState extends MusicBeatState
|
||||||
"songs" => "songs",
|
"songs" => "songs",
|
||||||
"stages" => "stages",
|
"stages" => "stages",
|
||||||
"shared" => "shared",
|
"shared" => "shared",
|
||||||
"fonts" => "fonts"
|
"fonts" => "fonts",
|
||||||
|
"weeks" => "weeks",
|
||||||
|
"data" => "data",
|
||||||
|
"images" => "images",
|
||||||
|
"music" => "music",
|
||||||
|
"sounds" => "sounds",
|
||||||
|
"tutorial" => "tutorial",
|
||||||
|
"week1" => "week1",
|
||||||
|
"week2" => "week2",
|
||||||
|
"week3" => "week3",
|
||||||
|
"week4" => "week4",
|
||||||
|
"week5" => "week5",
|
||||||
|
"week6" => "week6",
|
||||||
|
"week7" => "week7"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// FlxG.bitmap.clearCache();
|
FlxG.bitmap.clearCache();
|
||||||
#end
|
#end
|
||||||
|
|
||||||
if (!doneFlixelSplash) {
|
if (!doneFlixelSplash) {
|
||||||
|
@ -186,10 +200,13 @@ class TitleState extends MusicBeatState
|
||||||
|
|
||||||
// netConnection.addEventListener(MouseEvent.MOUSE_DOWN, overlay_onMouseDown);
|
// netConnection.addEventListener(MouseEvent.MOUSE_DOWN, overlay_onMouseDown);
|
||||||
#else
|
#else
|
||||||
|
/*
|
||||||
new FlxTimer().start(1, function(tmr:FlxTimer)
|
new FlxTimer().start(1, function(tmr:FlxTimer)
|
||||||
{
|
{
|
||||||
startIntro();
|
startIntro();
|
||||||
});
|
});
|
||||||
|
*/
|
||||||
|
startIntro();
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if discord_rpc
|
#if discord_rpc
|
||||||
|
@ -353,8 +370,10 @@ class TitleState extends MusicBeatState
|
||||||
else
|
else
|
||||||
initialized = true;
|
initialized = true;
|
||||||
|
|
||||||
|
/*
|
||||||
if (FlxG.sound.music != null)
|
if (FlxG.sound.music != null)
|
||||||
FlxG.sound.music.onComplete = function() FlxG.switchState(new VideoState());
|
FlxG.sound.music.onComplete = function() FlxG.switchState(new VideoState());
|
||||||
|
*/
|
||||||
|
|
||||||
startedIntro = true;
|
startedIntro = true;
|
||||||
// credGroup.add(credTextShit);
|
// credGroup.add(credTextShit);
|
||||||
|
|
|
@ -5,6 +5,15 @@ import flixel.group.FlxSpriteGroup;
|
||||||
import flixel.graphics.frames.FlxAtlasFrames;
|
import flixel.graphics.frames.FlxAtlasFrames;
|
||||||
import flixel.util.FlxStringUtil;
|
import flixel.util.FlxStringUtil;
|
||||||
|
|
||||||
|
@:forward
|
||||||
|
abstract DefaultText(AtlasText) from AtlasText to AtlasText
|
||||||
|
{
|
||||||
|
inline public function new (x = 0.0, y = 0.0, text:String)
|
||||||
|
{
|
||||||
|
this = new AtlasText(x, y, text, Default);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@:forward
|
@:forward
|
||||||
abstract BoldText(AtlasText) from AtlasText to AtlasText
|
abstract BoldText(AtlasText) from AtlasText to AtlasText
|
||||||
{
|
{
|
||||||
|
|
|
@ -101,7 +101,7 @@ class ControlsMenu extends ui.OptionsState.Page
|
||||||
if (currentHeader != null && name.indexOf(currentHeader) == 0)
|
if (currentHeader != null && name.indexOf(currentHeader) == 0)
|
||||||
name = name.substr(currentHeader.length);
|
name = name.substr(currentHeader.length);
|
||||||
|
|
||||||
var label = labels.add(new BoldText(150, y, name));
|
var label = labels.add(new DefaultText(150, y, name));
|
||||||
label.alpha = 0.6;
|
label.alpha = 0.6;
|
||||||
for (i in 0...COLUMNS)
|
for (i in 0...COLUMNS)
|
||||||
createItem(label.x + 400 + i * 300, y, control, i);
|
createItem(label.x + 400 + i * 300, y, control, i);
|
||||||
|
|
|
@ -4,22 +4,34 @@ import flixel.FlxG;
|
||||||
import flixel.group.FlxGroup.FlxTypedGroup;
|
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||||
import flixel.text.FlxText;
|
import flixel.text.FlxText;
|
||||||
import flixel.util.FlxColor;
|
import flixel.util.FlxColor;
|
||||||
|
import flixel.FlxSprite;
|
||||||
|
import Controls;
|
||||||
#if desktop
|
#if desktop
|
||||||
import sys.FileSystem;
|
import sys.FileSystem;
|
||||||
|
import sys.io.File;
|
||||||
|
import haxe.Json;
|
||||||
|
import haxe.format.JsonParser;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
#if polymod
|
#if polymod
|
||||||
import polymod.Polymod;
|
import polymod.Polymod;
|
||||||
|
import polymod.Polymod.ModMetadata;
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
using StringTools;
|
||||||
|
|
||||||
class ModMenu extends ui.OptionsState.Page
|
class ModMenu extends ui.OptionsState.Page
|
||||||
{
|
{
|
||||||
var grpMods:FlxTypedGroup<ModMenuItem>;
|
var modList:Array<ModMetadata> = [];
|
||||||
var enabledMods:Array<String> = [];
|
public static var grpMods:FlxTypedGroup<ModMenuItem>;
|
||||||
var modFolders:Array<String> = [];
|
public static var enabledMods:Array<String> = [];
|
||||||
|
|
||||||
var curSelected:Int = 0;
|
var curSelected:Int = 0;
|
||||||
|
|
||||||
|
var descriptionText:FlxText;
|
||||||
|
var descBg:FlxSprite;
|
||||||
|
public static var MOD_PATH = "./mods";
|
||||||
|
|
||||||
public function new():Void
|
public function new():Void
|
||||||
{
|
{
|
||||||
super();
|
super();
|
||||||
|
@ -28,6 +40,19 @@ class ModMenu extends ui.OptionsState.Page
|
||||||
add(grpMods);
|
add(grpMods);
|
||||||
|
|
||||||
refreshModList();
|
refreshModList();
|
||||||
|
|
||||||
|
descBg = new FlxSprite(0, FlxG.height - 90).makeGraphic(FlxG.width, 90, 0xFF000000);
|
||||||
|
descBg.alpha = 0.6;
|
||||||
|
add(descBg);
|
||||||
|
|
||||||
|
descriptionText = new FlxText(descBg.x, descBg.y + 4, FlxG.width, "Description", 18);
|
||||||
|
descriptionText.setFormat(Paths.font("vcr.ttf"), 18, FlxColor.WHITE, CENTER);
|
||||||
|
descriptionText.borderColor = FlxColor.BLACK;
|
||||||
|
descriptionText.borderSize = 1;
|
||||||
|
descriptionText.borderStyle = OUTLINE;
|
||||||
|
descriptionText.scrollFactor.set();
|
||||||
|
descriptionText.screenCenter(X);
|
||||||
|
add(descriptionText);
|
||||||
}
|
}
|
||||||
|
|
||||||
override function update(elapsed:Float)
|
override function update(elapsed:Float)
|
||||||
|
@ -42,8 +67,9 @@ class ModMenu extends ui.OptionsState.Page
|
||||||
if (controls.UI_DOWN_P)
|
if (controls.UI_DOWN_P)
|
||||||
selections(1);
|
selections(1);
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.SPACE)
|
if (FlxG.keys.justPressed.SPACE){
|
||||||
grpMods.members[curSelected].modEnabled = !grpMods.members[curSelected].modEnabled;
|
grpMods.members[curSelected].modEnabled = !grpMods.members[curSelected].modEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
if (FlxG.keys.justPressed.I && curSelected != 0)
|
if (FlxG.keys.justPressed.I && curSelected != 0)
|
||||||
{
|
{
|
||||||
|
@ -68,10 +94,10 @@ class ModMenu extends ui.OptionsState.Page
|
||||||
{
|
{
|
||||||
curSelected += change;
|
curSelected += change;
|
||||||
|
|
||||||
if (curSelected >= modFolders.length)
|
if (curSelected >= modList.length)
|
||||||
curSelected = 0;
|
curSelected = 0;
|
||||||
if (curSelected < 0)
|
if (curSelected < 0)
|
||||||
curSelected = modFolders.length - 1;
|
curSelected = modList.length - 1;
|
||||||
|
|
||||||
for (txt in 0...grpMods.length)
|
for (txt in 0...grpMods.length)
|
||||||
{
|
{
|
||||||
|
@ -83,10 +109,33 @@ class ModMenu extends ui.OptionsState.Page
|
||||||
grpMods.members[txt].color = FlxColor.WHITE;
|
grpMods.members[txt].color = FlxColor.WHITE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
descriptionText.screenCenter(X);
|
||||||
|
|
||||||
|
descriptionText.text =
|
||||||
|
modList[curSelected].description
|
||||||
|
+ "\nContributors:";
|
||||||
|
|
||||||
|
var _count:Int = 0;
|
||||||
|
for (i in modList[curSelected].contributors){
|
||||||
|
if (_count != 0){
|
||||||
|
descriptionText.text =
|
||||||
|
descriptionText.text
|
||||||
|
+ ",";
|
||||||
|
}
|
||||||
|
descriptionText.text =
|
||||||
|
descriptionText.text
|
||||||
|
+ i.name+"("+i.role+")";
|
||||||
|
}
|
||||||
|
|
||||||
|
descriptionText.text =
|
||||||
|
descriptionText.text
|
||||||
|
+ "\nnekoEngine Version: " + modList[curSelected].apiVersion
|
||||||
|
+ "\nMod Version: " + modList[curSelected].modVersion
|
||||||
|
+ "\n";
|
||||||
|
|
||||||
organizeByY();
|
organizeByY();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline static var MOD_PATH = "./mods";
|
|
||||||
private function refreshModList():Void
|
private function refreshModList():Void
|
||||||
{
|
{
|
||||||
while (grpMods.members.length > 0)
|
while (grpMods.members.length > 0)
|
||||||
|
@ -95,8 +144,7 @@ class ModMenu extends ui.OptionsState.Page
|
||||||
}
|
}
|
||||||
|
|
||||||
#if polymod
|
#if polymod
|
||||||
var modList:Array<ModMetadata> = [];
|
modList = [];
|
||||||
modFolders = [];
|
|
||||||
|
|
||||||
trace("mods path:" + FileSystem.absolutePath(MOD_PATH));
|
trace("mods path:" + FileSystem.absolutePath(MOD_PATH));
|
||||||
if (!FileSystem.exists(MOD_PATH))
|
if (!FileSystem.exists(MOD_PATH))
|
||||||
|
@ -104,22 +152,15 @@ class ModMenu extends ui.OptionsState.Page
|
||||||
FlxG.log.warn("missing mods folder, expected: " + FileSystem.absolutePath(MOD_PATH));
|
FlxG.log.warn("missing mods folder, expected: " + FileSystem.absolutePath(MOD_PATH));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (file in FileSystem.readDirectory(MOD_PATH))
|
|
||||||
{
|
|
||||||
if (FileSystem.isDirectory(MOD_PATH + file))
|
|
||||||
modFolders.push(file);
|
|
||||||
}
|
|
||||||
|
|
||||||
enabledMods = [];
|
enabledMods = CoolUtil.hotTextFile(MOD_PATH+"/modList.txt");
|
||||||
|
|
||||||
modList = Polymod.scan(MOD_PATH);
|
modList = Polymod.scan({modRoot: MOD_PATH});
|
||||||
|
|
||||||
trace(modList);
|
|
||||||
|
|
||||||
var loopNum:Int = 0;
|
var loopNum:Int = 0;
|
||||||
for (i in modList)
|
for (i in modList)
|
||||||
{
|
{
|
||||||
|
trace(i.id);
|
||||||
var txt:ModMenuItem = new ModMenuItem(0, 10 + (40 * loopNum), 0, i.id, 32);
|
var txt:ModMenuItem = new ModMenuItem(0, 10 + (40 * loopNum), 0, i.id, 32);
|
||||||
txt.text = i.id;
|
txt.text = i.id;
|
||||||
grpMods.add(txt);
|
grpMods.add(txt);
|
||||||
|
|
|
@ -7,6 +7,20 @@ import flixel.addons.transition.FlxTransitionableState;
|
||||||
import flixel.group.FlxGroup;
|
import flixel.group.FlxGroup;
|
||||||
import flixel.util.FlxSignal;
|
import flixel.util.FlxSignal;
|
||||||
|
|
||||||
|
#if desktop
|
||||||
|
import sys.FileSystem;
|
||||||
|
import sys.io.File;
|
||||||
|
import haxe.Json;
|
||||||
|
import haxe.format.JsonParser;
|
||||||
|
#end
|
||||||
|
|
||||||
|
#if polymod
|
||||||
|
import polymod.Polymod;
|
||||||
|
import polymod.Polymod.ModMetadata;
|
||||||
|
#end
|
||||||
|
|
||||||
|
using StringTools;
|
||||||
|
|
||||||
// typedef OptionsState = OptionsMenu_old;
|
// typedef OptionsState = OptionsMenu_old;
|
||||||
// class OptionsState_new extends MusicBeatState
|
// class OptionsState_new extends MusicBeatState
|
||||||
class OptionsState extends MusicBeatState
|
class OptionsState extends MusicBeatState
|
||||||
|
@ -33,7 +47,7 @@ class OptionsState extends MusicBeatState
|
||||||
var controls = addPage(Controls, new ControlsMenu());
|
var controls = addPage(Controls, new ControlsMenu());
|
||||||
// var colors = addPage(Colors, new ColorsMenu());
|
// var colors = addPage(Colors, new ColorsMenu());
|
||||||
|
|
||||||
#if cpp
|
#if desktop
|
||||||
var mods = addPage(Mods, new ModMenu());
|
var mods = addPage(Mods, new ModMenu());
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
@ -44,8 +58,8 @@ class OptionsState extends MusicBeatState
|
||||||
// colors.onExit.add(switchPage.bind(Options));
|
// colors.onExit.add(switchPage.bind(Options));
|
||||||
preferences.onExit.add(switchPage.bind(Options));
|
preferences.onExit.add(switchPage.bind(Options));
|
||||||
|
|
||||||
#if cpp
|
#if desktop
|
||||||
mods.onExit.add(switchPage.bind(Options));
|
mods.onExit.add(reloadMod);
|
||||||
#end
|
#end
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -99,6 +113,20 @@ class OptionsState extends MusicBeatState
|
||||||
// Todo animate?
|
// Todo animate?
|
||||||
FlxG.switchState(new MainMenuState());
|
FlxG.switchState(new MainMenuState());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function reloadMod()
|
||||||
|
{
|
||||||
|
var rawEnabledMods:String = "";
|
||||||
|
for (i in ModMenu.grpMods.members){
|
||||||
|
if (i.modEnabled){
|
||||||
|
rawEnabledMods += i.text + "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
File.saveContent(ModMenu.MOD_PATH + "/modList.txt", rawEnabledMods.trim());
|
||||||
|
ModMenu.enabledMods = rawEnabledMods.trim().split('\n');
|
||||||
|
FlxG.sound.play(Paths.sound('cancelMenu'));
|
||||||
|
FlxG.switchState(new OptionsState());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class Page extends FlxGroup
|
class Page extends FlxGroup
|
||||||
|
@ -180,7 +208,7 @@ class OptionsMenu extends Page
|
||||||
createItem('preferences', function() switchPage(Preferences));
|
createItem('preferences', function() switchPage(Preferences));
|
||||||
createItem("controls", function() switchPage(Controls));
|
createItem("controls", function() switchPage(Controls));
|
||||||
// createItem('colors', function() switchPage(Colors));
|
// createItem('colors', function() switchPage(Colors));
|
||||||
#if cpp
|
#if polymod
|
||||||
createItem('mods', function() switchPage(Mods));
|
createItem('mods', function() switchPage(Mods));
|
||||||
#end
|
#end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue