diff --git a/Project.xml b/Project.xml
index 3b66a7189..24396968b 100644
--- a/Project.xml
+++ b/Project.xml
@@ -40,7 +40,7 @@
-
+
diff --git a/source/FlxVideo.hx b/source/FlxVideo.hx
new file mode 100644
index 000000000..76543ccd7
--- /dev/null
+++ b/source/FlxVideo.hx
@@ -0,0 +1,62 @@
+package;
+
+import flixel.FlxBasic;
+import flixel.FlxG;
+import flixel.FlxSprite;
+import openfl.events.NetStatusEvent;
+import openfl.media.Video;
+import openfl.net.NetConnection;
+import openfl.net.NetStream;
+
+class FlxVideo extends FlxBasic
+{
+ var video:Video;
+ var netStream:NetStream;
+
+ public var finishCallback:Void->Void;
+
+ /**
+ * Doesn't actually interact with Flixel shit, only just a pleasant to use class
+ */
+ public function new(vidSrc:String)
+ {
+ super();
+
+ video = new Video();
+ video.x = 0;
+ video.y = 0;
+
+ FlxG.addChildBelowMouse(video);
+
+ var netConnection = new NetConnection();
+ netConnection.connect(null);
+
+ netStream = new NetStream(netConnection);
+ netStream.client = {onMetaData: client_onMetaData};
+ netConnection.addEventListener(NetStatusEvent.NET_STATUS, netConnection_onNetStatus);
+ netStream.play(Paths.file(vidSrc));
+ }
+
+ public function finishVideo():Void
+ {
+ netStream.dispose();
+ FlxG.removeChild(video);
+
+ if (finishCallback != null)
+ finishCallback();
+ }
+
+ public function client_onMetaData(metaData:Dynamic)
+ {
+ video.attachNetStream(netStream);
+
+ video.width = FlxG.width;
+ video.height = FlxG.height;
+ }
+
+ private function netConnection_onNetStatus(event:NetStatusEvent):Void
+ {
+ if (event.info.code == 'NetStream.Play.Complete')
+ finishVideo();
+ }
+}
diff --git a/source/GameOverSubstate.hx b/source/GameOverSubstate.hx
index c0b6d516f..86123283f 100644
--- a/source/GameOverSubstate.hx
+++ b/source/GameOverSubstate.hx
@@ -105,10 +105,13 @@ class GameOverSubstate extends MusicBeatSubstate
if (bf.animation.curAnim.name == 'firstDeath' && bf.animation.curAnim.finished && !playingDeathSound)
{
playingDeathSound = true;
+
+ bf.startedDeath = true;
+ coolStartDeath(0.2);
+
FlxG.sound.play(Paths.sound('jeffGameover/jeffGameover-' + randomGameover), 1, false, null, true, function()
{
- bf.startedDeath = true;
- coolStartDeath();
+ FlxG.sound.music.fadeIn(4, 0.2, 1);
});
}
default:
@@ -125,9 +128,9 @@ class GameOverSubstate extends MusicBeatSubstate
}
}
- private function coolStartDeath():Void
+ private function coolStartDeath(?vol:Float = 1):Void
{
- FlxG.sound.playMusic(Paths.music('gameOver' + stageSuffix));
+ FlxG.sound.playMusic(Paths.music('gameOver' + stageSuffix), vol);
}
override function beatHit()
diff --git a/source/LoadingState.hx b/source/LoadingState.hx
index 2c520ea0d..aeef6bc06 100644
--- a/source/LoadingState.hx
+++ b/source/LoadingState.hx
@@ -25,6 +25,7 @@ class LoadingState extends MusicBeatState
var danceLeft = false;
var loadBar:FlxSprite;
+ var funkay:FlxSprite;
function new(target:FlxState, stopMusic:Bool)
{
@@ -38,7 +39,7 @@ class LoadingState extends MusicBeatState
var bg:FlxSprite = new FlxSprite().makeGraphic(FlxG.width, FlxG.height, 0xFFcaff4d);
add(bg);
- var funkay:FlxSprite = new FlxSprite();
+ funkay = new FlxSprite();
funkay.loadGraphic(Paths.image('funkay'));
funkay.setGraphicSize(0, FlxG.height);
funkay.updateHitbox();
@@ -124,6 +125,19 @@ class LoadingState extends MusicBeatState
{
super.update(elapsed);
+ funkay.setGraphicSize(Std.int(FlxMath.lerp(FlxG.width * 0.88, funkay.width, 0.9)));
+ funkay.updateHitbox();
+ // funkay.updateHitbox();
+
+ if (controls.ACCEPT)
+ {
+ funkay.setGraphicSize(Std.int(funkay.width + 60));
+ funkay.updateHitbox();
+ // funkay.setGraphicSize(0, Std.int(funkay.height + 50));
+ // funkay.updateHitbox();
+ // funkay.screenCenter();
+ }
+
if (callbacks != null)
{
targetShit = FlxMath.remapToRange(callbacks.numRemaining / callbacks.length, 1, 0, 0, 1);
diff --git a/source/PlayState.hx b/source/PlayState.hx
index 1e4bcd0de..05ec046ac 100644
--- a/source/PlayState.hx
+++ b/source/PlayState.hx
@@ -23,6 +23,7 @@ import flixel.graphics.atlas.FlxAtlas;
import flixel.graphics.frames.FlxAtlasFrames;
import flixel.group.FlxGroup.FlxTypedGroup;
import flixel.group.FlxGroup;
+import flixel.math.FlxAngle;
import flixel.math.FlxMath;
import flixel.math.FlxPoint;
import flixel.math.FlxRect;
@@ -43,6 +44,8 @@ import openfl.display.BitmapData;
import openfl.display.BlendMode;
import openfl.display.StageQuality;
import openfl.filters.ShaderFilter;
+import shaderslmfao.BuildingShaders.BuildingShader;
+import shaderslmfao.BuildingShaders;
import shaderslmfao.ColorSwap;
import ui.PreferencesMenu;
@@ -131,6 +134,7 @@ class PlayState extends MusicBeatState
var gfCutsceneLayer:FlxGroup;
var bfTankCutsceneLayer:FlxGroup;
var tankWatchtower:BGSprite;
+ var tankGround:BGSprite;
var talking:Bool = true;
var songScore:Int = 0;
@@ -157,6 +161,7 @@ class PlayState extends MusicBeatState
#end
var camPos:FlxPoint;
+ var lightFadeShader:BuildingShaders;
override public function create()
{
@@ -254,7 +259,9 @@ class PlayState extends MusicBeatState
city.updateHitbox();
add(city);
+ lightFadeShader = new BuildingShaders();
phillyCityLights = new FlxTypedGroup();
+
add(phillyCityLights);
for (i in 0...5)
@@ -265,6 +272,7 @@ class PlayState extends MusicBeatState
light.setGraphicSize(Std.int(light.width * 0.85));
light.updateHitbox();
light.antialiasing = true;
+ light.shader = lightFadeShader.shader;
phillyCityLights.add(light);
}
@@ -548,9 +556,15 @@ class PlayState extends MusicBeatState
var smokeRight:BGSprite = new BGSprite('smokeRight', 1100, -100, 0.4, 0.4, ['SmokeRight'], true);
add(smokeRight);
+ // tankGround.
+
tankWatchtower = new BGSprite('tankWatchtower', 100, 50, 0.5, 0.5, ['watchtower gradient color']);
add(tankWatchtower);
+ tankGround = new BGSprite('tankRolling', 300, 300, 0.5, 0.5, ['BG tank w lighting'], true);
+ add(tankGround);
+ tankGround.active = false;
+
tankmanRun = new FlxTypedGroup();
add(tankmanRun);
@@ -559,12 +573,14 @@ class PlayState extends MusicBeatState
tankGround.updateHitbox();
add(tankGround);
+ moveTank();
+
// smokeLeft.screenCenter();
var fgTank0:BGSprite = new BGSprite('tank0', -500, 650, 1.7, 1.5, ['fg']);
foregroundSprites.add(fgTank0);
- var fgTank1:BGSprite = new BGSprite('tank1', -300, 700, 2, 0.2, ['fg']);
+ var fgTank1:BGSprite = new BGSprite('tank1', -300, 750, 2, 0.2, ['fg']);
foregroundSprites.add(fgTank1);
// just called 'foreground' just cuz small inconsistency no bbiggei
@@ -577,7 +593,7 @@ class PlayState extends MusicBeatState
var fgTank5:BGSprite = new BGSprite('tank5', 1800, 900, 1.5, 1.5, ['fg']);
foregroundSprites.add(fgTank5);
- var fgTank3:BGSprite = new BGSprite('tank3', 1300, 1430, 3.5, 2.5, ['fg']);
+ var fgTank3:BGSprite = new BGSprite('tank3', 1300, 1400, 3.5, 2.5, ['fg']);
foregroundSprites.add(fgTank3);
default:
@@ -918,8 +934,8 @@ class PlayState extends MusicBeatState
switch (curSong.toLowerCase())
{
// REMOVE THIS LATER
- // case 'stress':
- // stressIntro();
+ case 'stress':
+ stressIntro();
default:
startCountdown();
@@ -933,112 +949,150 @@ class PlayState extends MusicBeatState
{
inCutscene = true;
- FlxG.sound.playMusic(Paths.music('DISTORTO'), 0);
- FlxG.sound.music.fadeIn(5, 0, 0.5);
+ var blackShit:FlxSprite = new FlxSprite(-200, -200).makeGraphic(FlxG.width * 2, FlxG.height * 2, FlxColor.BLACK);
+ blackShit.scrollFactor.set();
+ add(blackShit);
- dad.visible = false;
- var tankCutscene:TankCutscene = new TankCutscene(-20, 320);
- tankCutscene.frames = Paths.getSparrowAtlas('cutsceneStuff/tankTalkSong1');
- tankCutscene.animation.addByPrefix('wellWell', 'TANK TALK 1 P1', 24, false);
- tankCutscene.animation.addByPrefix('killYou', 'TANK TALK 1 P2', 24, false);
- tankCutscene.animation.play('wellWell');
- tankCutscene.antialiasing = true;
- gfCutsceneLayer.add(tankCutscene);
+ var vid:FlxVideo = new FlxVideo('music/ughCutscene.mp4');
+ vid.finishCallback = function()
+ {
+ remove(blackShit);
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, (Conductor.crochet / 1000) * 5, {ease: FlxEase.quadInOut});
+ startCountdown();
+ cameraMovement();
+ };
- camHUD.visible = false;
+ FlxG.camera.zoom = defaultCamZoom * 1.2;
- FlxG.camera.zoom *= 1.2;
+ camFollow.x += 100;
camFollow.y += 100;
- tankCutscene.startSyncAudio = FlxG.sound.load(Paths.sound('wellWellWell'));
+ /*
+ FlxG.sound.playMusic(Paths.music('DISTORTO'), 0);
+ FlxG.sound.music.fadeIn(5, 0, 0.5);
- new FlxTimer().start(3, function(tmr:FlxTimer)
- {
- camFollow.x += 800;
+ dad.visible = false;
+ var tankCutscene:TankCutscene = new TankCutscene(-20, 320);
+ tankCutscene.frames = Paths.getSparrowAtlas('cutsceneStuff/tankTalkSong1');
+ tankCutscene.animation.addByPrefix('wellWell', 'TANK TALK 1 P1', 24, false);
+ tankCutscene.animation.addByPrefix('killYou', 'TANK TALK 1 P2', 24, false);
+ tankCutscene.animation.play('wellWell');
+ tankCutscene.antialiasing = true;
+ gfCutsceneLayer.add(tankCutscene);
+
+ camHUD.visible = false;
+
+ FlxG.camera.zoom *= 1.2;
camFollow.y += 100;
- FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.2}, 0.27, {ease: FlxEase.quadInOut});
- new FlxTimer().start(1.5, function(bep:FlxTimer)
- {
- boyfriend.playAnim('singUP');
- // play sound
- FlxG.sound.play(Paths.sound('bfBeep'), function() {
- boyfriend.playAnim('idle');
- });
- });
+ tankCutscene.startSyncAudio = FlxG.sound.load(Paths.sound('wellWellWell'));
- new FlxTimer().start(3, function(swaggy:FlxTimer)
+ new FlxTimer().start(3, function(tmr:FlxTimer)
{
- camFollow.x -= 800;
- camFollow.y -= 100;
- FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.2}, 0.5, {ease: FlxEase.quadInOut});
- tankCutscene.animation.play('killYou');
- FlxG.sound.play(Paths.sound('killYou'));
- new FlxTimer().start(6.1, function(swagasdga:FlxTimer)
+ camFollow.x += 800;
+ camFollow.y += 100;
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.2}, 0.27, {ease: FlxEase.quadInOut});
+
+ new FlxTimer().start(1.5, function(bep:FlxTimer)
{
- FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, (Conductor.crochet / 1000) * 5, {ease: FlxEase.quadInOut});
-
- FlxG.sound.music.fadeOut((Conductor.crochet / 1000) * 5, 0);
-
- new FlxTimer().start((Conductor.crochet / 1000) * 5, function(money:FlxTimer)
+ boyfriend.playAnim('singUP');
+ // play sound
+ FlxG.sound.play(Paths.sound('bfBeep'), function()
{
- dad.visible = true;
- gfCutsceneLayer.remove(tankCutscene);
+ boyfriend.playAnim('idle');
});
-
- cameraMovement();
-
- startCountdown();
});
- });
- });
+
+ new FlxTimer().start(3, function(swaggy:FlxTimer)
+ {
+ camFollow.x -= 800;
+ camFollow.y -= 100;
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.2}, 0.5, {ease: FlxEase.quadInOut});
+ tankCutscene.animation.play('killYou');
+ FlxG.sound.play(Paths.sound('killYou'));
+ new FlxTimer().start(6.1, function(swagasdga:FlxTimer)
+ {
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, (Conductor.crochet / 1000) * 5, {ease: FlxEase.quadInOut});
+
+ FlxG.sound.music.fadeOut((Conductor.crochet / 1000) * 5, 0);
+
+ new FlxTimer().start((Conductor.crochet / 1000) * 5, function(money:FlxTimer)
+ {
+ dad.visible = true;
+ gfCutsceneLayer.remove(tankCutscene);
+ });
+
+ cameraMovement();
+
+ startCountdown();
+ camHUD.visible = true;
+ });
+ });
+ });*/
}
function gunsIntro()
{
inCutscene = true;
- camFollow.setPosition(camPos.x, camPos.y);
+ var blackShit:FlxSprite = new FlxSprite(-200, -200).makeGraphic(FlxG.width * 2, FlxG.height * 2, FlxColor.BLACK);
+ blackShit.scrollFactor.set();
+ add(blackShit);
- camHUD.visible = false;
-
- FlxG.sound.playMusic(Paths.music('DISTORTO'), 0);
- FlxG.sound.music.fadeIn(5, 0, 0.5);
-
- camFollow.y += 100;
-
- FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.3}, 4, {ease: FlxEase.quadInOut});
-
- dad.visible = false;
- var tankCutscene:TankCutscene = new TankCutscene(20, 320);
- tankCutscene.frames = Paths.getSparrowAtlas('cutsceneStuff/tankTalkSong2');
- tankCutscene.animation.addByPrefix('tankyguy', 'TANK TALK 2', 24, false);
- tankCutscene.animation.play('tankyguy');
- tankCutscene.antialiasing = true;
- gfCutsceneLayer.add(tankCutscene); // add();
-
- tankCutscene.startSyncAudio = FlxG.sound.load(Paths.sound('tankSong2'));
-
- new FlxTimer().start(4.1, function(ugly:FlxTimer)
+ var vid:FlxVideo = new FlxVideo('music/gunsCutscene.mp4');
+ vid.finishCallback = function()
{
- FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.4}, 0.4, {ease: FlxEase.quadOut});
- FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.3}, 0.7, {ease: FlxEase.quadInOut, startDelay: 0.45});
+ remove(blackShit);
- gf.playAnim('sad');
- });
-
- new FlxTimer().start(11, function(tmr:FlxTimer)
- {
- FlxG.sound.music.fadeOut((Conductor.crochet / 1000) * 5, 0);
-
- FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, (Conductor.crochet * 5) / 1000, {ease: FlxEase.quartIn});
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, (Conductor.crochet / 1000) * 5, {ease: FlxEase.quadInOut});
startCountdown();
- new FlxTimer().start((Conductor.crochet * 25) / 1000, function(daTim:FlxTimer)
+ cameraMovement();
+ };
+
+ /*
+ camFollow.setPosition(camPos.x, camPos.y);
+
+ camHUD.visible = false;
+
+ FlxG.sound.playMusic(Paths.music('DISTORTO'), 0);
+ FlxG.sound.music.fadeIn(5, 0, 0.5);
+
+ camFollow.y += 100;
+
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.3}, 4, {ease: FlxEase.quadInOut});
+
+ dad.visible = false;
+ var tankCutscene:TankCutscene = new TankCutscene(20, 320);
+ tankCutscene.frames = Paths.getSparrowAtlas('cutsceneStuff/tankTalkSong2');
+ tankCutscene.animation.addByPrefix('tankyguy', 'TANK TALK 2', 24, false);
+ tankCutscene.animation.play('tankyguy');
+ tankCutscene.antialiasing = true;
+ gfCutsceneLayer.add(tankCutscene); // add();
+
+ tankCutscene.startSyncAudio = FlxG.sound.load(Paths.sound('tankSong2'));
+
+ new FlxTimer().start(4.1, function(ugly:FlxTimer)
{
- dad.visible = true;
- gfCutsceneLayer.remove(tankCutscene);
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.4}, 0.4, {ease: FlxEase.quadOut});
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom * 1.3}, 0.7, {ease: FlxEase.quadInOut, startDelay: 0.45});
+
+ gf.playAnim('sad');
});
- });
+
+ new FlxTimer().start(11, function(tmr:FlxTimer)
+ {
+ FlxG.sound.music.fadeOut((Conductor.crochet / 1000) * 5, 0);
+
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, (Conductor.crochet * 5) / 1000, {ease: FlxEase.quartIn});
+ startCountdown();
+ new FlxTimer().start((Conductor.crochet * 25) / 1000, function(daTim:FlxTimer)
+ {
+ dad.visible = true;
+ gfCutsceneLayer.remove(tankCutscene);
+ });
+
+ camHUD.visible = true;
+ });*/
}
/**
@@ -1056,13 +1110,30 @@ class PlayState extends MusicBeatState
{
inCutscene = true;
- // for story mode shit
- camFollow.setPosition(camPos.x, camPos.y);
+ var blackShit:FlxSprite = new FlxSprite(-200, -200).makeGraphic(FlxG.width * 2, FlxG.height * 2, FlxColor.BLACK);
+ blackShit.scrollFactor.set();
+ add(blackShit);
- var dummyLoaderShit:FlxGroup = new FlxGroup();
+ var vid:FlxVideo = new FlxVideo('music/stressCutscene.mp4');
+ vid.finishCallback = function()
+ {
+ remove(blackShit);
+
+ FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, (Conductor.crochet / 1000) * 5, {ease: FlxEase.quadInOut});
+ startCountdown();
+ cameraMovement();
+ };
- add(dummyLoaderShit);
/*
+ camHUD.visible = false;
+
+ // for story mode shit
+ camFollow.setPosition(camPos.x, camPos.y);
+
+ var dummyLoaderShit:FlxGroup = new FlxGroup();
+
+ add(dummyLoaderShit);
+
for (i in 0...7)
{
var dummyLoader:FlxSprite = new FlxSprite();
@@ -1073,223 +1144,221 @@ class PlayState extends MusicBeatState
// dummyLoader.drawFrame(true);
}
- */
+ dad.visible = false;
- dad.visible = false;
+ // gf.y += 300;
+ gf.alpha = 0.01;
- // gf.y += 300;
- gf.alpha = 0.01;
+ var gfTankmen:FlxSprite = new FlxSprite(210, 70);
+ gfTankmen.frames = Paths.getSparrowAtlas('characters/gfTankmen');
+ gfTankmen.animation.addByPrefix('loop', 'GF Dancing at Gunpoint', 24, true);
+ gfTankmen.animation.play('loop');
+ gfTankmen.antialiasing = true;
+ gfCutsceneLayer.add(gfTankmen);
- var gfTankmen:FlxSprite = new FlxSprite(210, 70);
- gfTankmen.frames = Paths.getSparrowAtlas('characters/gfTankmen');
- gfTankmen.animation.addByPrefix('loop', 'GF Dancing at Gunpoint', 24, true);
- gfTankmen.animation.play('loop');
- gfTankmen.antialiasing = true;
- gfCutsceneLayer.add(gfTankmen);
+ var tankCutscene:TankCutscene = new TankCutscene(-70, 320);
+ tankCutscene.frames = Paths.getSparrowAtlas('cutsceneStuff/tankTalkSong3-pt1');
+ tankCutscene.animation.addByPrefix('tankyguy', 'TANK TALK 3 P1 UNCUT', 24, false);
+ // tankCutscene.animation.addByPrefix('weed', 'sexAmbig', 24, false);
+ tankCutscene.animation.play('tankyguy');
- var tankCutscene:TankCutscene = new TankCutscene(-70, 320);
- tankCutscene.frames = Paths.getSparrowAtlas('cutsceneStuff/tankTalkSong3-pt1');
- tankCutscene.animation.addByPrefix('tankyguy', 'TANK TALK 3 P1 UNCUT', 24, false);
- // tankCutscene.animation.addByPrefix('weed', 'sexAmbig', 24, false);
- tankCutscene.animation.play('tankyguy');
+ tankCutscene.antialiasing = true;
+ bfTankCutsceneLayer.add(tankCutscene); // add();
- tankCutscene.antialiasing = true;
- bfTankCutsceneLayer.add(tankCutscene); // add();
+ var alsoTankCutscene:FlxSprite = new FlxSprite(20, 320);
+ alsoTankCutscene.frames = Paths.getSparrowAtlas('cutsceneStuff/tankTalkSong3-pt2');
+ alsoTankCutscene.animation.addByPrefix('swagTank', 'TANK TALK 3 P2 UNCUT', 24, false);
+ alsoTankCutscene.antialiasing = true;
- var alsoTankCutscene:FlxSprite = new FlxSprite(20, 320);
- alsoTankCutscene.frames = Paths.getSparrowAtlas('cutsceneStuff/tankTalkSong3-pt2');
- alsoTankCutscene.animation.addByPrefix('swagTank', 'TANK TALK 3 P2 UNCUT', 24, false);
- alsoTankCutscene.antialiasing = true;
+ bfTankCutsceneLayer.add(alsoTankCutscene);
- bfTankCutsceneLayer.add(alsoTankCutscene);
+ alsoTankCutscene.y = FlxG.height + 100;
- alsoTankCutscene.y = FlxG.height + 100;
-
- camFollow.setPosition(gf.x + 350, gf.y + 560);
- FlxG.camera.focusOn(camFollow.getPosition());
-
- boyfriend.visible = false;
-
- var fakeBF:Character = new Character(boyfriend.x, boyfriend.y, 'bf', true);
- bfTankCutsceneLayer.add(fakeBF);
-
- // var atlasCutscene:Animation
- // var animAssets:AssetManager = new AssetManager();
-
- // var url = 'images/gfDemon';
-
- // // animAssets.enqueueSingle(Paths.file(url + "/spritemap1.png"));
- // // animAssets.enqueueSingle(Paths.file(url + "/spritemap1.json"));
- // // animAssets.enqueueSingle(Paths.file(url + "/Animation.json"));
-
- // animAssets.loadQueue(function(asssss:AssetManager)
- // {
- // var daAnim:Animation = asssss.createAnimation('GF Turnin Demon W Effect');
- // FlxG.addChildBelowMouse(daAnim);
- // });
-
- var bfCatchGf:FlxSprite = new FlxSprite(boyfriend.x - 10, boyfriend.y - 90);
- bfCatchGf.frames = Paths.getSparrowAtlas('cutsceneStuff/bfCatchesGF');
- bfCatchGf.animation.addByPrefix('catch', 'BF catches GF', 24, false);
- bfCatchGf.antialiasing = true;
- add(bfCatchGf);
- bfCatchGf.visible = false;
-
- if (PreferencesMenu.getPref('censor-naughty'))
- tankCutscene.startSyncAudio = FlxG.sound.play(Paths.sound('stressCutscene'));
- else
- {
- tankCutscene.startSyncAudio = FlxG.sound.play(Paths.sound('song3censor'));
- // cutsceneSound.loadEmbedded(Paths.sound('song3censor'));
-
- var censor:FlxSprite = new FlxSprite();
- censor.frames = Paths.getSparrowAtlas('cutsceneStuff/censor');
- censor.animation.addByPrefix('censor', 'mouth censor', 24);
- censor.animation.play('censor');
- add(censor);
- censor.visible = false;
- //
-
- new FlxTimer().start(4.6, function(censorTimer:FlxTimer)
- {
- censor.visible = true;
- censor.setPosition(dad.x + 160, dad.y + 180);
-
- new FlxTimer().start(0.2, function(endThing:FlxTimer)
- {
- censor.visible = false;
- });
- });
-
- new FlxTimer().start(25.1, function(censorTimer:FlxTimer)
- {
- censor.visible = true;
- censor.setPosition(dad.x + 120, dad.y + 170);
-
- new FlxTimer().start(0.9, function(endThing:FlxTimer)
- {
- censor.visible = false;
- });
- });
-
- new FlxTimer().start(30.7, function(censorTimer:FlxTimer)
- {
- censor.visible = true;
- censor.setPosition(dad.x + 210, dad.y + 190);
-
- new FlxTimer().start(0.4, function(endThing:FlxTimer)
- {
- censor.visible = false;
- });
- });
-
- new FlxTimer().start(33.8, function(censorTimer:FlxTimer)
- {
- censor.visible = true;
- censor.setPosition(dad.x + 180, dad.y + 170);
-
- new FlxTimer().start(0.6, function(endThing:FlxTimer)
- {
- censor.visible = false;
- });
- });
- }
-
- // new FlxTimer().start(0.01, function(tmr) cutsceneSound.play()); // cutsceneSound.play();
- // cutsceneSound.play();
- // tankCutscene.startSyncAudio = cutsceneSound;
- // tankCutscene.animation.curAnim.curFrame
-
- FlxG.camera.zoom = defaultCamZoom * 1.15;
-
- camFollow.x -= 200;
-
- // cutsceneSound.onComplete = startCountdown;
-
- // Cunt 1
- new FlxTimer().start(31.5, function(cunt:FlxTimer)
- {
- camFollow.x += 400;
- camFollow.y += 150;
- FlxG.camera.zoom = defaultCamZoom * 1.4;
- FlxTween.tween(FlxG.camera, {zoom: FlxG.camera.zoom + 0.1}, 0.5, {ease: FlxEase.elasticOut});
+ camFollow.setPosition(gf.x + 350, gf.y + 560);
FlxG.camera.focusOn(camFollow.getPosition());
- boyfriend.playAnim('singUPmiss');
- boyfriend.animation.finishCallback = function(animFinish:String)
+
+ boyfriend.visible = false;
+
+ var fakeBF:Character = new Character(boyfriend.x, boyfriend.y, 'bf', true);
+ bfTankCutsceneLayer.add(fakeBF);
+
+ // var atlasCutscene:Animation
+ // var animAssets:AssetManager = new AssetManager();
+
+ // var url = 'images/gfDemon';
+
+ // // animAssets.enqueueSingle(Paths.file(url + "/spritemap1.png"));
+ // // animAssets.enqueueSingle(Paths.file(url + "/spritemap1.json"));
+ // // animAssets.enqueueSingle(Paths.file(url + "/Animation.json"));
+
+ // animAssets.loadQueue(function(asssss:AssetManager)
+ // {
+ // var daAnim:Animation = asssss.createAnimation('GF Turnin Demon W Effect');
+ // FlxG.addChildBelowMouse(daAnim);
+ // });
+
+ var bfCatchGf:FlxSprite = new FlxSprite(boyfriend.x - 10, boyfriend.y - 90);
+ bfCatchGf.frames = Paths.getSparrowAtlas('cutsceneStuff/bfCatchesGF');
+ bfCatchGf.animation.addByPrefix('catch', 'BF catches GF', 24, false);
+ bfCatchGf.antialiasing = true;
+ add(bfCatchGf);
+ bfCatchGf.visible = false;
+
+ if (PreferencesMenu.getPref('censor-naughty'))
+ tankCutscene.startSyncAudio = FlxG.sound.play(Paths.sound('stressCutscene'));
+ else
{
- camFollow.x -= 400;
- camFollow.y -= 150;
- FlxG.camera.zoom /= 1.4;
+ tankCutscene.startSyncAudio = FlxG.sound.play(Paths.sound('song3censor'));
+ // cutsceneSound.loadEmbedded(Paths.sound('song3censor'));
+
+ var censor:FlxSprite = new FlxSprite();
+ censor.frames = Paths.getSparrowAtlas('cutsceneStuff/censor');
+ censor.animation.addByPrefix('censor', 'mouth censor', 24);
+ censor.animation.play('censor');
+ add(censor);
+ censor.visible = false;
+ //
+
+ new FlxTimer().start(4.6, function(censorTimer:FlxTimer)
+ {
+ censor.visible = true;
+ censor.setPosition(dad.x + 160, dad.y + 180);
+
+ new FlxTimer().start(0.2, function(endThing:FlxTimer)
+ {
+ censor.visible = false;
+ });
+ });
+
+ new FlxTimer().start(25.1, function(censorTimer:FlxTimer)
+ {
+ censor.visible = true;
+ censor.setPosition(dad.x + 120, dad.y + 170);
+
+ new FlxTimer().start(0.9, function(endThing:FlxTimer)
+ {
+ censor.visible = false;
+ });
+ });
+
+ new FlxTimer().start(30.7, function(censorTimer:FlxTimer)
+ {
+ censor.visible = true;
+ censor.setPosition(dad.x + 210, dad.y + 190);
+
+ new FlxTimer().start(0.4, function(endThing:FlxTimer)
+ {
+ censor.visible = false;
+ });
+ });
+
+ new FlxTimer().start(33.8, function(censorTimer:FlxTimer)
+ {
+ censor.visible = true;
+ censor.setPosition(dad.x + 180, dad.y + 170);
+
+ new FlxTimer().start(0.6, function(endThing:FlxTimer)
+ {
+ censor.visible = false;
+ });
+ });
+ }
+
+ // new FlxTimer().start(0.01, function(tmr) cutsceneSound.play()); // cutsceneSound.play();
+ // cutsceneSound.play();
+ // tankCutscene.startSyncAudio = cutsceneSound;
+ // tankCutscene.animation.curAnim.curFrame
+
+ FlxG.camera.zoom = defaultCamZoom * 1.15;
+
+ camFollow.x -= 200;
+
+ // cutsceneSound.onComplete = startCountdown;
+
+ // Cunt 1
+ new FlxTimer().start(31.5, function(cunt:FlxTimer)
+ {
+ camFollow.x += 400;
+ camFollow.y += 150;
+ FlxG.camera.zoom = defaultCamZoom * 1.4;
+ FlxTween.tween(FlxG.camera, {zoom: FlxG.camera.zoom + 0.1}, 0.5, {ease: FlxEase.elasticOut});
FlxG.camera.focusOn(camFollow.getPosition());
+ boyfriend.playAnim('singUPmiss');
+ boyfriend.animation.finishCallback = function(animFinish:String)
+ {
+ camFollow.x -= 400;
+ camFollow.y -= 150;
+ FlxG.camera.zoom /= 1.4;
+ FlxG.camera.focusOn(camFollow.getPosition());
- boyfriend.animation.finishCallback = null;
- };
- });
-
- new FlxTimer().start(15.1, function(tmr:FlxTimer)
- {
- camFollow.y -= 170;
- camFollow.x += 200;
- FlxTween.tween(FlxG.camera, {zoom: FlxG.camera.zoom * 1.3}, 2.1, {
- ease: FlxEase.quadInOut
+ boyfriend.animation.finishCallback = null;
+ };
});
- new FlxTimer().start(2.2, function(swagTimer:FlxTimer)
+ new FlxTimer().start(15.1, function(tmr:FlxTimer)
{
- // FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, 0.7, {ease: FlxEase.elasticOut});
- FlxG.camera.zoom = 0.8;
- // camFollow.y -= 100;
- boyfriend.visible = false;
- bfCatchGf.visible = true;
- bfCatchGf.animation.play('catch');
+ camFollow.y -= 170;
+ camFollow.x += 200;
+ FlxTween.tween(FlxG.camera, {zoom: FlxG.camera.zoom * 1.3}, 2.1, {
+ ease: FlxEase.quadInOut
+ });
- bfTankCutsceneLayer.remove(fakeBF);
-
- bfCatchGf.animation.finishCallback = function(anim:String)
+ new FlxTimer().start(2.2, function(swagTimer:FlxTimer)
{
- bfCatchGf.visible = false;
- boyfriend.visible = true;
+ // FlxTween.tween(FlxG.camera, {zoom: defaultCamZoom}, 0.7, {ease: FlxEase.elasticOut});
+ FlxG.camera.zoom = 0.8;
+ // camFollow.y -= 100;
+ boyfriend.visible = false;
+ bfCatchGf.visible = true;
+ bfCatchGf.animation.play('catch');
+
+ bfTankCutsceneLayer.remove(fakeBF);
+
+ bfCatchGf.animation.finishCallback = function(anim:String)
+ {
+ bfCatchGf.visible = false;
+ boyfriend.visible = true;
+ };
+
+ new FlxTimer().start(3, function(weedShitBaby:FlxTimer)
+ {
+ camFollow.y += 180;
+ camFollow.x -= 80;
+ });
+
+ new FlxTimer().start(2.3, function(gayLol:FlxTimer)
+ {
+ bfTankCutsceneLayer.remove(tankCutscene);
+ alsoTankCutscene.y = 320;
+ alsoTankCutscene.animation.play('swagTank');
+ // tankCutscene.animation.play('weed');
+ });
+ });
+
+ gf.visible = false;
+ var cutsceneShit:CutsceneCharacter = new CutsceneCharacter(210, 70, 'gfHoldup');
+ gfCutsceneLayer.add(cutsceneShit);
+ gfCutsceneLayer.remove(gfTankmen);
+
+ cutsceneShit.onFinish = function()
+ {
+ gf.alpha = 1;
+ gf.visible = true;
};
- new FlxTimer().start(3, function(weedShitBaby:FlxTimer)
+ // add(cutsceneShit);
+ new FlxTimer().start(20, function(alsoTmr:FlxTimer)
{
- camFollow.y += 180;
- camFollow.x -= 80;
+ dad.visible = true;
+ bfTankCutsceneLayer.remove(alsoTankCutscene);
+ startCountdown();
+ remove(dummyLoaderShit);
+ dummyLoaderShit.destroy();
+ dummyLoaderShit = null;
+
+ gfCutsceneLayer.remove(cutsceneShit);
});
-
- new FlxTimer().start(2.3, function(gayLol:FlxTimer)
- {
- bfTankCutsceneLayer.remove(tankCutscene);
- alsoTankCutscene.y = 320;
- alsoTankCutscene.animation.play('swagTank');
- // tankCutscene.animation.play('weed');
- });
- });
-
- gf.visible = false;
- var cutsceneShit:CutsceneCharacter = new CutsceneCharacter(210, 70, 'gfHoldup');
- gfCutsceneLayer.add(cutsceneShit);
- gfCutsceneLayer.remove(gfTankmen);
-
- cutsceneShit.onFinish = function()
- {
- gf.alpha = 1;
- gf.visible = true;
- };
-
- // add(cutsceneShit);
- new FlxTimer().start(20, function(alsoTmr:FlxTimer)
- {
- dad.visible = true;
- bfTankCutsceneLayer.remove(alsoTankCutscene);
- startCountdown();
- remove(dummyLoaderShit);
- dummyLoaderShit.destroy();
- dummyLoaderShit = null;
-
- gfCutsceneLayer.remove(cutsceneShit);
- });
- });
+ });*/
}
function initDiscord():Void
@@ -1931,7 +2000,12 @@ class PlayState extends MusicBeatState
trainFrameTiming = 0;
}
}
- // phillyCityLights.members[curLight].alpha -= (Conductor.crochet / 1000) * FlxG.elapsed;
+
+ lightFadeShader.update((Conductor.crochet / 1000) * FlxG.elapsed * 1.5);
+ // phillyCityLights.members[curLight].alpha -= (Conductor.crochet / 1000) * FlxG.elapsed;
+
+ case 'tank':
+ moveTank();
}
super.update(elapsed);
@@ -2314,7 +2388,8 @@ class PlayState extends MusicBeatState
camHUD.visible = false;
inCutscene = true;
- FlxG.sound.play(Paths.sound('Lights_Shut_off'), function(){
+ FlxG.sound.play(Paths.sound('Lights_Shut_off'), function()
+ {
// no camFollow so it centers on horror tree
SONG = Song.loadFromJson(storyPlaylist[0].toLowerCase() + difficulty, storyPlaylist[0]);
LoadingState.loadAndSwitchState(new PlayState());
@@ -2809,6 +2884,25 @@ class PlayState extends MusicBeatState
});
}
+ function moveTank():Void
+ {
+ if (!inCutscene)
+ {
+ var daAngleOffset:Float = 1;
+ tankAngle += FlxG.elapsed * tankSpeed;
+ tankGround.angle = tankAngle - 90 + 15;
+
+ tankGround.x = tankX + Math.cos(FlxAngle.asRadians((tankAngle * daAngleOffset) + 180)) * 1500;
+ tankGround.y = 1300 + Math.sin(FlxAngle.asRadians((tankAngle * daAngleOffset) + 180)) * 1100;
+ }
+ }
+
+ var tankResetShit:Bool = false;
+ var tankMoving:Bool = false;
+ var tankAngle:Float = FlxG.random.int(-90, 45);
+ var tankSpeed:Float = FlxG.random.float(5, 7);
+ var tankX:Float = 400;
+
var trainMoving:Bool = false;
var trainFrameTiming:Float = 0;
@@ -2995,6 +3089,8 @@ class PlayState extends MusicBeatState
if (curBeat % 4 == 0)
{
+ lightFadeShader.reset();
+
phillyCityLights.forEach(function(light:FlxSprite)
{
light.visible = false;
diff --git a/source/TitleState.hx b/source/TitleState.hx
index 189639df3..2b67aaead 100644
--- a/source/TitleState.hx
+++ b/source/TitleState.hx
@@ -29,6 +29,8 @@ import openfl.events.NetStatusEvent;
import openfl.media.Video;
import openfl.net.NetConnection;
import openfl.net.NetStream;
+import shaderslmfao.BuildingShaders.BuildingShader;
+import shaderslmfao.BuildingShaders;
import shaderslmfao.ColorSwap;
import ui.PreferencesMenu;
@@ -45,7 +47,7 @@ import sys.thread.Thread;
class TitleState extends MusicBeatState
{
- static var initialized:Bool = false;
+ public static var initialized:Bool = false;
var blackScreen:FlxSprite;
var credGroup:FlxGroup;
@@ -57,6 +59,7 @@ class TitleState extends MusicBeatState
var wackyImage:FlxSprite;
var lastBeat:Int = 0;
var swagShader:ColorSwap;
+ var alphaShader:BuildingShaders;
var thingie:FlxSprite;
var video:Video;
@@ -73,6 +76,7 @@ class TitleState extends MusicBeatState
FlxG.game.focusLostFramerate = 60;
swagShader = new ColorSwap();
+ alphaShader = new BuildingShaders();
FlxG.sound.muteKeys = [ZERO];
@@ -105,6 +109,11 @@ class TitleState extends MusicBeatState
StoryMenuState.weekUnlocked[0] = true;
}
+ if (FlxG.save.data.seenVideo != null)
+ {
+ VideoState.seenVideo = FlxG.save.data.seenVideo;
+ }
+
#if FREEPLAY
FlxG.switchState(new FreeplayState());
#elseif ANIMATE
@@ -249,6 +258,7 @@ class TitleState extends MusicBeatState
logoBl.updateHitbox();
logoBl.shader = swagShader.shader;
+ // logoBl.shader = alphaShader.shader;
// trace();
// logoBl.screenCenter();
@@ -465,11 +475,13 @@ class TitleState extends MusicBeatState
if (controls.UI_LEFT)
{
swagShader.update(-elapsed * 0.1);
+ // alphaShader.update(-elapsed * 0.1);
}
if (controls.UI_RIGHT)
{
swagShader.update(elapsed * 0.1);
+ // alphaShader.update(elapsed * 0.1);
}
super.update(elapsed);
diff --git a/source/VideoState.hx b/source/VideoState.hx
index 6fa93428c..2e9afffaf 100644
--- a/source/VideoState.hx
+++ b/source/VideoState.hx
@@ -23,6 +23,9 @@ class VideoState extends MusicBeatState
seenVideo = true;
+ FlxG.save.data.seenVideo = true;
+ FlxG.save.flush();
+
if (FlxG.sound.music != null)
FlxG.sound.music.stop();
@@ -61,6 +64,7 @@ class VideoState extends MusicBeatState
netStream.dispose();
FlxG.removeChild(video);
+ TitleState.initialized = false;
FlxG.switchState(new TitleState());
}
diff --git a/source/animate/FlxSymbol.hx b/source/animate/FlxSymbol.hx
index 5f7aa3273..749abbe7b 100644
--- a/source/animate/FlxSymbol.hx
+++ b/source/animate/FlxSymbol.hx
@@ -62,18 +62,20 @@ class FlxSymbol extends FlxSprite
{
if (Reflect.hasField(element, 'ASI'))
{
+ var m3d = element.ASI.M3D;
+ var dumbassMatrix:Matrix = new Matrix(m3d[0], m3d[1], m3d[4], m3d[5], m3d[12], m3d[13]);
+
var spr:FlxSymbol = new FlxSymbol(0, 0, coolParsed);
matrixExposed = true;
spr.frames = frames;
spr.frame = spr.frames.getByName(element.ASI.N);
- var m3d = element.ASI.M3D;
- var dumbassMatrix:Matrix = new Matrix(m3d[0], m3d[1], m3d[4], m3d[5], m3d[12], m3d[13]);
+ // dumbassMatrix.translate(origin.x, origin.y);
dumbassMatrix.concat(_matrix);
spr.matrixExposed = true;
-
spr.transformMatrix.concat(dumbassMatrix);
+ // spr._matrix.concat(spr.transformMatrix);
spr.origin.set();
spr.origin.x += origin.x;
@@ -85,39 +87,15 @@ class FlxSymbol extends FlxSprite
else
{
var nestedSymbol = symbolMap.get(element.SI.SN);
-
- // nestedSymbol
-
- // if (element.SI.M3D[0] == -1 || flipX)
- // nestedShit.flipX = true;
-
- // nestedSymbol.TL.L.reverse();
-
- // _matrix.identity();
- // _matrix.scale(1, 1);
-
- var nestedShit:FlxSymbol = new FlxSymbol(x, y, coolParse);
+ var nestedShit:FlxSymbol = new FlxSymbol(0, 0, coolParse);
nestedShit.frames = frames;
var swagMatrix:FlxMatrix = new FlxMatrix(element.SI.M3D[0], element.SI.M3D[1], element.SI.M3D[4], element.SI.M3D[5],
element.SI.M3D[12], element.SI.M3D[13]);
- // _matrix.concat(swagMatrix);
-
swagMatrix.concat(_matrix);
nestedShit._matrix.concat(swagMatrix);
- // nestedShit.x = swagMatrix.tx;
- // nestedShit.y = swagMatrix.ty;
-
- // nestedShit._skewMatrix.identity();
- // nestedShit._skewMatrix.concat(swagMatrix);
- // _matrix.setTo(element.SI.M3D[0], element.SI.M3D[1], element.SI.M3D[4], element.SI.M3D[5], element.SI.M3D[12], element.SI.M3D[13]);
-
- // nestedShit.scale.x = Math.sqrt(_matrix.a * _matrix.a + _matrix.b + _matrix.b);
- // nestedShit.scale.y = Math.sqrt(_matrix.a * _matrix.a + _matrix.b * _matrix.b);
- // nestedShit.origin.set(element.SI.TRP.x, element.SI.TRP.y);
-
nestedShit.origin.set(element.SI.TRP.x, element.SI.TRP.y);
// nestedShit.angle += ((180 / Math.PI) * Math.atan2(swagMatrix.b, swagMatrix.a));
// nestedShit.angle += angle;
diff --git a/source/shaderslmfao/BuildingShaders.hx b/source/shaderslmfao/BuildingShaders.hx
new file mode 100644
index 000000000..8106967d1
--- /dev/null
+++ b/source/shaderslmfao/BuildingShaders.hx
@@ -0,0 +1,49 @@
+package shaderslmfao;
+
+import flixel.system.FlxAssets.FlxShader;
+
+class BuildingShaders
+{
+ public var shader(default, null):BuildingShader;
+ public var daAlpha:Float = 1;
+
+ public function new():Void
+ {
+ shader = new BuildingShader();
+ shader.alphaShit.value = [0];
+ }
+
+ public function update(elapsed:Float):Void
+ {
+ shader.alphaShit.value[0] += elapsed;
+ }
+
+ public function reset()
+ {
+ shader.alphaShit.value[0] = 0;
+ }
+}
+
+class BuildingShader extends FlxShader
+{
+ @:glFragmentSource('
+ #pragma header
+
+ uniform float alphaShit;
+
+ void main()
+ {
+ vec4 color = flixel_texture2D(bitmap, openfl_TextureCoordv);
+
+ if (color.a > 0.0)
+ color -= alphaShit;
+
+ gl_FragColor = color;
+ }
+
+ ')
+ public function new()
+ {
+ super();
+ }
+}
diff --git a/source/ui/OptionsState.hx b/source/ui/OptionsState.hx
index ce28f5a31..14e772986 100644
--- a/source/ui/OptionsState.hx
+++ b/source/ui/OptionsState.hx
@@ -31,7 +31,7 @@ class OptionsState extends MusicBeatState
var options = addPage(Options, new OptionsMenu(false));
var preferences = addPage(Preferences, new PreferencesMenu());
var controls = addPage(Controls, new ControlsMenu());
- var colors = addPage(Colors, new ColorsMenu());
+ // var colors = addPage(Colors, new ColorsMenu());
#if cpp
var mods = addPage(Mods, new ModMenu());
@@ -41,7 +41,7 @@ class OptionsState extends MusicBeatState
{
options.onExit.add(exitToMainMenu);
controls.onExit.add(switchPage.bind(Options));
- colors.onExit.add(switchPage.bind(Options));
+ // colors.onExit.add(switchPage.bind(Options));
preferences.onExit.add(switchPage.bind(Options));
#if cpp
@@ -179,7 +179,7 @@ class OptionsMenu extends Page
add(items = new TextMenuList());
createItem('preferences', function() switchPage(Preferences));
createItem("controls", function() switchPage(Controls));
- createItem('colors', function() switchPage(Colors));
+ // createItem('colors', function() switchPage(Colors));
#if cpp
createItem('mods', function() switchPage(Mods));
#end
diff --git a/source/ui/PreferencesMenu.hx b/source/ui/PreferencesMenu.hx
index 30d11e1c7..2e6e5a313 100644
--- a/source/ui/PreferencesMenu.hx
+++ b/source/ui/PreferencesMenu.hx
@@ -30,7 +30,7 @@ class PreferencesMenu extends ui.OptionsState.Page
add(items = new TextMenuList());
- createPrefItem('naughtyness', 'censor-naughty', false);
+ createPrefItem('naughtyness', 'censor-naughty', true);
createPrefItem('downscroll', 'downscroll', false);
createPrefItem('flashing menu', 'flashing-menu', true);
createPrefItem('Camera Zooming on Beat', 'camera-zoom', true);
@@ -65,7 +65,7 @@ class PreferencesMenu extends ui.OptionsState.Page
public static function initPrefs():Void
{
- preferenceCheck('censor-naughty', false);
+ preferenceCheck('censor-naughty', true);
preferenceCheck('downscroll', false);
preferenceCheck('flashing-menu', true);
preferenceCheck('camera-zoom', true);