1
0
Fork 0
mirror of https://github.com/ninjamuffin99/Funkin.git synced 2025-09-03 20:28:04 +00:00
Funkin/source/funkin/play/character/PackerCharacter.hx

83 lines
2 KiB
Haxe
Raw Permalink Normal View History

package funkin.play.character;
2022-03-23 05:18:23 +00:00
import flixel.graphics.frames.FlxFramesCollection;
import funkin.modding.events.ScriptEvent;
import funkin.play.character.CharacterData.CharacterRenderType;
2022-03-23 05:18:23 +00:00
import funkin.util.assets.FlxAnimationUtil;
/**
* A PackerCharacter is a Character which is rendered by
* displaying an animation derived from a Packer spritesheet file.
*/
class PackerCharacter extends BaseCharacter
{
2023-01-23 00:55:30 +00:00
public function new(id:String)
{
super(id, CharacterRenderType.Packer);
2023-01-23 00:55:30 +00:00
}
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
override function onCreate(event:ScriptEvent):Void
{
2024-09-25 01:33:00 +00:00
// Display a custom scope for debugging purposes.
#if FEATURE_DEBUG_TRACY
cpp.vm.tracy.TracyProfiler.zoneScoped('PackerCharacter.create(${this.characterId})');
#end
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
loadSpritesheet();
loadAnimations();
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
super.onCreate(event);
}
2022-03-23 05:18:23 +00:00
function loadSpritesheet():Void
2023-01-23 00:55:30 +00:00
{
2024-09-25 01:33:00 +00:00
trace('Loading assets for Packer character "${characterId}"', flixel.util.FlxColor.fromString("#89CFF0"));
2022-03-23 05:18:23 +00:00
2024-07-16 09:52:51 +00:00
var tex:FlxFramesCollection = Paths.getPackerAtlas(_data.assetPath);
2023-01-23 00:55:30 +00:00
if (tex == null)
{
trace('Could not load Packer sprite: ${_data.assetPath}');
return;
}
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
this.frames = tex;
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
if (_data.isPixel)
{
2023-06-15 04:29:18 +00:00
this.isPixel = true;
2023-01-23 00:55:30 +00:00
this.antialiasing = false;
// pixelPerfectRender = true;
// pixelPerfectPosition = true;
2023-01-23 00:55:30 +00:00
}
else
{
2023-06-15 04:29:18 +00:00
this.isPixel = false;
2023-01-23 00:55:30 +00:00
this.antialiasing = true;
}
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
this.setScale(_data.scale);
}
2022-03-23 05:18:23 +00:00
function loadAnimations():Void
2023-01-23 00:55:30 +00:00
{
trace('[PACKERCHAR] Loading ${_data.animations.length} animations for ${characterId}');
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
FlxAnimationUtil.addAtlasAnimations(this, _data.animations);
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
for (anim in _data.animations)
{
if (anim.offsets == null)
{
setAnimationOffsets(anim.name, 0, 0);
}
else
{
setAnimationOffsets(anim.name, anim.offsets[0], anim.offsets[1]);
}
}
2022-03-23 05:18:23 +00:00
2023-01-23 00:55:30 +00:00
var animNames = this.animation.getNameList();
trace('[PACKERCHAR] Successfully loaded ${animNames.length} animations for ${characterId}');
}
}