diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-06-12 10:51:48 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2008-06-12 10:51:48 +0000 |
| commit | f6c67c29cd10d41b877ee1319801edc01b625e72 (patch) | |
| tree | 6ca26c44ac0218a57d078a6f72034f2924b44104 /datasrc/content.py | |
| parent | 0d3b988c1aed8f6b91879a801253db81a251a532 (diff) | |
| download | zcatch-f6c67c29cd10d41b877ee1319801edc01b625e72.tar.gz zcatch-f6c67c29cd10d41b877ee1319801edc01b625e72.zip | |
large commit with loads of clean up. more is comming
Diffstat (limited to 'datasrc/content.py')
| -rw-r--r-- | datasrc/content.py | 808 |
1 files changed, 467 insertions, 341 deletions
diff --git a/datasrc/content.py b/datasrc/content.py index 6eb671a6..3a2bfe35 100644 --- a/datasrc/content.py +++ b/datasrc/content.py @@ -1,350 +1,476 @@ import copy - -class SoundSet: - def __init__(self, name, files): - self.name = name - self.files = files - -class Image: - def __init__(self, name, filename): - self.name = name - self.filename = filename - -class Pickup: - def __init__(self, name, respawntime=15, spawndelay=0): - self.name = name - self.respawntime = respawntime - self.spawndelay = spawndelay - -class Variable: - def __init__(self, name, value): - self.name = name - self.value = value - -class Int(Variable): - def emit_declaration(self): - return ["int %s;"%self.name] - def emit_definition(self): - return ["%d"%self.value] - -class Float(Variable): - def emit_declaration(self): - return ["float %s;"%self.name] - def emit_definition(self): - return ["%ff"%self.value] +from datatypes import * + +class Sound(Struct): + def __init__(self, filename=""): + Struct.__init__(self, "SOUND") + self.id = Int(0) + self.filename = String(filename) + +class SoundSet(Struct): + def __init__(self, name="", files=[]): + Struct.__init__(self, "SOUNDSET") + self.name = String(name) + self.sounds = Array(Sound()) + self.last = Int(-1) + for name in files: + self.sounds.Add(Sound(name)) + +class Image(Struct): + def __init__(self, name="", filename=""): + Struct.__init__(self, "IMAGE") + self.name = String(name) + self.filename = String(filename) + self.id = Int(-1) -class String(Variable): - def emit_declaration(self): - return ["const char *%s;"%self.name] - def emit_definition(self): - return ['"%s"'%self.value] - -class SpriteRef(Variable): - def emit_declaration(self): - return ["SPRITE *%s;"%self.name] - def emit_definition(self): - return ['&sprites[SPRITE_%s]'%self.value.upper()] - -class SpriteSet: - def __init__(self, image, grid, sprites): - self.image = image - self.grid = grid - self.sprites = sprites +class SpriteSet(Struct): + def __init__(self, name="", image=None, gridx=0, gridy=0): + Struct.__init__(self, "SPRITESET") + self.image = Pointer(Image, image) # TODO + self.gridx = Int(gridx) + self.gridy = Int(gridy) + +class Sprite(Struct): + def __init__(self, name="", Set=None, x=0, y=0, w=0, h=0): + Struct.__init__(self, "SPRITE") + self.name = String(name) + self.set = Pointer(SpriteSet, Set) # TODO + self.x = Int(x) + self.y = Int(y) + self.w = Int(w) + self.h = Int(h) + +class Pickup(Struct): + def __init__(self, name="", respawntime=20, spawndelay=0): + Struct.__init__(self, "PICKUPSPEC") + self.name = String(name) + self.respawntime = Int(respawntime) + self.spawndelay = Int(spawndelay) + +class AnimKeyframe(Struct): + def __init__(self, time=0, x=0, y=0, angle=0): + Struct.__init__(self, "ANIM_KEYFRAME") + self.time = Float(time) + self.x = Float(x) + self.y = Float(y) + self.angle = Float(angle) + +class AnimSequence(Struct): + def __init__(self): + Struct.__init__(self, "ANIM_SEQUENCE") + self.frames = Array(AnimKeyframe()) + +class Animation(Struct): + def __init__(self, name=""): + Struct.__init__(self, "ANIMATION") + self.name = String(name) + self.body = AnimSequence() + self.back_foot = AnimSequence() + self.front_foot = AnimSequence() + self.attach = AnimSequence() + +class WeaponSpec(Struct): + def __init__(self, container=None, name=""): + Struct.__init__(self, "WEAPONSPEC") + self.name = String(name) + self.sprite_body = Pointer(Sprite, Sprite()) + self.sprite_cursor = Pointer(Sprite, Sprite()) + self.sprite_proj = Pointer(Sprite, Sprite()) + self.sprite_muzzles = Array(Pointer(Sprite, Sprite())) + self.visual_size = Int(96) -class Sprite: - def __init__(self, name, pos): - self.name = name - self.pos = pos - -# TODO: rename this -class FieldStorage: - def __init__(self, name, base, fields): - self.name = name - self.fields = [] - if base: - self.fields = copy.deepcopy(base.fields) - self.base = base - self.baselen = len(self.fields) + self.firedelay = Int(500) + self.maxammo = Int(10) + self.ammoregentime = Int(0) + self.damage = Int(1) + + self.offsetx = Float(0) + self.offsety = Float(0) + self.muzzleoffsetx = Float(0) + self.muzzleoffsety = Float(0) + self.muzzleduration = Float(5) + + # dig out sprites if we have a container + if container: + for sprite in container.sprites.items: + if sprite.name.value == "weapon_"+name+"_body": self.sprite_body.Set(sprite) + elif sprite.name.value == "weapon_"+name+"_cursor": self.sprite_cursor.Set(sprite) + elif sprite.name.value == "weapon_"+name+"_proj": self.sprite_proj.Set(sprite) + elif "weapon_"+name+"_muzzle" in sprite.name.value: + self.sprite_muzzles.Add(Pointer(Sprite, sprite)) + +class Weapon_Hammer(Struct): + def __init__(self): + Struct.__init__(self, "WEAPONSPEC_HAMMER") + self.base = Pointer(WeaponSpec, WeaponSpec()) + +class Weapon_Gun(Struct): + def __init__(self): + Struct.__init__(self, "WEAPONSPEC_GUN") + self.base = Pointer(WeaponSpec, WeaponSpec()) + self.curvature = Float(1.25) + self.speed = Float(2200) + self.lifetime = Float(2.0) - self.autoupdate() +class Weapon_Shotgun(Struct): + def __init__(self): + Struct.__init__(self, "WEAPONSPEC_SHOTGUN") + self.base = Pointer(WeaponSpec, WeaponSpec()) + self.curvature = Float(1.25) + self.speed = Float(2200) + self.speeddiff = Float(0.8) + self.lifetime = Float(0.25) + +class Weapon_Grenade(Struct): + def __init__(self): + Struct.__init__(self, "WEAPONSPEC_GRENADE") + self.base = Pointer(WeaponSpec, WeaponSpec()) + self.curvature = Float(7.0) + self.speed = Float(1000) + self.lifetime = Float(2.0) + +class Weapon_Rifle(Struct): + def __init__(self): + Struct.__init__(self, "WEAPONSPEC_RIFLE") + self.base = Pointer(WeaponSpec, WeaponSpec()) + self.reach = Float(800.0) + self.bounce_delay = Int(150) + self.bounce_num = Int(1) + self.bounce_cost = Float(0) - self.update_all(fields) - - def update_all(self, fields): - for v in fields: - if not self.update(v): - self.fields += [v] - - def update(self, value): - for i in xrange(0, len(self.fields)): - if self.fields[i].name == value.name: - self.fields[i] = value - return True - return False - - def autoupdate(self): - pass +class Weapon_Ninja(Struct): + def __init__(self): + Struct.__init__(self, "WEAPONSPEC_NINJA") + self.base = Pointer(WeaponSpec, WeaponSpec()) + self.duration = Int(15000) + self.movetime = Int(200) + self.velocity = Int(50) + +class Weapons(Struct): + def __init__(self): + Struct.__init__(self, "WEAPONSPECS") + self.hammer = Weapon_Hammer() + self.gun = Weapon_Hammer() + self.shotgun = Weapon_Shotgun() + self.grenade = Weapon_Grenade() + self.rifle = Weapon_Rifle() + self.ninja = Weapon_Ninja() + self.id = Array(WeaponSpec()) + +class DataContainer(Struct): + def __init__(self): + Struct.__init__(self, "DATACONTAINER") + self.sounds = Array(SoundSet()) + self.images = Array(Image()) + self.pickups = Array(Pickup()) + self.spritesets = Array(SpriteSet()) + self.sprites = Array(Sprite()) + self.animations = Array(Animation()) + self.weapons = Weapons() def FileList(format, num): - return [format%x for x in xrange(1,num)] + return [format%(x+1) for x in xrange(0,num)] + +container = DataContainer() +container.sounds.Add(SoundSet("gun_fire", FileList("data/audio/wp_gun_fire-%02d.wv", 3))) +container.sounds.Add(SoundSet("shotgun_fire", FileList("data/audio/wp_shotty_fire-%02d.wv", 3))) + +container.sounds.Add(SoundSet("grenade_fire", FileList("data/audio/wp_flump_launch-%02d.wv", 3))) +container.sounds.Add(SoundSet("hammer_fire", FileList("data/audio/wp_hammer_swing-%02d.wv", 3))) +container.sounds.Add(SoundSet("hammer_hit", FileList("data/audio/wp_hammer_hit-%02d.wv", 3))) +container.sounds.Add(SoundSet("ninja_fire", FileList("data/audio/wp_ninja_attack-%02d.wv", 3))) +container.sounds.Add(SoundSet("grenade_explode", FileList("data/audio/wp_flump_explo-%02d.wv", 3))) +container.sounds.Add(SoundSet("ninja_hit", FileList("data/audio/wp_ninja_hit-%02d.wv", 3))) +container.sounds.Add(SoundSet("rifle_fire", FileList("data/audio/wp_rifle_fire-%02d.wv", 3))) +container.sounds.Add(SoundSet("rifle_bounce", FileList("data/audio/wp_rifle_bnce-%02d.wv", 3))) +container.sounds.Add(SoundSet("weapon_switch", FileList("data/audio/wp_switch-%02d.wv", 3))) + +container.sounds.Add(SoundSet("player_pain_short", FileList("data/audio/vo_teefault_pain_short-%02d.wv", 12))) +container.sounds.Add(SoundSet("player_pain_long", FileList("data/audio/vo_teefault_pain_long-%02d.wv", 2))) + +container.sounds.Add(SoundSet("body_land", FileList("data/audio/foley_land-%02d.wv", 4))) +container.sounds.Add(SoundSet("player_airjump", FileList("data/audio/foley_dbljump-%02d.wv", 3))) +container.sounds.Add(SoundSet("player_jump", FileList("data/audio/foley_foot_left-%02d.wv", 4) + FileList("data/audio/foley_foot_right-%02d.wv", 4))) +container.sounds.Add(SoundSet("player_die", FileList("data/audio/foley_body_splat-%02d.wv", 3))) +container.sounds.Add(SoundSet("player_spawn", FileList("data/audio/vo_teefault_spawn-%02d.wv", 7))) +container.sounds.Add(SoundSet("player_skid", FileList("data/audio/sfx_skid-%02d.wv", 4))) +container.sounds.Add(SoundSet("tee_cry", FileList("data/audio/vo_teefault_cry-%02d.wv", 2))) + +container.sounds.Add(SoundSet("hook_loop", FileList("data/audio/hook_loop-%02d.wv", 2))) + +container.sounds.Add(SoundSet("hook_attach_ground", FileList("data/audio/hook_attach-%02d.wv", 3))) +container.sounds.Add(SoundSet("hook_attach_player", FileList("data/audio/foley_body_impact-%02d.wv", 3))) +container.sounds.Add(SoundSet("pickup_health", FileList("data/audio/sfx_pickup_hrt-%02d.wv", 2))) +container.sounds.Add(SoundSet("pickup_armor", FileList("data/audio/sfx_pickup_arm-%02d.wv", 4))) + +container.sounds.Add(SoundSet("pickup_grenade", FileList("data/audio/sfx_pickup_arm-%02d.wv", 1))) +container.sounds.Add(SoundSet("pickup_shotgun", FileList("data/audio/sfx_pickup_arm-%02d.wv", 1))) +container.sounds.Add(SoundSet("pickup_ninja", FileList("data/audio/sfx_pickup_arm-%02d.wv", 1))) +container.sounds.Add(SoundSet("weapon_spawn", FileList("data/audio/sfx_spawn_wpn-%02d.wv", 3))) +container.sounds.Add(SoundSet("weapon_noammo", FileList("data/audio/wp_noammo-%02d.wv", 5))) + +container.sounds.Add(SoundSet("hit", FileList("data/audio/sfx_hit_weak-%02d.wv", 2))) + +container.sounds.Add(SoundSet("chat_server", ["data/audio/sfx_msg-server.wv"])) +container.sounds.Add(SoundSet("chat_client", ["data/audio/sfx_msg-client.wv"])) +container.sounds.Add(SoundSet("ctf_drop", ["data/audio/sfx_ctf_drop.wv"])) +container.sounds.Add(SoundSet("ctf_return", ["data/audio/sfx_ctf_rtn.wv"])) +container.sounds.Add(SoundSet("ctf_grab_pl", ["data/audio/sfx_ctf_grab_pl.wv"])) +container.sounds.Add(SoundSet("ctf_grab_en", ["data/audio/sfx_ctf_grab_en.wv"])) +container.sounds.Add(SoundSet("ctf_capture", ["data/audio/sfx_ctf_cap_pl.wv"])) + +image_null = Image("null", "") +image_particles = Image("particles", "data/particles.png") +image_game = Image("game", "data/game.png") +image_browseicons = Image("browseicons", "data/browse_icons.png") +image_emoticons = Image("emoticons", "data/emoticons.png") + +container.images.Add(image_null) +container.images.Add(image_game) +container.images.Add(image_particles) +container.images.Add(Image("cursor", "data/gui_cursor.png")) +container.images.Add(Image("banner", "data/gui_logo.png")) +container.images.Add(image_emoticons) +container.images.Add(image_browseicons) +container.images.Add(Image("console_bg", "data/console.png")) +container.images.Add(Image("console_bar", "data/console_bar.png")) + +container.pickups.Add(Pickup("health")) +container.pickups.Add(Pickup("armor")) +container.pickups.Add(Pickup("weapon")) +container.pickups.Add(Pickup("ninja", 90, 90)) + +set_particles = SpriteSet("particles", image_particles, 8, 8) +set_game = SpriteSet("game", image_game, 32, 16) +set_tee = SpriteSet("tee", image_null, 8, 4) +set_browseicons = SpriteSet("browseicons", image_browseicons, 4, 1) +set_emoticons = SpriteSet("emoticons", image_emoticons, 4, 4) + +container.spritesets.Add(set_particles) +container.spritesets.Add(set_game) +container.spritesets.Add(set_tee) +container.spritesets.Add(set_browseicons) +container.spritesets.Add(set_emoticons) + +container.sprites.Add(Sprite("part_slice", set_particles, 0,0,1,1)) +container.sprites.Add(Sprite("part_ball", set_particles, 1,0,1,1)) +container.sprites.Add(Sprite("part_splat01", set_particles, 2,0,1,1)) +container.sprites.Add(Sprite("part_splat02", set_particles, 3,0,1,1)) +container.sprites.Add(Sprite("part_splat03", set_particles, 4,0,1,1)) + +container.sprites.Add(Sprite("part_smoke", set_particles, 0,1,1,1)) +container.sprites.Add(Sprite("part_shell", set_particles, 0,2,2,2)) +container.sprites.Add(Sprite("part_expl01", set_particles, 0,4,4,4)) +container.sprites.Add(Sprite("part_airjump", set_particles, 2,2,2,2)) + +container.sprites.Add(Sprite("health_full", set_game, 21,0,2,2)) +container.sprites.Add(Sprite("health_empty", set_game, 23,0,2,2)) +container.sprites.Add(Sprite("armor_full", set_game, 21,2,2,2)) +container.sprites.Add(Sprite("armor_empty", set_game, 23,2,2,2)) + +container.sprites.Add(Sprite("star1", set_game, 15,0,2,2)) +container.sprites.Add(Sprite("star2", set_game, 17,0,2,2)) +container.sprites.Add(Sprite("star3", set_game, 19,0,2,2)) - -Sounds = [ - SoundSet("gun_fire", FileList("data/audio/wp_gun_fire-%02d.wv", 3)), - SoundSet("shotgun_fire", FileList("data/audio/wp_shotty_fire-%02d.wv", 3)), - SoundSet("grenade_fire", FileList("data/audio/wp_flump_launch-%02d.wv", 3)), - SoundSet("hammer_fire", FileList("data/audio/wp_hammer_swing-%02d.wv", 3)), - SoundSet("hammer_hit", FileList("data/audio/wp_hammer_hit-%02d.wv", 3)), - SoundSet("ninja_fire", FileList("data/audio/wp_ninja_attack-%02d.wv", 3)), - SoundSet("grenade_explode", FileList("data/audio/wp_flump_explo-%02d.wv", 3)), - SoundSet("ninja_hit", FileList("data/audio/wp_ninja_hit-%02d.wv", 3)), - SoundSet("rifle_fire", FileList("data/audio/wp_rifle_fire-%02d.wv", 3)), - SoundSet("rifle_bounce", FileList("data/audio/wp_rifle_bnce-%02d.wv", 3)), - SoundSet("weapon_switch", FileList("data/audio/wp_switch-%02d.wv", 3)), - - SoundSet("player_pain_short", FileList("data/audio/vo_teefault_pain_short-%02d.wv", 12)), - SoundSet("player_pain_long", FileList("data/audio/vo_teefault_pain_long-%02d.wv", 2)), - - SoundSet("body_land", FileList("data/audio/foley_land-%02d.wv", 4)), - SoundSet("player_airjump", FileList("data/audio/foley_dbljump-%02d.wv", 3)), - SoundSet("player_jump", FileList("data/audio/foley_foot_left-%02d.wv", 4) + FileList("data/audio/foley_foot_right-%02d.wv", 4)), - SoundSet("player_die", FileList("data/audio/foley_body_splat-%02d.wv", 3)), - SoundSet("player_spawn", FileList("data/audio/vo_teefault_spawn-%02d.wv", 7)), - SoundSet("player_skid", FileList("data/audio/sfx_skid-%02d.wv", 4)), - SoundSet("tee_cry", FileList("data/audio/vo_teefault_cry-%02d.wv", 2)), - - SoundSet("hook_loop", FileList("data/audio/hook_loop-%02d.wv", 2)), - - SoundSet("hook_attach_ground", FileList("data/audio/hook_attach-%02d.wv", 3)), - SoundSet("hook_attach_player", FileList("data/audio/foley_body_impact-%02d.wv", 3)), - SoundSet("pickup_health", FileList("data/audio/sfx_pickup_hrt-%02d.wv", 2)), - SoundSet("pickup_armor", FileList("data/audio/sfx_pickup_arm-%02d.wv", 4)), - - SoundSet("pickup_grenade", FileList("data/audio/sfx_pickup_arm-%02d.wv", 1)), - SoundSet("pickup_shotgun", FileList("data/audio/sfx_pickup_arm-%02d.wv", 1)), - SoundSet("pickup_ninja", FileList("data/audio/sfx_pickup_arm-%02d.wv", 1)), - SoundSet("weapon_spawn", FileList("data/audio/sfx_spawn_wpn-%02d.wv", 3)), - SoundSet("weapon_noammo", FileList("data/audio/wp_noammo-%02d.wv", 5)), - - SoundSet("hit", FileList("data/audio/sfx_hit_weak-%02d.wv", 2)), - - SoundSet("chat_server", ["data/audio/sfx_msg-server.wv"]), - SoundSet("chat_client", ["data/audio/sfx_msg-client.wv"]), - SoundSet("ctf_drop", ["data/audio/sfx_ctf_drop.wv"]), - SoundSet("ctf_return", ["data/audio/sfx_ctf_rtn.wv"]), - SoundSet("ctf_grab_pl", ["data/audio/sfx_ctf_grab_pl.wv"]), - SoundSet("ctf_grab_en", ["data/audio/sfx_ctf_grab_en.wv"]), - SoundSet("ctf_capture", ["data/audio/sfx_ctf_cap_pl.wv"]), -] - -Images = [ - Image("null", ""), - Image("game", "data/game.png"), - Image("particles", "data/particles.png"), - Image("cursor", "data/gui_cursor.png"), - Image("banner", "data/gui_logo.png"), - Image("emoticons", "data/emoticons.png"), - Image("browseicons", "data/browse_icons.png"), - Image("console_bg", "data/console.png"), - Image("console_bar", "data/console_bar.png"), -] - -Pickups = [ - Pickup("health"), - Pickup("armor"), - Pickup("weapon"), - Pickup("ninja", 90, 90), -] - -Sprites = [ - SpriteSet("particles", (8,8), [ - Sprite("part_slice", (0,0,1,1)), - Sprite("part_ball", (1,0,1,1)), - Sprite("part_splat01", (2,0,1,1)), - Sprite("part_splat02", (3,0,1,1)), - Sprite("part_splat03", (4,0,1,1)), - - Sprite("part_smoke", (0,1,1,1)), - Sprite("part_shell", (0,2,2,2)), - Sprite("part_expl01", (0,4,4,4)), - Sprite("part_airjump", (2,2,2,2)), - ]), - - SpriteSet("game", (8,8), [ - Sprite("health_full", (21,0,2,2)), - Sprite("health_empty", (23,0,2,2)), - Sprite("armor_full", (21,2,2,2)), - Sprite("armor_empty", (23,2,2,2)), - - Sprite("star1", (15,0,2,2)), - Sprite("star2", (17,0,2,2)), - Sprite("star3", (19,0,2,2)), +container.sprites.Add(Sprite("part1", set_game, 6,0,1,1)) +container.sprites.Add(Sprite("part2", set_game, 6,1,1,1)) +container.sprites.Add(Sprite("part3", set_game, 7,0,1,1)) +container.sprites.Add(Sprite("part4", set_game, 7,1,1,1)) +container.sprites.Add(Sprite("part5", set_game, 8,0,1,1)) +container.sprites.Add(Sprite("part6", set_game, 8,1,1,1)) +container.sprites.Add(Sprite("part7", set_game, 9,0,2,2)) +container.sprites.Add(Sprite("part8", set_game, 11,0,2,2)) +container.sprites.Add(Sprite("part9", set_game, 13,0,2,2)) + +container.sprites.Add(Sprite("weapon_gun_body", set_game, 2,4,4,2)) +container.sprites.Add(Sprite("weapon_gun_cursor", set_game, 0,4,2,2)) +container.sprites.Add(Sprite("weapon_gun_proj", set_game, 6,4,2,2)) +container.sprites.Add(Sprite("weapon_gun_muzzle1", set_game, 8,4,3,2)) +container.sprites.Add(Sprite("weapon_gun_muzzle2", set_game, 12,4,3,2)) +container.sprites.Add(Sprite("weapon_gun_muzzle3", set_game, 16,4,3,2)) + +container.sprites.Add(Sprite("weapon_shotgun_body", set_game, 2,6,8,2)) +container.sprites.Add(Sprite("weapon_shotgun_cursor", set_game, 0,6,2,2)) +container.sprites.Add(Sprite("weapon_shotgun_proj", set_game, 10,6,2,2)) +container.sprites.Add(Sprite("weapon_shotgun_muzzle1", set_game, 12,6,3,2)) +container.sprites.Add(Sprite("weapon_shotgun_muzzle2", set_game, 16,6,3,2)) +container.sprites.Add(Sprite("weapon_shotgun_muzzle3", set_game, 20,6,3,2)) + +container.sprites.Add(Sprite("weapon_grenade_body", set_game, 2,8,7,2)) +container.sprites.Add(Sprite("weapon_grenade_cursor", set_game, 0,8,2,2)) +container.sprites.Add(Sprite("weapon_grenade_proj", set_game, 10,8,2,2)) + +container.sprites.Add(Sprite("weapon_hammer_body", set_game, 2,1,4,3)) +container.sprites.Add(Sprite("weapon_hammer_cursor", set_game, 0,0,2,2)) +container.sprites.Add(Sprite("weapon_hammer_proj", set_game, 0,0,0,0)) + +container.sprites.Add(Sprite("weapon_ninja_body", set_game, 2,10,7,2)) +container.sprites.Add(Sprite("weapon_ninja_cursor", set_game, 0,10,2,2)) +container.sprites.Add(Sprite("weapon_ninja_proj", set_game, 0,0,0,0)) + +container.sprites.Add(Sprite("weapon_rifle_body", set_game, 2,12,7,3)) +container.sprites.Add(Sprite("weapon_rifle_cursor", set_game, 0,12,2,2)) +container.sprites.Add(Sprite("weapon_rifle_proj", set_game, 10,12,2,2)) + +container.sprites.Add(Sprite("hook_chain", set_game, 2,0,1,1)) +container.sprites.Add(Sprite("hook_head", set_game, 3,0,2,1)) + +container.sprites.Add(Sprite("hadoken1", set_game, 25,0,7,4)) +container.sprites.Add(Sprite("hadoken2", set_game, 25,4,7,4)) +container.sprites.Add(Sprite("hadoken3", set_game, 25,8,7,4)) + +container.sprites.Add(Sprite("pickup_health", set_game, 10,2,2,2)) +container.sprites.Add(Sprite("pickup_armor", set_game, 12,2,2,2)) +container.sprites.Add(Sprite("pickup_weapon", set_game, 3,0,6,2)) +container.sprites.Add(Sprite("pickup_ninja", set_game, 3,10,7,2)) + +container.sprites.Add(Sprite("flag_blue", set_game, 12,8,4,8)) +container.sprites.Add(Sprite("flag_red", set_game, 16,8,4,8)) + +container.sprites.Add(Sprite("tee_body", set_tee, 0,0,3,3)) +container.sprites.Add(Sprite("tee_body_outline", set_tee, 3,0,3,3)) +container.sprites.Add(Sprite("tee_foot", set_tee, 6,1,2,1)) +container.sprites.Add(Sprite("tee_foot_outline", set_tee, 6,2,2,1)) +container.sprites.Add(Sprite("tee_hand", set_tee, 6,0,1,1)) +container.sprites.Add(Sprite("tee_hand_outline", set_tee, 7,0,1,1)) +container.sprites.Add(Sprite("tee_eye_normal", set_tee, 2,3,1,1)) +container.sprites.Add(Sprite("tee_eye_angry", set_tee, 3,3,1,1)) +container.sprites.Add(Sprite("tee_eye_pain", set_tee, 4,3,1,1)) +container.sprites.Add(Sprite("tee_eye_happy", set_tee, 5,3,1,1)) +container.sprites.Add(Sprite("tee_eye_dead", set_tee, 6,3,1,1)) +container.sprites.Add(Sprite("tee_eye_surprise", set_tee, 7,3,1,1)) + +container.sprites.Add(Sprite("oop", set_emoticons, 0, 0, 1, 1)) +container.sprites.Add(Sprite("exclamation", set_emoticons, 1, 0, 1, 1)) +container.sprites.Add(Sprite("hearts", set_emoticons, 2, 0, 1, 1)) +container.sprites.Add(Sprite("drop", set_emoticons, 3, 0, 1, 1)) +container.sprites.Add(Sprite("dotdot", set_emoticons, 0, 1, 1, 1)) +container.sprites.Add(Sprite("music1", set_emoticons, 1, 1, 1, 1)) +container.sprites.Add(Sprite("music2", set_emoticons, 2, 1, 1, 1)) +container.sprites.Add(Sprite("ghost", set_emoticons, 3, 1, 1, 1)) +container.sprites.Add(Sprite("sushi", set_emoticons, 0, 2, 1, 1)) +container.sprites.Add(Sprite("splattee", set_emoticons, 1, 2, 1, 1)) +container.sprites.Add(Sprite("deviltee", set_emoticons, 2, 2, 1, 1)) +container.sprites.Add(Sprite("zomg", set_emoticons, 3, 2, 1, 1)) +container.sprites.Add(Sprite("zzz", set_emoticons, 0, 3, 1, 1)) +container.sprites.Add(Sprite("blank1", set_emoticons, 1, 3, 1, 1)) +container.sprites.Add(Sprite("deadtee", set_emoticons, 2, 3, 1, 1)) +container.sprites.Add(Sprite("blank2", set_emoticons, 3, 3, 1, 1)) + + +container.sprites.Add(Sprite("browse_lock", set_browseicons, 0,0,1,1)) +container.sprites.Add(Sprite("browse_progress1", set_browseicons, 1,0,1,1)) +container.sprites.Add(Sprite("browse_progress2", set_browseicons, 2,0,1,1)) +container.sprites.Add(Sprite("browse_progress3", set_browseicons, 3,0,1,1)) + +anim = Animation("base") +anim.body.frames.Add(AnimKeyframe(0, 0, -4, 0)) +anim.back_foot.frames.Add(AnimKeyframe(0, 0, 10, 0)) +anim.front_foot.frames.Add(AnimKeyframe(0, 0, 10, 0)) +container.animations.Add(anim) + +anim = Animation("idle") +anim.back_foot.frames.Add(AnimKeyframe(0, -7, 0, 0)) +anim.front_foot.frames.Add(AnimKeyframe(0, 7, 0, 0)) +container.animations.Add(anim) + +anim = Animation("inair") +anim.back_foot.frames.Add(AnimKeyframe(0, -3, 0, -0.1)) +anim.front_foot.frames.Add(AnimKeyframe(0, 3, 0, -0.1)) +container.animations.Add(anim) + +anim = Animation("walk") +anim.body.frames.Add(AnimKeyframe(0.0, 0, 0, 0)) +anim.body.frames.Add(AnimKeyframe(0.2, 0,-1, 0)) +anim.body.frames.Add(AnimKeyframe(0.4, 0, 0, 0)) +anim.body.frames.Add(AnimKeyframe(0.6, 0, 0, 0)) +anim.body.frames.Add(AnimKeyframe(0.8, 0,-1, 0)) +anim.body.frames.Add(AnimKeyframe(1.0, 0, 0, 0)) + +anim.back_foot.frames.Add(AnimKeyframe(0.0, 8, 0, 0)) +anim.back_foot.frames.Add(AnimKeyframe(0.2, -8, 0, 0)) +anim.back_foot.frames.Add(AnimKeyframe(0.4,-10,-4, 0.2)) +anim.back_foot.frames.Add(AnimKeyframe(0.6, -8,-8, 0.3)) +anim.back_foot.frames.Add(AnimKeyframe(0.8, 4,-4,-0.2)) +anim.back_foot.frames.Add(AnimKeyframe(1.0, 8, 0, 0)) + +anim.front_foot.frames.Add(AnimKeyframe(0.0,-10,-4, 0.2)) +anim.front_foot.frames.Add(AnimKeyframe(0.2, -8,-8, 0.3)) +anim.front_foot.frames.Add(AnimKeyframe(0.4, 4,-4,-0.2)) +anim.front_foot.frames.Add(AnimKeyframe(0.6, 8, 0, 0)) +anim.front_foot.frames.Add(AnimKeyframe(0.8, 8, 0, 0)) +anim.front_foot.frames.Add(AnimKeyframe(1.0,-10, 0, 0.2)) +container.animations.Add(anim) + +anim = Animation("hammer_swing") +anim.attach.frames.Add(AnimKeyframe(0.0, 0, 0, -0.10)) +anim.attach.frames.Add(AnimKeyframe(0.3, 0, 0, 0.25)) +anim.attach.frames.Add(AnimKeyframe(0.4, 0, 0, 0.30)) +anim.attach.frames.Add(AnimKeyframe(0.5, 0, 0, 0.25)) +anim.attach.frames.Add(AnimKeyframe(1.0, 0, 0, -0.10)) +container.animations.Add(anim) - Sprite("part1", (6,0,1,1)), - Sprite("part2", (6,1,1,1)), - Sprite("part3", (7,0,1,1)), - Sprite("part4", (7,1,1,1)), - Sprite("part5", (8,0,1,1)), - Sprite("part6", (8,1,1,1)), - Sprite("part7", (9,0,2,2)), - Sprite("part8", (11,0,2,2)), - Sprite("part9", (13,0,2,2)), - - Sprite("weapon_gun_body", (2,4,4,2)), - Sprite("weapon_gun_cursor", (0,4,2,2)), - Sprite("weapon_gun_proj", (6,4,2,2)), - Sprite("weapon_gun_muzzle1", (8,4,3,2)), - Sprite("weapon_gun_muzzle2", (12,4,3,2)), - Sprite("weapon_gun_muzzle3", (16,4,3,2)), - - Sprite("weapon_shotgun_body", (2,6,8,2)), - Sprite("weapon_shotgun_cursor", (0,6,2,2)), - Sprite("weapon_shotgun_proj", (10,6,2,2)), - Sprite("weapon_shotgun_muzzle1", (12,6,3,2)), - Sprite("weapon_shotgun_muzzle2", (16,6,3,2)), - Sprite("weapon_shotgun_muzzle3", (20,6,3,2)), - - Sprite("weapon_grenade_body", (2,8,7,2)), - Sprite("weapon_grenade_cursor", (0,8,2,2)), - Sprite("weapon_grenade_proj", (10,8,2,2)), - - Sprite("weapon_hammer_body", (2,1,4,3)), - Sprite("weapon_hammer_cursor", (0,0,2,2)), - Sprite("weapon_hammer_proj", (0,0,0,0)), - - Sprite("weapon_ninja_body", (2,10,7,2)), - Sprite("weapon_ninja_cursor", (0,10,2,2)), - Sprite("weapon_ninja_proj", (0,0,0,0)), - - Sprite("weapon_rifle_body", (2,12,7,3)), - Sprite("weapon_rifle_cursor", (0,12,2,2)), - Sprite("weapon_rifle_proj", (10,12,2,2)), - - Sprite("hook_chain", (2,0,1,1)), - Sprite("hook_head", (3,0,2,1)), - - Sprite("hadoken1", (25,0,7,4)), - Sprite("hadoken2", (25,4,7,4)), - Sprite("hadoken3", (25,8,7,4)), - - Sprite("pickup_health", (10,2,2,2)), - Sprite("pickup_armor", (12,2,2,2)), - Sprite("pickup_weapon", (3,0,6,2)), - Sprite("pickup_ninja", (3,10,7,2)), - - Sprite("flag_blue", (12,8,4,8)), - Sprite("flag_red", (16,8,4,8)), - ]), - - SpriteSet(None, (8,4), [ - Sprite("tee_body", (0,0,3,3)), - Sprite("tee_body_outline", (3,0,3,3)), - Sprite("tee_foot", (6,1,2,1)), - Sprite("tee_foot_outline", (6,2,2,1)), - Sprite("tee_hand", (6,0,1,1)), - Sprite("tee_hand_outline", (7,0,1,1)), - - Sprite("tee_eye_normal", (2,3,1,1)), - Sprite("tee_eye_angry", (3,3,1,1)), - Sprite("tee_eye_pain", (4,3,1,1)), - Sprite("tee_eye_happy", (5,3,1,1)), - Sprite("tee_eye_dead", (6,3,1,1)), - Sprite("tee_eye_surprise", (7,3,1,1)), - ]), - - SpriteSet("browseicons", (4,1), [ - Sprite("browse_lock", (0,0,1,1)), - Sprite("browse_progress1", (1,0,1,1)), - Sprite("browse_progress2", (2,0,1,1)), - Sprite("browse_progress3", (3,0,1,1)), - ]), -] - -class Weapon(FieldStorage): - def autoupdate(self): - self.update(String("name", self.name)) - self.update(SpriteRef("sprite_body", "weapon_%s_body"%self.name)) - self.update(SpriteRef("sprite_cursor", "weapon_%s_cursor"%self.name)) - self.update(SpriteRef("sprite_proj", "weapon_%s_proj"%self.name)) - -WeaponBase = Weapon("weapon", None, [ - String("name", "base"), - SpriteRef("sprite_body", None), - SpriteRef("sprite_cursor", None), - SpriteRef("sprite_proj", None), - Int("damage", 1), - Int("firedelay", 500), - Int("visual_size", 96), -]) - -Weapons = [ - Weapon("hammer", WeaponBase, [ - Int("firedelay", 100), - Int("damage", 3), - ]), - - Weapon("gun", WeaponBase, [ - Int("firedelay", 100), - Int("damage", 1), - - Float("curvature", 1.25), - Float("speed", 2200.0), - Float("lifetime", 2.0), - ]), - - Weapon("shotgun", WeaponBase, [ - Int("firedelay", 500), - Int("damage", 1), - - Float("curvature", 1.25), - Float("speed", 2200.0), - Float("speeddiff", 0.8), - Float("lifetime", 0.25), - ]), - - Weapon("grenade", WeaponBase, [ - Int("firedelay", 100), - Int("damage", 6), - - Float("curvature", 7.0), - Float("speed", 1000.0), - Float("lifetime", 2.0), - ]), - - Weapon("rifle", WeaponBase, [ - Int("firedelay", 800), - Int("visual_size", 92), - Int("damage", 5), - - Float("reach", 800.0), - Float("bounce_delay", 150), - Float("bounce_num", 1), - Float("bounce_cost", 0), - ]), - - Weapon("ninja", WeaponBase, [ - Int("firedelay", 800), - Int("damage", 9), - ]), -] - -ticks_per_second = 50.0 -Physics = FieldStorage("physics", None, [ - Float("ground_control_speed", 10.0), - Float("ground_control_accel", 100.0 / ticks_per_second), - Float("ground_friction", 0.5), - Float("ground_jump_impulse", 12.6), - Float("air_jump_impulse", 11.5), - Float("air_control_speed", 250.0 / ticks_per_second), - Float("air_control_accel", 1.5), - Float("air_friction", 0.95), - Float("hook_length", 380.0), - Float("hook_fire_speed", 80.0), - Float("hook_drag_accel", 3.0), - Float("hook_drag_speed", 15.0), - Float("gravity", 0.5), - - Float("velramp_start", 550), - Float("velramp_range", 2000), - Float("velramp_curvature", 1.4), -]) +anim = Animation("ninja_swing") +anim.attach.frames.Add(AnimKeyframe(0.00, 0, 0, -0.25)) +anim.attach.frames.Add(AnimKeyframe(0.10, 0, 0, -0.05)) +anim.attach.frames.Add(AnimKeyframe(0.15, 0, 0, 0.35)) +anim.attach.frames.Add(AnimKeyframe(0.42, 0, 0, 0.40)) +anim.attach.frames.Add(AnimKeyframe(0.50, 0, 0, 0.35)) +anim.attach.frames.Add(AnimKeyframe(1.00, 0, 0, -0.25)) +container.animations.Add(anim) + +weapon = WeaponSpec(container, "hammer") +weapon.firedelay.Set(100) +weapon.damage.Set(3) +weapon.visual_size.Set(96) +weapon.offsetx.Set(4) +weapon.offsety.Set(-20) +container.weapons.hammer.base.Set(weapon) +container.weapons.id.Add(weapon) + +weapon = WeaponSpec(container, "gun") +weapon.firedelay.Set(100) +weapon.ammoregentime.Set(500) +weapon.visual_size.Set(64) +weapon.offsetx.Set(32) +weapon.offsety.Set(-4) +weapon.muzzleoffsetx.Set(50) +weapon.muzzleoffsety.Set(6) +container.weapons.gun.base.Set(weapon) +container.weapons.id.Add(weapon) + +weapon = WeaponSpec(container, "shotgun") +weapon.firedelay.Set(500) +weapon.visual_size.Set(96) +weapon.offsetx.Set(24) +weapon.offsety.Set(-2) +weapon.muzzleoffsetx.Set(70) +weapon.muzzleoffsety.Set(6) +container.weapons.shotgun.base.Set(weapon) +container.weapons.id.Add(weapon) + +weapon = WeaponSpec(container, "grenade") +weapon.firedelay.Set(500) # TODO: fix this +weapon.visual_size.Set(96) +weapon.offsetx.Set(24) +weapon.offsety.Set(-2) +container.weapons.grenade.base.Set(weapon) +container.weapons.id.Add(weapon) + +weapon = WeaponSpec(container, "rifle") +weapon.firedelay.Set(800) +weapon.visual_size.Set(92) +weapon.damage.Set(5) +weapon.offsetx.Set(24) +weapon.offsety.Set(-2) +container.weapons.rifle.base.Set(weapon) +container.weapons.id.Add(weapon) + +weapon = WeaponSpec(container, "ninja") +weapon.firedelay.Set(800) +weapon.damage.Set(9) +weapon.visual_size.Set(96) +weapon.offsetx.Set(0) +weapon.offsety.Set(0) +container.weapons.ninja.base.Set(weapon) +container.weapons.id.Add(weapon) |