Fix issues with HTML5 and note drawing

This commit is contained in:
CuckyDev
2021-07-11 18:36:12 -04:00
parent ad89799f58
commit 321badd0b2
3 changed files with 143 additions and 141 deletions

View File

@ -10,8 +10,10 @@ import flixel.ui.FlxBar;
import haxe.Exception;
import flixel.tweens.FlxEase;
import flixel.tweens.FlxTween;
#if cpp
import sys.FileSystem;
import sys.io.File;
#end
import flixel.FlxG;
import flixel.FlxSprite;
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
@ -29,161 +31,144 @@ using StringTools;
class Caching extends MusicBeatState
{
var toBeDone = 0;
var done = 0;
var toBeDone = 0;
var done = 0;
var loaded = false;
var loaded = false;
var text:FlxText;
var kadeLogo:FlxSprite;
var text:FlxText;
var kadeLogo:FlxSprite;
public static var bitmapData:Map<String,FlxGraphic>;
public static var bitmapData:Map<String,FlxGraphic>;
var images = [];
var music = [];
var charts = [];
var images = [];
var music = [];
var charts = [];
override function create()
{
FlxG.mouse.visible = false;
FlxG.mouse.visible = false;
FlxG.worldBounds.set(0,0);
FlxG.worldBounds.set(0,0);
bitmapData = new Map<String,FlxGraphic>();
bitmapData = new Map<String,FlxGraphic>();
text = new FlxText(FlxG.width / 2, FlxG.height / 2 + 300,0,"Loading...");
text.size = 34;
text.alignment = FlxTextAlign.CENTER;
text.alpha = 0;
text = new FlxText(FlxG.width / 2, FlxG.height / 2 + 300,0,"Loading...");
text.size = 34;
text.alignment = FlxTextAlign.CENTER;
text.alpha = 0;
kadeLogo = new FlxSprite(FlxG.width / 2, FlxG.height / 2).loadGraphic(Paths.image('KadeEngineLogo'));
kadeLogo.x -= kadeLogo.width / 2;
kadeLogo.y -= kadeLogo.height / 2 + 100;
text.y -= kadeLogo.height / 2 - 125;
text.x -= 170;
kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6));
kadeLogo.antialiasing = true;
kadeLogo = new FlxSprite(FlxG.width / 2, FlxG.height / 2).loadGraphic(Paths.image('KadeEngineLogo'));
kadeLogo.x -= kadeLogo.width / 2;
kadeLogo.y -= kadeLogo.height / 2 + 100;
text.y -= kadeLogo.height / 2 - 125;
text.x -= 170;
kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6));
kadeLogo.antialiasing = true;
kadeLogo.alpha = 0;
kadeLogo.alpha = 0;
PlayerSettings.init();
#if cpp
if (FlxG.save.data.cacheImages)
{
trace("caching images...");
#if windows
DiscordClient.initialize();
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/shared/images/characters")))
{
if (!i.endsWith(".png"))
continue;
images.push(i);
}
}
Application.current.onExit.add (function (exitCode) {
DiscordClient.shutdown();
});
trace("caching music...");
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/songs")))
{
music.push(i);
}
#end
toBeDone = Lambda.count(images) + Lambda.count(music);
var bar = new FlxBar(10,FlxG.height - 50,FlxBarFillDirection.LEFT_TO_RIGHT,FlxG.width,40,null,"done",0,toBeDone);
bar.color = FlxColor.PURPLE;
add(bar);
add(kadeLogo);
add(text);
trace('starting caching..');
Highscore.load();
#if cpp
// update thread
FlxG.save.bind('funkin', 'ninjamuffin99');
sys.thread.Thread.create(() -> {
while(!loaded)
{
if (toBeDone != 0 && done != toBeDone)
{
var alpha = HelperFunctions.truncateFloat(done / toBeDone * 100,2) / 100;
kadeLogo.alpha = alpha;
text.alpha = alpha;
text.text = "Loading... (" + done + "/" + toBeDone + ")";
}
}
});
KadeEngineData.initSave();
// cache thread
sys.thread.Thread.create(() -> {
cache();
});
#end
super.create();
}
var calledDone = false;
override function update(elapsed)
{
super.update(elapsed);
}
if (FlxG.save.data.cacheImages)
{
trace("caching images...");
function cache()
{
trace("LOADING: " + toBeDone + " OBJECTS.");
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/shared/images/characters")))
{
if (!i.endsWith(".png"))
continue;
images.push(i);
}
}
for (i in images)
{
var replaced = i.replace(".png","");
var data:BitmapData = BitmapData.fromFile("assets/shared/images/characters/" + i);
trace('id ' + replaced + ' file - assets/shared/images/characters/' + i + ' ${data.width}');
var graph = FlxGraphic.fromBitmapData(data);
graph.persist = true;
graph.destroyOnNoUse = false;
bitmapData.set(replaced,graph);
done++;
}
trace("caching music...");
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/songs")))
{
music.push(i);
}
toBeDone = Lambda.count(images) + Lambda.count(music);
var bar = new FlxBar(10,FlxG.height - 50,FlxBarFillDirection.LEFT_TO_RIGHT,FlxG.width,40,null,"done",0,toBeDone);
bar.color = FlxColor.PURPLE;
add(bar);
add(kadeLogo);
add(text);
trace('starting caching..');
// update thread
sys.thread.Thread.create(() -> {
while(!loaded)
{
if (toBeDone != 0 && done != toBeDone)
{
var alpha = HelperFunctions.truncateFloat(done / toBeDone * 100,2) / 100;
kadeLogo.alpha = alpha;
text.alpha = alpha;
text.text = "Loading... (" + done + "/" + toBeDone + ")";
}
}
});
// cache thread
sys.thread.Thread.create(() -> {
cache();
});
super.create();
}
var calledDone = false;
override function update(elapsed)
{
super.update(elapsed);
}
for (i in music)
{
FlxG.sound.cache(Paths.inst(i));
FlxG.sound.cache(Paths.voices(i));
trace("cached " + i);
done++;
}
function cache()
{
trace("Finished caching...");
trace("LOADING: " + toBeDone + " OBJECTS.");
loaded = true;
for (i in images)
{
var replaced = i.replace(".png","");
var data:BitmapData = BitmapData.fromFile("assets/shared/images/characters/" + i);
trace('id ' + replaced + ' file - assets/shared/images/characters/' + i + ' ${data.width}');
var graph = FlxGraphic.fromBitmapData(data);
graph.persist = true;
graph.destroyOnNoUse = false;
bitmapData.set(replaced,graph);
done++;
}
trace(Assets.cache.hasBitmapData('GF_assets'));
for (i in music)
{
FlxG.sound.cache(Paths.inst(i));
FlxG.sound.cache(Paths.voices(i));
trace("cached " + i);
done++;
}
FlxG.switchState(new TitleState());
}
trace("Finished caching...");
loaded = true;
trace(Assets.cache.hasBitmapData('GF_assets'));
FlxG.switchState(new TitleState());
}
}
}