Merge pull request #1267 from cuckydev/master

Various fixes and improvements
This commit is contained in:
Kade M 2021-07-11 15:38:50 -07:00 committed by GitHub
commit 200f36995a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 184 additions and 153 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

@ -51,13 +51,17 @@ class MusicBeatState extends FlxUIState
override function update(elapsed:Float) override function update(elapsed:Float)
{ {
//everyStep(); //everyStep();
var oldStep:Int = curStep; var nextStep:Int = updateCurStep();
updateCurStep(); if (nextStep > curStep && curStep >= 0)
updateBeat(); {
for (i in curStep...nextStep)
if (oldStep != curStep && curStep > 0) {
stepHit(); curStep++;
updateBeat();
stepHit();
}
}
if (FlxG.save.data.fpsRain && skippedFrames >= 6) if (FlxG.save.data.fpsRain && skippedFrames >= 6)
{ {
@ -78,13 +82,13 @@ class MusicBeatState extends FlxUIState
private function updateBeat():Void private function updateBeat():Void
{ {
lastBeat = curStep; lastBeat = curBeat;
curBeat = Math.floor(curStep / 4); curBeat = Math.floor(curStep / 4);
} }
public static var currentColor = 0; public static var currentColor = 0;
private function updateCurStep():Void private function updateCurStep():Int
{ {
var lastChange:BPMChangeEvent = { var lastChange:BPMChangeEvent = {
stepTime: 0, stepTime: 0,
@ -97,12 +101,11 @@ class MusicBeatState extends FlxUIState
lastChange = Conductor.bpmChangeMap[i]; lastChange = Conductor.bpmChangeMap[i];
} }
curStep = lastChange.stepTime + Math.floor((Conductor.songPosition - lastChange.songTime) / Conductor.stepCrochet); return lastChange.stepTime + Math.floor((Conductor.songPosition - lastChange.songTime) / Conductor.stepCrochet);
} }
public function stepHit():Void public function stepHit():Void
{ {
if (curStep % 4 == 0) if (curStep % 4 == 0)
beatHit(); beatHit();
} }

View File

@ -24,19 +24,28 @@ class MusicBeatSubstate extends FlxSubState
override function update(elapsed:Float) override function update(elapsed:Float)
{ {
//everyStep(); //everyStep();
var oldStep:Int = curStep; var nextStep = updateCurStep();
updateCurStep();
curBeat = Math.floor(curStep / 4);
if (oldStep != curStep && curStep > 0)
stepHit();
if (nextStep > curStep && curStep >= 0)
{
for (i in curStep...nextStep)
{
curStep++;
updateBeat();
stepHit();
}
}
super.update(elapsed); super.update(elapsed);
} }
private function updateCurStep():Void private function updateBeat():Void
{
lastBeat = curBeat;
curBeat = Math.floor(curStep / 4);
}
private function updateCurStep():Int
{ {
var lastChange:BPMChangeEvent = { var lastChange:BPMChangeEvent = {
stepTime: 0, stepTime: 0,
@ -49,7 +58,7 @@ class MusicBeatSubstate extends FlxSubState
lastChange = Conductor.bpmChangeMap[i]; lastChange = Conductor.bpmChangeMap[i];
} }
curStep = lastChange.stepTime + Math.floor((Conductor.songPosition - lastChange.songTime) / Conductor.stepCrochet); return lastChange.stepTime + Math.floor((Conductor.songPosition - lastChange.songTime) / Conductor.stepCrochet);
} }
public function stepHit():Void public function stepHit():Void

View File

@ -92,7 +92,8 @@ class Note extends FlxSprite
//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)
{ {

View File

@ -997,6 +997,9 @@ class PlayState extends MusicBeatState
playerStrums = new FlxTypedGroup<FlxSprite>(); playerStrums = new FlxTypedGroup<FlxSprite>();
cpuStrums = new FlxTypedGroup<FlxSprite>(); cpuStrums = new FlxTypedGroup<FlxSprite>();
generateStaticArrows(0);
generateStaticArrows(1);
// startCountdown(); // startCountdown();
if (SONG.song == null) if (SONG.song == null)
@ -1308,8 +1311,9 @@ class PlayState extends MusicBeatState
{ {
inCutscene = false; inCutscene = false;
generateStaticArrows(0); appearStaticArrows();
generateStaticArrows(1); //generateStaticArrows(0);
//generateStaticArrows(1);
#if windows #if windows
// pre lowercasing the song name (startCountdown) // pre lowercasing the song name (startCountdown)
@ -1796,9 +1800,6 @@ class PlayState extends MusicBeatState
{ {
swagNote.x += FlxG.width / 2; // general offset swagNote.x += FlxG.width / 2; // general offset
} }
else
{
}
} }
daBeats += 1; daBeats += 1;
} }
@ -1901,10 +1902,11 @@ class PlayState extends MusicBeatState
babyArrow.updateHitbox(); babyArrow.updateHitbox();
babyArrow.scrollFactor.set(); babyArrow.scrollFactor.set();
babyArrow.alpha = 0;
if (!isStoryMode) if (!isStoryMode)
{ {
babyArrow.y -= 10; babyArrow.y -= 10;
babyArrow.alpha = 0; //babyArrow.alpha = 0;
FlxTween.tween(babyArrow, {y: babyArrow.y + 10, alpha: 1}, 1, {ease: FlxEase.circOut, startDelay: 0.5 + (0.2 * i)}); FlxTween.tween(babyArrow, {y: babyArrow.y + 10, alpha: 1}, 1, {ease: FlxEase.circOut, startDelay: 0.5 + (0.2 * i)});
} }
@ -1934,6 +1936,15 @@ class PlayState extends MusicBeatState
} }
} }
private function appearStaticArrows():Void
{
strumLineNotes.forEach(function(babyArrow:FlxSprite)
{
if (isStoryMode)
babyArrow.alpha = 1;
});
}
function tweenCamIn():Void function tweenCamIn():Void
{ {
FlxTween.tween(FlxG.camera, {zoom: 1.3}, (Conductor.stepCrochet * 4 / 1000), {ease: FlxEase.elasticInOut}); FlxTween.tween(FlxG.camera, {zoom: 1.3}, (Conductor.stepCrochet * 4 / 1000), {ease: FlxEase.elasticInOut});
@ -2800,7 +2811,11 @@ class PlayState extends MusicBeatState
} }
if (daNote.isSustainNote) if (daNote.isSustainNote)
{
daNote.x += daNote.width / 2 + 17; daNote.x += daNote.width / 2 + 17;
if (PlayState.curStage.startsWith('school'))
daNote.x -= 8;
}
// trace(daNote.y); // trace(daNote.y);
// WIP interpolation shit? Need to fix the pause issue // WIP interpolation shit? Need to fix the pause issue