Unhardcode Noteskins, gfVersion, and Stages

YOOOOOOOOO
This commit is contained in:
CyndaquilDAC
2021-04-29 13:43:41 -05:00
parent 79efdec4d8
commit 4f60b211d4
52 changed files with 234 additions and 22387 deletions

View File

@ -88,6 +88,9 @@ class ChartingState extends MusicBeatState
var leftIcon:HealthIcon;
var rightIcon:HealthIcon;
var leftIconChar:String;
var rightIconChar:String;
private var lastNote:Note;
@ -95,11 +98,31 @@ class ChartingState extends MusicBeatState
{
curSection = lastSection;
if (PlayState.SONG != null)
_song = PlayState.SONG;
else
{
_song = {
song: 'Test',
notes: [],
bpm: 150,
needsVoices: true,
player1: 'bf',
player2: 'dad',
gfVersion: 'gf',
noteStyle: 'normal',
stage: 'stage',
speed: 1,
validScore: false
};
}
gridBG = FlxGridOverlay.create(GRID_SIZE, GRID_SIZE, GRID_SIZE * 8, GRID_SIZE * 16);
add(gridBG);
leftIcon = new HealthIcon('bf');
rightIcon = new HealthIcon('dad');
leftIconChar = _song.player1;
rightIconChar = _song.player2;
leftIcon = new HealthIcon(leftIconChar);
rightIcon = new HealthIcon(rightIconChar);
leftIcon.scrollFactor.set(1, 1);
rightIcon.scrollFactor.set(1, 1);
@ -118,22 +141,6 @@ class ChartingState extends MusicBeatState
curRenderedNotes = new FlxTypedGroup<Note>();
curRenderedSustains = new FlxTypedGroup<FlxSprite>();
if (PlayState.SONG != null)
_song = PlayState.SONG;
else
{
_song = {
song: 'Test',
notes: [],
bpm: 150,
needsVoices: true,
player1: 'bf',
player2: 'dad',
speed: 1,
validScore: false
};
}
FlxG.mouse.visible = true;
FlxG.save.bind('funkin', 'ninjamuffin99');
@ -162,7 +169,8 @@ class ChartingState extends MusicBeatState
var tabs = [
{name: "Song", label: 'Song'},
{name: "Section", label: 'Section'},
{name: "Note", label: 'Note'}
{name: "Note", label: 'Note'},
{name: "Assets", label: 'Assets'}
];
UI_box = new FlxUITabMenu(null, tabs, true);
@ -247,6 +255,9 @@ class ChartingState extends MusicBeatState
stepperBPM.name = 'song_bpm';
var characters:Array<String> = CoolUtil.coolTextFile(Paths.txt('characterList'));
var gfVersions:Array<String> = CoolUtil.coolTextFile(Paths.txt('gfVersionList'));
var stages:Array<String> = CoolUtil.coolTextFile(Paths.txt('stageList'));
var noteStyles:Array<String> = CoolUtil.coolTextFile(Paths.txt('noteStyleList'));
var player1DropDown = new FlxUIDropDownMenu(10, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String)
{
@ -261,6 +272,24 @@ class ChartingState extends MusicBeatState
player2DropDown.selectedLabel = _song.player2;
var gfVersionDropDown = new FlxUIDropDownMenu(10, 200, FlxUIDropDownMenu.makeStrIdLabelArray(gfVersions, true), function(gfVersion:String)
{
_song.gfVersion = gfVersions[Std.parseInt(gfVersion)];
});
gfVersionDropDown.selectedLabel = _song.gfVersion;
var stageDropDown = new FlxUIDropDownMenu(140, 200, FlxUIDropDownMenu.makeStrIdLabelArray(stages, true), function(stage:String)
{
_song.stage = stages[Std.parseInt(stage)];
});
stageDropDown.selectedLabel = _song.stage;
var noteStyleDropDown = new FlxUIDropDownMenu(10, 300, FlxUIDropDownMenu.makeStrIdLabelArray(noteStyles, true), function(noteStyle:String)
{
_song.noteStyle = noteStyles[Std.parseInt(noteStyle)];
});
noteStyleDropDown.selectedLabel = _song.noteStyle;
var tab_group_song = new FlxUI(null, UI_box);
tab_group_song.name = "Song";
tab_group_song.add(UI_songTitle);
@ -273,10 +302,20 @@ class ChartingState extends MusicBeatState
tab_group_song.add(loadAutosaveBtn);
tab_group_song.add(stepperBPM);
tab_group_song.add(stepperSpeed);
tab_group_song.add(player1DropDown);
tab_group_song.add(player2DropDown);
var tab_group_assets = new FlxUI(null, UI_box);
tab_group_assets.name = "Assets";
tab_group_assets.add(player1DropDown);
tab_group_assets.add(player2DropDown);
tab_group_assets.add(gfVersionDropDown);
tab_group_assets.add(stageDropDown);
tab_group_assets.add(noteStyleDropDown);
UI_box.addGroup(tab_group_song);
UI_box.addGroup(tab_group_assets);
UI_box.scrollFactor.set();
FlxG.camera.follow(strumLine);
@ -991,13 +1030,13 @@ class ChartingState extends MusicBeatState
{
if (check_mustHitSection.checked)
{
leftIcon.animation.play('bf');
rightIcon.animation.play('dad');
leftIcon.animation.play(leftIconChar);
rightIcon.animation.play(rightIconChar);
}
else
{
leftIcon.animation.play('dad');
rightIcon.animation.play('bf');
leftIcon.animation.play(rightIconChar);
rightIcon.animation.play(leftIconChar);
}
}

View File

@ -9,6 +9,7 @@ import flixel.util.FlxColor;
#if polymod
import polymod.format.ParseRules.TargetSignatureElement;
#end
import PlayState;
using StringTools;
@ -58,9 +59,9 @@ class Note extends FlxSprite
var daStage:String = PlayState.curStage;
switch (daStage)
switch (PlayState.SONG.noteStyle)
{
case 'school' | 'schoolEvil':
case 'pixel':
loadGraphic(Paths.image('weeb/pixelUI/arrows-pixels'), true, 17, 17);
animation.add('greenScroll', [6]);
@ -86,6 +87,28 @@ class Note extends FlxSprite
setGraphicSize(Std.int(width * PlayState.daPixelZoom));
updateHitbox();
case 'normal':
frames = Paths.getSparrowAtlas('NOTE_assets');
animation.addByPrefix('greenScroll', 'green0');
animation.addByPrefix('redScroll', 'red0');
animation.addByPrefix('blueScroll', 'blue0');
animation.addByPrefix('purpleScroll', 'purple0');
animation.addByPrefix('purpleholdend', 'pruple end hold');
animation.addByPrefix('greenholdend', 'green hold end');
animation.addByPrefix('redholdend', 'red hold end');
animation.addByPrefix('blueholdend', 'blue hold end');
animation.addByPrefix('purplehold', 'purple hold piece');
animation.addByPrefix('greenhold', 'green hold piece');
animation.addByPrefix('redhold', 'red hold piece');
animation.addByPrefix('bluehold', 'blue hold piece');
setGraphicSize(Std.int(width * 0.7));
updateHitbox();
antialiasing = true;
default:
frames = Paths.getSparrowAtlas('NOTE_assets');

View File

@ -535,9 +535,9 @@ class PlayState extends MusicBeatState
dialogue = CoolUtil.coolTextFile(Paths.txt('thorns/thornsDialogue'));
}
switch(SONG.song.toLowerCase())
switch(SONG.stage)
{
case 'spookeez' | 'monster' | 'south':
case 'halloween':
{
curStage = 'spooky';
halloweenLevel = true;
@ -554,7 +554,7 @@ class PlayState extends MusicBeatState
isHalloween = true;
}
case 'pico' | 'blammed' | 'philly':
case 'philly':
{
curStage = 'philly';
@ -600,7 +600,7 @@ class PlayState extends MusicBeatState
var street:FlxSprite = new FlxSprite(-40, streetBehind.y).loadGraphic(Paths.image('philly/street'));
add(street);
}
case 'milf' | 'satin-panties' | 'high':
case 'limo':
{
curStage = 'limo';
defaultCamZoom = 0.90;
@ -648,7 +648,7 @@ class PlayState extends MusicBeatState
fastCar = new FlxSprite(-300, 160).loadGraphic(Paths.image('limo/fastCarLol'));
// add(limo);
}
case 'cocoa' | 'eggnog':
case 'mall':
{
curStage = 'mall';
@ -712,7 +712,7 @@ class PlayState extends MusicBeatState
add(santa);
}
}
case 'winter-horrorland':
case 'mallEvil':
{
curStage = 'mallEvil';
var bg:FlxSprite = new FlxSprite(-400, -500).loadGraphic(Paths.image('christmas/evilBG'));
@ -732,7 +732,7 @@ class PlayState extends MusicBeatState
evilSnow.antialiasing = true;
add(evilSnow);
}
case 'senpai' | 'roses':
case 'school':
{
curStage = 'school';
@ -803,7 +803,7 @@ class PlayState extends MusicBeatState
add(bgGirls);
}
}
case 'thorns':
case 'schoolEvil':
{
curStage = 'schoolEvil';
@ -859,6 +859,33 @@ class PlayState extends MusicBeatState
add(waveSpriteFG);
*/
}
case 'stage':
{
defaultCamZoom = 0.9;
curStage = 'stage';
var bg:FlxSprite = new FlxSprite(-600, -200).loadGraphic(Paths.image('stageback'));
bg.antialiasing = true;
bg.scrollFactor.set(0.9, 0.9);
bg.active = false;
add(bg);
var stageFront:FlxSprite = new FlxSprite(-650, 600).loadGraphic(Paths.image('stagefront'));
stageFront.setGraphicSize(Std.int(stageFront.width * 1.1));
stageFront.updateHitbox();
stageFront.antialiasing = true;
stageFront.scrollFactor.set(0.9, 0.9);
stageFront.active = false;
add(stageFront);
var stageCurtains:FlxSprite = new FlxSprite(-500, -300).loadGraphic(Paths.image('stagecurtains'));
stageCurtains.setGraphicSize(Std.int(stageCurtains.width * 0.9));
stageCurtains.updateHitbox();
stageCurtains.antialiasing = true;
stageCurtains.scrollFactor.set(1.3, 1.3);
stageCurtains.active = false;
add(stageCurtains);
}
default:
{
defaultCamZoom = 0.9;
@ -889,21 +916,20 @@ class PlayState extends MusicBeatState
}
var gfVersion:String = 'gf';
switch (curStage)
switch (SONG.gfVersion)
{
case 'limo':
case 'gf-car':
gfVersion = 'gf-car';
case 'mall' | 'mallEvil':
case 'gf-christmas':
gfVersion = 'gf-christmas';
case 'school':
gfVersion = 'gf-pixel';
case 'schoolEvil':
case 'gf-pixel':
gfVersion = 'gf-pixel';
case 'gf':
gfVersion = 'gf';
default:
gfVersion = 'gf';
}
if (curStage == 'limo')
gfVersion = 'gf-car';
gf = new Character(400, 130, gfVersion);
gf.scrollFactor.set(0.95, 0.95);
@ -1969,9 +1995,9 @@ class PlayState extends MusicBeatState
// FlxG.log.add(i);
var babyArrow:FlxSprite = new FlxSprite(0, strumLine.y);
switch (curStage)
switch (SONG.noteStyle)
{
case 'school' | 'schoolEvil':
case 'pixel':
babyArrow.loadGraphic(Paths.image('weeb/pixelUI/arrows-pixels'), true, 17, 17);
babyArrow.animation.add('green', [6]);
babyArrow.animation.add('red', [7]);
@ -2005,6 +2031,40 @@ class PlayState extends MusicBeatState
babyArrow.animation.add('pressed', [7, 11], 12, false);
babyArrow.animation.add('confirm', [15, 19], 24, false);
}
case 'normal':
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');
babyArrow.animation.addByPrefix('green', 'arrowUP');
babyArrow.animation.addByPrefix('blue', 'arrowDOWN');
babyArrow.animation.addByPrefix('purple', 'arrowLEFT');
babyArrow.animation.addByPrefix('red', 'arrowRIGHT');
babyArrow.antialiasing = true;
babyArrow.setGraphicSize(Std.int(babyArrow.width * 0.7));
switch (Math.abs(i))
{
case 0:
babyArrow.x += Note.swagWidth * 0;
babyArrow.animation.addByPrefix('static', 'arrowLEFT');
babyArrow.animation.addByPrefix('pressed', 'left press', 24, false);
babyArrow.animation.addByPrefix('confirm', 'left confirm', 24, false);
case 1:
babyArrow.x += Note.swagWidth * 1;
babyArrow.animation.addByPrefix('static', 'arrowDOWN');
babyArrow.animation.addByPrefix('pressed', 'down press', 24, false);
babyArrow.animation.addByPrefix('confirm', 'down confirm', 24, false);
case 2:
babyArrow.x += Note.swagWidth * 2;
babyArrow.animation.addByPrefix('static', 'arrowUP');
babyArrow.animation.addByPrefix('pressed', 'up press', 24, false);
babyArrow.animation.addByPrefix('confirm', 'up confirm', 24, false);
case 3:
babyArrow.x += Note.swagWidth * 3;
babyArrow.animation.addByPrefix('static', 'arrowRIGHT');
babyArrow.animation.addByPrefix('pressed', 'right press', 24, false);
babyArrow.animation.addByPrefix('confirm', 'right confirm', 24, false);
}
default:
babyArrow.frames = Paths.getSparrowAtlas('NOTE_assets');

View File

@ -17,6 +17,9 @@ typedef SwagSong =
var player1:String;
var player2:String;
var gfVersion:String;
var noteStyle:String;
var stage:String;
var validScore:Bool;
}
@ -30,6 +33,9 @@ class Song
public var player1:String = 'bf';
public var player2:String = 'dad';
public var gfVersion:String = 'gf';
public var noteStyle:String = 'normal';
public var stage:String = 'stage';
public function new(song, notes, bpm)
{