diff --git a/Project.xml b/Project.xml index b5bf7197f3..80c962c908 100644 --- a/Project.xml +++ b/Project.xml @@ -54,9 +54,12 @@ - - - + + diff --git a/assets/fonts/pixel.otf b/assets/fonts/pixel.otf new file mode 100644 index 0000000000..91ddd05c0b Binary files /dev/null and b/assets/fonts/pixel.otf differ diff --git a/assets/images/weeb/pixelUI/dialogueBox-pixel.png b/assets/images/weeb/pixelUI/dialogueBox-pixel.png new file mode 100644 index 0000000000..c7d88ff5f2 Binary files /dev/null and b/assets/images/weeb/pixelUI/dialogueBox-pixel.png differ diff --git a/assets/images/weeb/pixelUI/dialogueBox-pixel.xml b/assets/images/weeb/pixelUI/dialogueBox-pixel.xml new file mode 100644 index 0000000000..e0a1070a56 --- /dev/null +++ b/assets/images/weeb/pixelUI/dialogueBox-pixel.xml @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/assets/sounds/pixelText.mp3 b/assets/sounds/pixelText.mp3 new file mode 100644 index 0000000000..981d310fcd Binary files /dev/null and b/assets/sounds/pixelText.mp3 differ diff --git a/assets/sounds/pixelText.ogg b/assets/sounds/pixelText.ogg new file mode 100644 index 0000000000..6f3b8f24e9 Binary files /dev/null and b/assets/sounds/pixelText.ogg differ diff --git a/source/DialogueBox.hx b/source/DialogueBox.hx index 17f3d616d9..9be4fd4827 100644 --- a/source/DialogueBox.hx +++ b/source/DialogueBox.hx @@ -2,38 +2,99 @@ package; import flixel.FlxG; import flixel.FlxSprite; +import flixel.addons.text.FlxTypeText; import flixel.graphics.frames.FlxAtlasFrames; import flixel.group.FlxSpriteGroup; import flixel.input.FlxKeyManager; +import flixel.text.FlxText; +import flixel.util.FlxTimer; + +using StringTools; class DialogueBox extends FlxSpriteGroup { var box:FlxSprite; + var curCharacter:String = ''; + var dialogue:Alphabet; var dialogueList:Array = []; + // SECOND DIALOGUE FOR THE PIXEL SHIT INSTEAD??? + var swagDialogue:FlxTypeText; + + var dropText:FlxText; + public var finishThing:Void->Void; + var portraitLeft:FlxSprite; + var portraitRight:FlxSprite; + public function new(talkingRight:Bool = true, ?dialogueList:Array) { super(); - box = new FlxSprite(40); - box.frames = FlxAtlasFrames.fromSparrow('assets/images/speech_bubble_talking.png', 'assets/images/speech_bubble_talking.xml'); - box.animation.addByPrefix('normalOpen', 'Speech Bubble Normal Open', 24, false); - box.animation.addByPrefix('normal', 'speech bubble normal', 24); + var bgFade:FlxSprite = new FlxSprite(-200, -200).makeGraphic(Std.int(FlxG.width * 1.3), Std.int(FlxG.height * 1.3), 0xFFB3DFd8); + bgFade.scrollFactor.set(); + bgFade.alpha = 0; + add(bgFade); + + new FlxTimer().start(0.83, function(tmr:FlxTimer) + { + bgFade.alpha += (1 / 5) * 0.7; + if (bgFade.alpha > 0.7) + bgFade.alpha = 0.7; + }, 5); + + portraitLeft = new FlxSprite(-20, 40); + portraitLeft.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/senpaiPortrait.png', 'assets/images/weeb/senpaiPortrait.xml'); + portraitLeft.animation.addByPrefix('enter', 'Senpai Portrait Enter', 24, false); + portraitLeft.setGraphicSize(Std.int(portraitLeft.width * PlayState.daPixelZoom * 0.9)); + portraitLeft.updateHitbox(); + portraitLeft.scrollFactor.set(); + add(portraitLeft); + portraitLeft.visible = false; + + portraitRight = new FlxSprite(0, 40); + portraitRight.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/bfPortrait.png', 'assets/images/weeb/bfPortrait.xml'); + portraitRight.animation.addByPrefix('enter', 'Boyfriend portrait enter', 24, false); + portraitRight.setGraphicSize(Std.int(portraitRight.width * PlayState.daPixelZoom * 0.9)); + portraitRight.updateHitbox(); + portraitRight.scrollFactor.set(); + add(portraitRight); + portraitRight.visible = false; + + box = new FlxSprite(-20, 45); + box.frames = FlxAtlasFrames.fromSparrow('assets/images/weeb/pixelUI/dialogueBox-pixel.png', 'assets/images/weeb/pixelUI/dialogueBox-pixel.xml'); + box.animation.addByPrefix('normalOpen', 'Text Box Appear', 24, false); + box.animation.addByIndices('normal', 'Text Box Appear', [4], "", 24); box.animation.play('normalOpen'); + box.setGraphicSize(Std.int(box.width * PlayState.daPixelZoom * 0.9)); + box.updateHitbox(); add(box); + box.screenCenter(X); + portraitLeft.screenCenter(X); + if (!talkingRight) { box.flipX = true; } + dropText = new FlxText(242, 502, Std.int(FlxG.width * 0.6), "", 32); + dropText.font = 'Pixel Arial 11 Bold'; + dropText.color = 0xFFD89494; + add(dropText); + + swagDialogue = new FlxTypeText(240, 500, Std.int(FlxG.width * 0.6), "", 32); + swagDialogue.font = 'Pixel Arial 11 Bold'; + swagDialogue.color = 0xFF3F2021; + swagDialogue.sounds = [FlxG.sound.load('assets/sounds/pixelText' + TitleState.soundExt, 0.6)]; + add(swagDialogue); + dialogue = new Alphabet(0, 80, "", false, true); // dialogue.x = 90; - add(dialogue); + // add(dialogue); this.dialogueList = dialogueList; } @@ -43,6 +104,8 @@ class DialogueBox extends FlxSpriteGroup override function update(elapsed:Float) { + dropText.text = swagDialogue.text; + if (box.animation.curAnim != null) { if (box.animation.curAnim.name == 'normalOpen' && box.animation.curAnim.finished) @@ -79,8 +142,39 @@ class DialogueBox extends FlxSpriteGroup function startDialogue():Void { - var theDialog:Alphabet = new Alphabet(0, 70, dialogueList[0], false, true); - dialogue = theDialog; - add(theDialog); + cleanDialog(); + + // var theDialog:Alphabet = new Alphabet(0, 70, dialogueList[0], false, true); + // dialogue = theDialog; + // add(theDialog); + + // swagDialogue.text = ; + swagDialogue.resetText(dialogueList[0]); + swagDialogue.start(0.02, true); + + switch (curCharacter) + { + case 'dad': + portraitRight.visible = false; + if (!portraitLeft.visible) + { + portraitLeft.visible = true; + portraitLeft.animation.play('enter'); + } + case 'bf': + portraitLeft.visible = false; + if (!portraitRight.visible) + { + portraitRight.visible = true; + portraitRight.animation.play('enter'); + } + } + } + + function cleanDialog():Void + { + var splitName:Array = dialogueList[0].split(":"); + curCharacter = splitName[1]; + dialogueList[0] = dialogueList[0].substr(splitName[1].length + 2).trim(); } } diff --git a/source/PlayState.hx b/source/PlayState.hx index 6a336ec9c2..8eb75aa4e3 100644 --- a/source/PlayState.hx +++ b/source/PlayState.hx @@ -148,6 +148,12 @@ class PlayState extends MusicBeatState "If you can beat me here...", "Only then I will even CONSIDER letting you\ndate my daughter!" ]; + case 'senpai': + dialogue = [ + ':dad:Ah, a new fair maiden has come in search of true love!', + ":dad:A serenade between gentlemen shall decide where her beautiful heart shall reside.", + ":bf:Beep bo bop" + ]; } if (SONG.song.toLowerCase() == 'spookeez' || SONG.song.toLowerCase() == 'monster' || SONG.song.toLowerCase() == 'south') @@ -511,7 +517,7 @@ class PlayState extends MusicBeatState var doof:DialogueBox = new DialogueBox(false, dialogue); // doof.x += 70; - doof.y = FlxG.height * 0.5; + // doof.y = FlxG.height * 0.5; doof.scrollFactor.set(); doof.finishThing = startCountdown; @@ -619,7 +625,9 @@ class PlayState extends MusicBeatState }); }); case 'senpai': - schoolIntro(); + schoolIntro(doof); + case 'roses': + schoolIntro(doof); default: startCountdown(); } @@ -629,7 +637,7 @@ class PlayState extends MusicBeatState switch (curSong.toLowerCase()) { case 'senpai': - schoolIntro(); + schoolIntro(doof); default: startCountdown(); } @@ -638,7 +646,7 @@ class PlayState extends MusicBeatState super.create(); } - function schoolIntro():Void + function schoolIntro(?dialogueBox:DialogueBox):Void { var black:FlxSprite = new FlxSprite(-100, -100).makeGraphic(FlxG.width * 2, FlxG.height * 2, FlxColor.BLACK); black.scrollFactor.set(); @@ -647,8 +655,6 @@ class PlayState extends MusicBeatState new FlxTimer().start(0.3, function(tmr:FlxTimer) { black.alpha -= 0.15; - if (!startedCountdown) - startCountdown(); if (black.alpha > 0) { @@ -656,6 +662,13 @@ class PlayState extends MusicBeatState } else { + if (dialogueBox != null) + { + add(dialogueBox); + } + else + startCountdown(); + remove(black); } });