mirror of
https://github.com/ninjamuffin99/Funkin.git
synced 2024-12-26 23:16:46 +00:00
80 lines
1.9 KiB
Haxe
80 lines
1.9 KiB
Haxe
package funkin.ui;
|
|
|
|
import flixel.FlxSprite;
|
|
|
|
/**
|
|
* The icon that gets used for Freeplay capsules and char select
|
|
* NOT to be confused with the CharIcon class, which is for the in-game icons
|
|
*/
|
|
class PixelatedIcon extends FlxSprite
|
|
{
|
|
public function new(x:Float, y:Float)
|
|
{
|
|
super(x, y);
|
|
this.makeGraphic(32, 32, 0x00000000);
|
|
this.antialiasing = false;
|
|
this.active = false;
|
|
}
|
|
|
|
public function setCharacter(char:String):Void
|
|
{
|
|
var charPath:String = "freeplay/icons/";
|
|
|
|
switch (char)
|
|
{
|
|
case 'monster-christmas':
|
|
charPath += 'monsterpixel';
|
|
case 'mom-car':
|
|
charPath += 'mommypixel';
|
|
case 'darnell-blazin':
|
|
charPath += 'darnellpixel';
|
|
case 'senpai-angry':
|
|
charPath += 'senpaipixel';
|
|
default:
|
|
charPath += '${char}pixel';
|
|
}
|
|
|
|
if (!openfl.utils.Assets.exists(Paths.image(charPath)))
|
|
{
|
|
trace('[WARN] Character ${char} has no freeplay icon.');
|
|
return;
|
|
}
|
|
|
|
var isAnimated = openfl.utils.Assets.exists(Paths.file('images/$charPath.xml'));
|
|
|
|
if (isAnimated)
|
|
{
|
|
this.frames = Paths.getSparrowAtlas(charPath);
|
|
}
|
|
else
|
|
{
|
|
this.loadGraphic(Paths.image(charPath));
|
|
}
|
|
|
|
this.scale.x = this.scale.y = 2;
|
|
|
|
switch (char)
|
|
{
|
|
case 'parents-christmas':
|
|
this.origin.x = 140;
|
|
default:
|
|
this.origin.x = 100;
|
|
}
|
|
|
|
if (isAnimated)
|
|
{
|
|
this.active = true;
|
|
this.animation.addByPrefix('idle', 'idle0', 10, true);
|
|
this.animation.addByPrefix('confirm', 'confirm0', 10, false);
|
|
this.animation.addByPrefix('confirm-hold', 'confirm-hold0', 10, true);
|
|
|
|
this.animation.finishCallback = function(name:String):Void {
|
|
trace('Finish pixel animation: ${name}');
|
|
if (name == 'confirm') this.animation.play('confirm-hold');
|
|
};
|
|
|
|
this.animation.play('idle');
|
|
}
|
|
}
|
|
}
|