From e8678da5c0652e90df0adce351bc72cee7ecc7c2 Mon Sep 17 00:00:00 2001 From: Yoshman29 <81191621+YoshiCrafter29@users.noreply.github.com> Date: Sat, 24 Dec 2022 15:00:25 +0100 Subject: [PATCH] multithreaded credits loading --- buildnumber.txt | 2 +- .../funkin/menus/credits/CreditsCodename.hx | 29 +++++++++++++++++-- 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/buildnumber.txt b/buildnumber.txt index 249240ad..885a27e4 100644 --- a/buildnumber.txt +++ b/buildnumber.txt @@ -1 +1 @@ -1761 \ No newline at end of file +1763 \ No newline at end of file diff --git a/source/funkin/menus/credits/CreditsCodename.hx b/source/funkin/menus/credits/CreditsCodename.hx index a75c0a76..22bc4b77 100644 --- a/source/funkin/menus/credits/CreditsCodename.hx +++ b/source/funkin/menus/credits/CreditsCodename.hx @@ -1,5 +1,6 @@ package funkin.menus.credits; +import flixel.graphics.FlxGraphic; import flixel.FlxG; import openfl.display.BitmapData; import flixel.FlxSprite; @@ -8,6 +9,9 @@ import funkin.github.GitHub; import funkin.menus.MainMenuState; class CreditsCodename extends MusicBeatState { + public var contributorsSprites:Array = []; + public var contributorsAvatars:Array = []; + public var avatarLoadListId:Int = 0; public override function create() { super.create(); @@ -23,14 +27,21 @@ class CreditsCodename extends MusicBeatState { trace(e); }); for(k=>c in contributors) { - var bmap = BitmapData.fromBytes(GitHub.__requestBytesOnGitHubServers('${c.avatar_url}&size=64')); - var spr = new FlxSprite(0, k * 50); spr.antialiasing = true; - spr.loadGraphic(FlxG.bitmap.add(bmap, false, 'GITHUB-USER:${c.login}')); spr.setUnstretchedGraphicSize(50, 50, false); + contributorsSprites.push(spr); add(spr); } + + Main.execAsync(function() { + for(k=>c in contributors) { + var bytes = GitHub.__requestBytesOnGitHubServers('${c.avatar_url}&size=64'); + var bmap = BitmapData.fromBytes(bytes); + contributorsAvatars.push(FlxG.bitmap.add(bmap, false, 'GITHUB-USER:${c.login}')); + if (destroyed) return; + } + }); } public override function update(elapsed:Float) { @@ -40,5 +51,17 @@ class CreditsCodename extends MusicBeatState { FlxTransitionableState.skipNextTransIn = FlxTransitionableState.skipNextTransOut = true; FlxG.switchState(new MainMenuState()); } + if (avatarLoadListId < contributorsAvatars.length) { + for(i in avatarLoadListId...contributorsAvatars.length) { + var v = contributorsSprites[i]; + v.loadGraphic(contributorsAvatars[i]); + v.setUnstretchedGraphicSize(50, 50, false); + } + avatarLoadListId = contributorsAvatars.length; + } + } + + public override function destroy() { + super.destroy(); } } \ No newline at end of file