mirror of
https://github.com/FunkinCrew/Funkin.git
synced 2024-12-17 19:42:22 -05:00
111 lines
2.3 KiB
Haxe
111 lines
2.3 KiB
Haxe
package funkin.ui.freeplay;
|
|
|
|
import flixel.group.FlxSpriteGroup;
|
|
import funkin.graphics.adobeanimate.FlxAtlasSprite;
|
|
import funkin.graphics.shaders.HSVShader;
|
|
|
|
class DifficultyStars extends FlxSpriteGroup
|
|
{
|
|
/**
|
|
* Internal handler var for difficulty... ranges from 0... to 15
|
|
* 0 is 1 star... 15 is 0 stars!
|
|
*/
|
|
var curDifficulty(default, set):Int = 0;
|
|
|
|
/**
|
|
* Range between 0 and 15
|
|
*/
|
|
public var difficulty(default, set):Int = 1;
|
|
|
|
public var stars:FlxAtlasSprite;
|
|
|
|
public var flames:FreeplayFlames;
|
|
|
|
var hsvShader:HSVShader;
|
|
|
|
public function new(x:Float, y:Float)
|
|
{
|
|
super(x, y);
|
|
|
|
hsvShader = new HSVShader();
|
|
|
|
flames = new FreeplayFlames(0, 0);
|
|
add(flames);
|
|
|
|
stars = new FlxAtlasSprite(0, 0, Paths.animateAtlas("freeplay/freeplayStars"));
|
|
stars.anim.play("diff stars");
|
|
add(stars);
|
|
|
|
stars.shader = hsvShader;
|
|
|
|
for (memb in flames.members)
|
|
memb.shader = hsvShader;
|
|
}
|
|
|
|
override function update(elapsed:Float):Void
|
|
{
|
|
super.update(elapsed);
|
|
|
|
// "loops" the current animation
|
|
// for clarity, the animation file looks like
|
|
// frame : stars
|
|
// 0-99: 1 star
|
|
// 100-199: 2 stars
|
|
// ......
|
|
// 1300-1499: 15 stars
|
|
// 1500 : 0 stars
|
|
if (curDifficulty < 15 && stars.anim.curFrame >= (curDifficulty + 1) * 100)
|
|
{
|
|
stars.anim.play("diff stars", true, false, curDifficulty * 100);
|
|
}
|
|
}
|
|
|
|
function set_difficulty(value:Int):Int
|
|
{
|
|
difficulty = value;
|
|
|
|
if (difficulty <= 0)
|
|
{
|
|
difficulty = 0;
|
|
curDifficulty = 15;
|
|
}
|
|
else if (difficulty <= 15)
|
|
{
|
|
difficulty = value;
|
|
curDifficulty = difficulty - 1;
|
|
}
|
|
else
|
|
{
|
|
difficulty = 15;
|
|
curDifficulty = difficulty - 1;
|
|
}
|
|
|
|
flameCheck();
|
|
|
|
return difficulty;
|
|
}
|
|
|
|
public function flameCheck():Void
|
|
{
|
|
if (difficulty > 10) flames.flameCount = difficulty - 10;
|
|
else
|
|
flames.flameCount = 0;
|
|
}
|
|
|
|
function set_curDifficulty(value:Int):Int
|
|
{
|
|
curDifficulty = value;
|
|
if (curDifficulty == 15)
|
|
{
|
|
stars.anim.play("diff stars", true, false, 1500);
|
|
stars.anim.pause();
|
|
}
|
|
else
|
|
{
|
|
stars.anim.curFrame = Std.int(curDifficulty * 100);
|
|
stars.anim.play("diff stars", true, false, curDifficulty * 100);
|
|
}
|
|
|
|
return curDifficulty;
|
|
}
|
|
}
|