extends Node2D enum Battle_Frame { STAND, GUARD, WALK, DOWN, R_SWING, L_SWING2, L_SWING, CHEER, RECOIL, CHANT1, CHANT2, } enum Battle_Anim { STAND, GUARD, WALK, DOWN, R_SWING, L_SWING, CHEER, RECOIL, CHANT } var texture: Texture var animation = Battle_Anim.STAND # Battle_Anim enums aren't real types in GDscript :/ const Animation_Frames = { Battle_Anim.STAND: [Battle_Frame.STAND], Battle_Anim.GUARD: [Battle_Frame.GUARD], Battle_Anim.WALK: [Battle_Frame.WALK, Battle_Frame.STAND], Battle_Anim.DOWN: [Battle_Frame.DOWN], Battle_Anim.R_SWING: [Battle_Frame.R_SWING, Battle_Frame.WALK], Battle_Anim.L_SWING: [Battle_Frame.L_SWING, Battle_Frame.L_SWING2], Battle_Anim.CHEER: [Battle_Frame.CHEER, Battle_Frame.STAND], Battle_Anim.RECOIL: [Battle_Frame.RECOIL], Battle_Anim.CHANT: [Battle_Frame.CHANT1, Battle_Frame.CHANT2] } func _init(): material = SpriteLoader.shader_material.duplicate() # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(_delta): update() # pass func _draw(): var frames = Animation_Frames[animation] var frame = frames[int(globals.time*4) % len(frames)] var y = 0 if frame == Battle_Frame.CHEER: y -= 1 #draw_texture(texture, Vector2(0, 0)) draw_texture_rect_region(texture, Rect2(0, y, 16, 24), Rect2(0, 24*frame, 16, 24))