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());
}
}
}

View File

@ -89,6 +89,24 @@ class Main extends Sprite
toggleFPS(FlxG.save.data.fps);
#end
PlayerSettings.init();
#if windows
DiscordClient.initialize();
Application.current.onExit.add (function (exitCode) {
DiscordClient.shutdown();
});
#end
Highscore.load();
FlxG.save.bind('funkin', 'ninjamuffin99');
KadeEngineData.initSave();
}
var game:FlxGame;

View File

@ -67,12 +67,7 @@ class Note extends FlxSprite
this.prevNote = prevNote;
isSustainNote = sustainNote;
this.noteData = noteData;
if (!inCharter)
x = PlayState.strumLineNotes.members[Math.floor(Math.abs(noteData))].x;
else
x += 50;
x += 50;
// MAKE SURE ITS DEFINITELY OFF SCREEN?
y -= 2000;
@ -91,12 +86,16 @@ class Note extends FlxSprite
if (this.strumTime < 0 )
this.strumTime = 0;
this.noteData = noteData;
var daStage:String = PlayState.curStage;
//defaults if no noteStyle was found in chart
var noteTypeCheck:String = 'normal';
if (PlayState.curStage.startsWith('school'))
noteTypeCheck = 'pixel';
if (!inCharter)
if (inCharter)
{
frames = Paths.getSparrowAtlas('NOTE_assets');
@ -180,20 +179,20 @@ class Note extends FlxSprite
noteScore * 0.2;
alpha = 0.6;
x += width / 2 + 17;
if (noteTypeCheck == 'pixel')
x -= 8;
//x += width / 2;
x += width / 2;
originColor = prevNote.originColor;
animation.play(dataColor[originColor] + 'holdend'); // This works both for normal colors and quantization colors
updateHitbox();
//x -= width / 2;
x -= width / 2;
//if (PlayState.curStage.startsWith('school'))
// x += 30;
if (noteTypeCheck == 'pixel')
x += 30;
if (inCharter)
x += 30;
if (prevNote.isSustainNote)
{