Skip to content

Commit 0afbbbf

Browse files
committed
Fix crash when passing assets path in event pack
1 parent 200d8e3 commit 0afbbbf

File tree

1 file changed

+28
-7
lines changed

1 file changed

+28
-7
lines changed

source/funkin/editors/charter/CharterEvent.hx

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package funkin.editors.charter;
22

3+
import flixel.system.FlxAssets.FlxGraphicAsset;
34
import funkin.editors.charter.Charter.ICharterSelectable;
45
import flixel.math.FlxPoint;
56
import funkin.game.Character;
@@ -47,14 +48,34 @@ class CharterEvent extends UISliceSprite implements ICharterSelectable {
4748
private static function generateDefaultIcon(name:String) {
4849
var isBase64:Bool = false;
4950
var path:String = Paths.image('editors/charter/event-icons/$name');
50-
if (!Assets.exists(path)) path = Paths.image('editors/charter/event-icons/Unknown');
51-
if (Assets.exists(Paths.pack('events/$name'))) {
52-
var packimg = Assets.getText(Paths.pack('events/$name')).split('________PACKSEP________')[3];
53-
if (isBase64 = (packimg != null))
54-
path = Assets.getText(Paths.pack('events/$name')).split('________PACKSEP________')[3];
51+
var defaultPath = Paths.image('editors/charter/event-icons/Unknown');
52+
if (!Assets.exists(path)) path = defaultPath;
53+
54+
var packPath = Paths.pack('events/$name');
55+
if (Assets.exists(packPath)) {
56+
var packText = Assets.getText(packPath).split('________PACKSEP________');
57+
var packImg = packText[3];
58+
if(packImg != null && packImg.length > 0) {
59+
isBase64 = !packImg.startsWith("assets/");
60+
path = packImg;
61+
}
62+
}
63+
path = path.trim();
64+
65+
var graphic:FlxGraphicAsset = try {
66+
isBase64 ? openfl.display.BitmapData.fromBase64(path, 'UTF8') : path;
67+
} catch(e:Dynamic) {
68+
Logs.trace('Failed to load event icon: ${e.toString()}', ERROR);
69+
isBase64 = false;
70+
defaultPath;
5571
}
56-
var spr = new FlxSprite().loadGraphic(isBase64 ? openfl.display.BitmapData.fromBase64(path.trim(), 'UTF8') : path);
57-
return spr;
72+
73+
if(!isBase64) {
74+
if (!Assets.exists(graphic))
75+
graphic = defaultPath;
76+
}
77+
78+
return new FlxSprite().loadGraphic(graphic);
5879
}
5980

6081
public static function generateEventIcon(event:ChartEvent) {

0 commit comments

Comments
 (0)