Skip to content

Commit

Permalink
Merge pull request FunkinCrew#132 from theDetourist/gfcheer
Browse files Browse the repository at this point in the history
Friday Night Funkin' EYY's, but GF cheers too
  • Loading branch information
Kade-github authored Apr 4, 2021
2 parents 59bb3b2 + 691fa8f commit 382d1fd
Showing 1 changed file with 137 additions and 37 deletions.
174 changes: 137 additions & 37 deletions source/PlayState.hx
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,6 @@ class PlayState extends MusicBeatState
var scoreTxt:FlxText;
var replayTxt:FlxText;


public static var campaignScore:Int = 0;

var defaultCamZoom:Float = 1.05;
Expand All @@ -172,6 +171,12 @@ class PlayState extends MusicBeatState

public static var timeCurrently:Float = 0;
public static var timeCurrentlyR:Float = 0;

// Will fire once to prevent debug spam messages and broken animations
private var triggeredAlready:Bool = false;

// Will decide if she's even allowed to headbang at all depending on the song
private var allowedToHeadbang:Bool = false;

override public function create()
{
Expand Down Expand Up @@ -1150,42 +1155,46 @@ class PlayState extends MusicBeatState
songLength = FlxG.sound.music.length;

if (FlxG.save.data.songPosition)
{
remove(songPosBG);
remove(songPosBar);
remove(songName);

songPosBG = new FlxSprite(0, 10).loadGraphic(Paths.image('healthBar'));
if (FlxG.save.data.downscroll)
songPosBG.y = FlxG.height * 0.9 + 45;
songPosBG.screenCenter(X);
songPosBG.scrollFactor.set();
add(songPosBG);

songPosBar = new FlxBar(songPosBG.x + 4, songPosBG.y + 4, LEFT_TO_RIGHT, Std.int(songPosBG.width - 8), Std.int(songPosBG.height - 8), this,
'songPositionBar', 0, songLength - 1000);
songPosBar.numDivisions = 1000;
songPosBar.scrollFactor.set();
songPosBar.createFilledBar(FlxColor.GRAY, FlxColor.LIME);
add(songPosBar);

var songName = new FlxText(songPosBG.x + (songPosBG.width / 2) - 20,songPosBG.y,0,SONG.song, 16);
if (FlxG.save.data.downscroll)
songName.y -= 3;
songName.setFormat(Paths.font("vcr.ttf"), 16, FlxColor.WHITE, RIGHT, FlxTextBorderStyle.OUTLINE,FlxColor.BLACK);
songName.scrollFactor.set();
add(songName);

songPosBG.cameras = [camHUD];
songPosBar.cameras = [camHUD];
songName.cameras = [camHUD];
}
{
remove(songPosBG);
remove(songPosBar);
remove(songName);

songPosBG = new FlxSprite(0, 10).loadGraphic(Paths.image('healthBar'));
if (FlxG.save.data.downscroll)
songPosBG.y = FlxG.height * 0.9 + 45;
songPosBG.screenCenter(X);
songPosBG.scrollFactor.set();
add(songPosBG);

songPosBar = new FlxBar(songPosBG.x + 4, songPosBG.y + 4, LEFT_TO_RIGHT, Std.int(songPosBG.width - 8), Std.int(songPosBG.height - 8), this,
'songPositionBar', 0, songLength - 1000);
songPosBar.numDivisions = 1000;
songPosBar.scrollFactor.set();
songPosBar.createFilledBar(FlxColor.GRAY, FlxColor.LIME);
add(songPosBar);

var songName = new FlxText(songPosBG.x + (songPosBG.width / 2) - 20,songPosBG.y,0,SONG.song, 16);
if (FlxG.save.data.downscroll)
songName.y -= 3;
songName.setFormat(Paths.font("vcr.ttf"), 16, FlxColor.WHITE, RIGHT, FlxTextBorderStyle.OUTLINE,FlxColor.BLACK);
songName.scrollFactor.set();
add(songName);

songPosBG.cameras = [camHUD];
songPosBar.cameras = [camHUD];
songName.cameras = [camHUD];
}

// Song check real quick
switch(curSong)
{
case 'Bopeebo' | 'Philly' | 'Blammed' | 'Cocoa' | 'Eggnog': allowedToHeadbang = true;
default: allowedToHeadbang = false;
}

#if desktop
// Updating Discord Rich Presence (with Time Left)



DiscordClient.changePresence(detailsText + " " + SONG.song + " (" + storyDifficultyText + ") " + generateRanking(), "\nAcc: " + truncateFloat(accuracy, 2) + "% | Score: " + songScore + " | Misses: " + misses , iconRPC);
#end
}
Expand Down Expand Up @@ -1725,11 +1734,102 @@ class PlayState extends MusicBeatState

if (generatedMusic && PlayState.SONG.notes[Std.int(curStep / 16)] != null)
{
if (curBeat % 4 == 0)
// Make sure Girlfriend cheers only for certain songs
if(allowedToHeadbang)
{
// trace(PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection);
// Don't animate GF if something else is already animating her (eg. train passing)
if(gf.animation.curAnim.name == 'danceLeft' || gf.animation.curAnim.name == 'danceRight' || gf.animation.curAnim.name == 'idle')
{
// Per song treatment since some songs will only have the 'Hey' at certain times
switch(curSong)
{
case 'Philly':
{
// General duration of the song
if(curBeat < 250)
{
// Beats to skip or to stop GF from cheering
if(curBeat != 184 && curBeat != 216)
{
if(curBeat % 16 == 8)
{
// Just a garantee that it'll trigger just once
if(!triggeredAlready)
{
gf.playAnim('cheer');
triggeredAlready = true;
}
}else triggeredAlready = false;
}
}
}
case 'Bopeebo':
{
// Where it starts || where it ends
if(curBeat > 5 && curBeat < 130)
{
if(curBeat % 8 == 7)
{
if(!triggeredAlready)
{
gf.playAnim('cheer');
triggeredAlready = true;
}
}else triggeredAlready = false;
}
}
case 'Blammed':
{
if(curBeat > 30 && curBeat < 190)
{
if(curBeat < 90 || curBeat > 128)
{
if(curBeat % 4 == 2)
{
if(!triggeredAlready)
{
gf.playAnim('cheer');
triggeredAlready = true;
}
}else triggeredAlready = false;
}
}
}
case 'Cocoa':
{
if(curBeat < 170)
{
if(curBeat < 65 || curBeat > 130 && curBeat < 145)
{
if(curBeat % 16 == 15)
{
if(!triggeredAlready)
{
gf.playAnim('cheer');
triggeredAlready = true;
}
}else triggeredAlready = false;
}
}
}
case 'Eggnog':
{
if(curBeat > 10 && curBeat != 111 && curBeat < 220)
{
if(curBeat % 8 == 7)
{
if(!triggeredAlready)
{
gf.playAnim('cheer');
triggeredAlready = true;
}
}else triggeredAlready = false;
}
}
}
}
}

if (camFollow.x != dad.getMidpoint().x + 150 && !PlayState.SONG.notes[Std.int(curStep / 16)].mustHitSection)
{
camFollow.setPosition(dad.getMidpoint().x + 150, dad.getMidpoint().y - 100);
Expand Down

0 comments on commit 382d1fd

Please sign in to comment.