22extends Resource
33class_name LPCSpriteSheet
44
5- @export var SpriteSheet :Texture
5+ @export var SpriteSheet :Texture2D
66@export var Name :String = ""
77
88@export var SpriteType : SpriteTypeEnum
@@ -12,10 +12,11 @@ enum SpriteTypeEnum {
1212 OversizeRod ,
1313 OversizeThrust ,
1414 OversizeSlash ,
15+ OversizeSlashReverse ,
1516 OversizeWhip
1617}
1718
18- var NormalAnimationData :Array [LPCAnimationData ] = [
19+ static var NormalAnimationData :Array [LPCAnimationData ] = [
1920 LPCAnimationData .new (7 ,"CAST_UP" ,0 , 0 ,false ),
2021 LPCAnimationData .new (7 ,"CAST_LEFT" ,1 , 0 ,false ),
2122 LPCAnimationData .new (7 ,"CAST_DOWN" ,2 , 0 ,false ),
@@ -24,14 +25,18 @@ var NormalAnimationData:Array[LPCAnimationData] = [
2425 LPCAnimationData .new (8 ,"THRUST_LEFT" ,5 , 0 ,false ),
2526 LPCAnimationData .new (8 ,"THRUST_DOWN" ,6 , 0 ,false ),
2627 LPCAnimationData .new (8 ,"THRUST_RIGHT" ,7 , 0 ,false ),
27- LPCAnimationData .new (8 ,"WALK_UP" ,8 , 0 ,true ),
28- LPCAnimationData .new (8 ,"WALK_LEFT" ,9 , 0 ,true ),
29- LPCAnimationData .new (8 ,"WALK_DOWN" ,10 , 0 ,true ),
30- LPCAnimationData .new (8 ,"WALK_RIGHT" ,11 , 0 ,true ),
28+ LPCAnimationData .new (8 ,"WALK_UP" ,8 , 1 ,true ),
29+ LPCAnimationData .new (8 ,"WALK_LEFT" ,9 , 1 ,true ),
30+ LPCAnimationData .new (8 ,"WALK_DOWN" ,10 , 1 ,true ),
31+ LPCAnimationData .new (8 ,"WALK_RIGHT" ,11 , 1 ,true ),
3132 LPCAnimationData .new (6 ,"SLASH_UP" ,12 , 0 ,false ),
3233 LPCAnimationData .new (6 ,"SLASH_LEFT" ,13 , 0 ,false ),
3334 LPCAnimationData .new (6 ,"SLASH_DOWN" ,14 , 0 ,false ),
3435 LPCAnimationData .new (6 ,"SLASH_RIGHT" ,15 , 0 ,false ),
36+ LPCAnimationData .new (6 ,"SLASH_REVERSE_UP" , 12 , 0 ,false , 64 , true ),
37+ LPCAnimationData .new (6 ,"SLASH_REVERSE_LEFT" , 13 , 0 ,false , 64 , true ),
38+ LPCAnimationData .new (6 ,"SLASH_REVERSE_DOWN" , 14 , 0 ,false , 64 , true ),
39+ LPCAnimationData .new (6 ,"SLASH_REVERSE_RIGHT" , 15 , 0 ,false , 64 , true ),
3540 LPCAnimationData .new (6 ,"WHIP_UP" ,12 , 0 ,false ),
3641 LPCAnimationData .new (6 ,"WHIP_LEFT" ,13 , 0 ,false ),
3742 LPCAnimationData .new (6 ,"WHIP_DOWN" ,14 , 0 ,false ),
@@ -47,47 +52,110 @@ var NormalAnimationData:Array[LPCAnimationData] = [
4752 LPCAnimationData .new (1 ,"IDLE_RIGHT" ,11 , 0 ,false ),
4853 LPCAnimationData .new (1 ,"HURT_DOWN_LAST" ,20 , 5 ,false ),
4954]
50- var SlashAnimationData :Array [LPCAnimationData ] = [
51- LPCAnimationData .new (6 ,"SLASH_UP" ,0 , 0 ,false ),
52- LPCAnimationData .new (6 ,"SLASH_LEFT" ,1 , 0 ,false ),
53- LPCAnimationData .new (6 ,"SLASH_DOWN" ,2 , 0 ,false ),
54- LPCAnimationData .new (6 ,"SLASH_RIGHT" ,3 , 0 ,false ),
55+
56+ static var SlashAnimationData :Array [LPCAnimationData ] = [
57+ LPCAnimationData .new (6 ,"SLASH_UP" ,0 , 0 ,false , 192 ),
58+ LPCAnimationData .new (6 ,"SLASH_LEFT" ,1 , 0 ,false , 192 ),
59+ LPCAnimationData .new (6 ,"SLASH_DOWN" ,2 , 0 ,false , 192 ),
60+ LPCAnimationData .new (6 ,"SLASH_RIGHT" ,3 , 0 ,false , 192 ),
61+ ]
62+
63+ static var SlashReverseAnimationData :Array [LPCAnimationData ] = [
64+ LPCAnimationData .new (6 ,"SLASH_REVERSE_UP" ,0 , 0 ,false , 192 ),
65+ LPCAnimationData .new (6 ,"SLASH_REVERSE_LEFT" ,1 , 0 ,false , 192 ),
66+ LPCAnimationData .new (6 ,"SLASH_REVERSE_DOWN" ,2 , 0 ,false , 192 ),
67+ LPCAnimationData .new (6 ,"SLASH_REVERSE_RIGHT" ,3 , 0 ,false , 192 ),
68+ ]
69+
70+ static var PrecompiledOversizedSlash :Array [LPCAnimationData ] = [
71+ LPCAnimationData .new (6 ,"SLASH_UP" ,21 , 0 ,false , 192 ),
72+ LPCAnimationData .new (6 ,"SLASH_LEFT" ,22 , 0 ,false , 192 ),
73+ LPCAnimationData .new (6 ,"SLASH_DOWN" ,23 , 0 ,false , 192 ),
74+ LPCAnimationData .new (6 ,"SLASH_RIGHT" ,24 , 0 ,false , 192 ),
75+ ]
76+
77+ static var PrecompiledOversizedSlashReverse :Array [LPCAnimationData ] = [
78+ LPCAnimationData .new (6 ,"SLASH_REVERSE_UP" ,25 , 0 ,false , 192 ),
79+ LPCAnimationData .new (6 ,"SLASH_REVERSE_LEFT" ,26 , 0 ,false , 192 ),
80+ LPCAnimationData .new (6 ,"SLASH_REVERSE_DOWN" ,27 , 0 ,false , 192 ),
81+ LPCAnimationData .new (6 ,"SLASH_REVERSE_RIGHT" ,28 , 0 ,false , 192 ),
82+ ]
83+
84+ static var PrecompiledOversizedThrust :Array [LPCAnimationData ] = [
85+ LPCAnimationData .new (6 ,"THRUST_UP" ,29 , 0 ,false , 192 ),
86+ LPCAnimationData .new (6 ,"THRUST_LEFT" ,30 , 0 ,false , 192 ),
87+ LPCAnimationData .new (6 ,"THRUST_DOWN" ,31 , 0 ,false , 192 ),
88+ LPCAnimationData .new (6 ,"THRUST_RIGHT" ,32 , 0 ,false , 192 ),
5589]
56- var ThrustAnimationData :Array [LPCAnimationData ] = [
90+
91+ static var ThrustAnimationData :Array [LPCAnimationData ] = [
5792 LPCAnimationData .new (6 ,"THRUST_UP" ,0 , 0 ,false ),
5893 LPCAnimationData .new (6 ,"THRUST_LEFT" ,1 , 0 ,false ),
5994 LPCAnimationData .new (6 ,"THRUST_DOWN" ,2 , 0 ,false ),
6095 LPCAnimationData .new (6 ,"THRUST_RIGHT" ,3 , 0 ,false ),
6196]
62- var RodAnimationData :Array [LPCAnimationData ] = [
97+ static var RodAnimationData :Array [LPCAnimationData ] = [
6398 LPCAnimationData .new (6 ,"ROD_UP" ,0 , 0 ,false ),
6499 LPCAnimationData .new (6 ,"ROD_LEFT" ,1 , 0 ,false ),
65100 LPCAnimationData .new (6 ,"ROD_DOWN" ,2 , 0 ,false ),
66101 LPCAnimationData .new (6 ,"ROD_RIGHT" ,3 , 0 ,false ),
67102]
68- var WhipAnimationData :Array [LPCAnimationData ] = [
103+ static var WhipAnimationData :Array [LPCAnimationData ] = [
69104 LPCAnimationData .new (8 ,"WHIP_UP" ,0 , 0 ,false ),
70105 LPCAnimationData .new (8 ,"WHIP_LEFT" ,1 , 0 ,false ),
71106 LPCAnimationData .new (8 ,"WHIP_DOWN" ,2 , 0 ,false ),
72107 LPCAnimationData .new (8 ,"WHIP_RIGHT" ,3 , 0 ,false ),
73108]
74109
75- func Size () -> int :
76- match SpriteType :
77- SpriteTypeEnum .Normal :
78- return 64
79- _ :
80- return 192
110+ enum SpritesheetType
111+ {
112+ SizeNormal ,
113+ Size_6_6_8
114+ }
115+
116+ func GetSpritesheetType ():
117+ if SpriteSheet .get_height () == 3648 :
118+ return SpritesheetType .Size_6_6_8
119+ return SpritesheetType .SizeNormal
120+
121+ func GetSpriteRect (animationData :LPCAnimationData , frame : int ) -> Rect2 :
122+ const startOfOversizedAnimation = 21 ;
123+ var spriteSize :int = animationData .Size
124+ match GetSpritesheetType ():
125+ LPCSpriteSheet .SpritesheetType .SizeNormal :
126+ return Rect2 (spriteSize * (frame + animationData .Col ), spriteSize * animationData .Row , spriteSize , spriteSize )
127+ LPCSpriteSheet .SpritesheetType .Size_6_6_8 :
128+ if animationData .Row < startOfOversizedAnimation :
129+ return Rect2 (spriteSize * (frame + animationData .Col ), spriteSize * animationData .Row , spriteSize , spriteSize )
130+ else :
131+ var startPosition :int = startOfOversizedAnimation * 64
132+ var row = animationData .Row - startOfOversizedAnimation
133+ return Rect2 (spriteSize * (frame + animationData .Col ), startPosition + spriteSize * row , spriteSize , spriteSize )
134+ return Rect2 (spriteSize * (frame + animationData .Col ), spriteSize * animationData .Row , spriteSize , spriteSize )
135+
81136func AnimationData () -> Array [LPCAnimationData ]:
82137 match SpriteType :
83138 SpriteTypeEnum .Normal :
84- return NormalAnimationData
139+ match GetSpritesheetType ():
140+ SpritesheetType .SizeNormal :
141+ return NormalAnimationData
142+ SpritesheetType .Size_6_6_8 :
143+ var animationData :Array [LPCAnimationData ] = []
144+ animationData .append_array (NormalAnimationData )
145+ animationData .append_array (PrecompiledOversizedSlash )
146+ animationData .append_array (PrecompiledOversizedSlashReverse )
147+ animationData .append_array (PrecompiledOversizedThrust )
148+ return animationData
149+ _ :
150+ return NormalAnimationData
85151 SpriteTypeEnum .OversizeRod :
86152 return RodAnimationData
87153 SpriteTypeEnum .OversizeThrust :
88154 return ThrustAnimationData
89155 SpriteTypeEnum .OversizeSlash :
90156 return SlashAnimationData
157+ SpriteTypeEnum .OversizeSlashReverse :
158+ return SlashReverseAnimationData
91159 SpriteTypeEnum .OversizeWhip :
92160 return WhipAnimationData
93161 _ :
0 commit comments