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(); 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); this.dialogueList = dialogueList; } var dialogueOpened:Bool = false; var dialogueStarted:Bool = false; override function update(elapsed:Float) { dropText.text = swagDialogue.text; if (box.animation.curAnim != null) { if (box.animation.curAnim.name == 'normalOpen' && box.animation.curAnim.finished) { box.animation.play('normal'); dialogueOpened = true; } } if (dialogueOpened && !dialogueStarted) { startDialogue(); dialogueStarted = true; } if (FlxG.keys.justPressed.SPACE) { remove(dialogue); if (dialogueList[1] == null) { finishThing(); kill(); } else { dialogueList.remove(dialogueList[0]); startDialogue(); } } super.update(elapsed); } function startDialogue():Void { 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(); } }