From a34f007fe2a0dcf3766a3eb30dbbdf610f47f868 Mon Sep 17 00:00:00 2001 From: hendricks266 Date: Sat, 20 Aug 2011 23:28:19 +0000 Subject: [PATCH] add weapons.con.sample, a direct port of the HUD display code to CON git-svn-id: https://svn.eduke32.com/eduke32@1988 1a8010ca-5511-0410-912e-c29ae57300e0 --- polymer/eduke32/samples/weapons.con.sample | 1746 ++++++++++++++++++++ 1 file changed, 1746 insertions(+) create mode 100644 polymer/eduke32/samples/weapons.con.sample diff --git a/polymer/eduke32/samples/weapons.con.sample b/polymer/eduke32/samples/weapons.con.sample new file mode 100644 index 000000000..fe11c24c3 --- /dev/null +++ b/polymer/eduke32/samples/weapons.con.sample @@ -0,0 +1,1746 @@ + +// Note: This file has been directly converted from the EDuke32 +// C source code to CON code, without any fixes or improvements. +// Further changes to player.c may or may not be reflected here. + +/* +gamevar currentweapon 0 0 // (system) (pointer) +gamevar gs 0 0 // (system) (pointer) +gamevar looking_arc 0 0 // (system) (pointer) +gamevar gun_pos 0 0 // (system) (pointer) +gamevar weapon_xoffset 0 0 // (system) (pointer) +gamevar weaponcount 0 0 // (system) (pointer) +gamevar looking_angSR1 0 0 // (system) (pointer) + +gamevar xdim 0 0 // (system) (pointer) (read only) +gamevar ydim 0 0 // (system) (pointer) (read only) +gamevar windowx1 0 0 // (system) (pointer) (read only) +gamevar windowx2 0 0 // (system) (pointer) (read only) +gamevar windowy1 0 0 // (system) (pointer) (read only) +gamevar windowy2 0 0 // (system) (pointer) (read only) +*/ + +gamevar hud_tilenum 0 1 +gamevar hud_x 0 1 +gamevar hud_y 0 1 +gamevar hud_scale 65536 1 +gamevar hud_angle 0 1 +gamevar hud_shade 0 1 +gamevar hud_pal 0 1 +gamevar hud_orientation 0 1 + +gamevar hud_fistsign 0 1 +gamevar hud_totaltime 0 1 + +gamevar hud_shadef 0 1 +gamevar hud_shadef_crystal 0 1 +gamevar hud_palf 0 1 + +// It is unfortunate that we need so many temporary gamevars. +gamevar hud_temp 0 1 +gamevar hud_temp2 0 1 +gamevar hud_temp3 0 1 +gamevar hud_temp4 0 1 + +/* +// The following temporary gamevars are named differently because they are used +// in G_Draw[...] which would overwrite their values if used elsewhere. +*/ +gamevar hud_G_Draw_temp 0 1 +gamevar hud_G_Draw_temp2 0 1 + +gamevar weapon_pos 0 1 +gamevar weaponscale 0 1 +gamevar playerid 0 1 + +// define ROTATESPRITE_MAX 2048 + +// preliminary functions + +state G_DrawTile + getplayer[THISACTOR].cursectnum hud_G_Draw_temp2 + ifvarg hud_G_Draw_temp2 -1 + getsector[hud_G_Draw_temp2].floorpal hud_G_Draw_temp2 + else + setvar hud_G_Draw_temp2 0 + + ifvarand hud_orientation 4 + addvar hud_angle 1024 + + ifvarand hud_orientation 2 nullop else + addvar hud_orientation 2 + + rotatesprite hud_x hud_y hud_scale hud_angle hud_tilenum hud_shade hud_G_Draw_temp2 hud_orientation windowx1 windowy1 windowx2 windowy2 + + ifvarand hud_orientation 2 nullop else + subvar hud_orientation 2 + + ifvarand hud_orientation 4 + subvar hud_angle 1024 +ends + +state G_DrawTilePal + ifvarand hud_orientation 4 + addvar hud_angle 1024 + + ifvarand hud_orientation 2 nullop else + addvar hud_orientation 2 + + rotatesprite hud_x hud_y hud_scale hud_angle hud_tilenum hud_shade hud_pal hud_orientation windowx1 windowy1 windowx2 windowy2 + + ifvarand hud_orientation 2 nullop else + subvar hud_orientation 2 + + ifvarand hud_orientation 4 + subvar hud_angle 1024 +ends + +state G_DrawTileScaled + setvar hud_G_Draw_temp 192 // xoff + + switch currentweapon + case DEVISTATOR_WEAPON + case TRIPBOMB_WEAPON + setvar hud_G_Draw_temp 160 + break + default + ifvarand hud_orientation 262144 + { + setvar hud_G_Draw_temp 160 + subvar hud_orientation 262144 + } + break + endswitch + + ifvarand hud_orientation 4 + addvar hud_angle 1024 + + /* + ifvarg rendermode 2 + ifvarn usemodels 0 + ifhasmodel hud_tilenum hud_pal + { + setvar hud_G_Draw_temp2 224 + mulvarvar hud_G_Draw_temp2 weaponscale + divvar hud_G_Draw_temp2 100 + + addvar hud_y 224 + subvarvar hud_y hud_G_Draw_temp2 + } + */ + + mulvarvar hud_x weaponscale + divvar hud_x 100 + setvarvar hud_G_Draw_temp2 hud_G_Draw_temp + mulvarvar hud_G_Draw_temp2 weaponscale + divvar hud_G_Draw_temp2 100 + subvarvar hud_G_Draw_temp hud_G_Draw_temp2 + addvarvar hud_x hud_G_Draw_temp + + mulvarvar hud_y weaponscale + divvar hud_y 100 + setvar hud_G_Draw_temp 200 + setvarvar hud_G_Draw_temp2 hud_G_Draw_temp + mulvarvar hud_G_Draw_temp2 weaponscale + divvar hud_G_Draw_temp2 100 + subvarvar hud_G_Draw_temp hud_G_Draw_temp2 + addvarvar hud_y hud_G_Draw_temp + + // setvar hud_scale 65536 // do this elsewhere; leave it open for modification + mulvarvar hud_scale weaponscale + divvar hud_scale 100 + + ifvarand hud_orientation 2 nullop else + addvar hud_orientation 2 + + rotatesprite hud_x hud_y hud_scale hud_angle hud_tilenum hud_shade hud_pal hud_orientation windowx1 windowy1 windowx2 windowy2 + + ifvarand hud_orientation 2 nullop else + subvar hud_orientation 2 + + ifvarand hud_orientation 4 + subvar hud_angle 1024 +ends + +state G_DrawWeaponTile + // basic fading between player weapon shades + ifvarvarn hud_shade hud_shadef + { + setvar hud_temp 0 + ifvare hud_pal 0 setvar hud_temp 1 + ifvarvare hud_pal hud_palf setvar hud_temp 1 + ifvare hud_temp 1 + { + setvarvar hud_temp hud_shade + subvarvar hud_temp hud_shadef + setvarvar hud_temp2 hud_temp + shiftvarr hud_temp 2 + addvarvar hud_shadef hud_temp + + ifvare hud_temp 0 + { + shiftvarr hud_temp2 1 + addvarvar hud_shadef hud_temp2 + ifvare hud_temp2 0 + setvarvar hud_shadef hud_shade + } + } + } + else + setvarvar hud_shadef hud_shade + + setvarvar hud_palf hud_pal + setvarvar hud_shade hud_shadef + + state G_DrawTileScaled +ends + +state G_DrawWeaponTile_crystal + // basic fading between player weapon shades + ifvarvarn hud_shade hud_shadef_crystal + { + setvarvar hud_temp hud_shade + subvarvar hud_temp hud_shadef_crystal + setvarvar hud_temp2 hud_temp + shiftvarr hud_temp 2 + addvarvar hud_shadef_crystal hud_temp + + ifvare hud_temp 0 + { + shiftvarr hud_temp2 1 + addvarvar hud_shadef_crystal hud_temp2 + ifvare hud_temp2 0 + setvarvar hud_shadef_crystal hud_shade + } + } + else + setvarvar hud_shadef_crystal hud_shade + + setvarvar hud_shade hud_shadef_crystal + + state G_DrawTileScaled +ends + +// helper states + +state reset_hud_weapon_x_coordinate + setvarvar hud_x weapon_xoffset + subvarvar hud_x looking_angSR1 +ends +state reset_hud_weapon_y_coordinate + setvarvar hud_y looking_arc + subvarvar hud_y gun_pos +ends +state reset_hud_weapon_coordinates + state reset_hud_weapon_x_coordinate + state reset_hud_weapon_y_coordinate +ends + +// other EVENT_DISPLAYWEAPON code + +state draw_shrunk_fists // Shrunk Running Fists + // common calculations + state reset_hud_weapon_x_coordinate + + setvarvar hud_temp3 looking_arc + ifvare player[THISACTOR].jetpack_on 0 + { + getactor[playerid].xvel hud_temp2 + shiftvarr hud_temp2 1 + addvar hud_temp3 32 + subvarvar hud_temp3 hud_temp2 + addvarvar hud_fistsign hud_temp2 + } + // common calculations continued + setvarvar hud_temp2 hud_fistsign + andvar hud_temp2 2047 + sin hud_temp2 hud_temp2 + setvarvar hud_temp4 hud_temp2 + shiftvarr hud_temp2 10 + shiftvarr hud_temp4 8 + ifvarl hud_temp4 0 + mulvar hud_temp4 -1 + + // right fist + guniqhudid 101 + + addvarvar hud_x hud_temp2 + addvar hud_x 250 + + setvarvar hud_y hud_temp3 + addvar hud_y 258 + subvarvar hud_y hud_temp4 + + setvar hud_tilenum FIST + + state G_DrawTile + + // cleanup + subvar hud_x 250 + + // left fist + guniqhudid 102 + + subvarvar hud_x hud_temp2 + addvar hud_x 40 + + setvarvar hud_y hud_temp3 + addvar hud_y 200 + addvarvar hud_y hud_temp4 + + addvar hud_orientation 4 + + state G_DrawTile + + // cleanup + setvar hud_orientation 0 + setvar hud_angle 0 + guniqhudid 0 +ends + +state draw_quick_kick // Quick Kick + setvar hud_temp 14 + subvarvar hud_temp player[THISACTOR].quick_kick + + setvar hud_temp2 0 + ifvarn hud_temp 14 setvar hud_temp2 1 + ifvarn player[THISACTOR].last_quick_kick 0 setvar hud_temp2 1 + ifvare hud_temp2 1 + { + getactor[playerid].pal hud_pal + ifvarn hud_pal 1 + { + getplayer[THISACTOR].cursectnum hud_temp2 + ifvarg hud_temp2 -1 + getsector[hud_temp2].floorpal hud_pal + ifvare hud_pal 0 + getplayer[THISACTOR].palookup hud_pal + } + + guniqhudid 100 + + // common calculations + state reset_hud_weapon_coordinates + + setvar hud_tilenum KNEE + + setvar hud_orientation 262148 // o|4|262144 + + setvar hud_temp3 0 + + ifvarg hud_temp 5 + ifvarl hud_temp 13 + { + addvar hud_x 144 // 160-16 + + addvar hud_y 214 + + addvar hud_tilenum 1 + + state G_DrawTileScaled + + setvar hud_temp3 1 + } + + ifvare hud_temp3 0 + { + addvar hud_x 80 + + addvar hud_y 250 + + state G_DrawTileScaled + } + } +ends + +// weapon code + +state draw_kick // KNEE_WEAPON: + ifvarg weaponcount 0 + { + guniqhudid currentweapon + + state reset_hud_weapon_coordinates + + getactor[playerid].pal hud_pal + ifvarn hud_pal 1 + { + getplayer[THISACTOR].cursectnum hud_temp2 + ifvarg hud_temp2 -1 + getsector[hud_temp2].floorpal hud_pal + ifvare hud_pal 0 + getplayer[THISACTOR].palookup hud_pal + } + + setvar hud_tilenum KNEE + + setvar hud_temp3 0 + + ifvarg weaponcount 4 + ifvarl weaponcount 10 + { + addvar hud_x 160 + + addvar hud_y 214 + + addvar hud_tilenum 1 + + state G_DrawTileScaled + + setvar hud_temp3 1 + } + + ifvare hud_temp3 0 + { + addvar hud_x 220 + + addvar hud_y 250 + + state G_DrawTileScaled + } + } +ends + +state draw_tripbomb // TRIPBOMB_WEAPON: + state reset_hud_weapon_coordinates + + addvar hud_x 8 + addvar hud_y 10 + + ifvarg weaponcount 6 + { + setvarvar hud_temp weaponcount + shiftvarl hud_temp 3 + addvarvar hud_y hud_temp + } + else ifvarl weaponcount 4 + { + setvarvar hud_temp currentweapon + shiftvarl currentweapon 2 + guniqhudid hud_temp + + addvar hud_x 142 + addvar hud_y 234 + + setvar hud_tilenum HANDHOLDINGLASER + addvar hud_tilenum 3 + + state G_DrawWeaponTile + + // undo + subvar hud_x 142 + subvar hud_y 234 + } + + // common to both hands + + addvar hud_y 249 + + setvarvar hud_tilenum weaponcount + shiftvarr hud_tilenum 2 + addvar hud_tilenum HANDHOLDINGLASER + + // left hand + guniqhudid currentweapon + + addvar hud_x 130 + + state G_DrawWeaponTile + + // right hand + setvarvar hud_temp3 currentweapon + shiftvarl hud_temp3 1 + guniqhudid hud_temp3 + + /* + // absolute method + subvar hud_x 130 // undo + addvar hud_x 152 + */ + // relative method + addvar hud_x 22 + + ifvarand hud_orientation 4 nullop else + addvar hud_orientation 4 + + state G_DrawWeaponTile + + ifvarand hud_orientation 4 + subvar hud_orientation 4 + guniqhudid 0 +ends + +state draw_rpg // RPG_WEAPON: + + setvarvar hud_x weapon_xoffset + setvarvar hud_y looking_arc + shiftvarl looking_arc 1 + subvarvar hud_y gun_pos + + setvarvar hud_temp weaponcount + shiftvarl hud_temp 7 + addvar hud_temp 768 + andvar hud_temp 2047 + sin hud_temp hud_temp + shiftvarr hud_temp 11 + + subvarvar hud_x hud_temp + subvarvar hud_y hud_temp + + ifvarand hud_orientation 512 nullop else + addvar hud_orientation 512 + + addvar hud_x 164 + + addvar hud_y 176 + + ifvarg weaponcount 0 + ifvarl weaponcount 8 + { + setvarvar hud_tilenum weaponcount + shiftvarr hud_tilenum 1 + addvar hud_tilenum RPGGUN + + state G_DrawWeaponTile + } + + setvar hud_tilenum RPGGUN + + state G_DrawWeaponTile + + ifvarand hud_orientation 512 + subvar hud_orientation 512 +ends + +state draw_shotgun // SHOTGUN_WEAPON: + state reset_hud_weapon_coordinates + + subvar hud_x 8 + + switch weaponcount + case 1 + case 2 + setvarvar hud_temp4 currentweapon + shiftvarl hud_temp4 1 + guniqhudid hud_temp4 + + addvar hud_x 168 + addvar hud_y 201 + + setvar hud_shade -128 + + setvar hud_tilenum SHOTGUN + addvar hud_tilenum 2 + + state G_DrawWeaponTile + + subvar hud_x 168 + subvar hud_y 201 + setvarvar hud_shade gs + case 0 + case 6 + case 7 + case 8 + guniqhudid currentweapon + + addvar hud_x 146 + addvar hud_y 202 + + setvar hud_tilenum SHOTGUN + + state G_DrawWeaponTile + + guniqhudid 0 + break + case 3 + case 4 + case 5 + case 9 + case 10 + case 11 + case 12 + ifvarg weaponcount 1 + ifvarl weaponcount 5 + { + addvar hud_y 40 + addvar hud_x 20 + + setvarvar hud_temp4 currentweapon + shiftvarl hud_temp4 1 + guniqhudid hud_temp4 + + addvar hud_x 178 + addvar hud_y 194 + + setvar hud_shade -128 + + setvarvar hud_tilenum weaponcount + subvar hud_tilenum 1 + shiftvarr hud_tilenum 1 + addvar hud_tilenum SHOTGUN + addvar hud_tilenum 1 + + state G_DrawWeaponTile + + subvar hud_x 178 + subvar hud_y 194 + setvarvar hud_shade gs + } + + guniqhudid currentweapon + + addvar hud_x 158 + + addvar hud_y 220 + + setvar hud_tilenum SHOTGUN + addvar hud_tilenum 3 + + state G_DrawWeaponTile + + guniqhudid 0 + break + case 13 + case 14 + case 15 + case 28 + case 29 + case 30 + guniqhudid currentweapon + + addvar hud_x 198 // 32 + 166 + addvar hud_y 210 + + setvar hud_tilenum SHOTGUN + addvar hud_tilenum 4 + + state G_DrawWeaponTile + + guniqhudid 0 + break + case 16 + case 17 + case 18 + case 19 + case 24 + case 25 + case 26 + case 27 + guniqhudid currentweapon + + addvar hud_x 234 // 64 + 170 + addvar hud_y 196 + + setvar hud_tilenum SHOTGUN + addvar hud_tilenum 5 + + state G_DrawWeaponTile + break + case 20 + case 21 + case 22 + case 23 + guniqhudid currentweapon + + addvar hud_x 240 // 64 + 176 + addvar hud_y 196 + + setvar hud_tilenum SHOTGUN + addvar hud_tilenum 6 + + state G_DrawWeaponTile + break + endswitch +ends + + +state draw_chaingun // CHAINGUN_WEAPON: + // hud_temp4 = FIREDELAY + state reset_hud_weapon_coordinates + + ifvarg weaponcount 0 + { + setvarvar hud_temp weaponcount + shiftvarl hud_temp 7 + sin hud_temp hud_temp + shiftvarr hud_temp 12 + addvarvar hud_y hud_temp + + getactor[playerid].pal hud_temp + ifvarn hud_pal 1 + { + displayrand hud_temp + andvar hud_temp 3 + mulvar hud_temp -1 + addvar hud_temp 1 + addvarvar hud_x hud_temp + } + } + + // base + addvar hud_x 168 + addvar hud_y 260 + + setvar hud_tilenum CHAINGUN + + state G_DrawWeaponTile + + subvar hud_x 168 + subvar hud_y 260 + + switch weaponcount + case 0 + addvar hud_x 178 + addvar hud_y 233 + addvar hud_tilenum 1 // relative + + state G_DrawWeaponTile + break + default + getactor[playerid].pal hud_temp3 + + ifvarvarg weaponcount hud_temp4 + ifvarvarl weaponcount hud_totaltime + { + // muzzleflash 1 + ifvarn hud_temp3 1 + { + displayrand hud_temp + andvar hud_temp 7 + } + else + setvar hud_temp 0 + + addvar hud_x 136 // -4+140 + addvarvar hud_x hud_temp + + setvarvar hud_temp2 weaponcount + shiftvarr hud_temp2 1 + + addvarvar hud_y hud_temp + subvarvar hud_y hud_temp2 + addvar hud_y 208 + + setvarvar hud_tilenum weaponcount + subvar hud_tilenum 4 + divvar hud_tilenum 5 + addvar hud_tilenum CHAINGUN + addvar hud_tilenum 5 + + state G_DrawWeaponTile + + // cleanup + subvarvar hud_x hud_temp + subvarvar hud_y hud_temp + + // muzzleflash 3 + ifvarn hud_temp3 1 + { + displayrand hud_temp + andvar hud_temp 7 + } + + addvar hud_x 44 // relative + addvarvar hud_x hud_temp + addvarvar hud_y hud_temp + + state G_DrawWeaponTile + + // cleanup + subvar hud_x 180 // -4+140 + 44 + subvar hud_y 208 + subvarvar hud_x hud_temp + subvarvar hud_y hud_temp + addvarvar hud_y hud_temp2 + } + + subvar hud_totaltime 4 + ifvarvarl weaponcount hud_totaltime + { + // muzzleflash 2 + ifvarn hud_temp3 1 + { + displayrand hud_temp + andvar hud_temp 7 + } + else + setvar hud_temp 0 + + setvarvar hud_temp2 weaponcount + shiftvarr hud_temp2 1 + + addvarvar hud_x hud_temp + addvar hud_x 158 // -4+162 + + addvarvar hud_y hud_temp + subvarvar hud_y hud_temp2 + addvar hud_y 208 + + setvarvar hud_tilenum weaponcount + subvar hud_tilenum 2 + divvar hud_tilenum 5 + addvar hud_tilenum CHAINGUN + addvar hud_tilenum 5 + + state G_DrawWeaponTile + + // cleanup + subvarvar hud_x hud_temp + subvar hud_x 158 + subvarvar hud_y hud_temp + addvarvar hud_y hud_temp2 + subvar hud_y 208 + + // barrels (hot) + addvar hud_x 178 + + addvar hud_y 233 + + setvar hud_tilenum CHAINGUN + addvar hud_tilenum 1 + addvarvar hud_tilenum hud_temp2 + + state G_DrawWeaponTile + } + else + { + // barrels + addvar hud_x 178 + + addvar hud_y 233 + + setvar hud_tilenum CHAINGUN + addvar hud_tilenum 1 + + state G_DrawWeaponTile + } + break + endswitch +ends + +state draw_pistol // PISTOL_WEAPON: + // hud_temp4 = FIREDELAY + // hud_temp3 = RELOAD + + state reset_hud_weapon_y_coordinate + + setvar hud_tilenum FIRSTGUN + + addvar hud_totaltime 1 + ifvarvarl weaponcount hud_totaltime + { + setvar hud_x 183 // 195-12 + addvarvar hud_x weapon_xoffset + subvarvar hud_x looking_angSR1 + + addvar hud_y 244 + + ifvarvare weaponcount hud_temp4 + subvar hud_x 3 + + ifvarl weaponcount 3 + addvarvar hud_tilenum weaponcount + + setvar hud_orientation 2 + + guniqhudid currentweapon + + state G_DrawWeaponTile + + guniqhudid 0 + } + else + { + ifvarand hud_orientation 512 nullop else + addvar hud_orientation 512 + + subvarvar hud_temp3 weaponcount + + ifvarg hud_temp3 17 + { + guniqhudid currentweapon + + setvar hud_x 194 + subvarvar hud_x looking_angSR1 + + addvar hud_y 230 + + addvar hud_tilenum 4 + + state G_DrawWeaponTile + + guniqhudid 0 + } + else ifvarg hud_temp3 12 + { + addvar hud_tilenum 6 + + setvarvar hud_temp weaponcount + shiftvarl hud_temp 3 + + setvar hud_x 244 + subvarvar hud_x hud_temp + subvarvar hud_x looking_angSR1 + + setvarvar hud_temp2 weaponcount + shiftvarl hud_temp2 4 + + addvar hud_y 130 + addvarvar hud_y hud_temp2 + + state G_DrawWeaponTile + + subvar hud_y 130 + subvarvar hud_y hud_temp2 + subvar hud_tilenum 6 + + guniqhudid currentweapon + + setvar hud_x 224 + subvarvar hud_x looking_angSR1 + + addvar hud_y 220 + + addvar hud_tilenum 5 + + state G_DrawWeaponTile + + guniqhudid 0 + } + else ifvarg hud_temp3 7 + { + addvar hud_tilenum 6 + + setvarvar hud_temp weaponcount + shiftvarl hud_temp 1 + + setvar hud_x 124 + addvarvar hud_x hud_temp + subvarvar hud_x looking_angSR1 + + setvarvar hud_temp2 weaponcount + shiftvarl hud_temp2 3 + + addvar hud_y 430 + subvarvar hud_y hud_temp2 + + state G_DrawWeaponTile + + subvar hud_y 430 + addvarvar hud_y hud_temp2 + subvar hud_tilenum 6 + + guniqhudid currentweapon + + setvar hud_x 224 + subvarvar hud_x looking_angSR1 + + addvar hud_y 220 + + addvar hud_tilenum 5 + + state G_DrawWeaponTile + + guniqhudid 0 + } + else ifvarg hud_temp3 4 + { + setvar hud_x 184 + subvarvar hud_x looking_angSR1 + + addvar hud_y 235 + + addvar hud_tilenum 8 + + state G_DrawWeaponTile + + subvar hud_y 235 + subvar hud_tilenum 8 + + guniqhudid currentweapon + + setvar hud_x 224 + subvarvar hud_x looking_angSR1 + + addvar hud_y 210 + + addvar hud_tilenum 5 + + state G_DrawWeaponTile + + guniqhudid 0 + } + else ifvarg hud_temp3 2 + { + setvar hud_x 164 + subvarvar hud_x looking_angSR1 + + addvar hud_y 245 + + addvar hud_tilenum 8 + + state G_DrawWeaponTile + + subvar hud_y 245 + subvar hud_tilenum 8 + + guniqhudid currentweapon + + setvar hud_x 224 + subvarvar hud_x looking_angSR1 + + addvar hud_y 220 + + addvar hud_tilenum 5 + + state G_DrawWeaponTile + + guniqhudid 0 + } + else ifvarg hud_temp3 0 + { + guniqhudid currentweapon + + setvar hud_x 194 + subvarvar hud_x looking_angSR1 + + addvar hud_y 235 + + addvar hud_tilenum 5 + + state G_DrawWeaponTile + + guniqhudid 0 + } + } +ends + +state draw_pipebomb // HANDBOMB_WEAPON: + state reset_hud_weapon_coordinates + + guniqhudid currentweapon + + setvar hud_tilenum HANDTHROW + + ifvarn weaponcount 0 + { + ifvarvarl weaponcount hud_totaltime + { + ifvarl weaponcount 7 + { + setvarvar hud_temp weaponcount + mulvar hud_temp 10 + addvarvar hud_y hud_temp // D + } + else ifvarl weaponcount 12 + { + setvarvar hud_temp weaponcount + subvar hud_temp 10 + mulvar hud_temp 20 + subvarvar hud_y hud_temp // U + } + else ifvarl weaponcount 20 + { + setvarvar hud_temp weaponcount + subvar hud_temp 14 + mulvar hud_temp 9 + addvarvar hud_y hud_temp // D + } + + addvar hud_x 190 + + addvar hud_y 250 + + switch weaponcount + /* + case 0 + case 1 + case 2 + case 3 + case 4 + addvar hud_tilenum 0 + break + */ + case 5 + case 6 + case 7 + case 8 + case 9 + case 10 + case 11 + addvar hud_tilenum 1 + break + case 12 + case 13 + case 14 + case 15 + case 16 + case 17 + case 18 + case 19 + case 20 + addvar hud_tilenum 2 + break + endswitch + + state G_DrawWeaponTile + } + } + else + { + addvar hud_x 190 + + addvar hud_y 260 + + state G_DrawWeaponTile + } + + guniqhudid 0 +ends + +state draw_detonator // HANDREMOTE_WEAPON: + state reset_hud_weapon_coordinates + + guniqhudid currentweapon + + addvar hud_x 102 // -48+150 + + addvar hud_y 258 + + setvar hud_tilenum HANDREMOTE + + switch weaponcount + /* + case 0 + case 6 + case 7 + case 8 + case 9 + case 10 + addvar hud_tilenum 0 + break + */ + case 1 + case 2 + case 4 + case 5 + addvar hud_tilenum 1 + break + case 3 + addvar hud_tilenum 2 + break + endswitch + + state G_DrawWeaponTile + + guniqhudid 0 +ends + +state draw_devastator // DEVISTATOR_WEAPON: + state reset_hud_weapon_coordinates + + // for guniqhudid + setvarvar hud_temp4 currentweapon + shiftvarl hud_temp4 1 + + setvar hud_tilenum DEVISTATOR + + setvar hud_temp -1 // flag + + ifvarg weaponcount 0 + { + addvar hud_totaltime 1 + ifvarvarl weaponcount hud_totaltime + { + setvar hud_temp 0 + + switch weaponcount + default + addlogvar weaponcount // debug + break + /* + case 0 + case 6 + setvar hud_temp 0 + break + */ + case 1 + case 5 + setvar hud_temp 4 + break + case 2 + case 4 + setvar hud_temp 12 + break + case 3 + setvar hud_temp 24 + break + endswitch + + setvarvar hud_temp2 weaponcount + shiftvarr hud_temp2 2 + // sign function: + ifvare hud_temp2 0 + setvar hud_temp3 0 + else ifvarg hud_temp2 0 + setvar hud_temp3 1 + else ifvarl hud_temp2 0 + setvar hud_temp3 -1 + + ifvarn player[THISACTOR].hbomb_hold_delay 0 + { + guniqhudid currentweapon + + setvarvar hud_temp2 hud_temp + shiftvarr hud_temp2 1 + addvarvar hud_x hud_temp2 + addvar hud_x 268 + + addvarvar hud_y hud_temp + addvar hud_y 238 + + addvarvar hud_tilenum hud_temp3 + + setvar hud_shade -32 + + state G_DrawWeaponTile + + // cleanup + /* + subvar hud_x 268 + subvarvar hud_x hud_temp2 + subvar hud_y 238 + subvarvar hud_y hud_temp + */ + state reset_hud_weapon_coordinates + subvarvar hud_tilenum hud_temp3 + setvarvar hud_shade gs + + guniqhudid hud_temp4 + + addvar hud_x 30 + + addvar hud_y 240 + + ifvarand hud_orientation 4 nullop else + addvar hud_orientation 4 + + state G_DrawWeaponTile + + ifvarand hud_orientation 4 + subvar hud_orientation 4 + + guniqhudid 0 + } + else + { + guniqhudid hud_temp4 + + addvar hud_x 30 + setvarvar hud_temp2 hud_temp + shiftvarr hud_temp2 1 + subvarvar hud_x hud_temp2 + + addvar hud_y 240 + addvarvar hud_y hud_temp + + addvarvar hud_tilenum hud_temp3 + + setvar hud_shade -32 + + ifvarand hud_orientation 4 nullop else + addvar hud_orientation 4 + + state G_DrawWeaponTile + + // cleanup + /* + subvar hud_x 30 + addvarvar hud_x hud_temp2 + subvar hud_y 240 + subvarvar hud_y hud_temp + */ + state reset_hud_weapon_coordinates + subvarvar hud_tilenum hud_temp3 + setvarvar hud_shade gs + ifvarand hud_orientation 4 + subvar hud_orientation 4 + + guniqhudid currentweapon + + addvar hud_x 268 + + addvar hud_y 238 + + state G_DrawWeaponTile + + guniqhudid 0 + } + break + } + } + + ifvare hud_temp -1 + { + guniqhudid currentweapon + + addvar hud_x 268 + + addvar hud_y 238 + + state G_DrawWeaponTile + + subvar hud_x 268 + subvar hud_y 238 + + guniqhudid hud_temp4 + + addvar hud_x 30 + + addvar hud_y 240 + + ifvarand hud_orientation 4 nullop else + addvar hud_orientation 4 + + state G_DrawWeaponTile + + ifvarand hud_orientation 4 + subvar hud_orientation 4 + + guniqhudid 0 + } +ends + +state draw_freezer // FREEZE_WEAPON: + state reset_hud_weapon_coordinates + + setvar hud_tilenum FREEZE + + ifvarand hud_orientation 512 nullop else + addvar hud_orientation 512 + + setvar hud_temp3 0 + + ifvarg weaponcount 0 + { + addvar hud_totaltime 1 + ifvarvarl weaponcount hud_totaltime + { + getactor[playerid].pal hud_temp + ifvarn hud_temp 1 + { + displayrand hud_temp + andvar hud_temp 3 + + addvarvar hud_x hud_temp + addvarvar hud_y hud_temp + } + + guniqhudid 0 + + addvar hud_x 210 + + addvar hud_y 277 // 16 + 261 + + addvar hud_tilenum 2 + + setvar hud_shade -32 + + state G_DrawWeaponTile + + guniqhudid currentweapon + + subvar hud_y 26 // relative + + setvarvar hud_temp weaponcount + modvar hud_temp 6 + divvar hud_temp 2 + addvar hud_tilenum 1 + addvarvar hud_tilenum hud_temp + + state G_DrawWeaponTile + + guniqhudid 0 + + setvar hud_temp3 1 + } + } + ifvare hud_temp3 0 + { + guniqhudid currentweapon + + addvar hud_x 210 + + addvar hud_y 261 + + state G_DrawWeaponTile + + guniqhudid 0 + } + + ifvarand hud_orientation 512 + subvar hud_orientation 512 +ends + +state draw_expander // GROW_WEAPON: + state reset_hud_weapon_coordinates + + addvar hud_x 28 + addvar hud_y 18 + + setvarvar hud_temp4 hud_pal + setvar hud_pal 2 + + setvarvar hud_temp3 currentweapon + shiftvarl hud_temp3 1 + + setvar hud_temp2 0 + + ifvarg weaponcount 0 + { + ifvarvarl weaponcount hud_totaltime + { + getactor[playerid].pal hud_temp + ifvarn hud_temp 1 + { + displayrand hud_temp + andvar hud_temp 3 + } + else + setvar hud_temp 0 + + addvarvar hud_x hud_temp + addvar hud_x 184 + + addvar hud_y 240 + subvarvar hud_y hud_temp + + setvarvar hud_tilenum weaponcount + andvar hud_tilenum 3 + addvar hud_tilenum SHRINKER + addvar hud_tilenum 3 + + setvar hud_shade -32 + + guniqhudid hud_temp3 + + state G_DrawWeaponTile_crystal + + guniqhudid currentweapon + + addvar hud_x 4 + + setvar hud_tilenum SHRINKER + subvar hud_tilenum 1 + + setvarvar hud_shade gs + + setvarvar hud_pal hud_temp4 + + state G_DrawWeaponTile + + guniqhudid 0 + + setvar hud_temp2 1 + } + } + ifvare hud_temp2 0 + { + addvar hud_x 184 + + addvar hud_y 240 + + setvar hud_tilenum SHRINKER + addvar hud_tilenum 2 + + getplayer[THISACTOR].random_club_frame hud_shade + andvar hud_shade 2047 + sin hud_shade hud_shade + shiftvarr hud_shade 10 + mulvar hud_shade -1 + addvar hud_shade 16 + + guniqhudid hud_temp3 + + state G_DrawWeaponTile_crystal + + guniqhudid currentweapon + + addvar hud_x 4 + + setvar hud_tilenum SHRINKER + subvar hud_tilenum 2 + + setvarvar hud_shade gs + + setvarvar hud_pal hud_temp4 + + state G_DrawWeaponTile + + guniqhudid 0 + } +ends + +state draw_shrinker // SHRINKER_WEAPON: + state reset_hud_weapon_coordinates + + addvar hud_x 28 + addvar hud_y 18 + + setvarvar hud_temp4 hud_pal + setvar hud_pal 0 + + setvarvar hud_temp3 currentweapon + shiftvarl hud_temp3 1 + + setvar hud_temp2 0 + + ifvarg weaponcount 0 + { + ifvarvarl weaponcount hud_totaltime + { + getactor[playerid].pal hud_temp + ifvarn hud_temp 1 + { + displayrand hud_temp + andvar hud_temp 3 + } + else + setvar hud_temp 0 + + addvarvar hud_x hud_temp + addvar hud_x 184 + + addvar hud_y 240 + subvarvar hud_y hud_temp + + setvarvar hud_tilenum weaponcount + andvar hud_tilenum 3 + addvar hud_tilenum SHRINKER + addvar hud_tilenum 3 + + setvar hud_shade -32 + + guniqhudid hud_temp3 + + state G_DrawWeaponTile_crystal + + guniqhudid currentweapon + + addvar hud_x 4 + + setvar hud_tilenum SHRINKER + addvar hud_tilenum 1 + + setvarvar hud_shade gs + + setvarvar hud_pal hud_temp4 + + state G_DrawWeaponTile + + guniqhudid 0 + + setvar hud_temp2 1 + } + } + ifvare hud_temp2 0 + { + addvar hud_x 184 + + addvar hud_y 240 + + setvar hud_tilenum SHRINKER + addvar hud_tilenum 2 + + getplayer[THISACTOR].random_club_frame hud_shade + andvar hud_shade 2047 + sin hud_shade hud_shade + shiftvarr hud_shade 10 + mulvar hud_shade -1 + addvar hud_shade 16 + + guniqhudid hud_temp3 + + state G_DrawWeaponTile_crystal + + guniqhudid currentweapon + + addvar hud_x 4 + + setvar hud_tilenum SHRINKER + + setvarvar hud_shade gs + + setvarvar hud_pal hud_temp4 + + state G_DrawWeaponTile + + guniqhudid 0 + } +ends + +// framework + +onevent EVENT_DISPLAYWEAPON // P_DisplayWeapon + + setvar RETURN -1 + + getplayer[THISACTOR].weapon_pos weapon_pos + getuserdef[THISACTOR].weaponscale weaponscale + getplayer[THISACTOR].i playerid + + getuserdef[THISACTOR].drawweapon hud_temp + + ifvare hud_temp 2 // weapon icons + { + setvar hud_tilenum -1 + + switch currentweapon + case PISTOL_WEAPON + setvar hud_tilenum FIRSTGUNSPRITE + break + case CHAINGUN_WEAPON + setvar hud_tilenum CHAINGUNSPRITE + break + case RPG_WEAPON + setvar hud_tilenum RPGSPRITE + break + case FREEZE_WEAPON + setvar hud_tilenum FREEZESPRITE + break + case SHRINKER_WEAPON + setvar hud_tilenum SHRINKERSPRITE + break + case GROW_WEAPON + setvar hud_tilenum GROWSPRITEICON + break + case DEVISTATOR_WEAPON + setvar hud_tilenum DEVISTATORSPRITE + break + case TRIPBOMB_WEAPON + setvar hud_tilenum TRIPBOMBSPRITE + break + case HANDREMOTE_WEAPON + case HANDBOMB_WEAPON + setvar hud_tilenum HEAVYHBOMB + break + case SHOTGUN_WEAPON + setvar hud_tilenum SHOTGUNSPRITE + break + default + addlogvar currentweapon + break + /* + case KNEE_WEAPON + setvar hud_tilenum -1 + break + */ + endswitch + + ifvarn hud_tilenum -1 + { + setvar hud_x 160 + setvarvar hud_y weapon_pos + mulvarvar hud_y weapon_pos + addvar hud_y 180 + setvar hud_scale 65536 + getuserdef[THISACTOR].statusbarscale hud_temp2 + mulvarvar hud_scale hud_temp2 + divvar hud_scale 100 + rotatesprite hud_x hud_y hud_scale 0 hud_tilenum 0 0 2 windowx1 windowy1 windowx2 windowy2 + } + } + + ifvarn hud_temp 1 break // If we are not displaying the actual HUD weapons, stop processing. + + // these gamevars can get changed in the states up above, so reset them now. + setvar hud_scale 65536 + setvar hud_orientation 0 + setvar hud_angle 0 + setvarvar hud_shade gs + + state draw_quick_kick + + // cleanup + setvar hud_orientation 0 + setvar hud_angle 0 + guniqhudid 0 + + getactor[playerid].xrepeat hud_temp + ifvarl hud_temp 40 + state draw_shrunk_fists + else + { + getactor[playerid].pal hud_pal + ifvarn hud_pal 1 + { + getplayer[THISACTOR].cursectnum hud_temp2 + ifvarg hud_temp2 -1 + getsector[hud_temp2].floorpal hud_pal + else + setvar hud_pal 0 + } + + switch currentweapon + case KNEE_WEAPON + setvarvar hud_totaltime WEAPON0_TOTALTIME + state draw_kick + break + case TRIPBOMB_WEAPON + setvarvar hud_totaltime WEAPON8_TOTALTIME + state draw_tripbomb + break + case RPG_WEAPON + setvarvar hud_totaltime WEAPON4_TOTALTIME + state draw_rpg + break + case SHOTGUN_WEAPON + setvarvar hud_totaltime WEAPON2_TOTALTIME + state draw_shotgun + break + case CHAINGUN_WEAPON + setvarvar hud_temp4 WEAPON3_FIREDELAY + setvarvar hud_totaltime WEAPON3_TOTALTIME + state draw_chaingun + break + case PISTOL_WEAPON + setvarvar hud_temp3 WEAPON1_RELOAD + setvarvar hud_temp4 WEAPON1_FIREDELAY + setvarvar hud_totaltime WEAPON1_TOTALTIME + state draw_pistol + break + case HANDBOMB_WEAPON + setvarvar hud_totaltime WEAPON5_TOTALTIME + state draw_pipebomb + break + case HANDREMOTE_WEAPON + setvarvar hud_totaltime WEAPON10_TOTALTIME + state draw_detonator + break + case DEVISTATOR_WEAPON + setvarvar hud_totaltime WEAPON7_TOTALTIME + state draw_devastator + break + case FREEZE_WEAPON + setvarvar hud_totaltime WEAPON9_TOTALTIME + state draw_freezer + break + case GROW_WEAPON + setvarvar hud_totaltime WEAPON11_TOTALTIME + state draw_expander + break + case SHRINKER_WEAPON + setvarvar hud_totaltime WEAPON6_TOTALTIME + state draw_shrinker + break + default + addlogvar currentweapon + break + endswitch + + // cleanup + setvar hud_orientation 0 + setvar hud_angle 0 + guniqhudid 0 + } +endevent