package funkin.play.components; import flixel.FlxSprite; import flixel.group.FlxGroup.FlxTypedGroup; import flixel.tweens.FlxTween; import funkin.graphics.FunkinSprite; import funkin.play.PlayState; class PopUpStuff extends FlxTypedGroup { override public function new() { super(); } public function displayRating(daRating:String) { #if sys var perfStart:Float = Sys.time(); #end if (daRating == null) daRating = "good"; var ratingPath:String = daRating; if (PlayState.instance.currentStageId.startsWith('school')) ratingPath = "weeb/pixelUI/" + ratingPath + "-pixel"; var rating:FunkinSprite = FunkinSprite.create(0, 0, Paths.image(ratingPath)); rating.scrollFactor.set(0.2, 0.2); rating.zIndex = 1000; rating.x = FlxG.width * 0.50; rating.x -= FlxG.camera.scroll.x * 0.2; // make sure rating is visible lol! // if (rating.x < FlxG.camera.scroll.x) // rating.x = FlxG.camera.scroll.x; // else if (rating.x > FlxG.camera.scroll.x + FlxG.camera.width - rating.width) // rating.x = FlxG.camera.scroll.x + FlxG.camera.width - rating.width; // FlxG.camera.scroll.y + rating.y = FlxG.camera.height * 0.4 - 60; rating.acceleration.y = 550; rating.velocity.y -= FlxG.random.int(140, 175); rating.velocity.x -= FlxG.random.int(0, 10); add(rating); if (PlayState.instance.currentStageId.startsWith('school')) { rating.setGraphicSize(Std.int(rating.width * Constants.PIXEL_ART_SCALE * 0.7)); rating.antialiasing = false; } else { rating.setGraphicSize(Std.int(rating.width * 0.7)); rating.antialiasing = true; } rating.updateHitbox(); FlxTween.tween(rating, {alpha: 0}, 0.2, { onComplete: function(tween:FlxTween) { remove(rating, true); rating.destroy(); }, startDelay: Conductor.instance.beatLengthMs * 0.001 }); #if sys var perfEnd:Float = Sys.time(); trace("displayRating took: " + (perfEnd - perfStart)); #end } public function displayCombo(?combo:Int = 0):Int { #if sys var perfStart:Float = Sys.time(); #end if (combo == null) combo = 0; var pixelShitPart1:String = ""; var pixelShitPart2:String = ''; if (PlayState.instance.currentStageId.startsWith('school')) { pixelShitPart1 = 'weeb/pixelUI/'; pixelShitPart2 = '-pixel'; } var comboSpr:FunkinSprite = FunkinSprite.create(Paths.image(pixelShitPart1 + 'combo' + pixelShitPart2)); comboSpr.y = FlxG.camera.height * 0.4 + 80; comboSpr.x = FlxG.width * 0.50; comboSpr.x -= FlxG.camera.scroll.x * 0.2; // make sure combo is visible lol! // 194 fits 4 combo digits // if (comboSpr.x < FlxG.camera.scroll.x + 194) // comboSpr.x = FlxG.camera.scroll.x + 194; // else if (comboSpr.x > FlxG.camera.scroll.x + FlxG.camera.width - comboSpr.width) // comboSpr.x = FlxG.camera.scroll.x + FlxG.camera.width - comboSpr.width; comboSpr.acceleration.y = 600; comboSpr.velocity.y -= 150; comboSpr.velocity.x += FlxG.random.int(1, 10); add(comboSpr); if (PlayState.instance.currentStageId.startsWith('school')) { comboSpr.setGraphicSize(Std.int(comboSpr.width * Constants.PIXEL_ART_SCALE * 0.7)); comboSpr.antialiasing = false; } else { comboSpr.setGraphicSize(Std.int(comboSpr.width * 0.7)); comboSpr.antialiasing = true; } comboSpr.updateHitbox(); FlxTween.tween(comboSpr, {alpha: 0}, 0.2, { onComplete: function(tween:FlxTween) { remove(comboSpr, true); comboSpr.destroy(); }, startDelay: Conductor.instance.beatLengthMs * 0.001 }); var seperatedScore:Array = []; var tempCombo:Int = combo; while (tempCombo != 0) { seperatedScore.push(tempCombo % 10); tempCombo = Std.int(tempCombo / 10); } while (seperatedScore.length < 3) seperatedScore.push(0); // seperatedScore.reverse(); var daLoop:Int = 1; for (i in seperatedScore) { var numScore:FunkinSprite = FunkinSprite.create(0, comboSpr.y, Paths.image(pixelShitPart1 + 'num' + Std.int(i) + pixelShitPart2)); if (PlayState.instance.currentStageId.startsWith('school')) { numScore.setGraphicSize(Std.int(numScore.width * Constants.PIXEL_ART_SCALE)); numScore.antialiasing = false; } else { numScore.setGraphicSize(Std.int(numScore.width * 0.5)); numScore.antialiasing = true; } numScore.updateHitbox(); numScore.x = comboSpr.x - (43 * daLoop); //- 90; numScore.acceleration.y = FlxG.random.int(200, 300); numScore.velocity.y -= FlxG.random.int(140, 160); numScore.velocity.x = FlxG.random.float(-5, 5); add(numScore); FlxTween.tween(numScore, {alpha: 0}, 0.2, { onComplete: function(tween:FlxTween) { remove(numScore, true); numScore.destroy(); }, startDelay: Conductor.instance.beatLengthMs * 0.002 }); daLoop++; } #if sys var perfEnd:Float = Sys.time(); trace("displayCombo took: " + (perfEnd - perfStart)); #end return combo; } }