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 haxe.Exception;
import flixel.tweens.FlxEase; import flixel.tweens.FlxEase;
import flixel.tweens.FlxTween; import flixel.tweens.FlxTween;
#if cpp
import sys.FileSystem; import sys.FileSystem;
import sys.io.File; import sys.io.File;
#end
import flixel.FlxG; import flixel.FlxG;
import flixel.FlxSprite; import flixel.FlxSprite;
import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond; import flixel.addons.transition.FlxTransitionSprite.GraphicTransTileDiamond;
@ -29,161 +31,144 @@ using StringTools;
class Caching extends MusicBeatState class Caching extends MusicBeatState
{ {
var toBeDone = 0; var toBeDone = 0;
var done = 0; var done = 0;
var loaded = false; var loaded = false;
var text:FlxText; var text:FlxText;
var kadeLogo:FlxSprite; var kadeLogo:FlxSprite;
public static var bitmapData:Map<String,FlxGraphic>; public static var bitmapData:Map<String,FlxGraphic>;
var images = []; var images = [];
var music = []; var music = [];
var charts = []; var charts = [];
override function create() 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 = new FlxText(FlxG.width / 2, FlxG.height / 2 + 300,0,"Loading...");
text.size = 34; text.size = 34;
text.alignment = FlxTextAlign.CENTER; text.alignment = FlxTextAlign.CENTER;
text.alpha = 0; text.alpha = 0;
kadeLogo = new FlxSprite(FlxG.width / 2, FlxG.height / 2).loadGraphic(Paths.image('KadeEngineLogo')); kadeLogo = new FlxSprite(FlxG.width / 2, FlxG.height / 2).loadGraphic(Paths.image('KadeEngineLogo'));
kadeLogo.x -= kadeLogo.width / 2; kadeLogo.x -= kadeLogo.width / 2;
kadeLogo.y -= kadeLogo.height / 2 + 100; kadeLogo.y -= kadeLogo.height / 2 + 100;
text.y -= kadeLogo.height / 2 - 125; text.y -= kadeLogo.height / 2 - 125;
text.x -= 170; text.x -= 170;
kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6)); kadeLogo.setGraphicSize(Std.int(kadeLogo.width * 0.6));
kadeLogo.antialiasing = true; kadeLogo.antialiasing = true;
kadeLogo.alpha = 0; kadeLogo.alpha = 0;
PlayerSettings.init(); #if cpp
if (FlxG.save.data.cacheImages)
{
trace("caching images...");
#if windows for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/shared/images/characters")))
DiscordClient.initialize(); {
if (!i.endsWith(".png"))
continue;
images.push(i);
}
}
Application.current.onExit.add (function (exitCode) { trace("caching music...");
DiscordClient.shutdown();
}); for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/songs")))
{
music.push(i);
}
#end #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) function cache()
{ {
trace("caching images..."); trace("LOADING: " + toBeDone + " OBJECTS.");
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/shared/images/characters"))) for (i in images)
{ {
if (!i.endsWith(".png")) var replaced = i.replace(".png","");
continue; var data:BitmapData = BitmapData.fromFile("assets/shared/images/characters/" + i);
images.push(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 music)
{
for (i in FileSystem.readDirectory(FileSystem.absolutePath("assets/songs"))) FlxG.sound.cache(Paths.inst(i));
{ FlxG.sound.cache(Paths.voices(i));
music.push(i); trace("cached " + i);
} done++;
}
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);
}
function cache() trace("Finished caching...");
{
trace("LOADING: " + toBeDone + " OBJECTS."); loaded = true;
for (i in images) trace(Assets.cache.hasBitmapData('GF_assets'));
{
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++;
}
for (i in music) FlxG.switchState(new TitleState());
{ }
FlxG.sound.cache(Paths.inst(i));
FlxG.sound.cache(Paths.voices(i));
trace("cached " + i);
done++;
}
}
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); toggleFPS(FlxG.save.data.fps);
#end #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; var game:FlxGame;

View File

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