package funkin.ui.transition.stickers; import funkin.data.stickers.StickerData; import funkin.data.stickers.StickerRegistry; import funkin.data.IRegistryEntry; import funkin.graphics.FunkinSprite; /** * A class representing the data for a sticker pack as displayed in the Sticker SubState. */ class StickerPack implements IRegistryEntry { /** * The internal ID for this sticker pack. */ public final id:String; /** * The full data for this sticker pack. */ public final _data:StickerData; public function new(id:String, ?params:Dynamic) { this.id = id; this._data = _fetchData(id); if (_data == null) { throw 'Could not parse sticker pack data for id: $id'; } } /** * Return the name of the sticker pack. * @return The name of the sticker pack */ public function getStickerPackName():String { return _data.name; } /** * Return the artist of the sticker pack. * @return The list of artists */ public function getStickerPackArtist():String { return _data.artist; } /** * Gets a list of all the sticker assets available in the pack. * @return The list of stickers as raw strings. */ public function getStickers():Array { return _data.stickers; } /** * Retrieve a random sticker from the pack. * @param last Whether this will be the last sticker to be placed on the screen. * @return An asset path to a sticker to display. */ public function getRandomStickerPath(last:Bool):String { return FlxG.random.getObject(getStickers()); } public function toString():String { return 'StickerPack($id)'; } public function destroy():Void {} static function _fetchData(id:String):Null { return StickerRegistry.instance.parseEntryDataWithMigration(id, StickerRegistry.instance.fetchEntryVersion(id)); } }