mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2025-04-01 01:39:44 -04:00
caught up 10/30/
This commit is contained in:
parent
f388fa0b21
commit
61f74e7427
20 changed files with 818 additions and 239 deletions
|
@ -44,6 +44,8 @@
|
|||
<assets path="assets/sounds" include="*.mp3" if="web" />
|
||||
<assets path="assets/sounds" include="*.ogg" unless="web" />
|
||||
|
||||
<assets path="assets/fonts/vcr.ttf" embed="true" />
|
||||
|
||||
|
||||
<!-- _______________________________ Libraries ______________________________ -->
|
||||
|
||||
|
@ -96,4 +98,5 @@
|
|||
<!--Place custom nodes like icons here (higher priority to override the HaxeFlixel icon)-->
|
||||
<icon path="art/icon.png" unless="switch" />
|
||||
<icon path="art/iconSwitch.png" if="switch" />
|
||||
<haxedef name="SKIP_TO_PLAYSTATE" if="debug" />
|
||||
</project>
|
||||
|
|
|
@ -17,6 +17,8 @@ class Alphabet extends FlxSpriteGroup
|
|||
public var delay:Float = 0.05;
|
||||
public var paused:Bool = false;
|
||||
|
||||
public var text:String = "";
|
||||
|
||||
var _finalText:String = "";
|
||||
var _curText:String = "";
|
||||
|
||||
|
@ -28,15 +30,79 @@ class Alphabet extends FlxSpriteGroup
|
|||
// amp, backslash, question mark, apostrophy, comma, angry faic, period
|
||||
var lastSprite:AlphaCharacter;
|
||||
var xPosResetted:Bool = false;
|
||||
var lastWasSpace:Bool = false;
|
||||
|
||||
public function new(x:Float, y:Float, text:String = "", ?bold:Bool = false)
|
||||
var splitWords:Array<String> = [];
|
||||
|
||||
public function new(x:Float, y:Float, text:String = "", ?bold:Bool = false, typed:Bool = false)
|
||||
{
|
||||
super(x, y);
|
||||
|
||||
_finalText = text;
|
||||
this.text = text;
|
||||
|
||||
var arrayShit:Array<String> = text.split("");
|
||||
trace(arrayShit);
|
||||
if (typed)
|
||||
{
|
||||
startTypedText();
|
||||
}
|
||||
else
|
||||
{
|
||||
addText();
|
||||
}
|
||||
}
|
||||
|
||||
public function addText()
|
||||
{
|
||||
doSplitWords();
|
||||
|
||||
for (character in splitWords)
|
||||
{
|
||||
// if (character.fastCodeAt() == " ")
|
||||
// {
|
||||
// }
|
||||
|
||||
if (character == " ")
|
||||
{
|
||||
lastWasSpace = true;
|
||||
}
|
||||
|
||||
if (AlphaCharacter.alphabet.contains(character.toLowerCase()))
|
||||
{
|
||||
var xPos:Float = 0;
|
||||
if (lastSprite != null)
|
||||
{
|
||||
xPos = lastSprite.x + lastSprite.frameWidth;
|
||||
}
|
||||
|
||||
if (lastWasSpace)
|
||||
{
|
||||
xPos += 40;
|
||||
lastWasSpace = false;
|
||||
}
|
||||
|
||||
// var letter:AlphaCharacter = new AlphaCharacter(30 * loopNum, 0);
|
||||
var letter:AlphaCharacter = new AlphaCharacter(xPos, 0);
|
||||
letter.createBold(character);
|
||||
add(letter);
|
||||
|
||||
lastSprite = letter;
|
||||
}
|
||||
|
||||
// loopNum += 1;
|
||||
}
|
||||
}
|
||||
|
||||
function doSplitWords():Void
|
||||
{
|
||||
splitWords = _finalText.split("");
|
||||
}
|
||||
|
||||
public function startTypedText():Void
|
||||
{
|
||||
_finalText = text;
|
||||
doSplitWords();
|
||||
|
||||
// trace(arrayShit);
|
||||
|
||||
var loopNum:Int = 0;
|
||||
|
||||
|
@ -52,7 +118,7 @@ class Alphabet extends FlxSpriteGroup
|
|||
// xPos = 0;
|
||||
}
|
||||
|
||||
if (AlphaCharacter.alphabet.contains(arrayShit[loopNum].toLowerCase()))
|
||||
if (AlphaCharacter.alphabet.contains(splitWords[loopNum].toLowerCase()))
|
||||
{
|
||||
if (lastSprite != null && !xPosResetted)
|
||||
{
|
||||
|
@ -67,7 +133,7 @@ class Alphabet extends FlxSpriteGroup
|
|||
|
||||
// var letter:AlphaCharacter = new AlphaCharacter(30 * loopNum, 0);
|
||||
var letter:AlphaCharacter = new AlphaCharacter(xPos, 55 * yMulti);
|
||||
letter.createBold(arrayShit[loopNum]);
|
||||
letter.createBold(splitWords[loopNum]);
|
||||
add(letter);
|
||||
|
||||
lastSprite = letter;
|
||||
|
@ -76,32 +142,7 @@ class Alphabet extends FlxSpriteGroup
|
|||
loopNum += 1;
|
||||
|
||||
tmr.time = FlxG.random.float(0.03, 0.09);
|
||||
}, arrayShit.length);
|
||||
|
||||
for (character in arrayShit)
|
||||
{
|
||||
// if (character.fastCodeAt() == " ")
|
||||
// {
|
||||
// }
|
||||
|
||||
if (AlphaCharacter.alphabet.contains(character.toLowerCase()))
|
||||
{
|
||||
/* var xPos:Float = 0;
|
||||
if (lastSprite != null)
|
||||
{
|
||||
xPos = lastSprite.x + lastSprite.frameWidth - 40;
|
||||
}
|
||||
|
||||
// var letter:AlphaCharacter = new AlphaCharacter(30 * loopNum, 0);
|
||||
var letter:AlphaCharacter = new AlphaCharacter(xPos, 0);
|
||||
letter.createBold(character);
|
||||
add(letter);
|
||||
|
||||
lastSprite = letter; */
|
||||
}
|
||||
|
||||
// loopNum += 1;
|
||||
}
|
||||
}, splitWords.length);
|
||||
}
|
||||
|
||||
override function update(elapsed:Float)
|
||||
|
|
|
@ -39,6 +39,9 @@ class AnimationDebug extends FlxState
|
|||
gridBG.scrollFactor.set(0.5, 0.5);
|
||||
add(gridBG);
|
||||
|
||||
if (daAnim == 'bf')
|
||||
isDad = false;
|
||||
|
||||
if (isDad)
|
||||
{
|
||||
dad = new Character(0, 0, daAnim);
|
||||
|
|
|
@ -26,6 +26,10 @@ class Boyfriend extends Character
|
|||
animation.addByPrefix('singRIGHTmiss', 'BF NOTE RIGHT MISS', 24, false);
|
||||
animation.addByPrefix('singDOWNmiss', 'BF NOTE DOWN MISS', 24, false);
|
||||
animation.addByPrefix('hey', 'BF HEY', 24, false);
|
||||
|
||||
animation.addByPrefix('firstDeath', "BF dies", 24, false);
|
||||
animation.addByPrefix('deathLoop', "BF Dead Loop", 24, true);
|
||||
animation.addByPrefix('deathConfirm', "BF Dead confirm", 24, false);
|
||||
playAnim('idle');
|
||||
|
||||
antialiasing = true;
|
||||
|
@ -40,6 +44,9 @@ class Boyfriend extends Character
|
|||
addOffset("singLEFTmiss", 12, 24);
|
||||
addOffset("singDOWNmiss", -11, -19);
|
||||
addOffset("hey", 7, 4);
|
||||
addOffset('firstDeath', 37, 11);
|
||||
addOffset('deathLoop', 37, 5);
|
||||
addOffset('deathConfirm', 37, 69);
|
||||
}
|
||||
|
||||
override function update(elapsed:Float)
|
||||
|
@ -48,6 +55,12 @@ class Boyfriend extends Character
|
|||
{
|
||||
playAnim('idle', true, false, 10);
|
||||
}
|
||||
|
||||
if (animation.curAnim.name == 'firstDeath' && animation.curAnim.finished)
|
||||
{
|
||||
playAnim('deathLoop');
|
||||
}
|
||||
|
||||
super.update(elapsed);
|
||||
}
|
||||
}
|
||||
|
|
11
source/ButtonRemapSubstate.hx
Normal file
11
source/ButtonRemapSubstate.hx
Normal file
|
@ -0,0 +1,11 @@
|
|||
package;
|
||||
|
||||
import flixel.FlxSubState;
|
||||
|
||||
class ButtonRemapSubstate extends FlxSubState
|
||||
{
|
||||
public function new()
|
||||
{
|
||||
super();
|
||||
}
|
||||
}
|
|
@ -73,7 +73,7 @@ class Character extends FlxSprite
|
|||
animation.addByPrefix('singDOWN', 'spooky DOWN note', 24, false);
|
||||
animation.addByPrefix('singLEFT', 'note sing left', 24, false);
|
||||
animation.addByPrefix('singRIGHT', 'spooky sing right', 24, false);
|
||||
animation.addByIndices('danceLeft', 'spooky dance idle', [16, 0, 2, 6], "", 12, false);
|
||||
animation.addByIndices('danceLeft', 'spooky dance idle', [0, 2, 6], "", 12, false);
|
||||
animation.addByIndices('danceRight', 'spooky dance idle', [8, 10, 12, 14], "", 12, false);
|
||||
|
||||
addOffset('danceLeft');
|
||||
|
@ -85,6 +85,21 @@ class Character extends FlxSprite
|
|||
addOffset("singDOWN", -50, -130);
|
||||
|
||||
playAnim('danceRight');
|
||||
case 'monster':
|
||||
tex = FlxAtlasFrames.fromSparrow(AssetPaths.Monster_Assets__png, AssetPaths.Monster_Assets__xml);
|
||||
frames = tex;
|
||||
animation.addByPrefix('idle', 'monster idle', 24);
|
||||
animation.addByPrefix('singUP', 'monster up note', 24, false);
|
||||
animation.addByPrefix('singDOWN', 'monster down', 24, false);
|
||||
animation.addByPrefix('singLEFT', 'Monster left note', 24, false);
|
||||
animation.addByPrefix('singRIGHT', 'Monster Right note', 24, false);
|
||||
|
||||
addOffset('idle');
|
||||
addOffset("singUP", -20, 50);
|
||||
addOffset("singRIGHT", -51);
|
||||
addOffset("singLEFT", -30);
|
||||
addOffset("singDOWN", -30, -40);
|
||||
playAnim('idle');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -113,6 +128,8 @@ class Character extends FlxSprite
|
|||
playAnim('danceLeft');
|
||||
case 'dad':
|
||||
playAnim('idle');
|
||||
case 'monster':
|
||||
playAnim('idle');
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -125,6 +142,23 @@ class Character extends FlxSprite
|
|||
{
|
||||
offset.set(daOffset[0], daOffset[1]);
|
||||
}
|
||||
|
||||
if (curCharacter == 'gf')
|
||||
{
|
||||
if (AnimName == 'singLEFT')
|
||||
{
|
||||
danced = true;
|
||||
}
|
||||
else if (AnimName == 'singRIGHT')
|
||||
{
|
||||
danced = false;
|
||||
}
|
||||
|
||||
if (AnimName == 'singUP' || AnimName == 'singDOWN')
|
||||
{
|
||||
danced = !danced;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function addOffset(name:String, x:Float = 0, y:Float = 0)
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package;
|
||||
|
||||
import Section.SwagSection;
|
||||
import Song.SwagSong;
|
||||
import flixel.FlxG;
|
||||
import flixel.FlxSprite;
|
||||
|
@ -68,6 +69,8 @@ class ChartingState extends MusicBeatState
|
|||
**/
|
||||
var curSelectedNote:Array<Dynamic>;
|
||||
|
||||
var tempBpm:Int = 0;
|
||||
|
||||
override function create()
|
||||
{
|
||||
gridBG = FlxGridOverlay.create(GRID_SIZE, GRID_SIZE, GRID_SIZE * 8, GRID_SIZE * 16);
|
||||
|
@ -81,9 +84,9 @@ class ChartingState extends MusicBeatState
|
|||
else
|
||||
{
|
||||
_song = {
|
||||
song: 'tutorial',
|
||||
song: 'Monster',
|
||||
notes: [],
|
||||
bpm: 100,
|
||||
bpm: 95,
|
||||
sections: 0,
|
||||
needsVoices: false,
|
||||
player1: 'bf',
|
||||
|
@ -93,6 +96,8 @@ class ChartingState extends MusicBeatState
|
|||
};
|
||||
}
|
||||
|
||||
tempBpm = _song.bpm;
|
||||
|
||||
addSection();
|
||||
|
||||
// sections = _song.notes;
|
||||
|
@ -172,7 +177,7 @@ class ChartingState extends MusicBeatState
|
|||
stepperBPM.value = Conductor.bpm;
|
||||
stepperBPM.name = 'song_bpm';
|
||||
|
||||
var characters:Array<String> = ["bf", 'dad', 'gf', 'spooky'];
|
||||
var characters:Array<String> = ["bf", 'dad', 'gf', 'spooky', 'monster'];
|
||||
|
||||
var player1DropDown = new FlxUIDropDownMenu(10, 100, FlxUIDropDownMenu.makeStrIdLabelArray(characters, true), function(character:String)
|
||||
{
|
||||
|
@ -208,6 +213,8 @@ class ChartingState extends MusicBeatState
|
|||
|
||||
var stepperLength:FlxUINumericStepper;
|
||||
var check_mustHitSection:FlxUICheckBox;
|
||||
var check_changeBPM:FlxUICheckBox;
|
||||
var stepperSectionBPM:FlxUINumericStepper;
|
||||
|
||||
function addSectionUI():Void
|
||||
{
|
||||
|
@ -218,7 +225,11 @@ class ChartingState extends MusicBeatState
|
|||
stepperLength.value = _song.notes[curSection].lengthInSteps;
|
||||
stepperLength.name = "section_length";
|
||||
|
||||
var stepperCopy:FlxUINumericStepper = new FlxUINumericStepper(110, 30, 1, 1, 1, 999, 0);
|
||||
stepperSectionBPM = new FlxUINumericStepper(10, 80, 1, Conductor.bpm, 0, 999, 0);
|
||||
stepperSectionBPM.value = Conductor.bpm;
|
||||
stepperSectionBPM.name = 'section_bpm';
|
||||
|
||||
var stepperCopy:FlxUINumericStepper = new FlxUINumericStepper(110, 30, 1, 1, -999, 999, 0);
|
||||
|
||||
var copyButton:FlxButton = new FlxButton(110, 8, "Copy last section", function()
|
||||
{
|
||||
|
@ -229,15 +240,15 @@ class ChartingState extends MusicBeatState
|
|||
check_mustHitSection.name = 'check_mustHit';
|
||||
check_mustHitSection.checked = true;
|
||||
// _song.needsVoices = check_mustHit.checked;
|
||||
check_mustHitSection.callback = function()
|
||||
{
|
||||
// _song.needsVoices = check_mustHit.checked;
|
||||
trace('CHECKED!');
|
||||
};
|
||||
|
||||
check_changeBPM = new FlxUICheckBox(10, 60, null, null, 'Change BPM', 100);
|
||||
check_changeBPM.name = 'check_changeBPM';
|
||||
|
||||
tab_group_section.add(stepperLength);
|
||||
tab_group_section.add(stepperSectionBPM);
|
||||
tab_group_section.add(stepperCopy);
|
||||
tab_group_section.add(check_mustHitSection);
|
||||
tab_group_section.add(check_changeBPM);
|
||||
tab_group_section.add(copyButton);
|
||||
|
||||
UI_box.addGroup(tab_group_section);
|
||||
|
@ -267,7 +278,7 @@ class ChartingState extends MusicBeatState
|
|||
if (FlxG.sound.music != null)
|
||||
FlxG.sound.music.stop();
|
||||
|
||||
FlxG.sound.playMusic('assets/music/' + daSong + '.mp3', 0.6);
|
||||
FlxG.sound.playMusic('assets/music/' + daSong + TitleState.soundExt, 0.6);
|
||||
FlxG.sound.music.pause();
|
||||
FlxG.sound.music.onComplete = function()
|
||||
{
|
||||
|
@ -305,6 +316,9 @@ class ChartingState extends MusicBeatState
|
|||
{
|
||||
case 'Must hit section':
|
||||
_song.notes[curSection].mustHitSection = check.checked;
|
||||
case 'Change BPM':
|
||||
_song.notes[curSection].changeBPM = check.checked;
|
||||
FlxG.log.add('changed bpm shit');
|
||||
}
|
||||
}
|
||||
else if (id == FlxUINumericStepper.CHANGE_EVENT && (sender is FlxUINumericStepper))
|
||||
|
@ -323,6 +337,7 @@ class ChartingState extends MusicBeatState
|
|||
}
|
||||
else if (wname == 'song_bpm')
|
||||
{
|
||||
tempBpm = Std.int(nums.value);
|
||||
Conductor.changeBPM(Std.int(nums.value));
|
||||
}
|
||||
else if (wname == 'note_susLength')
|
||||
|
@ -330,6 +345,11 @@ class ChartingState extends MusicBeatState
|
|||
curSelectedNote[2] = nums.value;
|
||||
updateGrid();
|
||||
}
|
||||
else if (wname == 'section_bpm')
|
||||
{
|
||||
_song.notes[curSection].bpm = Std.int(nums.value);
|
||||
updateGrid();
|
||||
}
|
||||
}
|
||||
|
||||
// FlxG.log.add(id + " WEED " + sender + " WEED " + data + " WEED " + params);
|
||||
|
@ -448,12 +468,12 @@ class ChartingState extends MusicBeatState
|
|||
}
|
||||
}
|
||||
|
||||
_song.bpm = Conductor.bpm;
|
||||
_song.bpm = tempBpm;
|
||||
|
||||
if (FlxG.keys.justPressed.UP)
|
||||
Conductor.changeBPM(Conductor.bpm + 1);
|
||||
if (FlxG.keys.justPressed.DOWN)
|
||||
Conductor.changeBPM(Conductor.bpm - 1);
|
||||
/* if (FlxG.keys.justPressed.UP)
|
||||
Conductor.changeBPM(Conductor.bpm + 1);
|
||||
if (FlxG.keys.justPressed.DOWN)
|
||||
Conductor.changeBPM(Conductor.bpm - 1); */
|
||||
|
||||
if (FlxG.keys.justPressed.RIGHT)
|
||||
changeSection(curSection + 1);
|
||||
|
@ -471,6 +491,7 @@ class ChartingState extends MusicBeatState
|
|||
if (_song.notes[sec] != null)
|
||||
{
|
||||
curSection = sec;
|
||||
|
||||
updateGrid();
|
||||
|
||||
if (updateMusic)
|
||||
|
@ -489,6 +510,7 @@ class ChartingState extends MusicBeatState
|
|||
updateCurStep();
|
||||
}
|
||||
|
||||
updateGrid();
|
||||
updateSectionUI();
|
||||
}
|
||||
}
|
||||
|
@ -514,6 +536,8 @@ class ChartingState extends MusicBeatState
|
|||
|
||||
stepperLength.value = sec.lengthInSteps;
|
||||
check_mustHitSection.checked = sec.mustHitSection;
|
||||
check_changeBPM.checked = sec.changeBPM;
|
||||
stepperSectionBPM.value = sec.bpm;
|
||||
}
|
||||
|
||||
function updateNoteUI():Void
|
||||
|
@ -535,6 +559,15 @@ class ChartingState extends MusicBeatState
|
|||
|
||||
var sectionInfo:Array<Dynamic> = _song.notes[curSection].sectionNotes;
|
||||
|
||||
if (_song.notes[curSection].changeBPM && _song.notes[curSection].bpm > 0)
|
||||
{
|
||||
Conductor.changeBPM(_song.notes[curSection].bpm);
|
||||
}
|
||||
else
|
||||
{
|
||||
Conductor.changeBPM(tempBpm);
|
||||
}
|
||||
|
||||
/* // PORT BULLSHIT, INCASE THERE'S NO SUSTAIN DATA FOR A NOTE
|
||||
for (sec in 0..._song.notes.length)
|
||||
{
|
||||
|
@ -567,8 +600,7 @@ class ChartingState extends MusicBeatState
|
|||
if (daSus > 0)
|
||||
{
|
||||
var sustainVis:FlxSprite = new FlxSprite(note.x + (GRID_SIZE / 2),
|
||||
note.y + getYfromStrum(note.strumTime + Conductor.stepCrochet)).makeGraphic(8,
|
||||
Math.floor(FlxMath.remapToRange(daSus, 0, Conductor.stepCrochet * 16, 0, gridBG.height)));
|
||||
note.y + GRID_SIZE).makeGraphic(8, Math.floor(FlxMath.remapToRange(daSus, 0, Conductor.stepCrochet * 16, 0, gridBG.height)));
|
||||
curRenderedSustains.add(sustainVis);
|
||||
}
|
||||
}
|
||||
|
@ -576,7 +608,16 @@ class ChartingState extends MusicBeatState
|
|||
|
||||
private function addSection(lengthInSteps:Int = 16):Void
|
||||
{
|
||||
_song.notes.push(new Section(lengthInSteps));
|
||||
var sec:SwagSection = {
|
||||
lengthInSteps: lengthInSteps,
|
||||
bpm: _song.bpm,
|
||||
changeBPM: false,
|
||||
mustHitSection: true,
|
||||
sectionNotes: [],
|
||||
typeOfSection: 0
|
||||
};
|
||||
|
||||
_song.notes.push(sec);
|
||||
}
|
||||
|
||||
function selectNote(note:Note):Void
|
||||
|
@ -611,6 +652,16 @@ class ChartingState extends MusicBeatState
|
|||
updateGrid();
|
||||
}
|
||||
|
||||
function clearSong():Void
|
||||
{
|
||||
for (daSection in 0..._song.notes.length)
|
||||
{
|
||||
_song.notes[daSection].sectionNotes = [];
|
||||
}
|
||||
|
||||
updateGrid();
|
||||
}
|
||||
|
||||
private function addNote():Void
|
||||
{
|
||||
var noteStrum = Math.round(getStrumTime(dummyArrow.y) + (curSection * (Conductor.stepCrochet * 16)));
|
||||
|
@ -638,7 +689,7 @@ class ChartingState extends MusicBeatState
|
|||
return FlxMath.remapToRange(strumTime, 0, 16 * Conductor.stepCrochet, gridBG.y, gridBG.y + gridBG.height);
|
||||
}
|
||||
|
||||
function calculateSectionLengths(?sec:Section):Int
|
||||
function calculateSectionLengths(?sec:SwagSection):Int
|
||||
{
|
||||
var daLength:Int = 0;
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ import flixel.text.FlxText;
|
|||
|
||||
class FreeplayState extends MusicBeatState
|
||||
{
|
||||
var songs:Array<String> = ["Bopeebo", "Dadbattle", "Fresh", "Tutorial\nlol"];
|
||||
var songs:Array<String> = ["Bopeebo", "Dadbattle", "Fresh", "Tutorial", "Spookeez", "South", "Monster"];
|
||||
|
||||
var selector:FlxText;
|
||||
var curSelected:Int = 0;
|
||||
|
@ -30,11 +30,17 @@ class FreeplayState extends MusicBeatState
|
|||
|
||||
for (i in 0...songs.length)
|
||||
{
|
||||
var songText:Alphabet = new Alphabet(40, (70 * i) + 30, songs[i]);
|
||||
var songText:Alphabet = new Alphabet(0, (70 * i) + 30, songs[i], true, false);
|
||||
add(songText);
|
||||
songText.x += 40;
|
||||
// DONT PUT X IN THE FIRST PARAMETER OF new ALPHABET() !!
|
||||
// songText.screenCenter(X);
|
||||
}
|
||||
|
||||
FlxG.sound.playMusic('assets/music/title' + TitleState.soundExt, 0);
|
||||
FlxG.sound.music.fadeIn(2, 0, 0.8);
|
||||
selector = new FlxText();
|
||||
|
||||
selector.size = 40;
|
||||
selector.text = ">";
|
||||
add(selector);
|
||||
|
@ -46,11 +52,16 @@ class FreeplayState extends MusicBeatState
|
|||
|
||||
override function update(elapsed:Float)
|
||||
{
|
||||
if (FlxG.keys.justPressed.UP)
|
||||
super.update(elapsed);
|
||||
var upP = controls.UP_P;
|
||||
var downP = controls.DOWN_P;
|
||||
var accepted = controls.ACCEPT;
|
||||
|
||||
if (upP)
|
||||
{
|
||||
curSelected -= 1;
|
||||
}
|
||||
if (FlxG.keys.justPressed.DOWN)
|
||||
if (downP)
|
||||
{
|
||||
curSelected += 1;
|
||||
}
|
||||
|
@ -73,10 +84,11 @@ class FreeplayState extends MusicBeatState
|
|||
|
||||
selector.y = (70 * curSelected) + 30;
|
||||
|
||||
if (FlxG.keys.justPressed.ENTER)
|
||||
if (accepted)
|
||||
{
|
||||
PlayState.SONG = Song.loadFromJson(songs[curSelected].toLowerCase());
|
||||
FlxG.switchState(new PlayState());
|
||||
FlxG.sound.music.stop();
|
||||
}
|
||||
|
||||
#if switch
|
||||
|
@ -84,9 +96,8 @@ class FreeplayState extends MusicBeatState
|
|||
{
|
||||
PlayState.SONG = Song.loadFromJson(songs[curSelected].toLowerCase());
|
||||
FlxG.switchState(new PlayState());
|
||||
FlxG.sound.music.stop();
|
||||
}
|
||||
#end
|
||||
|
||||
super.update(elapsed);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,26 +10,44 @@ import flixel.tweens.FlxTween;
|
|||
|
||||
class GameOverState extends FlxTransitionableState
|
||||
{
|
||||
var bfX:Float = 0;
|
||||
var bfY:Float = 0;
|
||||
|
||||
public function new(x:Float, y:Float)
|
||||
{
|
||||
super();
|
||||
|
||||
bfX = x;
|
||||
bfY = y;
|
||||
}
|
||||
|
||||
override function create()
|
||||
{
|
||||
var loser:FlxSprite = new FlxSprite(100, 100);
|
||||
var loseTex = FlxAtlasFrames.fromSparrow(AssetPaths.lose__png, AssetPaths.lose__xml);
|
||||
loser.frames = loseTex;
|
||||
loser.animation.addByPrefix('lose', 'lose', 24, false);
|
||||
loser.animation.play('lose');
|
||||
add(loser);
|
||||
/* var loser:FlxSprite = new FlxSprite(100, 100);
|
||||
var loseTex = FlxAtlasFrames.fromSparrow(AssetPaths.lose__png, AssetPaths.lose__xml);
|
||||
loser.frames = loseTex;
|
||||
loser.animation.addByPrefix('lose', 'lose', 24, false);
|
||||
loser.animation.play('lose');
|
||||
// add(loser); */
|
||||
|
||||
var restart:FlxSprite = new FlxSprite(500, 50).loadGraphic(AssetPaths.restart__png);
|
||||
restart.setGraphicSize(Std.int(restart.width * 0.6));
|
||||
restart.updateHitbox();
|
||||
restart.alpha = 0;
|
||||
restart.antialiasing = true;
|
||||
add(restart);
|
||||
var bf:Boyfriend = new Boyfriend(bfX, bfY);
|
||||
// bf.scrollFactor.set();
|
||||
add(bf);
|
||||
bf.playAnim('firstDeath');
|
||||
|
||||
FlxG.camera.follow(bf, LOCKON, 0.001);
|
||||
/*
|
||||
var restart:FlxSprite = new FlxSprite(500, 50).loadGraphic(AssetPaths.restart__png);
|
||||
restart.setGraphicSize(Std.int(restart.width * 0.6));
|
||||
restart.updateHitbox();
|
||||
restart.alpha = 0;
|
||||
restart.antialiasing = true;
|
||||
// add(restart); */
|
||||
|
||||
FlxG.sound.music.fadeOut(2, FlxG.sound.music.volume * 0.6);
|
||||
|
||||
FlxTween.tween(restart, {alpha: 1}, 1, {ease: FlxEase.quartInOut});
|
||||
FlxTween.tween(restart, {y: restart.y + 40}, 7, {ease: FlxEase.quartInOut, type: PINGPONG});
|
||||
// FlxTween.tween(restart, {alpha: 1}, 1, {ease: FlxEase.quartInOut});
|
||||
// FlxTween.tween(restart, {y: restart.y + 40}, 7, {ease: FlxEase.quartInOut, type: PINGPONG});
|
||||
|
||||
super.create();
|
||||
}
|
||||
|
@ -48,6 +66,8 @@ class GameOverState extends FlxTransitionableState
|
|||
pressed = true;
|
||||
}
|
||||
|
||||
pressed = false;
|
||||
|
||||
if (pressed && !fading)
|
||||
{
|
||||
fading = true;
|
||||
|
|
89
source/GameOverSubstate.hx
Normal file
89
source/GameOverSubstate.hx
Normal file
|
@ -0,0 +1,89 @@
|
|||
package;
|
||||
|
||||
import flixel.FlxG;
|
||||
import flixel.FlxObject;
|
||||
import flixel.FlxSubState;
|
||||
import flixel.math.FlxPoint;
|
||||
import flixel.util.FlxColor;
|
||||
import flixel.util.FlxTimer;
|
||||
|
||||
class GameOverSubstate extends MusicBeatSubstate
|
||||
{
|
||||
var bf:Boyfriend;
|
||||
var camFollow:FlxObject;
|
||||
|
||||
public function new(x:Float, y:Float)
|
||||
{
|
||||
super();
|
||||
|
||||
Conductor.songPosition = 0;
|
||||
|
||||
bf = new Boyfriend(x, y);
|
||||
add(bf);
|
||||
|
||||
camFollow = new FlxObject(bf.getGraphicMidpoint().x, bf.getGraphicMidpoint().y, 1, 1);
|
||||
add(camFollow);
|
||||
|
||||
FlxG.sound.play('assets/sounds/fnf_loss_sfx' + TitleState.soundExt);
|
||||
Conductor.changeBPM(100);
|
||||
|
||||
// FlxG.camera.followLerp = 1;
|
||||
// FlxG.camera.focusOn(FlxPoint.get(FlxG.width / 2, FlxG.height / 2));
|
||||
FlxG.camera.scroll.set();
|
||||
FlxG.camera.target = null;
|
||||
|
||||
bf.playAnim('firstDeath');
|
||||
}
|
||||
|
||||
override function update(elapsed:Float)
|
||||
{
|
||||
super.update(elapsed);
|
||||
|
||||
if (FlxG.keys.justPressed.ENTER)
|
||||
{
|
||||
endBullshit();
|
||||
}
|
||||
|
||||
if (bf.animation.curAnim.name == 'firstDeath' && bf.animation.curAnim.curFrame == 12)
|
||||
{
|
||||
FlxG.camera.follow(camFollow, LOCKON, 0.01);
|
||||
}
|
||||
|
||||
if (bf.animation.curAnim.name == 'firstDeath' && bf.animation.curAnim.finished)
|
||||
{
|
||||
FlxG.sound.playMusic('assets/music/gameOver' + TitleState.soundExt);
|
||||
}
|
||||
|
||||
if (FlxG.sound.music.playing)
|
||||
{
|
||||
Conductor.songPosition = FlxG.sound.music.time;
|
||||
}
|
||||
}
|
||||
|
||||
override function beatHit()
|
||||
{
|
||||
super.beatHit();
|
||||
|
||||
FlxG.log.add('beat');
|
||||
}
|
||||
|
||||
var isEnding:Bool = false;
|
||||
|
||||
function endBullshit():Void
|
||||
{
|
||||
if (!isEnding)
|
||||
{
|
||||
isEnding = true;
|
||||
bf.playAnim('deathConfirm', true);
|
||||
FlxG.sound.music.stop();
|
||||
FlxG.sound.play('assets/music/gameOverEnd' + TitleState.soundExt);
|
||||
new FlxTimer().start(0.7, function(tmr:FlxTimer)
|
||||
{
|
||||
FlxG.camera.fade(FlxColor.BLACK, 2, false, function()
|
||||
{
|
||||
FlxG.switchState(new PlayState());
|
||||
});
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
|
@ -9,7 +9,7 @@ class Main extends Sprite
|
|||
public function new()
|
||||
{
|
||||
super();
|
||||
addChild(new FlxGame(0, 0, FreeplayState));
|
||||
addChild(new FlxGame(0, 0, TitleState));
|
||||
|
||||
#if !mobile
|
||||
addChild(new FPS(10, 3, 0xFFFFFF));
|
||||
|
|
38
source/MenuItem.hx
Normal file
38
source/MenuItem.hx
Normal file
|
@ -0,0 +1,38 @@
|
|||
package;
|
||||
|
||||
import flixel.FlxSprite;
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
import flixel.group.FlxSpriteGroup;
|
||||
import flixel.math.FlxMath;
|
||||
|
||||
class MenuItem extends FlxSpriteGroup
|
||||
{
|
||||
public var targetY:Float = 0;
|
||||
|
||||
public function new(x:Float, y:Float, weekNum:Int = 0, unlocked:Bool = false)
|
||||
{
|
||||
super(x, y);
|
||||
|
||||
var tex = FlxAtlasFrames.fromSparrow(AssetPaths.campaign_menu_UI_assets__png, AssetPaths.campaign_menu_UI_assets__xml);
|
||||
|
||||
var week:FlxSprite = new FlxSprite();
|
||||
week.frames = tex;
|
||||
week.animation.addByPrefix('week0', "WEEK1 select", 24);
|
||||
week.animation.addByPrefix('week1', "week2 select", 24);
|
||||
add(week);
|
||||
|
||||
week.animation.play('week' + weekNum);
|
||||
week.updateHitbox();
|
||||
|
||||
if (!unlocked)
|
||||
{
|
||||
week.alpha = 0.6;
|
||||
}
|
||||
}
|
||||
|
||||
override function update(elapsed:Float)
|
||||
{
|
||||
super.update(elapsed);
|
||||
y = FlxMath.lerp(y, (targetY * 120) + 480, 0.17);
|
||||
}
|
||||
}
|
|
@ -15,6 +15,10 @@ class MusicBeatState extends FlxUIState
|
|||
|
||||
private var curStep:Int = 0;
|
||||
private var curBeat:Int = 0;
|
||||
private var controls(get, never):Controls;
|
||||
|
||||
inline function get_controls():Controls
|
||||
return PlayerSettings.player1.controls;
|
||||
|
||||
override function create()
|
||||
{
|
||||
|
|
78
source/MusicBeatSubstate.hx
Normal file
78
source/MusicBeatSubstate.hx
Normal file
|
@ -0,0 +1,78 @@
|
|||
package;
|
||||
|
||||
import flixel.FlxSubState;
|
||||
|
||||
class MusicBeatSubstate extends FlxSubState
|
||||
{
|
||||
public function new()
|
||||
{
|
||||
super();
|
||||
}
|
||||
|
||||
private var lastBeat:Float = 0;
|
||||
private var lastStep:Float = 0;
|
||||
|
||||
private var totalBeats:Int = 0;
|
||||
private var totalSteps:Int = 0;
|
||||
|
||||
private var curStep:Int = 0;
|
||||
private var curBeat:Int = 0;
|
||||
private var controls(get, never):Controls;
|
||||
|
||||
inline function get_controls():Controls
|
||||
return PlayerSettings.player1.controls;
|
||||
|
||||
override function create()
|
||||
{
|
||||
#if (!web)
|
||||
TitleState.soundExt = '.ogg';
|
||||
#end
|
||||
|
||||
super.create();
|
||||
}
|
||||
|
||||
override function update(elapsed:Float)
|
||||
{
|
||||
everyStep();
|
||||
|
||||
updateCurStep();
|
||||
curBeat = Math.round(curStep / 4);
|
||||
|
||||
super.update(elapsed);
|
||||
}
|
||||
|
||||
/**
|
||||
* CHECKS EVERY FRAME
|
||||
*/
|
||||
private function everyStep():Void
|
||||
{
|
||||
if (Conductor.songPosition > lastStep + Conductor.stepCrochet - Conductor.safeZoneOffset
|
||||
|| Conductor.songPosition < lastStep + Conductor.safeZoneOffset)
|
||||
{
|
||||
if (Conductor.songPosition > lastStep + Conductor.stepCrochet)
|
||||
{
|
||||
stepHit();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function updateCurStep():Void
|
||||
{
|
||||
curStep = Math.floor(Conductor.songPosition / Conductor.stepCrochet);
|
||||
}
|
||||
|
||||
public function stepHit():Void
|
||||
{
|
||||
totalSteps += 1;
|
||||
lastStep += Conductor.stepCrochet;
|
||||
|
||||
if (totalSteps % 4 == 0)
|
||||
beatHit();
|
||||
}
|
||||
|
||||
public function beatHit():Void
|
||||
{
|
||||
lastBeat += Conductor.crochet;
|
||||
totalBeats += 1;
|
||||
}
|
||||
}
|
|
@ -130,8 +130,9 @@ class Note extends FlxSprite
|
|||
|
||||
if (mustPress)
|
||||
{
|
||||
// The * 0.5 us so that its easier to hit them too late, instead of too early
|
||||
if (strumTime > Conductor.songPosition - Conductor.safeZoneOffset
|
||||
&& strumTime < Conductor.songPosition + Conductor.safeZoneOffset)
|
||||
&& strumTime < Conductor.songPosition + (Conductor.safeZoneOffset * 0.5))
|
||||
{
|
||||
canBeHit = true;
|
||||
}
|
||||
|
|
|
@ -9,7 +9,7 @@ import flixel.util.FlxColor;
|
|||
|
||||
class PauseSubState extends FlxSubState
|
||||
{
|
||||
public function new()
|
||||
public function new(x:Float, y:Float)
|
||||
{
|
||||
super();
|
||||
var bg:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, FlxG.height, FlxColor.BLACK);
|
||||
|
@ -17,6 +17,12 @@ class PauseSubState extends FlxSubState
|
|||
bg.scrollFactor.set();
|
||||
add(bg);
|
||||
|
||||
var bf:Boyfriend = new Boyfriend(x, y);
|
||||
bf.scrollFactor.set();
|
||||
// add(bf);
|
||||
|
||||
bf.playAnim('firstDeath');
|
||||
|
||||
bg.cameras = [FlxG.cameras.list[1]];
|
||||
}
|
||||
|
||||
|
|
|
@ -48,9 +48,6 @@ class PlayState extends MusicBeatState
|
|||
private var strumLine:FlxSprite;
|
||||
private var curSection:Int = 0;
|
||||
|
||||
private var sectionScores:Array<Dynamic> = [[], []];
|
||||
private var sectionLengths:Array<Int> = [];
|
||||
|
||||
private var camFollow:FlxObject;
|
||||
private var strumLineNotes:FlxTypedGroup<FlxSprite>;
|
||||
private var playerStrums:FlxTypedGroup<FlxSprite>;
|
||||
|
@ -72,11 +69,6 @@ class PlayState extends MusicBeatState
|
|||
private var camHUD:FlxCamera;
|
||||
private var camGame:FlxCamera;
|
||||
|
||||
var controls(get, never):Controls;
|
||||
|
||||
inline function get_controls():Controls
|
||||
return PlayerSettings.player1.controls;
|
||||
|
||||
override public function create()
|
||||
{
|
||||
// var gameCam:FlxCamera = FlxG.camera;
|
||||
|
@ -89,14 +81,14 @@ class PlayState extends MusicBeatState
|
|||
|
||||
FlxCamera.defaultCameras = [camGame];
|
||||
|
||||
PlayerSettings.init();
|
||||
|
||||
persistentUpdate = true;
|
||||
persistentDraw = true;
|
||||
|
||||
if (SONG == null)
|
||||
SONG = Song.loadFromJson(curLevel);
|
||||
|
||||
Conductor.changeBPM(SONG.bpm);
|
||||
|
||||
var bg:FlxSprite = new FlxSprite(-600, -200).loadGraphic(AssetPaths.stageback__png);
|
||||
// bg.setGraphicSize(Std.int(bg.width * 2.5));
|
||||
// bg.updateHitbox();
|
||||
|
@ -135,6 +127,8 @@ class PlayState extends MusicBeatState
|
|||
gf.visible = false;
|
||||
case "spooky":
|
||||
dad.y += 200;
|
||||
case "monster":
|
||||
dad.y += 100;
|
||||
}
|
||||
|
||||
boyfriend = new Boyfriend(770, 450);
|
||||
|
@ -194,6 +188,12 @@ class PlayState extends MusicBeatState
|
|||
|
||||
strumLineNotes.cameras = [camHUD];
|
||||
notes.cameras = [camHUD];
|
||||
healthBar.cameras = [camHUD];
|
||||
healthBarBG.cameras = [camHUD];
|
||||
healthHeads.cameras = [camHUD];
|
||||
|
||||
// if (SONG.song == 'South')
|
||||
// FlxG.camera.alpha = 0.7;
|
||||
// UI_camera.zoom = 1;
|
||||
|
||||
// cameras = [FlxG.cameras.list[1]];
|
||||
|
@ -213,6 +213,10 @@ class PlayState extends MusicBeatState
|
|||
|
||||
startTimer = new FlxTimer().start(Conductor.crochet / 1000, function(tmr:FlxTimer)
|
||||
{
|
||||
dad.dance();
|
||||
gf.dance();
|
||||
boyfriend.playAnim('idle');
|
||||
|
||||
switch (swagCounter)
|
||||
{
|
||||
case 0:
|
||||
|
@ -307,11 +311,6 @@ class PlayState extends MusicBeatState
|
|||
// NEW SHIT
|
||||
noteData = songData.notes;
|
||||
|
||||
for (i in 1...songData.sections + 1)
|
||||
{
|
||||
// noteData.push(ChartParser.parse(songData.song.toLowerCase(), i));
|
||||
}
|
||||
|
||||
var playerCounter:Int = 0;
|
||||
|
||||
var daBeats:Int = 0; // Not exactly representative of 'daBeats' lol, just how much it has looped
|
||||
|
@ -321,15 +320,12 @@ class PlayState extends MusicBeatState
|
|||
|
||||
for (songNotes in section.sectionNotes)
|
||||
{
|
||||
sectionScores[0].push(0);
|
||||
sectionScores[1].push(0);
|
||||
|
||||
var daStrumTime:Float = songNotes[0];
|
||||
var daNoteData:Int = Std.int(songNotes[1] % 4);
|
||||
|
||||
var gottaHitNote:Bool = section.mustHitSection;
|
||||
|
||||
if (songNotes.noteData > 3)
|
||||
if (songNotes[1] > 3)
|
||||
{
|
||||
gottaHitNote = !section.mustHitSection;
|
||||
}
|
||||
|
@ -374,26 +370,7 @@ class PlayState extends MusicBeatState
|
|||
else
|
||||
{
|
||||
}
|
||||
|
||||
// WILL HAVE TO REDO SCORE SYSTEM
|
||||
/* if (section.mustHitSection)
|
||||
{
|
||||
if (playerCounter == 1) // is the player
|
||||
{
|
||||
swagNote.mustPress = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//sectionScores[0][daBeats] += swagNote.noteScore;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
/* // only need to do it once
|
||||
if (section.mustHitSection)
|
||||
sectionLengths.push(Math.round(coolSection / 4));
|
||||
*/
|
||||
daBeats += 1;
|
||||
}
|
||||
|
||||
|
@ -471,8 +448,6 @@ class PlayState extends MusicBeatState
|
|||
}
|
||||
}
|
||||
|
||||
var sectionScored:Bool = false;
|
||||
|
||||
override function openSubState(SubState:FlxSubState)
|
||||
{
|
||||
if (paused)
|
||||
|
@ -526,7 +501,7 @@ class PlayState extends MusicBeatState
|
|||
persistentDraw = true;
|
||||
paused = true;
|
||||
|
||||
openSubState(new PauseSubState());
|
||||
openSubState(new PauseSubState(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
||||
}
|
||||
|
||||
if (FlxG.keys.justPressed.ESCAPE)
|
||||
|
@ -581,16 +556,6 @@ class PlayState extends MusicBeatState
|
|||
// Conductor.lastSongPos = FlxG.sound.music.time;
|
||||
}
|
||||
|
||||
var playerTurn:Int = 0;
|
||||
if (sectionLengths.length > curSection)
|
||||
playerTurn = totalBeats % (sectionLengths[curSection] * 8);
|
||||
|
||||
if (playerTurn == (sectionLengths[curSection] * 8) - 1 && !sectionScored)
|
||||
{
|
||||
// popUpScore();
|
||||
sectionScored = true;
|
||||
}
|
||||
|
||||
if (generatedMusic && PlayState.SONG.notes[Std.int(curStep / 16)] != null)
|
||||
{
|
||||
if (curBeat % 4 == 0)
|
||||
|
@ -625,11 +590,6 @@ class PlayState extends MusicBeatState
|
|||
FlxG.camera.zoom = FlxMath.lerp(1.05, FlxG.camera.zoom, 0.96);
|
||||
}
|
||||
|
||||
if (playerTurn < 4)
|
||||
{
|
||||
sectionScored = false;
|
||||
}
|
||||
|
||||
FlxG.watch.addQuick("beatShit", totalBeats);
|
||||
|
||||
if (curSong == 'Fresh')
|
||||
|
@ -667,7 +627,17 @@ class PlayState extends MusicBeatState
|
|||
if (health <= 0)
|
||||
{
|
||||
boyfriend.stunned = true;
|
||||
FlxG.switchState(new GameOverState());
|
||||
|
||||
persistentUpdate = false;
|
||||
persistentDraw = false;
|
||||
paused = true;
|
||||
|
||||
vocals.stop();
|
||||
FlxG.sound.music.stop();
|
||||
|
||||
openSubState(new GameOverSubstate(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
||||
|
||||
// FlxG.switchState(new GameOverState(boyfriend.getScreenPosition().x, boyfriend.getScreenPosition().y));
|
||||
}
|
||||
|
||||
if (unspawnNotes[0] != null)
|
||||
|
@ -702,15 +672,18 @@ class PlayState extends MusicBeatState
|
|||
switch (Math.abs(daNote.noteData))
|
||||
{
|
||||
case 2:
|
||||
dad.playAnim('singUP');
|
||||
dad.playAnim('singUP', true);
|
||||
case 3:
|
||||
dad.playAnim('singRIGHT');
|
||||
dad.playAnim('singRIGHT', true);
|
||||
case 1:
|
||||
dad.playAnim('singDOWN');
|
||||
dad.playAnim('singDOWN', true);
|
||||
case 0:
|
||||
dad.playAnim('singLEFT');
|
||||
dad.playAnim('singLEFT', true);
|
||||
}
|
||||
|
||||
if (SONG.needsVoices)
|
||||
vocals.volume = 1;
|
||||
|
||||
daNote.kill();
|
||||
notes.remove(daNote, true);
|
||||
daNote.destroy();
|
||||
|
@ -724,7 +697,7 @@ class PlayState extends MusicBeatState
|
|||
{
|
||||
if (daNote.tooLate)
|
||||
{
|
||||
health -= 0.05;
|
||||
health -= 0.03;
|
||||
vocals.volume = 0;
|
||||
}
|
||||
|
||||
|
@ -744,12 +717,10 @@ class PlayState extends MusicBeatState
|
|||
private function popUpScore(strumtime:Float):Void
|
||||
{
|
||||
var noteDiff:Float = Math.abs(strumtime - Conductor.songPosition);
|
||||
|
||||
// boyfriend.playAnim('hey');
|
||||
// vocals.volume = 1;
|
||||
vocals.volume = 1;
|
||||
|
||||
var placement:String = Std.string(combo);
|
||||
// var placement:String = sectionScores[1][curSection] + '/' + sectionScores[0][curSection];
|
||||
|
||||
var coolText:FlxText = new FlxText(0, 0, 0, placement, 32);
|
||||
coolText.screenCenter();
|
||||
|
@ -878,72 +849,6 @@ class PlayState extends MusicBeatState
|
|||
var downR = controls.DOWN_R;
|
||||
var leftR = controls.LEFT_R;
|
||||
|
||||
/*
|
||||
var gamepad = FlxG.gamepads.lastActive;
|
||||
if (gamepad != null)
|
||||
{
|
||||
if (gamepad.anyPressed(["DPAD_LEFT", "LEFT_STICK_DIGITAL_LEFT", X]))
|
||||
{
|
||||
left = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyPressed(["DPAD_RIGHT", "LEFT_STICK_DIGITAL_RIGHT", B]))
|
||||
{
|
||||
right = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyPressed(['DPAD_UP', "LEFT_STICK_DIGITAL_UP", Y]))
|
||||
{
|
||||
up = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyPressed(["DPAD_DOWN", "LEFT_STICK_DIGITAL_DOWN", A]))
|
||||
{
|
||||
down = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyJustPressed(["DPAD_LEFT", "LEFT_STICK_DIGITAL_LEFT", X]))
|
||||
{
|
||||
leftP = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyJustPressed(["DPAD_RIGHT", "LEFT_STICK_DIGITAL_RIGHT", B]))
|
||||
{
|
||||
rightP = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyJustPressed(['DPAD_UP', "LEFT_STICK_DIGITAL_UP", Y]))
|
||||
{
|
||||
upP = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyJustPressed(["DPAD_DOWN", "LEFT_STICK_DIGITAL_DOWN", A]))
|
||||
{
|
||||
downP = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyJustReleased(["DPAD_LEFT", "LEFT_STICK_DIGITAL_LEFT", X]))
|
||||
{
|
||||
leftR = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyJustReleased(["DPAD_RIGHT", "LEFT_STICK_DIGITAL_RIGHT", B]))
|
||||
{
|
||||
rightR = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyJustReleased(['DPAD_UP', "LEFT_STICK_DIGITAL_UP", Y]))
|
||||
{
|
||||
upR = true;
|
||||
}
|
||||
|
||||
if (gamepad.anyJustReleased(["DPAD_DOWN", "LEFT_STICK_DIGITAL_DOWN", A]))
|
||||
{
|
||||
downR = true;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
// FlxG.watch.addQuick('asdfa', upP);
|
||||
if ((upP || rightP || downP || leftP) && !boyfriend.stunned && generatedMusic)
|
||||
{
|
||||
|
@ -1067,14 +972,16 @@ class PlayState extends MusicBeatState
|
|||
{
|
||||
if (!boyfriend.stunned)
|
||||
{
|
||||
health -= 0.08;
|
||||
health -= 0.055;
|
||||
if (combo > 5)
|
||||
{
|
||||
gf.playAnim('sad');
|
||||
}
|
||||
combo = 0;
|
||||
|
||||
FlxG.sound.play('assets/sounds/missnote' + FlxG.random.int(1, 3) + TitleState.soundExt, FlxG.random.float(0.05, 0.2));
|
||||
FlxG.sound.play('assets/sounds/missnote' + FlxG.random.int(1, 3) + TitleState.soundExt, FlxG.random.float(0.1, 0.2));
|
||||
// FlxG.sound.play('assets/sounds/missnote1' + TitleState.soundExt, 1, false);
|
||||
// FlxG.log.add('played imss note');
|
||||
|
||||
boyfriend.stunned = true;
|
||||
|
||||
|
@ -1154,8 +1061,11 @@ class PlayState extends MusicBeatState
|
|||
{
|
||||
if (!note.wasGoodHit)
|
||||
{
|
||||
popUpScore(note.strumTime);
|
||||
combo += 1;
|
||||
if (!note.isSustainNote)
|
||||
{
|
||||
popUpScore(note.strumTime);
|
||||
combo += 1;
|
||||
}
|
||||
|
||||
if (note.noteData >= 0)
|
||||
health += 0.03;
|
||||
|
@ -1182,7 +1092,6 @@ class PlayState extends MusicBeatState
|
|||
}
|
||||
});
|
||||
|
||||
sectionScores[1][curSection] += note.noteScore;
|
||||
note.wasGoodHit = true;
|
||||
vocals.volume = 1;
|
||||
|
||||
|
@ -1194,12 +1103,22 @@ class PlayState extends MusicBeatState
|
|||
|
||||
override function stepHit()
|
||||
{
|
||||
if (vocals.time > Conductor.songPosition + Conductor.stepCrochet || vocals.time < Conductor.songPosition - Conductor.stepCrochet)
|
||||
if (SONG.needsVoices)
|
||||
{
|
||||
vocals.pause();
|
||||
vocals.time = Conductor.songPosition;
|
||||
vocals.play();
|
||||
if (vocals.time > Conductor.songPosition + Conductor.stepCrochet
|
||||
|| vocals.time < Conductor.songPosition - Conductor.stepCrochet)
|
||||
{
|
||||
vocals.pause();
|
||||
vocals.time = Conductor.songPosition;
|
||||
vocals.play();
|
||||
}
|
||||
}
|
||||
|
||||
if (dad.curCharacter == 'spooky' && totalSteps % 4 == 2)
|
||||
{
|
||||
// dad.dance();
|
||||
}
|
||||
|
||||
super.stepHit();
|
||||
}
|
||||
|
||||
|
@ -1212,16 +1131,40 @@ class PlayState extends MusicBeatState
|
|||
notes.sort(FlxSort.byY, FlxSort.DESCENDING);
|
||||
}
|
||||
|
||||
FlxG.log.add('change bpm' + SONG.notes[Std.int(curStep / 16)].changeBPM);
|
||||
if (SONG.notes[Std.int(curStep / 16)].changeBPM)
|
||||
{
|
||||
Conductor.changeBPM(SONG.notes[Std.int(curStep / 16)].bpm);
|
||||
FlxG.log.add('CHANGED BPM!');
|
||||
}
|
||||
else
|
||||
Conductor.changeBPM(SONG.bpm);
|
||||
|
||||
if (camZooming && FlxG.camera.zoom < 1.35 && totalBeats % 4 == 0)
|
||||
FlxG.camera.zoom += 0.025;
|
||||
|
||||
dad.dance();
|
||||
// Dad doesnt interupt his own notes
|
||||
if (SONG.notes[Std.int(curStep / 16)].mustHitSection)
|
||||
dad.dance();
|
||||
|
||||
healthHeads.setGraphicSize(Std.int(healthHeads.width + 20));
|
||||
|
||||
if (totalBeats % gfSpeed == 0)
|
||||
{
|
||||
gf.dance();
|
||||
}
|
||||
|
||||
if (!boyfriend.animation.curAnim.name.startsWith("sing"))
|
||||
boyfriend.playAnim('idle');
|
||||
|
||||
if (totalBeats % 8 == 6)
|
||||
{
|
||||
boyfriend.playAnim('hey', true);
|
||||
|
||||
if (SONG.song == 'Tutorial' && dad.curCharacter == 'gf')
|
||||
{
|
||||
dad.playAnim('cheer', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -6,6 +6,8 @@ typedef SwagSection =
|
|||
var lengthInSteps:Int;
|
||||
var typeOfSection:Int;
|
||||
var mustHitSection:Bool;
|
||||
var bpm:Int;
|
||||
var changeBPM:Bool;
|
||||
}
|
||||
|
||||
class Section
|
||||
|
|
172
source/StoryMenuState.hx
Normal file
172
source/StoryMenuState.hx
Normal file
|
@ -0,0 +1,172 @@
|
|||
package;
|
||||
|
||||
import flixel.FlxG;
|
||||
import flixel.FlxSprite;
|
||||
import flixel.graphics.frames.FlxAtlasFrames;
|
||||
import flixel.group.FlxGroup.FlxTypedGroup;
|
||||
import flixel.group.FlxGroup;
|
||||
import flixel.text.FlxText;
|
||||
|
||||
using StringTools;
|
||||
|
||||
class StoryMenuState extends MusicBeatState
|
||||
{
|
||||
var scoreText:FlxText;
|
||||
|
||||
var weekData:Array<Dynamic> = [['Tutorial', 'Bopeebo', 'Fresh', 'Dad Battle'], ['Spookeez', 'South', 'Monster']];
|
||||
var weekUnlocked:Array<Bool> = [true, false];
|
||||
|
||||
var curWeek:Int = 0;
|
||||
|
||||
var txtTracklist:FlxText;
|
||||
|
||||
var grpWeekText:FlxTypedGroup<MenuItem>;
|
||||
|
||||
var grpLocks:FlxTypedGroup<FlxSprite>;
|
||||
|
||||
var difficultySelectors:FlxGroup;
|
||||
|
||||
override function create()
|
||||
{
|
||||
scoreText = new FlxText(10, 10, 0, "SCORE: 49324858", 36);
|
||||
scoreText.setFormat("VCR OSD Mono", 32);
|
||||
add(scoreText);
|
||||
|
||||
var rankText:FlxText = new FlxText(0, 10);
|
||||
rankText.text = 'RANK: GREAT';
|
||||
rankText.setFormat("assets/fonts/vcr.ttf", 32);
|
||||
rankText.size = scoreText.size;
|
||||
rankText.screenCenter(X);
|
||||
add(rankText);
|
||||
|
||||
var ui_tex = FlxAtlasFrames.fromSparrow(AssetPaths.campaign_menu_UI_assets__png, AssetPaths.campaign_menu_UI_assets__xml);
|
||||
var yellowBG:FlxSprite = new FlxSprite(0, 56).makeGraphic(FlxG.width, 400, 0xFFF9CF51);
|
||||
|
||||
grpWeekText = new FlxTypedGroup<MenuItem>();
|
||||
add(grpWeekText);
|
||||
|
||||
grpLocks = new FlxTypedGroup<FlxSprite>();
|
||||
add(grpLocks);
|
||||
|
||||
for (i in 0...weekData.length)
|
||||
{
|
||||
var unlocked:Bool = true;
|
||||
|
||||
if (i == 1)
|
||||
unlocked = false;
|
||||
|
||||
var weekThing:MenuItem = new MenuItem(0, yellowBG.y + yellowBG.height + 10, i, unlocked);
|
||||
weekThing.y += ((weekThing.height + 20) * i);
|
||||
weekThing.targetY = i;
|
||||
grpWeekText.add(weekThing);
|
||||
|
||||
weekThing.screenCenter(X);
|
||||
weekThing.antialiasing = true;
|
||||
// weekThing.updateHitbox();
|
||||
|
||||
if (!weekUnlocked[i])
|
||||
{
|
||||
var lock:FlxSprite = new FlxSprite(weekThing.width + 10 + weekThing.x);
|
||||
lock.frames = ui_tex;
|
||||
lock.animation.addByPrefix('lock', 'lock');
|
||||
lock.animation.play('lock');
|
||||
lock.ID = i;
|
||||
lock.antialiasing = true;
|
||||
grpLocks.add(lock);
|
||||
}
|
||||
}
|
||||
|
||||
difficultySelectors = new FlxGroup();
|
||||
add(difficultySelectors);
|
||||
|
||||
var leftArrow:FlxSprite = new FlxSprite(grpWeekText.members[0].x + 400, grpWeekText.members[0].y + 10);
|
||||
leftArrow.frames = ui_tex;
|
||||
leftArrow.animation.addByPrefix('idle', "arrow left");
|
||||
leftArrow.animation.play('idle');
|
||||
difficultySelectors.add(leftArrow);
|
||||
|
||||
var sprDifficulty:FlxSprite = new FlxSprite(leftArrow.x + 70, leftArrow.y);
|
||||
sprDifficulty.frames = ui_tex;
|
||||
sprDifficulty.animation.addByPrefix('easy', 'EASY');
|
||||
sprDifficulty.animation.addByPrefix('normal', 'NORMAL');
|
||||
sprDifficulty.animation.addByPrefix('hard', 'HARD');
|
||||
sprDifficulty.animation.play('easy');
|
||||
difficultySelectors.add(sprDifficulty);
|
||||
|
||||
var rightArrow:FlxSprite = new FlxSprite(sprDifficulty.x + sprDifficulty.width + 20, sprDifficulty.y);
|
||||
rightArrow.frames = ui_tex;
|
||||
rightArrow.animation.addByPrefix('idle', 'arrow right');
|
||||
rightArrow.animation.play('idle');
|
||||
difficultySelectors.add(rightArrow);
|
||||
|
||||
add(yellowBG);
|
||||
|
||||
txtTracklist = new FlxText(FlxG.width * 0.05, yellowBG.x + yellowBG.height + 100, 0, "Tracks", 32);
|
||||
txtTracklist.alignment = CENTER;
|
||||
txtTracklist.font = rankText.font;
|
||||
txtTracklist.color = 0xFFe55777;
|
||||
add(txtTracklist);
|
||||
|
||||
updateText();
|
||||
|
||||
super.create();
|
||||
}
|
||||
|
||||
override function update(elapsed:Float)
|
||||
{
|
||||
// scoreText.setFormat('VCR OSD Mono', 32);
|
||||
// scoreText.text = "Score SHIT";
|
||||
// FlxG.watch.addQuick('font', scoreText.font);
|
||||
|
||||
difficultySelectors.visible = weekUnlocked[curWeek];
|
||||
|
||||
grpLocks.forEach(function(lock:FlxSprite)
|
||||
{
|
||||
lock.y = grpWeekText.members[lock.ID].y;
|
||||
});
|
||||
|
||||
if (controls.UP_P)
|
||||
changeWeek(-1);
|
||||
if (controls.DOWN_P)
|
||||
changeWeek(1);
|
||||
|
||||
super.update(elapsed);
|
||||
}
|
||||
|
||||
function changeWeek(change:Int = 0):Void
|
||||
{
|
||||
curWeek += change;
|
||||
|
||||
if (curWeek >= weekData.length)
|
||||
curWeek = 0;
|
||||
if (curWeek < 0)
|
||||
curWeek = weekData.length - 1;
|
||||
|
||||
var bullShit:Int = 0;
|
||||
|
||||
for (item in grpWeekText.members)
|
||||
{
|
||||
item.targetY = bullShit - curWeek;
|
||||
bullShit++;
|
||||
}
|
||||
|
||||
updateText();
|
||||
}
|
||||
|
||||
function updateText()
|
||||
{
|
||||
txtTracklist.text = "Tracks\n";
|
||||
|
||||
var stringThing:Array<String> = weekData[curWeek];
|
||||
|
||||
for (i in stringThing)
|
||||
{
|
||||
txtTracklist.text += "\n" + i;
|
||||
}
|
||||
|
||||
txtTracklist.text = txtTracklist.text.toUpperCase();
|
||||
|
||||
txtTracklist.screenCenter(X);
|
||||
txtTracklist.x -= FlxG.width * 0.35;
|
||||
}
|
||||
}
|
|
@ -25,7 +25,8 @@ class TitleState extends MusicBeatState
|
|||
|
||||
var blackScreen:FlxSprite;
|
||||
var credGroup:FlxGroup;
|
||||
var credTextShit:FlxText;
|
||||
var credTextShit:Alphabet;
|
||||
var textGroup:FlxGroup;
|
||||
|
||||
override public function create():Void
|
||||
{
|
||||
|
@ -33,8 +34,21 @@ class TitleState extends MusicBeatState
|
|||
TitleState.soundExt = '.ogg';
|
||||
#end
|
||||
|
||||
PlayerSettings.init();
|
||||
|
||||
// DEBUG BULLSHIT
|
||||
|
||||
super.create();
|
||||
|
||||
#if SKIP_TO_PLAYSTATE
|
||||
FlxG.switchState(new StoryMenuState());
|
||||
#else
|
||||
startIntro();
|
||||
#end
|
||||
}
|
||||
|
||||
function startIntro()
|
||||
{
|
||||
if (!initialized)
|
||||
{
|
||||
var diamond:FlxGraphic = FlxGraphic.fromClass(GraphicTransTileDiamond);
|
||||
|
@ -78,19 +92,21 @@ class TitleState extends MusicBeatState
|
|||
|
||||
credGroup = new FlxGroup();
|
||||
add(credGroup);
|
||||
textGroup = new FlxGroup();
|
||||
|
||||
blackScreen = new FlxSprite().makeGraphic(FlxG.width, FlxG.height, FlxColor.BLACK);
|
||||
credGroup.add(blackScreen);
|
||||
|
||||
credTextShit = new FlxText(0, 0, 0, "ninjamuffin99\nPhantomArcade\nEvilsk8er\nAnd Kawaisprite", 24);
|
||||
credTextShit = new Alphabet(0, 0, "ninjamuffin99\nPhantomArcade\nkawaisprite\nevilsk8er", true);
|
||||
credTextShit.screenCenter();
|
||||
credTextShit.alignment = CENTER;
|
||||
|
||||
// credTextShit.alignment = CENTER;
|
||||
|
||||
credTextShit.visible = false;
|
||||
|
||||
FlxTween.tween(credTextShit, {y: credTextShit.y + 20}, 2.9, {ease: FlxEase.quadInOut, type: PINGPONG});
|
||||
|
||||
credGroup.add(credTextShit);
|
||||
// credGroup.add(credTextShit);
|
||||
|
||||
FlxG.sound.playMusic('assets/music/freakyMenu' + TitleState.soundExt, 0, false);
|
||||
|
||||
|
@ -127,7 +143,7 @@ class TitleState extends MusicBeatState
|
|||
|
||||
new FlxTimer().start(2, function(tmr:FlxTimer)
|
||||
{
|
||||
FlxG.switchState(new PlayState());
|
||||
FlxG.switchState(new FreeplayState());
|
||||
});
|
||||
FlxG.sound.play('assets/music/titleShoot' + TitleState.soundExt, 0.7);
|
||||
}
|
||||
|
@ -135,6 +151,36 @@ class TitleState extends MusicBeatState
|
|||
super.update(elapsed);
|
||||
}
|
||||
|
||||
function createCoolText(textArray:Array<String>)
|
||||
{
|
||||
for (i in 0...textArray.length)
|
||||
{
|
||||
var money:Alphabet = new Alphabet(0, 0, textArray[i], true, false);
|
||||
money.screenCenter(X);
|
||||
money.y += (i * 60) + 200;
|
||||
credGroup.add(money);
|
||||
textGroup.add(money);
|
||||
}
|
||||
}
|
||||
|
||||
function addMoreText(text:String)
|
||||
{
|
||||
var coolText:Alphabet = new Alphabet(0, 0, text, true, false);
|
||||
coolText.screenCenter(X);
|
||||
coolText.y += (textGroup.length * 60) + 200;
|
||||
credGroup.add(coolText);
|
||||
textGroup.add(coolText);
|
||||
}
|
||||
|
||||
function deleteCoolText()
|
||||
{
|
||||
while (textGroup.members.length > 0)
|
||||
{
|
||||
credGroup.remove(textGroup.members[0], true);
|
||||
textGroup.remove(textGroup.members[0], true);
|
||||
}
|
||||
}
|
||||
|
||||
override function beatHit()
|
||||
{
|
||||
super.beatHit();
|
||||
|
@ -144,35 +190,47 @@ class TitleState extends MusicBeatState
|
|||
switch (curBeat)
|
||||
{
|
||||
case 1:
|
||||
credTextShit.visible = true;
|
||||
createCoolText(['ninjamuffin99', 'phantomArcade', 'kawaisprite', 'evilsk8er']);
|
||||
// credTextShit.visible = true;
|
||||
case 3:
|
||||
credTextShit.text += '\npresent...';
|
||||
addMoreText('present');
|
||||
// credTextShit.text += '\npresent...';
|
||||
// credTextShit.addText();
|
||||
case 4:
|
||||
credTextShit.visible = false;
|
||||
credTextShit.text = 'In association \nwith';
|
||||
credTextShit.screenCenter();
|
||||
deleteCoolText();
|
||||
// credTextShit.visible = false;
|
||||
// credTextShit.text = 'In association \nwith';
|
||||
// credTextShit.screenCenter();
|
||||
case 5:
|
||||
credTextShit.visible = true;
|
||||
createCoolText(['In association', 'with']);
|
||||
case 7:
|
||||
credTextShit.text += '\nNewgrounds';
|
||||
addMoreText('newgrounds');
|
||||
// credTextShit.text += '\nNewgrounds';
|
||||
case 8:
|
||||
credTextShit.visible = false;
|
||||
credTextShit.text = 'Shoutouts Tom Fulp';
|
||||
credTextShit.screenCenter();
|
||||
deleteCoolText();
|
||||
// credTextShit.visible = false;
|
||||
|
||||
// credTextShit.text = 'Shoutouts Tom Fulp';
|
||||
// credTextShit.screenCenter();
|
||||
case 9:
|
||||
credTextShit.visible = true;
|
||||
createCoolText(['Shoutouts Tom Fulp']);
|
||||
// credTextShit.visible = true;
|
||||
case 11:
|
||||
credTextShit.text += '\nlmao';
|
||||
addMoreText('lmao');
|
||||
// credTextShit.text += '\nlmao';
|
||||
case 12:
|
||||
credTextShit.visible = false;
|
||||
credTextShit.text = "Friday";
|
||||
credTextShit.screenCenter();
|
||||
deleteCoolText();
|
||||
// credTextShit.visible = false;
|
||||
// credTextShit.text = "Friday";
|
||||
// credTextShit.screenCenter();
|
||||
case 13:
|
||||
credTextShit.visible = true;
|
||||
addMoreText('Friday');
|
||||
// credTextShit.visible = true;
|
||||
case 14:
|
||||
credTextShit.text += '\nNight';
|
||||
addMoreText('Night');
|
||||
// credTextShit.text += '\nNight';
|
||||
case 15:
|
||||
credTextShit.text += '\nFunkin';
|
||||
addMoreText('Funkin'); // credTextShit.text += '\nFunkin';
|
||||
|
||||
case 16:
|
||||
skipIntro();
|
||||
|
@ -187,6 +245,7 @@ class TitleState extends MusicBeatState
|
|||
{
|
||||
FlxG.camera.flash(FlxColor.WHITE, 4);
|
||||
remove(credGroup);
|
||||
skippedIntro = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue