Funkin/source/funkin/ui/story/LevelProp.hx

66 lines
1.6 KiB
Haxe
Raw Normal View History

package funkin.ui.story;
2023-05-17 16:42:58 -04:00
import funkin.play.stage.Bopper;
import funkin.util.assets.FlxAnimationUtil;
import funkin.data.level.LevelData;
class LevelProp extends Bopper
{
public function new(danceEvery:Int)
{
super(danceEvery);
}
2023-05-17 16:42:58 -04:00
public function playConfirm():Void
{
playAnimation('confirm', true, true);
}
public static function build(propData:Null<LevelPropData>):Null<LevelProp>
{
if (propData == null) return null;
var isAnimated:Bool = propData.animations.length > 0;
var prop:LevelProp = new LevelProp(propData.danceEvery);
if (isAnimated)
{
// Initalize sprite frames.
// Sparrow atlas only LEL.
prop.frames = Paths.getSparrowAtlas(propData.assetPath);
}
else
{
// Initalize static sprite.
prop.loadGraphic(Paths.image(propData.assetPath));
// Disables calls to update() for a performance boost.
prop.active = false;
}
if (prop.frames == null || prop.frames.numFrames == 0)
{
trace('ERROR: Could not build texture for level prop (${propData.assetPath}).');
return null;
}
2023-05-17 16:42:58 -04:00
var scale:Float = propData.scale * (propData.isPixel ? 6 : 1);
prop.scale.set(scale, scale);
prop.antialiasing = !propData.isPixel;
prop.alpha = propData.alpha;
prop.x = propData.offsets[0];
prop.y = propData.offsets[1];
FlxAnimationUtil.addAtlasAnimations(prop, propData.animations);
for (propAnim in propData.animations)
{
prop.setAnimationOffsets(propAnim.name, propAnim.offsets[0], propAnim.offsets[1]);
}
2023-05-17 16:42:58 -04:00
prop.dance();
prop.animation.paused = true;
return prop;
}
}