Merge pull request #1267 from cuckydev/master
Various fixes and improvements
This commit is contained in:
commit
200f36995a
@ -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());
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -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;
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
|
@ -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)
|
||||||
{
|
{
|
||||||
|
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user