struct image { int id = 0 string filename = filename@1 } struct spriteset { ptr:image img = @1 int gridx = @2 int gridy = @3 } struct sprite { ptr:spriteset set = parent int x = @1 int y = @2 int w = @3 int h = @4 } struct sound { int id = 0 string filename = @0 } struct soundset { int last = 0 array:sound sounds = * } struct spriteptr { ptr:sprite psprite = @0 } struct weapon { ptr:sprite sprite_body = sprite_body@1 ptr:sprite sprite_cursor = sprite_cursor@1 ptr:sprite sprite_proj = sprite_proj@1 array:spriteptr sprite_muzzle = sprite_muzzles.* int nummuzzlesprites = nummuzzlesprites@1 int recoil = recoil@1 int visual_size = visual_size@1 int muzzleduration = muzzleduration@1 float offsetx = offsetx@1 float offsety = offsety@1 float muzzleoffsetx = muzzleoffsetx@1 float muzzleoffsety = muzzleoffsety@1 } struct keyframe { float time = @0 float x = @1 float y = @2 float angle = @3 } struct sequence { array:keyframe frames = * } struct animation { instance:sequence body = body instance:sequence back_foot = back_foot instance:sequence front_foot = front_foot instance:sequence attach = attach } struct data_container { array:image images = images.* array:spriteset spritesets = sprites.* array:sprite sprites = sprites.*.* array:weapon weapons = weapons.* array:soundset sounds = sounds.* array:animation animations = animations.* } const array:int weapon = weapons.* const array:int sound = sounds.* const array:int image = images.* const array:int sprite = sprites.*.* const array:int anim = animations.* const array:int powerup = powerups.*