]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into TimePath/experiments/csqc_prediction (blame TimePath if...
authorMario <zacjardine@y7mail.com>
Tue, 27 Jan 2015 07:59:18 +0000 (18:59 +1100)
committerMario <zacjardine@y7mail.com>
Tue, 27 Jan 2015 07:59:18 +0000 (18:59 +1100)
Conflicts:
qcsrc/server/cl_physics.qc

107 files changed:
_hud_descriptions.cfg
crosshairs.cfg
defaultXonotic.cfg
gfx/crosshair29.tga [new file with mode: 0644]
gfx/crosshair30.tga [new file with mode: 0644]
gfx/crosshair31.tga [new file with mode: 0644]
gfx/crosshair32.tga [new file with mode: 0644]
gfx/crosshair33.tga [new file with mode: 0644]
gfx/crosshair34.tga [new file with mode: 0644]
gfx/crosshair35.tga [new file with mode: 0644]
gfx/crosshair36.tga [new file with mode: 0644]
gfx/crosshair37.tga [new file with mode: 0644]
gfx/crosshair38.tga [new file with mode: 0644]
gfx/crosshair39.tga [new file with mode: 0644]
gfx/crosshair40.tga [new file with mode: 0644]
gfx/crosshair41.tga [new file with mode: 0644]
gfx/crosshair42.tga [new file with mode: 0644]
gfx/hud/default/kh_blue.tga [deleted file]
gfx/hud/default/kh_blue_carrying.tga [new file with mode: 0644]
gfx/hud/default/kh_blue_taken.tga [new file with mode: 0644]
gfx/hud/default/kh_bluearrow.tga [deleted file]
gfx/hud/default/kh_dropped.tga [new file with mode: 0644]
gfx/hud/default/kh_pink.tga [deleted file]
gfx/hud/default/kh_pink_carrying.tga [new file with mode: 0644]
gfx/hud/default/kh_pink_taken.tga [new file with mode: 0644]
gfx/hud/default/kh_pinkarrow.tga [deleted file]
gfx/hud/default/kh_red.tga [deleted file]
gfx/hud/default/kh_red_carrying.tga [new file with mode: 0644]
gfx/hud/default/kh_red_taken.tga [new file with mode: 0644]
gfx/hud/default/kh_redarrow.tga [deleted file]
gfx/hud/default/kh_yellow.tga [deleted file]
gfx/hud/default/kh_yellow_carrying.tga [new file with mode: 0644]
gfx/hud/default/kh_yellow_taken.tga [new file with mode: 0644]
gfx/hud/default/kh_yellowarrow.tga [deleted file]
gfx/hud/old/kh_blue.tga [deleted file]
gfx/hud/old/kh_bluearrow.tga [deleted file]
gfx/hud/old/kh_pink.tga [deleted file]
gfx/hud/old/kh_pinkarrow.tga [deleted file]
gfx/hud/old/kh_red.tga [deleted file]
gfx/hud/old/kh_redarrow.tga [deleted file]
gfx/hud/old/kh_yellow.tga [deleted file]
gfx/hud/old/kh_yellowarrow.tga [deleted file]
gfx/menu/luminos/icon_mod_instagib.tga [new file with mode: 0644]
gfx/menu/wickedx/icon_mod_instagib.tga [new file with mode: 0644]
gfx/menu/xaw/icon_mod_instagib.tga [new file with mode: 0644]
hud_luminos.cfg
hud_luminos_minimal.cfg
hud_luminos_minimal_xhair.cfg
hud_luminos_old.cfg
hud_nexuiz.cfg
notifications.cfg
qcsrc/client/View.qc
qcsrc/client/announcer.qc
qcsrc/client/autocvars.qh
qcsrc/client/hud.qc
qcsrc/client/hud_config.qc
qcsrc/common/physics.qc
qcsrc/common/stats.qh
qcsrc/common/weapons/weapons.qc
qcsrc/menu/classes.c
qcsrc/menu/command/menu_cmd.qc
qcsrc/menu/item.c
qcsrc/menu/item/button.c
qcsrc/menu/item/checkbox.c
qcsrc/menu/item/dialog.c
qcsrc/menu/item/inputbox.c
qcsrc/menu/item/listbox.c
qcsrc/menu/item/nexposee.c
qcsrc/menu/item/slider.c
qcsrc/menu/menu.qc
qcsrc/menu/menu.qh
qcsrc/menu/xonotic/campaign.c
qcsrc/menu/xonotic/colorpicker.c
qcsrc/menu/xonotic/colorpicker_string.c
qcsrc/menu/xonotic/demolist.c
qcsrc/menu/xonotic/dialog_hudpanel_ammo.c
qcsrc/menu/xonotic/dialog_hudpanel_weapons.c
qcsrc/menu/xonotic/dialog_settings_audio.c
qcsrc/menu/xonotic/dialog_settings_game_crosshair.c
qcsrc/menu/xonotic/dialog_singleplayer_winner.c
qcsrc/menu/xonotic/gametypelist.c
qcsrc/menu/xonotic/keybinder.c
qcsrc/menu/xonotic/languagelist.c
qcsrc/menu/xonotic/maplist.c
qcsrc/menu/xonotic/playerlist.c
qcsrc/menu/xonotic/playlist.c
qcsrc/menu/xonotic/screenshotlist.c
qcsrc/menu/xonotic/serverlist.c
qcsrc/menu/xonotic/skinlist.c
qcsrc/menu/xonotic/soundlist.c
qcsrc/menu/xonotic/statslist.c
qcsrc/menu/xonotic/weaponslist.c
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/base.qh
qcsrc/server/mutators/mutator_overkill.qc
sound/menu/README [new file with mode: 0644]
sound/menu/clear.wav [new file with mode: 0644]
sound/menu/close.wav [new file with mode: 0644]
sound/menu/execute.wav [new file with mode: 0644]
sound/menu/focus.wav [new file with mode: 0644]
sound/menu/open.wav [new file with mode: 0644]
sound/menu/select.wav [new file with mode: 0644]
sound/menu/slide.wav [new file with mode: 0644]
sound/menu/winner.ogg [new file with mode: 0644]
sound/misc/menu1.wav [deleted file]
sound/misc/menu2.wav [deleted file]
sound/misc/mouseclick.wav [deleted file]

index 270bd2bd9294693bcbf787666f7b3b2d341e2141..a47884ef05f586d66da20ad330a33b864eb3d017 100644 (file)
@@ -58,6 +58,7 @@ seta hud_panel_weapons_timeout_fadefgmin "" "minimum alpha of the panel foregrou
 seta hud_panel_weapons_timeout_speed_in "" "speed that fading/moving onto the screen occurs"
 seta hud_panel_weapons_timeout_speed_out "" "speed that fading/moving off of the screen occurs"
 seta hud_panel_weapons_label "" "1 = show number of weapon, 2 = show bound key of weapon, 3 = show name of weapon"
+seta hud_panel_weapons_label_scale "" "scale of the weapon text label"
 seta hud_panel_weapons_accuracy "" "show accuracy color as the weapon icon background; colors can be configured with accuracy_color* cvars"
 seta hud_panel_weapons_ammo "" "show ammo as a status bar"
 seta hud_panel_weapons_onlyowned "" "show only owned weapons"
@@ -66,6 +67,8 @@ seta hud_panel_ammo "" "enable/disable this panel"
 seta hud_panel_ammo_pos "" "position of this panel"
 seta hud_panel_ammo_size "" "size of this panel"
 seta hud_panel_ammo_onlycurrent "" "1 = show only current ammo type"
+seta hud_panel_ammo_noncurrent_alpha "" "alpha of noncurrent ammo types"
+seta hud_panel_ammo_noncurrent_scale "" "scale of noncurrent ammo types, relative to the current ammo type"
 seta hud_panel_ammo_iconalign "" "0 = align icons to the left, 1 = align icons to the right"
 seta hud_panel_ammo_bg "" "if set to something else than \"\" = override default background"
 seta hud_panel_ammo_bg_color "" "if set to something else than \"\" = override default panel background color"
index 52ae30cb5baaf085432fca0cfc6c5a3af41a2ed6..4d44688a28c78a5682fade92d6cfa50afeb67745 100644 (file)
@@ -51,7 +51,7 @@ seta crosshair_per_weapon 1   "when 1, each gun will display a different crosshair
 // =========================
 
 // ring around crosshair, used for various purposes (such as indicating bullets left in clip, vortex charge)
-seta crosshair_ring 1 "main cvar to enable or disable normal crosshair rings"
+seta crosshair_ring 1 "enable normal crosshair rings"
 seta crosshair_ring_inner 0 "allow inner rings to be drawn too"
 seta crosshair_ring_size 2     "ring size"
 seta crosshair_ring_alpha 0.2  "ring alpha"
@@ -67,14 +67,20 @@ seta crosshair_ring_vortex_currentcharge_scale 30
 seta crosshair_ring_vortex_currentcharge_movingavg_rate 0.05
 
 // minelayer ring
-seta crosshair_ring_minelayer 1
+seta crosshair_ring_minelayer 1 "draw a ring showing the current amount of layed mines"
 seta crosshair_ring_minelayer_alpha 0.15
 
 // hagar ring
-seta crosshair_ring_hagar 1
+seta crosshair_ring_hagar 1 "draw a ring showing the current charge of the hagar"
 seta crosshair_ring_hagar_alpha 0.15
 
+// arc ring
+seta crosshair_ring_arc 1 "draw a ring showing arc's overheating"
+seta crosshair_ring_arc_hot_color "1 0 0"
+seta crosshair_ring_arc_cold_alpha 0.2
+seta crosshair_ring_arc_hot_alpha 0.5
+
 // reload ring
-seta crosshair_ring_reload 1 "main cvar to enable or disable ammo crosshair rings"
+seta crosshair_ring_reload 1 "enable ammo crosshair rings"
 seta crosshair_ring_reload_size 2.5    "reload ring size"
 seta crosshair_ring_reload_alpha 0.2   "reload ring alpha"
index db64c7925b84e7a9726a2c51d2cbd863ccaf77e8..3b1d205d20f9919b61374c61878649f6a4dfe3b8 100644 (file)
@@ -55,10 +55,13 @@ _cl_name ""
 _cl_playermodel models/player/erebus.iqm
 _cl_playerskin 0
 
-seta cl_reticle 1 "control for toggling whether ANY zoom reticles are shown"
-seta cl_reticle_stretch 0 "whether to stretch reticles so they fit the screen (breaks image proportions)"
-seta cl_reticle_item_vortex 1 "draw aiming reticle for the vortex weapon's zoom, 0 disables and values between 0 and 1 change alpha"
-seta cl_reticle_item_normal 1 "draw reticle when zooming with the zoom button, 0 disables and values between 0 and 1 change alpha"
+seta cl_reticle 1 "enable zoom reticles"
+seta cl_reticle_stretch 0 "stretch reticles so they fit the screen (breaks image proportions)"
+seta cl_reticle_normal 1 "draw an aiminig reticle when zooming with the zoom button"
+seta cl_reticle_normal_alpha 1 "alpha of the normal reticle"
+seta cl_reticle_weapon 1 "draw custom aiming reticle when zooming with certain weapons"
+seta cl_reticle_weapon_alpha 1 "alpha of the custom reticle"
+
 fov 100
 seta cl_velocityzoom_enabled 0 "velocity based zooming of fov"
 seta cl_velocityzoom_factor 0 "factor of fov zooming (negative values zoom out)"
diff --git a/gfx/crosshair29.tga b/gfx/crosshair29.tga
new file mode 100644 (file)
index 0000000..c103751
Binary files /dev/null and b/gfx/crosshair29.tga differ
diff --git a/gfx/crosshair30.tga b/gfx/crosshair30.tga
new file mode 100644 (file)
index 0000000..093bff2
Binary files /dev/null and b/gfx/crosshair30.tga differ
diff --git a/gfx/crosshair31.tga b/gfx/crosshair31.tga
new file mode 100644 (file)
index 0000000..c7d59e3
Binary files /dev/null and b/gfx/crosshair31.tga differ
diff --git a/gfx/crosshair32.tga b/gfx/crosshair32.tga
new file mode 100644 (file)
index 0000000..0dae288
Binary files /dev/null and b/gfx/crosshair32.tga differ
diff --git a/gfx/crosshair33.tga b/gfx/crosshair33.tga
new file mode 100644 (file)
index 0000000..b3cc235
Binary files /dev/null and b/gfx/crosshair33.tga differ
diff --git a/gfx/crosshair34.tga b/gfx/crosshair34.tga
new file mode 100644 (file)
index 0000000..9a2257b
Binary files /dev/null and b/gfx/crosshair34.tga differ
diff --git a/gfx/crosshair35.tga b/gfx/crosshair35.tga
new file mode 100644 (file)
index 0000000..aaa8c85
Binary files /dev/null and b/gfx/crosshair35.tga differ
diff --git a/gfx/crosshair36.tga b/gfx/crosshair36.tga
new file mode 100644 (file)
index 0000000..87f01f2
Binary files /dev/null and b/gfx/crosshair36.tga differ
diff --git a/gfx/crosshair37.tga b/gfx/crosshair37.tga
new file mode 100644 (file)
index 0000000..50ae94b
Binary files /dev/null and b/gfx/crosshair37.tga differ
diff --git a/gfx/crosshair38.tga b/gfx/crosshair38.tga
new file mode 100644 (file)
index 0000000..08e3436
Binary files /dev/null and b/gfx/crosshair38.tga differ
diff --git a/gfx/crosshair39.tga b/gfx/crosshair39.tga
new file mode 100644 (file)
index 0000000..6a90b62
Binary files /dev/null and b/gfx/crosshair39.tga differ
diff --git a/gfx/crosshair40.tga b/gfx/crosshair40.tga
new file mode 100644 (file)
index 0000000..d15801c
Binary files /dev/null and b/gfx/crosshair40.tga differ
diff --git a/gfx/crosshair41.tga b/gfx/crosshair41.tga
new file mode 100644 (file)
index 0000000..5e11a3c
Binary files /dev/null and b/gfx/crosshair41.tga differ
diff --git a/gfx/crosshair42.tga b/gfx/crosshair42.tga
new file mode 100644 (file)
index 0000000..a78503a
Binary files /dev/null and b/gfx/crosshair42.tga differ
diff --git a/gfx/hud/default/kh_blue.tga b/gfx/hud/default/kh_blue.tga
deleted file mode 100644 (file)
index 467b229..0000000
Binary files a/gfx/hud/default/kh_blue.tga and /dev/null differ
diff --git a/gfx/hud/default/kh_blue_carrying.tga b/gfx/hud/default/kh_blue_carrying.tga
new file mode 100644 (file)
index 0000000..a1ad7ae
Binary files /dev/null and b/gfx/hud/default/kh_blue_carrying.tga differ
diff --git a/gfx/hud/default/kh_blue_taken.tga b/gfx/hud/default/kh_blue_taken.tga
new file mode 100644 (file)
index 0000000..bb855cc
Binary files /dev/null and b/gfx/hud/default/kh_blue_taken.tga differ
diff --git a/gfx/hud/default/kh_bluearrow.tga b/gfx/hud/default/kh_bluearrow.tga
deleted file mode 100644 (file)
index b686d1b..0000000
Binary files a/gfx/hud/default/kh_bluearrow.tga and /dev/null differ
diff --git a/gfx/hud/default/kh_dropped.tga b/gfx/hud/default/kh_dropped.tga
new file mode 100644 (file)
index 0000000..a6df016
Binary files /dev/null and b/gfx/hud/default/kh_dropped.tga differ
diff --git a/gfx/hud/default/kh_pink.tga b/gfx/hud/default/kh_pink.tga
deleted file mode 100644 (file)
index b40967a..0000000
Binary files a/gfx/hud/default/kh_pink.tga and /dev/null differ
diff --git a/gfx/hud/default/kh_pink_carrying.tga b/gfx/hud/default/kh_pink_carrying.tga
new file mode 100644 (file)
index 0000000..61053a5
Binary files /dev/null and b/gfx/hud/default/kh_pink_carrying.tga differ
diff --git a/gfx/hud/default/kh_pink_taken.tga b/gfx/hud/default/kh_pink_taken.tga
new file mode 100644 (file)
index 0000000..e7c642f
Binary files /dev/null and b/gfx/hud/default/kh_pink_taken.tga differ
diff --git a/gfx/hud/default/kh_pinkarrow.tga b/gfx/hud/default/kh_pinkarrow.tga
deleted file mode 100644 (file)
index 17427e5..0000000
Binary files a/gfx/hud/default/kh_pinkarrow.tga and /dev/null differ
diff --git a/gfx/hud/default/kh_red.tga b/gfx/hud/default/kh_red.tga
deleted file mode 100644 (file)
index 3201f8a..0000000
Binary files a/gfx/hud/default/kh_red.tga and /dev/null differ
diff --git a/gfx/hud/default/kh_red_carrying.tga b/gfx/hud/default/kh_red_carrying.tga
new file mode 100644 (file)
index 0000000..e52d33d
Binary files /dev/null and b/gfx/hud/default/kh_red_carrying.tga differ
diff --git a/gfx/hud/default/kh_red_taken.tga b/gfx/hud/default/kh_red_taken.tga
new file mode 100644 (file)
index 0000000..66a96a3
Binary files /dev/null and b/gfx/hud/default/kh_red_taken.tga differ
diff --git a/gfx/hud/default/kh_redarrow.tga b/gfx/hud/default/kh_redarrow.tga
deleted file mode 100644 (file)
index edd1fab..0000000
Binary files a/gfx/hud/default/kh_redarrow.tga and /dev/null differ
diff --git a/gfx/hud/default/kh_yellow.tga b/gfx/hud/default/kh_yellow.tga
deleted file mode 100644 (file)
index bb83475..0000000
Binary files a/gfx/hud/default/kh_yellow.tga and /dev/null differ
diff --git a/gfx/hud/default/kh_yellow_carrying.tga b/gfx/hud/default/kh_yellow_carrying.tga
new file mode 100644 (file)
index 0000000..17b051f
Binary files /dev/null and b/gfx/hud/default/kh_yellow_carrying.tga differ
diff --git a/gfx/hud/default/kh_yellow_taken.tga b/gfx/hud/default/kh_yellow_taken.tga
new file mode 100644 (file)
index 0000000..b4a3d32
Binary files /dev/null and b/gfx/hud/default/kh_yellow_taken.tga differ
diff --git a/gfx/hud/default/kh_yellowarrow.tga b/gfx/hud/default/kh_yellowarrow.tga
deleted file mode 100644 (file)
index 8e754cc..0000000
Binary files a/gfx/hud/default/kh_yellowarrow.tga and /dev/null differ
diff --git a/gfx/hud/old/kh_blue.tga b/gfx/hud/old/kh_blue.tga
deleted file mode 100644 (file)
index 467b229..0000000
Binary files a/gfx/hud/old/kh_blue.tga and /dev/null differ
diff --git a/gfx/hud/old/kh_bluearrow.tga b/gfx/hud/old/kh_bluearrow.tga
deleted file mode 100644 (file)
index b686d1b..0000000
Binary files a/gfx/hud/old/kh_bluearrow.tga and /dev/null differ
diff --git a/gfx/hud/old/kh_pink.tga b/gfx/hud/old/kh_pink.tga
deleted file mode 100644 (file)
index b40967a..0000000
Binary files a/gfx/hud/old/kh_pink.tga and /dev/null differ
diff --git a/gfx/hud/old/kh_pinkarrow.tga b/gfx/hud/old/kh_pinkarrow.tga
deleted file mode 100644 (file)
index 17427e5..0000000
Binary files a/gfx/hud/old/kh_pinkarrow.tga and /dev/null differ
diff --git a/gfx/hud/old/kh_red.tga b/gfx/hud/old/kh_red.tga
deleted file mode 100644 (file)
index 3201f8a..0000000
Binary files a/gfx/hud/old/kh_red.tga and /dev/null differ
diff --git a/gfx/hud/old/kh_redarrow.tga b/gfx/hud/old/kh_redarrow.tga
deleted file mode 100644 (file)
index edd1fab..0000000
Binary files a/gfx/hud/old/kh_redarrow.tga and /dev/null differ
diff --git a/gfx/hud/old/kh_yellow.tga b/gfx/hud/old/kh_yellow.tga
deleted file mode 100644 (file)
index bb83475..0000000
Binary files a/gfx/hud/old/kh_yellow.tga and /dev/null differ
diff --git a/gfx/hud/old/kh_yellowarrow.tga b/gfx/hud/old/kh_yellowarrow.tga
deleted file mode 100644 (file)
index 8e754cc..0000000
Binary files a/gfx/hud/old/kh_yellowarrow.tga and /dev/null differ
diff --git a/gfx/menu/luminos/icon_mod_instagib.tga b/gfx/menu/luminos/icon_mod_instagib.tga
new file mode 100644 (file)
index 0000000..518fd79
Binary files /dev/null and b/gfx/menu/luminos/icon_mod_instagib.tga differ
diff --git a/gfx/menu/wickedx/icon_mod_instagib.tga b/gfx/menu/wickedx/icon_mod_instagib.tga
new file mode 100644 (file)
index 0000000..518fd79
Binary files /dev/null and b/gfx/menu/wickedx/icon_mod_instagib.tga differ
diff --git a/gfx/menu/xaw/icon_mod_instagib.tga b/gfx/menu/xaw/icon_mod_instagib.tga
new file mode 100644 (file)
index 0000000..518fd79
Binary files /dev/null and b/gfx/menu/xaw/icon_mod_instagib.tga differ
index f3bc914e6a48be696bd9e3b8879eb90d9ab0254f..34db2beb663e7cdf118e8cdb3814575a18529ef1 100644 (file)
@@ -41,6 +41,7 @@ seta hud_panel_weapons_bg_border ""
 seta hud_panel_weapons_bg_padding "4"
 seta hud_panel_weapons_accuracy "1"
 seta hud_panel_weapons_label "1"
+seta hud_panel_weapons_label_scale "0.5"
 seta hud_panel_weapons_complainbubble "1"
 seta hud_panel_weapons_complainbubble_padding "-1"
 seta hud_panel_weapons_complainbubble_time "0"
@@ -70,6 +71,8 @@ seta hud_panel_ammo_bg_alpha ""
 seta hud_panel_ammo_bg_border ""
 seta hud_panel_ammo_bg_padding ""
 seta hud_panel_ammo_onlycurrent "0"
+seta hud_panel_ammo_noncurrent_alpha "0.7"
+seta hud_panel_ammo_noncurrent_scale "1"
 seta hud_panel_ammo_iconalign "0"
 seta hud_panel_ammo_progressbar "0"
 seta hud_panel_ammo_progressbar_name "progressbar"
index 050689b38caf95d525f07e83f378649fc49dafff..39a6fd2eddbcb8547c9be24ca5cc983ad6ac0c7c 100644 (file)
@@ -41,6 +41,7 @@ seta hud_panel_weapons_bg_border ""
 seta hud_panel_weapons_bg_padding ""
 seta hud_panel_weapons_accuracy "1"
 seta hud_panel_weapons_label "1"
+seta hud_panel_weapons_label_scale "0.5"
 seta hud_panel_weapons_complainbubble "1"
 seta hud_panel_weapons_complainbubble_padding "-1"
 seta hud_panel_weapons_complainbubble_time "0"
@@ -70,6 +71,8 @@ seta hud_panel_ammo_bg_alpha ""
 seta hud_panel_ammo_bg_border ""
 seta hud_panel_ammo_bg_padding ""
 seta hud_panel_ammo_onlycurrent "0"
+seta hud_panel_ammo_noncurrent_alpha "0.7"
+seta hud_panel_ammo_noncurrent_scale "1"
 seta hud_panel_ammo_iconalign "0"
 seta hud_panel_ammo_progressbar "0"
 seta hud_panel_ammo_progressbar_name "progressbar"
index 8fb6cbe93da88fd67f099c634126551449435fdf..4b6b7e4a74288362ce8761363045f4d2e8767042 100644 (file)
@@ -41,6 +41,7 @@ seta hud_panel_weapons_bg_border ""
 seta hud_panel_weapons_bg_padding ""
 seta hud_panel_weapons_accuracy "1"
 seta hud_panel_weapons_label "1"
+seta hud_panel_weapons_label_scale "0.5"
 seta hud_panel_weapons_complainbubble "1"
 seta hud_panel_weapons_complainbubble_padding "-1"
 seta hud_panel_weapons_complainbubble_time "0"
@@ -70,6 +71,8 @@ seta hud_panel_ammo_bg_alpha ""
 seta hud_panel_ammo_bg_border ""
 seta hud_panel_ammo_bg_padding ""
 seta hud_panel_ammo_onlycurrent "1"
+seta hud_panel_ammo_noncurrent_alpha "0.7"
+seta hud_panel_ammo_noncurrent_scale "1"
 seta hud_panel_ammo_iconalign "0"
 seta hud_panel_ammo_progressbar "1"
 seta hud_panel_ammo_progressbar_name "progressbar_ammo"
index 9d71e2e2872cc4f4d6e0624a2d2b5e74064fa5cf..20650899e77de25e7e1e33d485fbeb5beb2e243f 100644 (file)
@@ -41,6 +41,7 @@ seta hud_panel_weapons_bg_border ""
 seta hud_panel_weapons_bg_padding ""
 seta hud_panel_weapons_accuracy "1"
 seta hud_panel_weapons_label "1"
+seta hud_panel_weapons_label_scale "0.5"
 seta hud_panel_weapons_complainbubble "1"
 seta hud_panel_weapons_complainbubble_padding "-1"
 seta hud_panel_weapons_complainbubble_time "0"
@@ -70,6 +71,8 @@ seta hud_panel_ammo_bg_alpha ""
 seta hud_panel_ammo_bg_border ""
 seta hud_panel_ammo_bg_padding ""
 seta hud_panel_ammo_onlycurrent "0"
+seta hud_panel_ammo_noncurrent_alpha "0.7"
+seta hud_panel_ammo_noncurrent_scale "1"
 seta hud_panel_ammo_iconalign "0"
 seta hud_panel_ammo_progressbar "0"
 seta hud_panel_ammo_progressbar_name "progressbar"
index 9e4678293d627419612564b5d12d91a4365d56fc..2d86881f5fa81c7827cf133718987757fd0da4df 100644 (file)
@@ -41,6 +41,7 @@ seta hud_panel_weapons_bg_border ""
 seta hud_panel_weapons_bg_padding "-5"
 seta hud_panel_weapons_accuracy "1"
 seta hud_panel_weapons_label "1"
+seta hud_panel_weapons_label_scale "0.5"
 seta hud_panel_weapons_complainbubble "1"
 seta hud_panel_weapons_complainbubble_padding "-1"
 seta hud_panel_weapons_complainbubble_time "0"
@@ -70,6 +71,8 @@ seta hud_panel_ammo_bg_alpha ""
 seta hud_panel_ammo_bg_border ""
 seta hud_panel_ammo_bg_padding ""
 seta hud_panel_ammo_onlycurrent "0"
+seta hud_panel_ammo_noncurrent_alpha "0.7"
+seta hud_panel_ammo_noncurrent_scale "1"
 seta hud_panel_ammo_iconalign "0"
 seta hud_panel_ammo_progressbar "0"
 seta hud_panel_ammo_progressbar_name "progressbar"
index ddcf855af58d8738480f5d12cdfb6b5f4fc085bb..78e57f58b5c73e861c0e82688dd2c1c914373600 100644 (file)
@@ -102,8 +102,13 @@ seta notification_ANNCE_VOTE_ACCEPT "2" "0 = disabled, 1 = enabled if gentle mod
 seta notification_ANNCE_VOTE_CALL "2" "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
 seta notification_ANNCE_VOTE_FAIL "2" "0 = disabled, 1 = enabled if gentle mode is off, 2 = always enabled"
 
-// MSG_INFO notifications (count = 244):
+// MSG_INFO notifications (count = 259):
 seta notification_INFO_CHAT_NOSPECTATORS "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_COINTOSS "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_JETPACK_NOFUEL "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_SUPERSPEC_MISSING_UID "2" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_CA_JOIN_LATE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_CA_LEAVE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CTF_CAPTURE_RED "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CTF_CAPTURE_BLUE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_CTF_CAPTURE_BROKEN_RED "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -301,8 +306,14 @@ seta notification_INFO_VERSION_OUTDATED "2" "0 = off, 1 = print to console, 2 =
 seta notification_INFO_WATERMARK "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_ACCORDEON_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_ACCORDEON_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_ARC_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_BLASTER_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_BLASTER_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_CRYLINK_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_CRYLINK_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_DEVASTATOR_MURDER_DIRECT "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_DEVASTATOR_MURDER_SPLASH "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_DEVASTATOR_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_ELECTRO_MURDER_BOLT "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_ELECTRO_MURDER_COMBO "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_ELECTRO_MURDER_ORBS "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
@@ -317,38 +328,43 @@ seta notification_INFO_WEAPON_HAGAR_MURDER_SPRAY "1" "0 = off, 1 = print to cons
 seta notification_INFO_WEAPON_HAGAR_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_HLAC_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_HLAC_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_HMG_MURDER_SNIPE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_HMG_MURDER_SPRAY "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_HOOK_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_KLEINBOTTLE_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_KLEINBOTTLE_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_LASER_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_LASER_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_MACHINEGUN_MURDER_SNIPE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_MACHINEGUN_MURDER_SPRAY "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_MINELAYER_LIMIT "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_MINELAYER_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_MINELAYER_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_MINSTANEX_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_MORTAR_MURDER_BOUNCE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_MORTAR_MURDER_EXPLODE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_MORTAR_SUICIDE_BOUNCE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_MORTAR_SUICIDE_EXPLODE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_NEX_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_RIFLE_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_RIFLE_MURDER_HAIL "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_RIFLE_MURDER_HAIL_PIERCING "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_RIFLE_MURDER_PIERCING "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_ROCKETLAUNCHER_MURDER_DIRECT "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_ROCKETLAUNCHER_MURDER_SPLASH "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_ROCKETLAUNCHER_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_RPC_MURDER_DIRECT "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_RPC_MURDER_SPLASH "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_RPC_SUICIDE_DIRECT "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_RPC_SUICIDE_SPLASH "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SEEKER_MURDER_SPRAY "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SEEKER_MURDER_TAG "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SEEKER_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_SHOCKWAVE_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_SHOCKWAVE_MURDER_SLAP "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SHOTGUN_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_SHOTGUN_MURDER_SLAP "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_THINKING_WITH_PORTALS "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_TUBA_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 seta notification_INFO_WEAPON_TUBA_SUICIDE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_UZI_MURDER_SNIPE "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
-seta notification_INFO_WEAPON_UZI_MURDER_SPRAY "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_VAPORIZER_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
+seta notification_INFO_WEAPON_VORTEX_MURDER "1" "0 = off, 1 = print to console, 2 = print to console and chatbox (if notification_allow_chatboxprint is enabled)"
 
-// MSG_CENTER notifications (count = 161):
+// MSG_CENTER notifications (count = 170):
+seta notification_CENTER_ALONE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_ASSAULT_ATTACKING "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_ASSAULT_DEFENDING "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_COUNTDOWN_BEGIN "1" "0 = off, 1 = centerprint"
@@ -358,6 +374,7 @@ seta notification_CENTER_COUNTDOWN_ROUNDSTOP "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_ROUND_TIED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_ROUND_OVER "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_CAMPCHECK "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_COINTOSS "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_CTF_CAPTURESHIELD_FREE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_CTF_CAPTURESHIELD_SHIELDED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_CTF_CAPTURE_RED "1" "0 = off, 1 = centerprint"
@@ -474,18 +491,23 @@ seta notification_CENTER_KEYHUNT_START_BLUE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_KEYHUNT_START_YELLOW "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_KEYHUNT_START_PINK "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_KEYHUNT_WAIT "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_LMS_NOLIVES "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MISSING_TEAMS "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MISSING_PLAYERS "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_INSTAGIB_FINDAMMO "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_INSTAGIB_FINDAMMO_FIRST "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_INSTAGIB_LIVES_REMAINING "1" "0 = off, 1 = centerprint"
-seta notification_CENTER_INSTAGIB_SECONDARY "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_MOTD "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_NIX_COUNTDOWN "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_NIX_NEWWEAPON "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_NADE "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_ONS_NOTSHIELDED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_OVERTIME_FRAG "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_OVERTIME_CONTROLPOINT "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_OVERTIME_TIME "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_PORTO_CREATED_IN "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_PORTO_CREATED_OUT "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_PORTO_FAILED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_POWERDOWN_INVISIBILITY "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_POWERDOWN_SHIELD "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_POWERDOWN_SPEED "1" "0 = off, 1 = centerprint"
@@ -495,6 +517,7 @@ seta notification_CENTER_POWERUP_SHIELD "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_POWERUP_SPEED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_POWERUP_STRENGTH "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_RACE_FINISHLAP "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_SECONDARY_NODAMAGE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_SEQUENCE_COMPLETED "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_SEQUENCE_COUNTER "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_SEQUENCE_COUNTER_FEWMORE "1" "0 = off, 1 = centerprint"
@@ -510,8 +533,9 @@ seta notification_CENTER_TEAMCHANGE_SPECTATE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_TEAMCHANGE_SUICIDE "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_TIMEOUT_BEGINNING "1" "0 = off, 1 = centerprint"
 seta notification_CENTER_TIMEOUT_ENDING "1" "0 = off, 1 = centerprint"
+seta notification_CENTER_WEAPON_MINELAYER_LIMIT "1" "0 = off, 1 = centerprint"
 
-// MSG_MULTI notifications (count = 141):
+// MSG_MULTI notifications (count = 152):
 seta notification_DEATH_MURDER_CHEAT "1" "Enable this multiple notification"
 seta notification_DEATH_MURDER_DROWN "1" "Enable this multiple notification"
 seta notification_DEATH_MURDER_FALL "1" "Enable this multiple notification"
@@ -603,12 +627,19 @@ seta notification_ITEM_WEAPON_GOT "1" "Enable this multiple notification"
 seta notification_ITEM_WEAPON_NOAMMO "1" "Enable this multiple notification"
 seta notification_ITEM_WEAPON_PRIMORSEC "1" "Enable this multiple notification"
 seta notification_ITEM_WEAPON_UNAVAILABLE "1" "Enable this multiple notification"
+seta notification_MULTI_COINTOSS "1" "Enable this multiple notification"
 seta notification_MULTI_COUNTDOWN_BEGIN "1" "Enable this multiple notification"
 seta notification_MULTI_INSTAGIB_FINDAMMO "1" "Enable this multiple notification"
 seta notification_WEAPON_ACCORDEON_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_ACCORDEON_SUICIDE "1" "Enable this multiple notification"
+seta notification_WEAPON_ARC_MURDER "1" "Enable this multiple notification"
+seta notification_WEAPON_BLASTER_MURDER "1" "Enable this multiple notification"
+seta notification_WEAPON_BLASTER_SUICIDE "1" "Enable this multiple notification"
 seta notification_WEAPON_CRYLINK_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_CRYLINK_SUICIDE "1" "Enable this multiple notification"
+seta notification_WEAPON_DEVASTATOR_MURDER_DIRECT "1" "Enable this multiple notification"
+seta notification_WEAPON_DEVASTATOR_MURDER_SPLASH "1" "Enable this multiple notification"
+seta notification_WEAPON_DEVASTATOR_SUICIDE "1" "Enable this multiple notification"
 seta notification_WEAPON_ELECTRO_MURDER_BOLT "1" "Enable this multiple notification"
 seta notification_WEAPON_ELECTRO_MURDER_COMBO "1" "Enable this multiple notification"
 seta notification_WEAPON_ELECTRO_MURDER_ORBS "1" "Enable this multiple notification"
@@ -623,36 +654,40 @@ seta notification_WEAPON_HAGAR_MURDER_SPRAY "1" "Enable this multiple notificati
 seta notification_WEAPON_HAGAR_SUICIDE "1" "Enable this multiple notification"
 seta notification_WEAPON_HLAC_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_HLAC_SUICIDE "1" "Enable this multiple notification"
+seta notification_WEAPON_HMG_MURDER_SNIPE "1" "Enable this multiple notification"
+seta notification_WEAPON_HMG_MURDER_SPRAY "1" "Enable this multiple notification"
 seta notification_WEAPON_HOOK_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_KLEINBOTTLE_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_KLEINBOTTLE_SUICIDE "1" "Enable this multiple notification"
-seta notification_WEAPON_LASER_MURDER "1" "Enable this multiple notification"
-seta notification_WEAPON_LASER_SUICIDE "1" "Enable this multiple notification"
+seta notification_WEAPON_MACHINEGUN_MURDER_SNIPE "1" "Enable this multiple notification"
+seta notification_WEAPON_MACHINEGUN_MURDER_SPRAY "1" "Enable this multiple notification"
+seta notification_WEAPON_MINELAYER_LIMIT "1" "Enable this multiple notification"
 seta notification_WEAPON_MINELAYER_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_MINELAYER_SUICIDE "1" "Enable this multiple notification"
-seta notification_WEAPON_MINSTANEX_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_MORTAR_MURDER_BOUNCE "1" "Enable this multiple notification"
 seta notification_WEAPON_MORTAR_MURDER_EXPLODE "1" "Enable this multiple notification"
 seta notification_WEAPON_MORTAR_SUICIDE_BOUNCE "1" "Enable this multiple notification"
 seta notification_WEAPON_MORTAR_SUICIDE_EXPLODE "1" "Enable this multiple notification"
-seta notification_WEAPON_NEX_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_RIFLE_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_RIFLE_MURDER_HAIL "1" "Enable this multiple notification"
 seta notification_WEAPON_RIFLE_MURDER_HAIL_PIERCING "1" "Enable this multiple notification"
 seta notification_WEAPON_RIFLE_MURDER_PIERCING "1" "Enable this multiple notification"
-seta notification_WEAPON_ROCKETLAUNCHER_MURDER_DIRECT "1" "Enable this multiple notification"
-seta notification_WEAPON_ROCKETLAUNCHER_MURDER_SPLASH "1" "Enable this multiple notification"
-seta notification_WEAPON_ROCKETLAUNCHER_SUICIDE "1" "Enable this multiple notification"
+seta notification_WEAPON_RPC_MURDER_DIRECT "1" "Enable this multiple notification"
+seta notification_WEAPON_RPC_MURDER_SPLASH "1" "Enable this multiple notification"
+seta notification_WEAPON_RPC_SUICIDE_DIRECT "1" "Enable this multiple notification"
+seta notification_WEAPON_RPC_SUICIDE_SPLASH "1" "Enable this multiple notification"
 seta notification_WEAPON_SEEKER_MURDER_SPRAY "1" "Enable this multiple notification"
 seta notification_WEAPON_SEEKER_MURDER_TAG "1" "Enable this multiple notification"
 seta notification_WEAPON_SEEKER_SUICIDE "1" "Enable this multiple notification"
+seta notification_WEAPON_SHOCKWAVE_MURDER "1" "Enable this multiple notification"
+seta notification_WEAPON_SHOCKWAVE_MURDER_SLAP "1" "Enable this multiple notification"
 seta notification_WEAPON_SHOTGUN_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_SHOTGUN_MURDER_SLAP "1" "Enable this multiple notification"
 seta notification_WEAPON_THINKING_WITH_PORTALS "1" "Enable this multiple notification"
 seta notification_WEAPON_TUBA_MURDER "1" "Enable this multiple notification"
 seta notification_WEAPON_TUBA_SUICIDE "1" "Enable this multiple notification"
-seta notification_WEAPON_UZI_MURDER_SNIPE "1" "Enable this multiple notification"
-seta notification_WEAPON_UZI_MURDER_SPRAY "1" "Enable this multiple notification"
+seta notification_WEAPON_VAPORIZER_MURDER "1" "Enable this multiple notification"
+seta notification_WEAPON_VORTEX_MURDER "1" "Enable this multiple notification"
 
 // MSG_CHOICE notifications (count = 12):
 seta notification_CHOICE_CTF_CAPTURE_BROKEN_RED "1" "Choice for this notification 0 = off, 1 = default message, 2 = verbose message"
@@ -697,4 +732,4 @@ seta notification_show_sprees_info "3" "Show spree information in MSG_INFO messa
 seta notification_show_sprees_info_newline "1" "Show attacker spree information for MSG_INFO messages on a separate line than the death notification itself"
 seta notification_show_sprees_info_specialonly "1" "Don't show attacker spree information in MSG_INFO messages if it isn't an achievement"
 
-// Notification counts (total = 647): MSG_ANNCE = 89, MSG_INFO = 244, MSG_CENTER = 161, MSG_MULTI = 141, MSG_CHOICE = 12
+// Notification counts (total = 682): MSG_ANNCE = 89, MSG_INFO = 259, MSG_CENTER = 170, MSG_MULTI = 152, MSG_CHOICE = 12
index 8a725774e144fae6b64122a34330100013073d17..310b47d70def78e40a15d8873b5e964f7f0ba6b4 100644 (file)
@@ -784,7 +784,7 @@ void UpdateCrosshair()
 
                                float ok_ammo_charge, ok_ammo_chargepool;
                                ok_ammo_charge = getstatf(STAT_OK_AMMO_CHARGE);
-                               ok_ammo_chargepool = getstatf(STAT_OK_AMMO_CHARGEPOOl);
+                               ok_ammo_chargepool = getstatf(STAT_OK_AMMO_CHARGEPOOL);
 
                                float vortex_charge, vortex_chargepool;
                                vortex_charge = getstatf(STAT_VORTEX_CHARGE);
index 35077496911a9ea8f8f56664068d3cd06437e3f0..f49b847d69d05c2a3bd8fecca9d932fe7ec95cc6 100644 (file)
@@ -27,6 +27,7 @@ void Announcer_Countdown()
        }
        else // countdown is still going
        {
+               // if concomitant countdown to round start overrides countdown to game start
                if(roundstarttime == starttime)
                {
                        Local_Notification(MSG_CENTER, CENTER_COUNTDOWN_ROUNDSTART, countdown_rounded);
@@ -59,9 +60,6 @@ void Announcer_Gamestart()
 
        if(previous_game_starttime != startTime)
        {
-               if((time + 5.0) < startTime) // if connecting to server while restart was active don't always play prepareforbattle
-                       Local_Notification(MSG_ANNCE, ANNCE_PREPARE);
-
                if(time < startTime)
                {
                        entity e = find(world, classname, "announcer_countdown");
@@ -71,6 +69,11 @@ void Announcer_Gamestart()
                                e.classname = "announcer_countdown";
                                e.think = Announcer_Countdown;
                        }
+
+                       if(time + 5.0 < startTime) // if connecting to server while restart was active don't always play prepareforbattle
+                       if(time > e.nextthink) // don't play it again if countdown was already going
+                               Local_Notification(MSG_ANNCE, ANNCE_PREPARE);
+
                        e.nextthink = startTime - floor(startTime - time); //synchronize nextthink to startTime
                }
        }
index adc587764aeb5bd88a0b6b760845658100b05770..8ada4f88b4f1bd0c6fa99ee82865ad00893ee735 100644 (file)
@@ -221,6 +221,8 @@ float autocvar_hud_panel_ammo;
 float autocvar_hud_panel_ammo_iconalign;
 float autocvar_hud_panel_ammo_maxammo;
 float autocvar_hud_panel_ammo_onlycurrent;
+float autocvar_hud_panel_ammo_noncurrent_alpha = 0.7;
+float autocvar_hud_panel_ammo_noncurrent_scale = 1;
 float autocvar_hud_panel_ammo_progressbar;
 string autocvar_hud_panel_ammo_progressbar_name;
 float autocvar_hud_panel_ammo_progressbar_xoffset;
@@ -345,6 +347,7 @@ float autocvar_hud_panel_weapons_complainbubble_fadetime;
 float autocvar_hud_panel_weapons_complainbubble_padding;
 float autocvar_hud_panel_weapons_complainbubble_time;
 float autocvar_hud_panel_weapons_label;
+float autocvar_hud_panel_weapons_label_scale = 0.5;
 float autocvar_hud_panel_weapons_onlyowned;
 float autocvar_hud_panel_weapons_timeout;
 float autocvar_hud_panel_weapons_timeout_effect;
index 8a9aab304c4b7fecf0f09ecc3857660aa97a33b1..413f05cff777619ed13c8202355d5f037bf4ee34 100644 (file)
@@ -415,7 +415,7 @@ void HUD_Weapons(void)
        float i, f, a;
        float screen_ar, center_x = 0, center_y;
        float weapon_count, weapon_id;
-       float row, column, rows = 0, columns;
+       float row, column, rows = 0, columns = 0;
        float aspect = autocvar_hud_panel_weapons_aspect;
 
        float panel_weapon_accuracy;
@@ -433,7 +433,7 @@ void HUD_Weapons(void)
        float fadetime = max(0, autocvar_hud_panel_weapons_complainbubble_fadetime);
 
        vector weapon_pos, weapon_size = '0 0 0';
-       local noref vector old_panel_size; // fteqcc sucks
+       local noref vector max_panel_size; // fteqcc sucks
        vector color;
 
        // check to see if we want to continue
@@ -519,38 +519,41 @@ void HUD_Weapons(void)
                        return;
                }
 
-               old_panel_size = panel_size;
-               if(panel_bg_padding)
-                       old_panel_size -= '2 2 0' * panel_bg_padding;
+               max_panel_size = panel_size - '2 2 0' * panel_bg_padding;
 
-               // first find values for the standard table (with all the weapons)
-               rows = old_panel_size_y/old_panel_size_x;
-               rows = bound(1, floor((sqrt(4 * aspect * rows * WEP_COUNT + rows * rows) + rows + 0.5) / 2), WEP_COUNT);
-               columns = ceil(WEP_COUNT/rows);
-               weapon_size_x = old_panel_size_x / columns;
-               weapon_size_y = old_panel_size_y / rows;
-
-               // change table values to include only the owned weapons
-               float columns_save = columns;
-               if(weapon_count <= rows)
+               // calculate distribution and size of table cells
+               if(max_panel_size_x > max_panel_size_y)
                {
-                       rows = weapon_count;
-                       columns = 1;
+                       while(weapon_count > columns * rows)
+                       {
+                               ++rows;
+                               columns = ceil(max_panel_size_x / (max_panel_size_y / rows * aspect));
+                       }
+
+                       weapon_size_x = max_panel_size_x / columns;
+                       weapon_size_y = max_panel_size_y / rows;
+                       columns = ceil(weapon_count / rows);
                }
                else
-                       columns = ceil(weapon_count / rows);
+               {
+                       while(weapon_count > columns * rows)
+                       {
+                               ++columns;
+                               rows = ceil(max_panel_size_y / (max_panel_size_x / columns / aspect));
+                       }
 
-               // enlarge weapon_size to match desired aspect ratio in order to capitalize on panel space
-               if(columns < columns_save)
-                       weapon_size_x = min(old_panel_size_x / columns, aspect * weapon_size_y);
+                       weapon_size_x = max_panel_size_x / columns;
+                       weapon_size_y = max_panel_size_y / rows;
+                       rows = ceil(weapon_count / columns);
+               }
 
                // reduce size of the panel
                panel_size_x = columns * weapon_size_x;
                panel_size_y = rows * weapon_size_y;
-               panel_pos_x += (old_panel_size_x - panel_size_x) / 2;
-               panel_pos_y += (old_panel_size_y - panel_size_y) / 2;
-               if(panel_bg_padding)
-                       panel_size += '2 2 0' * panel_bg_padding;
+               panel_pos_x += (max_panel_size_x - panel_size_x) / 2;
+               panel_pos_y += (max_panel_size_y - panel_size_y) / 2;
+
+               panel_size += '2 2 0' * panel_bg_padding;
        }
        else
                weapon_count = WEP_COUNT;
@@ -689,7 +692,9 @@ void HUD_Weapons(void)
        if(autocvar_hud_panel_weapons_accuracy)
                Accuracy_LoadColors();
 
+       // draw items
        row = column = 0;
+       vector label_size = '1 1 0' * min(weapon_size_x, weapon_size_y) * bound(0, autocvar_hud_panel_weapons_label_scale, 1);
        for(i = 0; i <= WEP_LAST-WEP_FIRST; ++i)
        {
                // retrieve information about the current weapon to be drawn
@@ -734,15 +739,15 @@ void HUD_Weapons(void)
                        switch(autocvar_hud_panel_weapons_label)
                        {
                                case 1: // weapon number
-                                       drawstring(weapon_pos, ftos(weapon_id), '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                                       drawstring(weapon_pos, ftos(weapon_id), label_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
                                        break;
 
                                case 2: // bind
-                                       drawstring(weapon_pos, getcommandkey(ftos(weapon_id), strcat("weapon_group_", ftos(weapon_id))), '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                                       drawstring(weapon_pos, getcommandkey(ftos(weapon_id), strcat("weapon_group_", ftos(weapon_id))), label_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
                                        break;
 
                                case 3: // weapon name
-                                       drawstring(weapon_pos, strtolower(self.message), '1 1 0' * 0.5 * weapon_size_y, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
+                                       drawstring(weapon_pos, strtolower(self.message), label_size, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
                                        break;
 
                                default: // nothing
@@ -879,74 +884,76 @@ void DrawAmmoNades(vector myPos, vector mySize, float draw_expanding, float expa
        }
 }
 
-void DrawAmmoItem(vector myPos, vector mySize, .float ammotype, float currently_selected, float infinite_ammo)
+void DrawAmmoItem(vector myPos, vector mySize, .float ammoType, float isCurrent, float isInfinite)
 {
-       float a = 0;
-       if(ammotype != ammo_none)
+       if(ammoType == ammo_none)
+               return;
+
+       // Initialize variables
+
+       float ammo;
+       if(autocvar__hud_configure)
        {
-               if(autocvar__hud_configure)
-               {
-                       currently_selected = (ammotype == ammo_rockets); //rockets always selected
-                       a = 60;
-               }
-               else
-               {
-                       // how much ammo do we have of this ammotype?
-                       a = getstati(GetAmmoStat(ammotype));
-               }
+               isCurrent = (ammoType == ammo_rockets); // Rockets always current
+               ammo = 60;
        }
        else
+               ammo = getstati(GetAmmoStat(ammoType));
+
+       if(!isCurrent)
        {
-               #if 0
-               infinite_ammo = TRUE;
-               #else
-               return; // just don't draw infinite ammo at all.
-               #endif
+               float scale = bound(0, autocvar_hud_panel_ammo_noncurrent_scale, 1);
+               myPos = myPos + (mySize - mySize * scale) * 0.5;
+               mySize = mySize * scale;
        }
 
-       vector color;
-       if(infinite_ammo)
-               color = '0 0.5 0.75';
-       else if(a < 10)
-               color = '0.7 0 0';
-       else
-               color = '1 1 1';
-
-       float theAlpha;
-       if(currently_selected)
-               theAlpha = 1;
-       else
-               theAlpha = 0.7;
-
-       vector picpos, numpos;
+       vector iconPos, textPos;
        if(autocvar_hud_panel_ammo_iconalign)
        {
-               numpos = myPos;
-               picpos = myPos + eX * 2 * mySize_y;
+               iconPos = myPos + eX * 2 * mySize_y;
+               textPos = myPos;
        }
        else
        {
-               numpos = myPos + eX * mySize_y;
-               picpos = myPos;
+               iconPos = myPos;
+               textPos = myPos + eX * mySize_y;
        }
 
-       if(currently_selected)
+       float isShadowed = (ammo <= 0 && !isCurrent && !isInfinite);
+
+       vector iconColor = isShadowed ? '0 0 0' : '1 1 1';
+       vector textColor;
+       if(isInfinite)
+               textColor = '0.2 0.95 0';
+       else if(isShadowed)
+               textColor = '0 0 0';
+       else if(ammo < 10)
+               textColor = '0.8 0.04 0';
+       else
+               textColor = '1 1 1';
+
+       float alpha;
+       if(isCurrent)
+               alpha = panel_fg_alpha;
+       else if(isShadowed)
+               alpha = panel_fg_alpha * bound(0, autocvar_hud_panel_ammo_noncurrent_alpha, 1) * 0.5;
+       else
+               alpha = panel_fg_alpha * bound(0, autocvar_hud_panel_ammo_noncurrent_alpha, 1);
+
+       string text = isInfinite ? "\xE2\x88\x9E" : ftos(ammo); // Use infinity symbol (U+221E)
+
+       // Draw item
+
+       if(isCurrent)
                drawpic_aspect_skin(myPos, "ammo_current_bg", mySize, '1 1 1', panel_fg_alpha, DRAWFLAG_NORMAL);
 
-       if(a > 0 && autocvar_hud_panel_ammo_progressbar)
-               HUD_Panel_DrawProgressBar(myPos + eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, mySize - eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, autocvar_hud_panel_ammo_progressbar_name, a/autocvar_hud_panel_ammo_maxammo, 0, 0, color, autocvar_hud_progressbar_alpha * panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
+       if(ammo > 0 && autocvar_hud_panel_ammo_progressbar)
+               HUD_Panel_DrawProgressBar(myPos + eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, mySize - eX * autocvar_hud_panel_ammo_progressbar_xoffset * mySize_x, autocvar_hud_panel_ammo_progressbar_name, ammo/autocvar_hud_panel_ammo_maxammo, 0, 0, textColor, autocvar_hud_progressbar_alpha * alpha, DRAWFLAG_NORMAL);
 
        if(autocvar_hud_panel_ammo_text)
-       {
-               if(a > 0 || infinite_ammo)
-                       drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, color, panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
-               else // "ghost" ammo count
-                       drawstring_aspect(numpos, ftos(a), eX * (2/3) * mySize_x + eY * mySize_y, '0 0 0', panel_fg_alpha * theAlpha * 0.5, DRAWFLAG_NORMAL);
-       }
-       if(a > 0 || infinite_ammo)
-               drawpic_aspect_skin(picpos, GetAmmoPicture(ammotype), '1 1 0' * mySize_y, '1 1 1', panel_fg_alpha * theAlpha, DRAWFLAG_NORMAL);
-       else // "ghost" ammo icon
-               drawpic_aspect_skin(picpos, GetAmmoPicture(ammotype), '1 1 0' * mySize_y, '0 0 0', panel_fg_alpha * theAlpha * 0.5, DRAWFLAG_NORMAL);
+               drawstring_aspect(textPos, text, eX * (2/3) * mySize_x + eY * mySize_y, textColor, alpha, DRAWFLAG_NORMAL);
+
+       drawpic_aspect_skin(iconPos, GetAmmoPicture(ammoType), '1 1 0' * mySize_y, iconColor, alpha, DRAWFLAG_NORMAL);
 }
 
 float nade_prevstatus;
@@ -2908,148 +2915,132 @@ void HUD_Mod_CTF(vector pos, vector mySize)
 }
 
 // Keyhunt HUD modicon section
-float kh_runheretime;
-
-void HUD_Mod_KH_Reset(void)
-{
-       kh_runheretime = 0;
-}
+vector KH_SLOTS[4];
 
 void HUD_Mod_KH(vector pos, vector mySize)
 {
        mod_active = 1; // keyhunt should never hide the mod icons panel
-       float kh_keys;
-       float keyteam;
-       float a, aa;
-       vector p = '0 0 0', pa, kh_size = '0 0 0', kh_asize = '0 0 0';
 
-       kh_keys = getstati(STAT_KH_KEYS);
+       // Read current state
 
-       p_x = pos_x;
-       if(mySize_x > mySize_y)
-       {
-               p_y = pos_y + 0.25 * mySize_y;
-               pa = p - eY * 0.25 * mySize_y;
+       float state = getstati(STAT_KH_KEYS);
+       float i, key_state;
+       float all_keys, team1_keys, team2_keys, team3_keys, team4_keys, dropped_keys, carrying_keys;
+       all_keys = team1_keys = team2_keys = team3_keys = team4_keys = dropped_keys = carrying_keys = 0;
 
-               kh_size_x = mySize_x * 0.25;
-               kh_size_y = 0.75 * mySize_y;
-               kh_asize_x = mySize_x * 0.25;
-               kh_asize_y = mySize_y * 0.25;
-       }
-       else
+       for(i = 0; i < 4; ++i)
        {
-               p_y = pos_y + 0.125 * mySize_y;
-               pa = p - eY * 0.125 * mySize_y;
+               key_state = (bitshift(state, i * -5) & 31) - 1;
 
-               kh_size_x = mySize_x * 0.5;
-               kh_size_y = 0.375 * mySize_y;
-               kh_asize_x = mySize_x * 0.5;
-               kh_asize_y = mySize_y * 0.125;
-       }
+               if(key_state == -1)
+                       continue;
 
-       float i, key;
+               if(key_state == 30)
+               {
+                       ++carrying_keys;
+                       key_state = myteam;
+               }
 
-       float keycount;
-       keycount = 0;
-       for(i = 0; i < 4; ++i)
-       {
-               key = floor(kh_keys / pow(32, i)) & 31;
-               keyteam = key - 1;
-               if(keyteam == 30 && keycount <= 4)
-                       keycount += 4;
-               if(keyteam == myteam || keyteam == -1 || keyteam == 30)
-                       keycount += 1;
+               switch(key_state)
+               {
+                       case NUM_TEAM_1: ++team1_keys; break;
+                       case NUM_TEAM_2: ++team2_keys; break;
+                       case NUM_TEAM_3: ++team3_keys; break;
+                       case NUM_TEAM_4: ++team4_keys; break;
+                       case 29: ++dropped_keys; break;
+               }
+
+               ++all_keys;
        }
 
-       // this yields 8 exactly if "RUN HERE" shows
+       // Calculate slot measurements
+
+       vector slot_size;
 
-       if(keycount == 8)
+       if(all_keys == 4 && mySize_x * 0.5 < mySize_y && mySize_y * 0.5 < mySize_x)
        {
-               if(!kh_runheretime)
-                       kh_runheretime = time;
-               pa_y -= fabs(sin((time - kh_runheretime) * 3.5)) * 6; // make the arrows jump in case of RUN HERE
+               // Quadratic arrangement
+               slot_size = eX * mySize_x * 0.5 + eY * mySize_y * 0.5;
+               KH_SLOTS[0] = pos;
+               KH_SLOTS[1] = pos + eX * slot_size_x;
+               KH_SLOTS[2] = pos + eY * slot_size_y;
+               KH_SLOTS[3] = pos + eX * slot_size_x + eY * slot_size_y;
        }
        else
-               kh_runheretime = 0;
-
-       for(i = 0; i < 4; ++i)
        {
-               key = floor(kh_keys / pow(32, i)) & 31;
-               keyteam = key - 1;
-               switch(keyteam)
+               if(mySize_x > mySize_y)
                {
-                       case 30: // my key
-                               keyteam = myteam;
-                               a = 1;
-                               aa = 1;
-                               break;
-                       case -1: // no key
-                               a = 0;
-                               aa = 0;
-                               break;
-                       default: // owned or dropped
-                               a = 0.2;
-                               aa = 0.5;
-                               break;
+                       // Horizontal arrangement
+                       slot_size = eX * mySize_x / all_keys + eY * mySize_y;
+                       for(i = 0; i < all_keys; ++i)
+                               KH_SLOTS[i] = pos + eX * slot_size_x * i;
                }
-               a = a * panel_fg_alpha;
-               aa = aa * panel_fg_alpha;
-               if(a > 0)
+               else
                {
-                       switch(keyteam)
-                       {
-                               case NUM_TEAM_1:
-                                       drawpic_aspect_skin(pa, "kh_redarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% theAlpha key
-                                       break;
-                               case NUM_TEAM_2:
-                                       drawpic_aspect_skin(pa, "kh_bluearrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% theAlpha key
-                                       break;
-                               case NUM_TEAM_3:
-                                       drawpic_aspect_skin(pa, "kh_yellowarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% theAlpha key
-                                       break;
-                               case NUM_TEAM_4:
-                                       drawpic_aspect_skin(pa, "kh_pinkarrow", kh_asize, '1 1 1', aa, DRAWFLAG_NORMAL);  // show 30% theAlpha key
-                                       break;
-                               default:
-                                       break;
-                       }
-                       switch(i) // YAY! switch(i) inside a for loop for i. DailyWTF, here we come!
-                       {
-                               case 0:
-                                       drawpic_aspect_skin(p, "kh_red", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% theAlpha key
-                                       break;
-                               case 1:
-                                       drawpic_aspect_skin(p, "kh_blue", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% theAlpha key
-                                       break;
-                               case 2:
-                                       drawpic_aspect_skin(p, "kh_yellow", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% theAlpha key
-                                       break;
-                               case 3:
-                                       drawpic_aspect_skin(p, "kh_pink", kh_size, '1 1 1', a, DRAWFLAG_NORMAL);  // show 30% theAlpha key
-                                       break;
-                       }
+                       // Vertical arrangement
+                       slot_size = eX * mySize_x + eY * mySize_y / all_keys;
+                       for(i = 0; i < all_keys; ++i)
+                               KH_SLOTS[i] = pos + eY * slot_size_y * i;
                }
-               if(mySize_x > mySize_y)
+       }
+
+       // Make icons blink in case of RUN HERE
+
+       float blink = 0.6 + sin(2*M_PI*time) / 2.5; // Oscillate between 0.2 and 1
+       float alpha;
+       alpha = 1;
+
+       if(carrying_keys)
+               switch(myteam)
                {
-                       p_x += 0.25 * mySize_x;
-                       pa_x += 0.25 * mySize_x;
+                       case NUM_TEAM_1: if(team1_keys == all_keys) alpha = blink; break;
+                       case NUM_TEAM_2: if(team2_keys == all_keys) alpha = blink; break;
+                       case NUM_TEAM_3: if(team3_keys == all_keys) alpha = blink; break;
+                       case NUM_TEAM_4: if(team4_keys == all_keys) alpha = blink; break;
+               }
+
+       // Draw icons
+
+       i = 0;
+
+       while(team1_keys--)
+               if(myteam == NUM_TEAM_1 && carrying_keys)
+               {
+                       drawpic_aspect_skin(KH_SLOTS[i++], "kh_red_carrying", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+                       --carrying_keys;
                }
                else
+                       drawpic_aspect_skin(KH_SLOTS[i++], "kh_red_taken", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+
+       while(team2_keys--)
+               if(myteam == NUM_TEAM_2 && carrying_keys)
                {
-                       if(i == 1)
-                       {
-                               p_y = pos_y + 0.625 * mySize_y;
-                               pa_y = pos_y + 0.5 * mySize_y;
-                               p_x = pos_x;
-                               pa_x = pos_x;
-                       }
-                       else
-                       {
-                               p_x += 0.5 * mySize_x;
-                               pa_x += 0.5 * mySize_x;
-                       }
+                       drawpic_aspect_skin(KH_SLOTS[i++], "kh_blue_carrying", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+                       --carrying_keys;
                }
-       }
+               else
+                       drawpic_aspect_skin(KH_SLOTS[i++], "kh_blue_taken", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+
+       while(team3_keys--)
+               if(myteam == NUM_TEAM_3 && carrying_keys)
+               {
+                       drawpic_aspect_skin(KH_SLOTS[i++], "kh_yellow_carrying", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+                       --carrying_keys;
+               }
+               else
+                       drawpic_aspect_skin(KH_SLOTS[i++], "kh_yellow_taken", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+
+       while(team4_keys--)
+               if(myteam == NUM_TEAM_4 && carrying_keys)
+               {
+                       drawpic_aspect_skin(KH_SLOTS[i++], "kh_pink_carrying", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+                       --carrying_keys;
+               }
+               else
+                       drawpic_aspect_skin(KH_SLOTS[i++], "kh_pink_taken", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
+
+       while(dropped_keys--)
+               drawpic_aspect_skin(KH_SLOTS[i++], "kh_dropped", slot_size, '1 1 1', alpha, DRAWFLAG_NORMAL);
 }
 
 // Keepaway HUD mod icon
@@ -4480,9 +4471,7 @@ Main HUD system
 void HUD_Reset (void)
 {
        // reset gametype specific icons
-       if(gametype == MAPINFO_TYPE_KEYHUNT)
-               HUD_Mod_KH_Reset();
-       else if(gametype == MAPINFO_TYPE_CTF)
+       if(gametype == MAPINFO_TYPE_CTF)
                HUD_Mod_CTF_Reset();
 }
 
index 047e012ad65d8670b5502679f1bff01f72cce9c7..e19e2378754b1d4052fd3ecdf9eb1195b2ca3cdf 100644 (file)
@@ -67,6 +67,7 @@ void HUD_Panel_ExportCfg(string cfgname)
                                case HUD_PANEL_WEAPONS:
                                        HUD_Write_PanelCvar_q("_accuracy");
                                        HUD_Write_PanelCvar_q("_label");
+                                       HUD_Write_PanelCvar_q("_label_scale");
                                        HUD_Write_PanelCvar_q("_complainbubble");
                                        HUD_Write_PanelCvar_q("_complainbubble_padding");
                                        HUD_Write_PanelCvar_q("_complainbubble_time");
@@ -88,6 +89,8 @@ void HUD_Panel_ExportCfg(string cfgname)
                                        break;
                                case HUD_PANEL_AMMO:
                                        HUD_Write_PanelCvar_q("_onlycurrent");
+                                       HUD_Write_PanelCvar_q("_noncurrent_alpha");
+                                       HUD_Write_PanelCvar_q("_noncurrent_scale");
                                        HUD_Write_PanelCvar_q("_iconalign");
                                        HUD_Write_PanelCvar_q("_progressbar");
                                        HUD_Write_PanelCvar_q("_progressbar_name");
@@ -1252,7 +1255,7 @@ void HUD_Configure_Frame()
        }
 }
 
-const float hlBorderSize = 4;
+const float hlBorderSize = 2;
 const string hlBorder = "gfx/hud/default/border_highlighted";
 const string hlBorder2 = "gfx/hud/default/border_highlighted2";
 void HUD_Panel_HlBorder(float myBorder, vector color, float theAlpha)
@@ -1278,7 +1281,7 @@ void HUD_Configure_PostDraw()
                {
                        panel = highlightedPanel;
                        HUD_Panel_UpdatePosSize()
-                       HUD_Panel_HlBorder(panel_bg_border + 1.5 * hlBorderSize, '0 0.5 1', 0.25 * (1 - autocvar__menu_alpha));
+                       HUD_Panel_HlBorder(panel_bg_border * hlBorderSize, '0 0.5 1', 0.4 * (1 - autocvar__menu_alpha));
                }
        }
 }
index 1b96fe03a7a613b03a63db0ced9d1559110f82f4..a2f6b5d4a8618106fc4e8f5feaaab094fd37def2 100644 (file)
@@ -1813,9 +1813,8 @@ void PM_Main()
                        not_allowed_to_move = 1;
 #endif
 #ifdef SVQC
-               if (!autocvar_sv_ready_restart_after_countdown)
-                       if (time < game_starttime)
-                               not_allowed_to_move = 1;
+               if (time < game_starttime)
+                       not_allowed_to_move = 1;
 #endif
 
                if (not_allowed_to_move)
index 8898ad2b23d14feb8b552f5d9807620f1a7daecd..ac131e9c79df69dac72a69336b3e43c03e9b9a59 100644 (file)
@@ -88,7 +88,7 @@ const float STAT_HEALING_ORB            = 82;
 const float STAT_HEALING_ORB_ALPHA      = 83;
 const float STAT_PLASMA                 = 84;
 const float STAT_OK_AMMO_CHARGE         = 85;
-const float STAT_OK_AMMO_CHARGEPOOl     = 86;
+const float STAT_OK_AMMO_CHARGEPOOL     = 86;
 // 87 empty?
 // 88 empty?
 // 89 empty?
index 4f11fc3ef272ed53c5763b8f420c36553e6e7b68..284d9811df50c44c98205ca041a659162079493d 100644 (file)
@@ -112,7 +112,7 @@ void register_weapon(
        e.netname = refname;
        e.message = wepname;
 
-       #ifndef MENUQC
+       #ifdef CSQC
        func(WR_INIT);
        #endif
 }
index 9f01ee3fbf08dc8c8a633916923eea028f0d14d1..857f071b2fa2d01984b99838fff9531ddbb1ac7c 100644 (file)
@@ -9,12 +9,12 @@
 #include "item/modalcontroller.c"
 #include "item/image.c"
 #include "item/label.c"
+#include "item/dialog.c"
 #include "item/button.c"
 #include "item/checkbox.c"
 #include "item/radiobutton.c"
 #include "item/borderimage.c"
 #include "item/slider.c"
-#include "item/dialog.c"
 #include "item/tab.c"
 #include "item/textslider.c"
 #include "item/listbox.c"
index c7499e58e40a8a94ba1f31f2c504f0310bb465a3..89086406699a995153b8df9a4f7e293b36945859 100644 (file)
@@ -85,7 +85,10 @@ void GameCommand(string theCommand)
                                }
                }
                else if(argc == 2 && !isdemo()) // don't allow this command in demos
+               {
+                       m_play_click_sound(MENU_SOUND_OPEN);
                        m_goto(strcat(filter, argv(1))); // switch to a menu item
+               }
                if(filter)
                        strunzone(filter);
                return;
index d055b1a051d535dbfd18736751eb2357c25003a0..d0bd40b03884c30d4e83c6727e82d89ac23019a3 100644 (file)
@@ -17,6 +17,7 @@ CLASS(Item) EXTENDS(Object)
        METHOD(Item, destroy, void(entity))
        ATTRIB(Item, focused, float, 0)
        ATTRIB(Item, focusable, float, 0)
+       ATTRIB(Item, allowFocusSound, float, 0)
        ATTRIB(Item, parent, entity, NULL)
        ATTRIB(Item, preferredFocusPriority, float, 0)
        ATTRIB(Item, origin, vector, '0 0 0')
@@ -121,6 +122,8 @@ float Item_mouseRelease(entity me, vector pos)
 
 void Item_focusEnter(entity me)
 {
+       if(me.allowFocusSound)
+               m_play_focus_sound();
 }
 
 void Item_focusLeave(entity me)
index 8bbdfa70406e125083dc6572acedf2f123aeb120..385064e5dad5315c75f0e5376d813bf83a40e94f 100644 (file)
@@ -8,7 +8,7 @@ CLASS(Button) EXTENDS(Label)
        METHOD(Button, mousePress, float(entity, vector))
        METHOD(Button, mouseDrag, float(entity, vector))
        METHOD(Button, mouseRelease, float(entity, vector))
-       METHOD(Button, focusEnter, void(entity))
+       METHOD(Button, playClickSound, void(entity))
        ATTRIB(Button, onClick, void(entity, entity), func_null)
        ATTRIB(Button, onClickEntity, entity, NULL)
        ATTRIB(Button, src, string, string_null)
@@ -18,6 +18,7 @@ CLASS(Button) EXTENDS(Label)
        ATTRIB(Button, srcMulti, float, 1) // 0: button square left, text right; 1: button stretched, text over it
        ATTRIB(Button, buttonLeftOfText, float, 0)
        ATTRIB(Button, focusable, float, 1)
+       ATTRIB(Button, allowFocusSound, float, 1)
        ATTRIB(Button, pressed, float, 0)
        ATTRIB(Button, clickTime, float, 0)
        ATTRIB(Button, disabled, float, 0)
@@ -53,6 +54,7 @@ float Button_keyDown(entity me, float key, float ascii, float shift)
 {
        if(key == K_ENTER || key == K_SPACE || key == K_KP_ENTER)
        {
+               me.playClickSound(me);
                me.clickTime = 0.1; // delayed for effect
                return 1;
        }
@@ -79,8 +81,7 @@ float Button_mouseRelease(entity me, vector pos)
        {
                if (!me.disabled)
                {
-                       if(cvar("menu_sounds"))
-                               localsound("sound/misc/menu2.wav");
+                       me.playClickSound(me);
                        if(me.onClick)
                                me.onClick(me, me.onClickEntity);
                }
@@ -92,12 +93,6 @@ void Button_showNotify(entity me)
 {
        me.focusable = !me.disabled;
 }
-void Button_focusEnter(entity me)
-{
-       if(cvar("menu_sounds") > 1)
-               localsound("sound/misc/menu1.wav");
-       SUPER(Button).focusEnter(me);
-}
 void Button_draw(entity me)
 {
        vector bOrigin, bSize;
@@ -170,4 +165,13 @@ void Button_draw(entity me)
 
        SUPER(Button).draw(me);
 }
+void Button_playClickSound(entity me)
+{
+       if(me.onClick == DialogOpenButton_Click)
+               m_play_click_sound(MENU_SOUND_OPEN);
+       else if(me.onClick == Dialog_Close)
+               m_play_click_sound(MENU_SOUND_CLOSE);
+       else
+               m_play_click_sound(MENU_SOUND_EXECUTE);
+}
 #endif
index 94f67ba709ef7422b1d0b3a76e488b1b9f8f5acf..2540cc846fdbddf80ef44a5d8f4bd022e7f1dee8 100644 (file)
@@ -3,6 +3,7 @@ void CheckBox_Click(entity me, entity other);
 CLASS(CheckBox) EXTENDS(Button)
        METHOD(CheckBox, configureCheckBox, void(entity, string, float, string))
        METHOD(CheckBox, draw, void(entity))
+       METHOD(CheckBox, playClickSound, void(entity))
        METHOD(CheckBox, toString, string(entity))
        METHOD(CheckBox, setChecked, void(entity, float))
        ATTRIB(CheckBox, useDownAsChecked, float, 0)
@@ -45,4 +46,8 @@ void CheckBox_draw(entity me)
        me.pressed = s;
        SUPER(CheckBox).draw(me);
 }
+void CheckBox_playClickSound(entity me)
+{
+       m_play_click_sound(MENU_SOUND_SELECT);
+}
 #endif
index 383578781544e96b900cca383fc702c377945de8..f60550103423b94c869f493ad4616897b5430fef 100644 (file)
@@ -182,6 +182,7 @@ float Dialog_keyDown(entity me, float key, float ascii, float shift)
        {
                if(key == K_ESCAPE)
                {
+                       m_play_click_sound(MENU_SOUND_CLOSE);
                        me.close(me);
                        return 1;
                }
index 1c1bf5189bc34a48a824a46f132e96e79e2f83cb..7b74ade9b0180e67ea982da477198bf48b5b5366 100644 (file)
@@ -18,6 +18,7 @@ CLASS(InputBox) EXTENDS(Label)
        ATTRIB(InputBox, scrollPos, float, 0) // widths
 
        ATTRIB(InputBox, focusable, float, 1)
+       ATTRIB(InputBox, allowFocusSound, float, 1)
        ATTRIB(InputBox, disabled, float, 0)
        ATTRIB(InputBox, lastChangeTime, float, 0)
        ATTRIB(InputBox, dragScrollTimer, float, 0)
@@ -38,7 +39,6 @@ CLASS(InputBox) EXTENDS(Label)
        ATTRIB(InputBox, cb_colorF, vector, '1 1 1')
        ATTRIB(InputBox, cb_colorC, vector, '1 1 1')
 ENDCLASS(InputBox)
-void InputBox_Clear_Click(entity btn, entity me);
 #endif
 
 #ifdef IMPLEMENTATION
@@ -66,11 +66,6 @@ void InputBox_setText(entity me, string txt)
        SUPER(InputBox).setText(me, strzone(txt));
 }
 
-void InputBox_Clear_Click(entity btn, entity me)
-{
-       me.setText(me, "");
-}
-
 float over_ClearButton(entity me, vector pos)
 {
        if (pos_x >= 1 + me.cb_offset - me.cb_width)
@@ -135,8 +130,9 @@ float InputBox_mouseRelease(entity me, vector pos)
        if(me.cb_pressed)
        if (over_ClearButton(me, pos))
        {
+               m_play_click_sound(MENU_SOUND_CLEAR);
+               me.setText(me, "");
                me.cb_pressed = 0;
-               InputBox_Clear_Click(world, me);
                return 1;
        }
        float r = InputBox_mouseDrag(me, pos);
@@ -204,7 +200,10 @@ float InputBox_keyDown(entity me, float key, float ascii, float shift)
                case K_KP_DEL:
                case K_DEL:
                        if(shift & S_CTRL)
+                       {
+                               m_play_click_sound(MENU_SOUND_CLEAR);
                                me.setText(me, "");
+                       }
                        else
                                me.setText(me, strcat(substring(me.text, 0, me.cursorPos), substring(me.text, me.cursorPos + 1, strlen(me.text) - me.cursorPos - 1)));
                        return 1;
index d4eaab2a7b8277e51866df26756550f5c6378c8c..3466b134bd708890b490879cf607dd4c824fff9d 100644 (file)
@@ -9,6 +9,7 @@ CLASS(ListBox) EXTENDS(Item)
        METHOD(ListBox, mouseRelease, float(entity, vector))
        METHOD(ListBox, focusLeave, void(entity))
        ATTRIB(ListBox, focusable, float, 1)
+       ATTRIB(ListBox, allowFocusSound, float, 1)
        ATTRIB(ListBox, selectedItem, float, 0)
        ATTRIB(ListBox, size, vector, '0 0 0')
        ATTRIB(ListBox, origin, vector, '0 0 0')
@@ -35,8 +36,13 @@ CLASS(ListBox) EXTENDS(Item)
        ATTRIB(ListBox, itemHeight, float, 0)
        ATTRIB(ListBox, colorBG, vector, '0 0 0')
        ATTRIB(ListBox, alphaBG, float, 0)
+
+       ATTRIB(ListBox, lastClickedItem, float, -1)
+       ATTRIB(ListBox, lastClickedTime, float, 0)
+
        METHOD(ListBox, drawListBoxItem, void(entity, float, vector, float)) // item number, width/height, selected
        METHOD(ListBox, clickListBoxItem, void(entity, float, vector)) // item number, relative clickpos
+       METHOD(ListBox, doubleClickListBoxItem, void(entity, float, vector)) // item number, relative clickpos
        METHOD(ListBox, setSelected, void(entity, float))
 
        METHOD(ListBox, getLastFullyVisibleItemAtScrollPos, float(entity, float))
@@ -260,7 +266,15 @@ float ListBox_mouseRelease(entity me, vector pos)
                // and give it a nice click event
                if(me.nItems > 0)
                {
-                       me.clickListBoxItem(me, me.selectedItem, globalToBox(pos, eY * (me.getItemStart(me, me.selectedItem) - me.scrollPos), eX * (1 - me.controlWidth) + eY * me.getItemHeight(me, me.selectedItem)));
+                       vector where = globalToBox(pos, eY * (me.getItemStart(me, me.selectedItem) - me.scrollPos), eX * (1 - me.controlWidth) + eY * me.getItemHeight(me, me.selectedItem));
+
+                       if((me.selectedItem == me.lastClickedItem) && (time < me.lastClickedTime + 0.3))
+                               me.doubleClickListBoxItem(me, me.selectedItem, where);
+                       else
+                               me.clickListBoxItem(me, me.selectedItem, where);
+
+                       me.lastClickedItem = me.selectedItem;
+                       me.lastClickedTime = time;
                }
        }
        me.pressed = 0;
@@ -374,7 +388,12 @@ void ListBox_draw(entity me)
 
 void ListBox_clickListBoxItem(entity me, float i, vector where)
 {
-       // itemclick, itemclick, does whatever itemclick does
+       // template method
+}
+
+void ListBox_doubleClickListBoxItem(entity me, float i, vector where)
+{
+       // template method
 }
 
 void ListBox_drawListBoxItem(entity me, float i, vector absSize, float selected)
index ca7ab8fc3785c479c27bee31ee099268a80a3659..0adc399e0887c45a29931df8ef3fbfd4debf09e9 100644 (file)
@@ -219,6 +219,7 @@ float Nexposee_mousePress(entity me, vector pos)
                Nexposee_mouseMove(me, pos);
                if(me.mouseFocusedChild)
                {
+                       m_play_click_sound(MENU_SOUND_OPEN);
                        me.animationState = 1;
                        SUPER(Nexposee).setFocus(me, NULL);
                }
@@ -230,6 +231,7 @@ float Nexposee_mousePress(entity me, vector pos)
        {
                if (!(SUPER(Nexposee).mousePress(me, pos)))
                {
+                       m_play_click_sound(MENU_SOUND_CLOSE);
                        me.animationState = 3;
                        SUPER(Nexposee).setFocus(me, NULL);
                }
@@ -322,10 +324,12 @@ float Nexposee_keyDown(entity me, float scan, float ascii, float shift)
                        default:
                        case 0:
                        case 3:
+                               m_play_click_sound(MENU_SOUND_OPEN);
                                me.animationState = 1;
                                break;
                        case 1:
                        case 2:
+                               m_play_click_sound(MENU_SOUND_CLOSE);
                                me.animationState = 3;
                                break;
                }
index c92db27e984f84be22a86ff2ae8049d190c3d478..fb8cda906764b31effeafd48893ccc948d084188 100644 (file)
@@ -7,10 +7,10 @@ CLASS(Slider) EXTENDS(Label)
        METHOD(Slider, configureSliderValues, void(entity, float, float, float, float, float, float))
        METHOD(Slider, draw, void(entity))
        METHOD(Slider, keyDown, float(entity, float, float, float))
+       METHOD(Slider, keyUp, float(entity, float, float, float))
        METHOD(Slider, mousePress, float(entity, vector))
        METHOD(Slider, mouseDrag, float(entity, vector))
        METHOD(Slider, mouseRelease, float(entity, vector))
-       METHOD(Slider, focusEnter, void(entity))
        METHOD(Slider, valueToText, string(entity, float))
        METHOD(Slider, toString, string(entity))
        METHOD(Slider, setValue, void(entity, float))
@@ -18,6 +18,7 @@ CLASS(Slider) EXTENDS(Label)
        METHOD(Slider, showNotify, void(entity))
        ATTRIB(Slider, src, string, string_null)
        ATTRIB(Slider, focusable, float, 1)
+       ATTRIB(Slider, allowFocusSound, float, 1)
        ATTRIB(Slider, value, float, 0)
        ATTRIB(Slider, animated, float, 1)
        ATTRIB(Slider, sliderValue, float, 0)
@@ -146,7 +147,29 @@ float Slider_keyDown(entity me, float key, float ascii, float shift)
                me.setValue(me, me.valueMax);
                return 1;
        }
-       // TODO more keys
+       // TODO more keys (NOTE also add them to Slider_keyUp)
+       return 0;
+}
+float Slider_keyUp(entity me, float key, float ascii, float shift)
+{
+       if(me.disabled)
+               return 0;
+       switch(key)
+       {
+               case K_LEFTARROW:
+               case K_KP_LEFTARROW:
+               case K_RIGHTARROW:
+               case K_KP_RIGHTARROW:
+               case K_PGUP:
+               case K_KP_PGUP:
+               case K_PGDN:
+               case K_KP_PGDN:
+               case K_HOME:
+               case K_KP_HOME:
+               case K_END:
+               case K_KP_END:
+                       m_play_click_sound(MENU_SOUND_SLIDE);
+       }
        return 0;
 }
 float Slider_mouseDrag(entity me, vector pos)
@@ -242,20 +265,13 @@ float Slider_mouseRelease(entity me, vector pos)
        me.pressed = 0;
        if(me.disabled)
                return 0;
-       if(cvar("menu_sounds"))
-               localsound("sound/misc/menu2.wav");
+       m_play_click_sound(MENU_SOUND_SLIDE);
        return 1;
 }
 void Slider_showNotify(entity me)
 {
        me.focusable = !me.disabled;
 }
-void Slider_focusEnter(entity me)
-{
-       if(cvar("menu_sounds") > 1)
-               localsound("sound/misc/menu1.wav");
-       SUPER(Slider).focusEnter(me);
-}
 void Slider_draw(entity me)
 {
        float controlLeft;
index aa771649d663fa705e6980d4870ef3d5174624b0..85aa3a640e319a055b56926f053ec58d72c12558 100644 (file)
@@ -1001,3 +1001,20 @@ void m_goto(string itemname)
                }
        }
 }
+
+float menuLastFocusSoundTime;
+void m_play_focus_sound()
+{
+       if(cvar("menu_sounds") > 1)
+               if(time - menuLastFocusSoundTime > 0.25)
+               {
+                       localsound(MENU_SOUND_FOCUS);
+                       menuLastFocusSoundTime = time;
+               }
+}
+
+void m_play_click_sound(string soundfile)
+{
+       if(cvar("menu_sounds"))
+               localsound(soundfile);
+}
index b6c0795a8544424d505b8392d8d7f4f7cec59825..6f36a074e05311361c71b174afa796a03adeb02b 100644 (file)
@@ -38,3 +38,17 @@ void preMenuDraw(); // this is run before the menu is drawn. You may put some st
 void postMenuDraw(); // this is run just after the menu is drawn (or not). Useful to draw something over everything else.
 
 void m_sync();
+
+// sounds
+
+const string MENU_SOUND_CLEAR   = "sound/menu/clear.wav";
+const string MENU_SOUND_CLOSE   = "sound/menu/close.wav";
+const string MENU_SOUND_EXECUTE = "sound/menu/execute.wav";
+const string MENU_SOUND_FOCUS   = "sound/menu/focus.wav";
+const string MENU_SOUND_OPEN    = "sound/menu/open.wav";
+const string MENU_SOUND_SELECT  = "sound/menu/select.wav";
+const string MENU_SOUND_SLIDE   = "sound/menu/slide.wav";
+const string MENU_SOUND_WINNER  = "sound/menu/winner.wav";
+
+void m_play_focus_sound();
+void m_play_click_sound(string soundfile);
index 454b4ad710ba660764384042c17edbd398038456..126b728c8fc1a563f12e6cbeb603b348ebf5cd42 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticCampaignList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticCampaignList, rowsPerItem, float, 10)
        METHOD(XonoticCampaignList, draw, void(entity))
        METHOD(XonoticCampaignList, drawListBoxItem, void(entity, float, vector, float))
-       METHOD(XonoticCampaignList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticCampaignList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticCampaignList, resizeNotify, void(entity, vector, vector, vector, vector))
        METHOD(XonoticCampaignList, setSelected, void(entity, float))
        METHOD(XonoticCampaignList, keyDown, float(entity, float, float, float))
@@ -24,9 +24,6 @@ CLASS(XonoticCampaignList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticCampaignList, realUpperMargin1, float, 0)
        ATTRIB(XonoticCampaignList, realUpperMargin2, float, 0)
 
-       ATTRIB(XonoticCampaignList, lastClickedMap, float, -1)
-       ATTRIB(XonoticCampaignList, lastClickedTime, float, 0)
-
        ATTRIB(XonoticCampaignList, origin, vector, '0 0 0')
        ATTRIB(XonoticCampaignList, itemAbsSize, vector, '0 0 0')
        ATTRIB(XonoticCampaignList, emptyLineHeight, float, 0.5)
@@ -233,18 +230,9 @@ void XonoticCampaignList_resizeNotify(entity me, vector relOrigin, vector relSiz
 
        rewrapCampaign(me.columnNameSize, me.rowsPerItem - 3, me.emptyLineHeight, me.realFontSize);
 }
-void XonoticCampaignList_clickListBoxItem(entity me, float i, vector where)
+void XonoticCampaignList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedMap)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       // start game
-                       CampaignList_LoadMap(me, me);
-                       return;
-               }
-       me.lastClickedMap = i;
-       me.lastClickedTime = time;
+       CampaignList_LoadMap(me, me);
 }
 void XonoticCampaignList_drawListBoxItem(entity me, float i, vector absSize, float isSelected)
 {
index e0727373c14b3a4795db1cde2f3caadaec45bfbc..a6be0a4d0476f4e2e7268b8265f4adee79d1fd53 100644 (file)
@@ -139,6 +139,7 @@ float XonoticColorpicker_mouseDrag(entity me, vector coords)
 
 float XonoticColorpicker_mouseRelease(entity me, vector coords)
 {
+       m_play_click_sound(MENU_SOUND_SLIDE);
        me.mouseDrag(me, coords);
        return 1;
 }
index 5d53135e9cca1967c7e3f0d68b8a4b631b7e1ef3..56b8100aaa3a5c816cb9e00e43f276be5240d519 100644 (file)
@@ -97,6 +97,7 @@ float XonoticColorpickerString_mouseDrag(entity me, vector coords)
 
 float XonoticColorpickerString_mouseRelease(entity me, vector coords)
 {
+       m_play_click_sound(MENU_SOUND_SLIDE);
        me.mouseDrag(me, coords);
        return 1;
 }
index f2e209ca4d2b38190cdc64ec1f382f4756e4569d..9f5909676298fc15dc2e08027bf374d1cbf3afb1 100644 (file)
@@ -8,7 +8,7 @@ CLASS(XonoticDemoList) EXTENDS(XonoticListBox)
        METHOD(XonoticDemoList, startDemo, void(entity))
        METHOD(XonoticDemoList, timeDemo, void(entity))
        METHOD(XonoticDemoList, demoName, string(entity, float))
-       METHOD(XonoticDemoList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticDemoList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticDemoList, keyDown, float(entity, float, float, float))
        METHOD(XonoticDemoList, destroy, void(entity))
        METHOD(XonoticDemoList, showNotify, void(entity))
@@ -21,8 +21,6 @@ CLASS(XonoticDemoList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticDemoList, origin, vector, '0 0 0')
        ATTRIB(XonoticDemoList, itemAbsSize, vector, '0 0 0')
 
-       ATTRIB(XonoticDemoList, lastClickedDemo, float, -1)
-       ATTRIB(XonoticDemoList, lastClickedTime, float, 0)
        ATTRIB(XonoticDemoList, filterString, string, string_null)
 ENDCLASS(XonoticDemoList)
 
@@ -207,17 +205,9 @@ void DemoConfirm_ListClick_Check_Gamestatus(entity me)
        }
 }
 
-void XonoticDemoList_clickListBoxItem(entity me, float i, vector where)
+void XonoticDemoList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedDemo)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       me.setSelected(me, i);
-                       DemoConfirm_ListClick_Check_Gamestatus(me);
-               }
-       me.lastClickedDemo = i;
-       me.lastClickedTime = time;
+       DemoConfirm_ListClick_Check_Gamestatus(me);
 }
 
 float XonoticDemoList_keyDown(entity me, float scan, float ascii, float shift)
index 3c89d0a03ba08c63b1162fe79f422b65ac89a381..15095b2baed2e320a55b5b4c89bdd325142f601d 100644 (file)
@@ -26,8 +26,16 @@ void XonoticHUDAmmoDialog_fill(entity me)
                me.TD(me, 1, 3.8, e = makeXonoticCheckBox(0, "hud_panel_ammo_onlycurrent", _("Show only current ammo type")));
        me.TR(me);
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Align icon:")));
-                       me.TD(me, 1, 2.4/2, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "0", _("Left")));
-                       me.TD(me, 1, 2.4/2, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "1", _("Right")));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Noncurrent alpha:")));
+               me.TD(me, 1, 2.6, e = makeXonoticSlider(0, 1, 0.1, "hud_panel_ammo_noncurrent_alpha"));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Noncurrent scale:")));
+               me.TD(me, 1, 2.6, e = makeXonoticSlider(0, 1, 0.1, "hud_panel_ammo_noncurrent_scale"));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Align icon:")));
+                       me.TD(me, 1, 2.6/2, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "0", _("Left")));
+                       me.TD(me, 1, 2.6/2, e = makeXonoticRadioButton(2, "hud_panel_ammo_iconalign", "1", _("Right")));
 }
 #endif
index 07026be69f8fba06495b8d94dcb4658ac3e55dc5..64c9cf43a6959ccfd04206049c068aafb0c7bcf0 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticHUDWeaponsDialog) EXTENDS(XonoticRootDialog)
        ATTRIB(XonoticHUDWeaponsDialog, title, string, _("Weapons Panel"))
        ATTRIB(XonoticHUDWeaponsDialog, color, vector, SKINCOLOR_DIALOG_TEAMSELECT)
        ATTRIB(XonoticHUDWeaponsDialog, intendedWidth, float, 0.4)
-       ATTRIB(XonoticHUDWeaponsDialog, rows, float, 18)
+       ATTRIB(XonoticHUDWeaponsDialog, rows, float, 19)
        ATTRIB(XonoticHUDWeaponsDialog, columns, float, 4)
        ATTRIB(XonoticHUDWeaponsDialog, name, string, "HUDweapons")
        ATTRIB(XonoticHUDWeaponsDialog, requiresConnection, float, TRUE)
@@ -50,20 +50,25 @@ void XonoticHUDWeaponsDialog_fill(entity me)
                        me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "0", ZCTX(_("SHOWAS^None"))));
                        me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "1", _("Number")));
                        me.TD(me, 1, 0.8, e = makeXonoticRadioButton(2, "hud_panel_weapons_label", "2", _("Bind")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Weapon ID scale:")));
+                       me.TD(me, 1, 2.4, e = makeXonoticSlider(0.1, 1, 0.05, "hud_panel_weapons_label_scale"));
+                       setDependent(e, "hud_panel_weapons_label", 1, 2);
        me.TR(me);
                me.TDempty(me, 0.2);
                me.TD(me, 1, 3.8/2, e = makeXonoticCheckBox(0, "hud_panel_weapons_accuracy", _("Show Accuracy")));
                me.TD(me, 1, 3.8/2, e = makeXonoticCheckBox(0, "hud_panel_weapons_ammo", _("Show Ammo")));
        me.TR(me);
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Ammo bar color:")));
-               me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_panel_weapons_ammo_color", "hud_panel_weapons_ammo_color"));
+               me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Ammo bar alpha:")));
+                       me.TD(me, 1, 2.4, e = makeXonoticSlider(0.1, 1, 0.1, "hud_panel_weapons_ammo_alpha"));
                        setDependent(e, "hud_panel_weapons_ammo", 1, 1);
-               me.TR(me);
        me.TR(me);
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 1.4, e = makeXonoticTextLabel(0, _("Ammo bar alpha:")));
-                       me.TD(me, 1, 2.4, e = makeXonoticSlider(0.1, 1, 0.1, "hud_panel_weapons_ammo_alpha"));
+               me.TD(me, 1, 1.2, e = makeXonoticTextLabel(0, _("Ammo bar color:")));
+               me.TD(me, 2, 2.4, e = makeXonoticColorpickerString("hud_panel_weapons_ammo_color", "hud_panel_weapons_ammo_color"));
                        setDependent(e, "hud_panel_weapons_ammo", 1, 1);
+               me.TR(me);
 }
 #endif
index 39bee32426c84bd771755266fc67bf3ab9d01e8d..cfbe229b551a2e643734d0ac7c7f0a8717ab2cab 100644 (file)
@@ -5,6 +5,7 @@ CLASS(XonoticAudioSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticAudioSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticAudioSettingsTab, rows, float, 15.5)
        ATTRIB(XonoticAudioSettingsTab, columns, float, 6.2) // added extra .2 for center space
+       ATTRIB(XonoticAudioSettingsTab, hiddenMenuSoundsSlider, entity, NULL)
 ENDCLASS(XonoticAudioSettingsTab)
 entity makeXonoticAudioSettingsTab();
 #endif
@@ -136,7 +137,10 @@ void XonoticAudioSettingsTab_fill(entity me)
        me.TR(me);
                me.TD(me, 1, 3, makeXonoticCheckBox(0, "con_chatsound", _("Chat message sound")));
        me.TR(me);
-               me.TD(me, 1, 3, makeXonoticCheckBoxEx(2, 0, "menu_sounds", _("Menu sounds")));
+               me.hiddenMenuSoundsSlider = makeXonoticSlider(1, 1, 1, "menu_sounds");
+               me.TD(me, 1, 1.2, makeXonoticSliderCheckBox(0, 1, me.hiddenMenuSoundsSlider, _("Menu sounds")));
+               me.TD(me, 1, 1.8, e = makeXonoticSliderCheckBox(2, 0, me.hiddenMenuSoundsSlider, _("Focus sounds")));
+               setDependent(e, "menu_sounds", 1, 2);
        me.TR(me);
        me.TR(me);
                me.TD(me, 1, 1, makeXonoticTextLabel(0, _("Time announcer:")));
index 3e164c11fe8f2e5aca1e62d931039cab7cac7816..c226fbcc41d25e5944cf35970a5b6709471d3ca3 100644 (file)
@@ -55,6 +55,11 @@ void XonoticGameCrosshairSettingsTab_fill(entity me)
                                setDependentAND(e, "crosshair_per_weapon", 0, 0, "crosshair_enabled", 1, 2);
                }
        me.TR(me);
+               me.TDempty(me, 0.1);
+               for(i = 29; i <= 42; ++i) {
+                       me.TDNoMargin(me, 1, 2 / 14, e = makeXonoticCrosshairButton(4, i), '1 1 0');
+                               setDependentAND(e, "crosshair_per_weapon", 0, 0, "crosshair_enabled", 1, 2);
+               }
        me.TR(me);
                me.TDempty(me, 0.1);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair size:")));
index 8e584b8a8a259866636932eccce69630a840747a..0d1c05af44a10a89281bc4c668d06dd1827608ba 100644 (file)
@@ -1,6 +1,7 @@
 #ifdef INTERFACE
 CLASS(XonoticWinnerDialog) EXTENDS(XonoticDialog)
        METHOD(XonoticWinnerDialog, fill, void(entity))
+       METHOD(XonoticWinnerDialog, focusEnter, void(entity))
        ATTRIB(XonoticWinnerDialog, title, string, _("Winner"))
        ATTRIB(XonoticWinnerDialog, color, vector, SKINCOLOR_DIALOG_SINGLEPLAYER)
        ATTRIB(XonoticWinnerDialog, intendedWidth, float, 0.32)
@@ -22,4 +23,8 @@ void XonoticWinnerDialog_fill(entity me)
                        e.onClick = Dialog_Close;
                        e.onClickEntity = me;
 }
+void XonoticWinnerDialog_focusEnter(entity me)
+{
+       m_play_click_sound(MENU_SOUND_WINNER);
+}
 #endif
index e3df84467708fc9ab1c47a04410e66fa15aa21b2..3fd45c329c306fdabe3fa6e532cf7fdb784a7a69 100644 (file)
@@ -8,6 +8,7 @@ CLASS(XonoticGametypeList) EXTENDS(XonoticListBox)
        METHOD(XonoticGametypeList, loadCvars, void(entity))
        METHOD(XonoticGametypeList, saveCvars, void(entity))
        METHOD(XonoticGametypeList, keyDown, float(entity, float, float, float))
+       METHOD(XonoticGametypeList, clickListBoxItem, void(entity, float, vector))
 
        ATTRIB(XonoticGametypeList, realFontSize, vector, '0 0 0')
        ATTRIB(XonoticGametypeList, realUpperMargin, float, 0)
@@ -45,7 +46,6 @@ void XonoticGametypeList_setSelected(entity me, float i)
        SUPER(XonoticGametypeList).setSelected(me, i);
        me.saveCvars(me);
 }
-
 void XonoticGametypeList_loadCvars(entity me)
 {
        float t;
@@ -111,15 +111,19 @@ void XonoticGametypeList_resizeNotify(entity me, vector relOrigin, vector relSiz
        me.columnNameOrigin = me.columnIconOrigin + me.columnIconSize + (0.5 * me.realFontSize_x);
        me.columnNameSize = 1 - me.columnIconSize - (1.5 * me.realFontSize_x);
 }
-
 float XonoticGametypeList_keyDown(entity me, float scan, float ascii, float shift)
 {
        if(scan == K_ENTER || scan == K_KP_ENTER)
        {
+               m_play_click_sound(MENU_SOUND_EXECUTE);
                me.parent.gameTypeSelectNotify(me.parent);
                return 1;
        }
 
        return SUPER(XonoticGametypeList).keyDown(me, scan, ascii, shift);
 }
+void XonoticGametypeList_clickListBoxItem(entity me, float i, vector where)
+{
+       m_play_click_sound(MENU_SOUND_SELECT);
+}
 #endif
index c312e382656105a4824bd3b6e3c3568df0ee36ae..272edd905311a65724514c70b445f368b455e3ec 100644 (file)
@@ -3,7 +3,7 @@ CLASS(XonoticKeyBinder) EXTENDS(XonoticListBox)
        METHOD(XonoticKeyBinder, configureXonoticKeyBinder, void(entity))
        ATTRIB(XonoticKeyBinder, rowsPerItem, float, 1)
        METHOD(XonoticKeyBinder, drawListBoxItem, void(entity, float, vector, float))
-       METHOD(XonoticKeyBinder, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticKeyBinder, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticKeyBinder, resizeNotify, void(entity, vector, vector, vector, vector))
        METHOD(XonoticKeyBinder, setSelected, void(entity, float))
        METHOD(XonoticKeyBinder, keyDown, float(entity, float, float, float))
@@ -16,8 +16,6 @@ CLASS(XonoticKeyBinder) EXTENDS(XonoticListBox)
        ATTRIB(XonoticKeyBinder, columnKeysOrigin, float, 0)
        ATTRIB(XonoticKeyBinder, columnKeysSize, float, 0)
 
-       ATTRIB(XonoticKeyBinder, lastClickedKey, float, -1)
-       ATTRIB(XonoticKeyBinder, lastClickedTime, float, 0)
        ATTRIB(XonoticKeyBinder, previouslySelected, float, -1)
        ATTRIB(XonoticKeyBinder, inMouseHandler, float, 0)
        ATTRIB(XonoticKeyBinder, userbindEditButton, entity, NULL)
@@ -172,6 +170,7 @@ void XonoticKeyBinder_keyGrabbed(entity me, float key, float ascii)
                                localcmd("\nbind \"", keynumtostring(k), "\" \"", KEY_NOT_BOUND_CMD, "\"\n");
                }
        }
+       m_play_click_sound(MENU_SOUND_SELECT);
        localcmd("\nbind \"", keynumtostring(key), "\" \"", func, "\"\n");
        localcmd("-zoom\n"); // to make sure we aren't in togglezoom'd state
        cvar_set("_hud_showbinds_reload", "1");
@@ -235,6 +234,7 @@ void KeyBinder_Bind_Clear(entity btn, entity me)
                        //localcmd("\nunbind \"", keynumtostring(k), "\"\n");
                        localcmd("\nbind \"", keynumtostring(k), "\" \"", KEY_NOT_BOUND_CMD, "\"\n");
        }
+       m_play_click_sound(MENU_SOUND_CLEAR);
        localcmd("-zoom\n"); // to make sure we aren't in togglezoom'd state
        cvar_set("_hud_showbinds_reload", "1");
 }
@@ -245,16 +245,9 @@ void KeyBinder_Bind_Reset_All(entity btn, entity me)
        localcmd("-zoom\n"); // to make sure we aren't in togglezoom'd state
        cvar_set("_hud_showbinds_reload", "1");
 }
-void XonoticKeyBinder_clickListBoxItem(entity me, float i, vector where)
+void XonoticKeyBinder_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedKey)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       KeyBinder_Bind_Change(NULL, me);
-               }
-       me.lastClickedKey = i;
-       me.lastClickedTime = time;
+       KeyBinder_Bind_Change(NULL, me);
 }
 void XonoticKeyBinder_setSelected(entity me, float i)
 {
index 24445786aea98b696c0c1c84b926d6ac29cafc2c..5697f823109d001bdc1a226165d62cb47fef3ef7 100644 (file)
@@ -15,10 +15,8 @@ CLASS(XonoticLanguageList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticLanguageList, columnPercentageOrigin, float, 0)
        ATTRIB(XonoticLanguageList, columnPercentageSize, float, 0)
 
-       METHOD(XonoticLanguageList, clickListBoxItem, void(entity, float, vector)) // double click handling
+       METHOD(XonoticLanguageList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticLanguageList, keyDown, float(entity, float, float, float)) // enter handling
-       ATTRIB(XonoticLanguageList, lastClickedLanguage, float, -1)
-       ATTRIB(XonoticLanguageList, lastClickedTime, float, 0)
 
        METHOD(XonoticLanguageList, destroy, void(entity))
 
@@ -140,22 +138,17 @@ void XonoticLanguageList_saveCvars(entity me)
        cvar_set("_menu_prvm_language", me.languageParameter(me, me.selectedItem, LANGPARM_ID));
 }
 
-void XonoticLanguageList_clickListBoxItem(entity me, float i, vector where)
+void XonoticLanguageList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedLanguage)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       me.setSelected(me, i);
-                       me.setLanguage(me);
-               }
-       me.lastClickedLanguage = i;
-       me.lastClickedTime = time;
+       m_play_click_sound(MENU_SOUND_EXECUTE);
+       me.setLanguage(me);
 }
 
 float XonoticLanguageList_keyDown(entity me, float scan, float ascii, float shift)
 {
-       if(scan == K_ENTER || scan == K_KP_ENTER) {
+       if(scan == K_ENTER || scan == K_KP_ENTER)
+       {
+               m_play_click_sound(MENU_SOUND_EXECUTE);
                me.setLanguage(me);
                return 1;
        }
index 60eeb445c6c4877caf508aa145ccf9c403d9e5ef..54166f6e045cc5e5c1e0ed06e5424313cacab5f3 100644 (file)
@@ -5,6 +5,7 @@ CLASS(XonoticMapList) EXTENDS(XonoticListBox)
        METHOD(XonoticMapList, draw, void(entity))
        METHOD(XonoticMapList, drawListBoxItem, void(entity, float, vector, float))
        METHOD(XonoticMapList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticMapList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticMapList, resizeNotify, void(entity, vector, vector, vector, vector))
        METHOD(XonoticMapList, refilter, void(entity))
        METHOD(XonoticMapList, refilterCallback, void(entity, entity))
@@ -20,9 +21,6 @@ CLASS(XonoticMapList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticMapList, realUpperMargin1, float, 0)
        ATTRIB(XonoticMapList, realUpperMargin2, float, 0)
 
-       ATTRIB(XonoticMapList, lastClickedMap, float, -1)
-       ATTRIB(XonoticMapList, lastClickedTime, float, 0)
-
        ATTRIB(XonoticMapList, lastGametype, float, 0)
        ATTRIB(XonoticMapList, lastFeatures, float, 0)
 
@@ -143,22 +141,21 @@ void XonoticMapList_clickListBoxItem(entity me, float i, vector where)
 {
        if(where_x <= me.columnPreviewOrigin + me.columnPreviewSize)
                if(where_x >= 0)
+               {
+                       m_play_click_sound(MENU_SOUND_SELECT);
                        me.g_maplistCacheToggle(me, i);
+               }
+}
 
+void XonoticMapList_doubleClickListBoxItem(entity me, float i, vector where)
+{
        if(where_x >= me.columnNameOrigin)
                if(where_x <= 1)
                {
-                       if(i == me.lastClickedMap)
-                               if(time < me.lastClickedTime + 0.3)
-                               {
-                                       // DOUBLE CLICK!
-                                       // pop up map info screen
-                                       main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, i, me);
-                                       DialogOpenButton_Click_withCoords(NULL, main.mapInfoDialog, me.origin + eX * (me.columnNameOrigin * me.size_x) + eY * ((me.itemHeight * i - me.scrollPos) * me.size_y), eY * me.itemAbsSize_y + eX * (me.itemAbsSize_x * me.columnNameSize));
-                                       return;
-                               }
-                       me.lastClickedMap = i;
-                       me.lastClickedTime = time;
+                       // pop up map info screen
+                       m_play_click_sound(MENU_SOUND_OPEN);
+                       main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, i, me);
+                       DialogOpenButton_Click_withCoords(NULL, main.mapInfoDialog, me.origin + eX * (me.columnNameOrigin * me.size_x) + eY * ((me.itemHeight * i - me.scrollPos) * me.size_y), eY * me.itemAbsSize_y + eX * (me.itemAbsSize_x * me.columnNameSize));
                }
 }
 
@@ -303,22 +300,30 @@ float XonoticMapList_keyDown(entity me, float scan, float ascii, float shift)
        if(scan == K_MOUSE2 || scan == K_SPACE || scan == K_ENTER || scan == K_KP_ENTER)
        {
                // pop up map info screen
+               m_play_click_sound(MENU_SOUND_OPEN);
                main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, me.selectedItem, me);
                DialogOpenButton_Click_withCoords(NULL, main.mapInfoDialog, me.origin + eX * (me.columnNameOrigin * me.size_x) + eY * ((me.itemHeight * me.selectedItem - me.scrollPos) * me.size_y), eY * me.itemAbsSize_y + eX * (me.itemAbsSize_x * me.columnNameSize));
        }
        else if(scan == K_MOUSE3 || scan == K_INS || scan == K_KP_INS)
        {
+               m_play_click_sound(MENU_SOUND_SELECT);
                me.g_maplistCacheToggle(me, me.selectedItem);
        }
        else if(ascii == 43) // +
        {
                if (!me.g_maplistCacheQuery(me, me.selectedItem))
+               {
+                       m_play_click_sound(MENU_SOUND_SELECT);
                        me.g_maplistCacheToggle(me, me.selectedItem);
+               }
        }
        else if(ascii == 45) // -
        {
                if(me.g_maplistCacheQuery(me, me.selectedItem))
+               {
+                       m_play_click_sound(MENU_SOUND_SELECT);
                        me.g_maplistCacheToggle(me, me.selectedItem);
+               }
        }
        else if(scan == K_BACKSPACE)
        {
index b3ee38670a04ad41117b82f3db7c0b2ee780b974..5579394ea7913cc39e917de99571b3489769ca7e 100644 (file)
@@ -3,6 +3,7 @@ CLASS(XonoticPlayerList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticPlayerList, rowsPerItem, float, 1)
        METHOD(XonoticPlayerList, resizeNotify, void(entity, vector, vector, vector, vector))
        METHOD(XonoticPlayerList, drawListBoxItem, void(entity, float, vector, float))
+       ATTRIB(XonoticPlayerList, allowFocusSound, float, 0)
        ATTRIB(XonoticPlayerList, realFontSize, vector, '0 0 0')
        ATTRIB(XonoticPlayerList, columnNameOrigin, float, 0)
        ATTRIB(XonoticPlayerList, columnNameSize, float, 0)
index 80fe3132e25eb9a9bea30353bdc38203d35678fe..e918adacd391be7eb4a33744c7a78d4fae31663f 100644 (file)
@@ -9,7 +9,7 @@ CLASS(XonoticPlayList) EXTENDS(XonoticListBox)
        METHOD(XonoticPlayList, startSound, void(entity, float))
        METHOD(XonoticPlayList, resumeSound, void(entity))
        METHOD(XonoticPlayList, pauseSound, void(entity))
-       METHOD(XonoticPlayList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticPlayList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticPlayList, keyDown, float(entity, float, float, float))
        METHOD(XonoticPlayList, mouseDrag, float(entity, vector))
 
@@ -25,9 +25,6 @@ CLASS(XonoticPlayList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticPlayList, realUpperMargin, float, 0)
        ATTRIB(XonoticPlayList, origin, vector, '0 0 0')
        ATTRIB(XonoticPlayList, itemAbsSize, vector, '0 0 0')
-
-       ATTRIB(XonoticPlayList, lastClickedSound, float, -1)
-       ATTRIB(XonoticPlayList, lastClickedTime, float, 0)
 ENDCLASS(XonoticPlayList)
 
 entity makeXonoticPlayList();
@@ -183,7 +180,7 @@ void XonoticPlayList_drawListBoxItem(entity me, float i, vector absSize, float i
        {
                float f = cvar("music_playlist_sampleposition0");
                if(f <= 0 || (((time * 2) & 1) && f > 0))
-                       draw_Text(me.realUpperMargin * eY + (me.columnNumberOrigin + me.columnNumberSize) * eX, chr(0xE000 + 141), me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
+                       draw_Text(me.realUpperMargin * eY + (me.columnNumberOrigin + me.columnNumberSize) * eX, "\xE2\x96\xB6", me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
        }
 
        s = ftos(i+1);
@@ -279,17 +276,9 @@ void PauseSound_Click(entity btn, entity me)
        me.pauseSound(me);
 }
 
-void XonoticPlayList_clickListBoxItem(entity me, float i, vector where)
+void XonoticPlayList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedSound)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       me.setSelected(me, i);
-                       me.startSound(me, 0);
-               }
-       me.lastClickedSound = i;
-       me.lastClickedTime = time;
+       me.startSound(me, 0);
 }
 
 float XonoticPlayList_keyDown(entity me, float scan, float ascii, float shift)
index dd8b61ed3f97fc942a456ef2799939c1f9e17f2a..c8f3becfa03c69a9b47c57cd489c2ebf078a78b8 100644 (file)
@@ -10,7 +10,7 @@ CLASS(XonoticScreenshotList) EXTENDS(XonoticListBox)
        METHOD(XonoticScreenshotList, previewScreenshot, void(entity))
        METHOD(XonoticScreenshotList, startScreenshot, void(entity))
        METHOD(XonoticScreenshotList, screenshotName, string(entity, float))
-       METHOD(XonoticScreenshotList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticScreenshotList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticScreenshotList, keyDown, float(entity, float, float, float))
        METHOD(XonoticScreenshotList, destroy, void(entity))
        METHOD(XonoticScreenshotList, showNotify, void(entity))
@@ -21,8 +21,6 @@ CLASS(XonoticScreenshotList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticScreenshotList, realUpperMargin, float, 0)
        ATTRIB(XonoticScreenshotList, origin, vector, '0 0 0')
        ATTRIB(XonoticScreenshotList, itemAbsSize, vector, '0 0 0')
-       ATTRIB(XonoticScreenshotList, lastClickedScreenshot, float, -1)
-       ATTRIB(XonoticScreenshotList, lastClickedTime, float, 0)
        ATTRIB(XonoticScreenshotList, filterString, string, string_null)
        ATTRIB(XonoticScreenshotList, filterBox, entity, NULL)
        ATTRIB(XonoticScreenshotList, filterTime, float, 0)
@@ -280,18 +278,9 @@ void StartScreenshot_Click(entity btn, entity me)
        me.startScreenshot(me);
 }
 
-void XonoticScreenshotList_clickListBoxItem(entity me, float i, vector where)
+void XonoticScreenshotList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedScreenshot)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       // pop up screenshot
-                       me.setSelected(me, i);
-                       me.startScreenshot(me);
-               }
-       me.lastClickedScreenshot = i;
-       me.lastClickedTime = time;
+       me.startScreenshot(me);
 }
 
 float XonoticScreenshotList_keyDown(entity me, float scan, float ascii, float shift)
index 8b3a9e9a0394caf9f443e27499ce37d46aea4556..3d848c9c59d78df666d39f87776c7a179363e7bb 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticServerList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticServerList, rowsPerItem, float, 1)
        METHOD(XonoticServerList, draw, void(entity))
        METHOD(XonoticServerList, drawListBoxItem, void(entity, float, vector, float))
-       METHOD(XonoticServerList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticServerList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticServerList, resizeNotify, void(entity, vector, vector, vector, vector))
        METHOD(XonoticServerList, keyDown, float(entity, float, float, float))
        METHOD(XonoticServerList, toggleFavorite, void(entity, string))
@@ -49,8 +49,6 @@ CLASS(XonoticServerList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticServerList, infoButton, entity, NULL)
        ATTRIB(XonoticServerList, currentSortOrder, float, 0)
        ATTRIB(XonoticServerList, currentSortField, float, -1)
-       ATTRIB(XonoticServerList, lastClickedServer, float, -1)
-       ATTRIB(XonoticServerList, lastClickedTime, float, 0)
 
        ATTRIB(XonoticServerList, ipAddressBoxFocused, float, -1)
 
@@ -563,6 +561,7 @@ void XonoticServerList_refreshServerList(entity me, float mode)
 }
 void XonoticServerList_focusEnter(entity me)
 {
+       SUPER(XonoticServerList).focusEnter(me);
        if(time < me.nextRefreshTime)
        {
                //print("sorry, no refresh yet\n");
@@ -722,11 +721,7 @@ void XonoticServerList_draw(entity me)
                {
                        if(gethostcachestring(SLIST_FIELD_CNAME, i) == me.selectedServer)
                        {
-                               if(i != me.selectedItem)
-                               {
-                                       me.lastClickedServer = -1;
-                                       me.selectedItem = i;
-                               }
+                               me.selectedItem = i;
                                found = 1;
                                break;
                        }
@@ -949,6 +944,7 @@ void ServerList_Favorite_Click(entity btn, entity me)
        ipstr = netaddress_resolve(me.ipAddressBox.text, 26000);
        if(ipstr != "")
        {
+               m_play_click_sound(MENU_SOUND_SELECT);
                me.toggleFavorite(me, me.ipAddressBox.text);
                me.ipAddressBoxFocused = -1;
        }
@@ -962,16 +958,9 @@ void ServerList_Info_Click(entity btn, entity me)
        vector sz = boxToGlobalSize(eY * me.itemHeight + eX * (1 - me.controlWidth), me.size);
        DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz);
 }
-void XonoticServerList_clickListBoxItem(entity me, float i, vector where)
+void XonoticServerList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedServer)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       ServerList_Connect_Click(NULL, me);
-               }
-       me.lastClickedServer = i;
-       me.lastClickedTime = time;
+       ServerList_Connect_Click(NULL, me);
 }
 void XonoticServerList_drawListBoxItem(entity me, float i, vector absSize, float isSelected)
 {
@@ -1258,6 +1247,7 @@ float XonoticServerList_keyDown(entity me, float scan, float ascii, float shift)
        {
                if(me.nItems != 0)
                {
+                       m_play_click_sound(MENU_SOUND_OPEN);
                        main.serverInfoDialog.loadServerInfo(main.serverInfoDialog, me.selectedItem);
                        DialogOpenButton_Click_withCoords(me, main.serverInfoDialog, org, sz);
                        return 1;
index 0387303ea3d2a041f7c91cf09ecc1c6c811b8d66..234f1237ec776a628f774a8e4b98a3ae3f7beff9 100644 (file)
@@ -9,7 +9,7 @@ CLASS(XonoticSkinList) EXTENDS(XonoticListBox)
        METHOD(XonoticSkinList, loadCvars, void(entity))
        METHOD(XonoticSkinList, saveCvars, void(entity))
        METHOD(XonoticSkinList, skinParameter, string(entity, float, float))
-       METHOD(XonoticSkinList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticSkinList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticSkinList, keyDown, float(entity, float, float, float))
        METHOD(XonoticSkinList, destroy, void(entity))
 
@@ -24,9 +24,6 @@ CLASS(XonoticSkinList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticSkinList, origin, vector, '0 0 0')
        ATTRIB(XonoticSkinList, itemAbsSize, vector, '0 0 0')
 
-       ATTRIB(XonoticSkinList, lastClickedSkin, float, -1)
-       ATTRIB(XonoticSkinList, lastClickedTime, float, 0)
-
        ATTRIB(XonoticSkinList, name, string, "skinselector")
 ENDCLASS(XonoticSkinList)
 
@@ -182,22 +179,17 @@ void SetSkin_Click(entity btn, entity me)
        me.setSkin(me);
 }
 
-void XonoticSkinList_clickListBoxItem(entity me, float i, vector where)
+void XonoticSkinList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedSkin)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       me.setSelected(me, i);
-                       me.setSkin(me);
-               }
-       me.lastClickedSkin = i;
-       me.lastClickedTime = time;
+       m_play_click_sound(MENU_SOUND_EXECUTE);
+       me.setSkin(me);
 }
 
 float XonoticSkinList_keyDown(entity me, float scan, float ascii, float shift)
 {
-       if(scan == K_ENTER || scan == K_KP_ENTER) {
+       if(scan == K_ENTER || scan == K_KP_ENTER)
+       {
+               m_play_click_sound(MENU_SOUND_EXECUTE);
                me.setSkin(me);
                return 1;
        }
index e45e486dcf039a29057b2b54f27603d1819ea69a..7d1515062ab5428aa09b0c272272aa4722a2f4c7 100644 (file)
@@ -6,7 +6,7 @@ CLASS(XonoticSoundList) EXTENDS(XonoticListBox)
        METHOD(XonoticSoundList, drawListBoxItem, void(entity, float, vector, float))
        METHOD(XonoticSoundList, getSounds, void(entity))
        METHOD(XonoticSoundList, soundName, string(entity, float))
-       METHOD(XonoticSoundList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticSoundList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticSoundList, keyDown, float(entity, float, float, float))
        METHOD(XonoticSoundList, destroy, void(entity))
        METHOD(XonoticSoundList, showNotify, void(entity))
@@ -21,8 +21,6 @@ CLASS(XonoticSoundList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticSoundList, origin, vector, '0 0 0')
        ATTRIB(XonoticSoundList, itemAbsSize, vector, '0 0 0')
 
-       ATTRIB(XonoticSoundList, lastClickedSound, float, -1)
-       ATTRIB(XonoticSoundList, lastClickedTime, float, 0)
        ATTRIB(XonoticSoundList, filterString, string, string_null)
        ATTRIB(XonoticSoundList, playlist, entity, world)
 ENDCLASS(XonoticSoundList)
@@ -159,17 +157,9 @@ void SoundList_Add_All(entity box, entity me)
                me.playlist.addToPlayList(me.playlist, me.soundName(me, i));
 }
 
-void XonoticSoundList_clickListBoxItem(entity me, float i, vector where)
+void XonoticSoundList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedSound)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       me.setSelected(me, i);
-                       me.playlist.addToPlayList(me.playlist, me.soundName(me, i));
-               }
-       me.lastClickedSound = i;
-       me.lastClickedTime = time;
+       me.playlist.addToPlayList(me.playlist, me.soundName(me, i));
 }
 
 float XonoticSoundList_keyDown(entity me, float scan, float ascii, float shift)
index 988244816c94534c554e221fd26773e3f9076b63..c7b744a66710697c02782151b8607edda74d1ab8 100644 (file)
@@ -5,7 +5,7 @@ CLASS(XonoticStatsList) EXTENDS(XonoticListBox)
        METHOD(XonoticStatsList, resizeNotify, void(entity, vector, vector, vector, vector))
        METHOD(XonoticStatsList, drawListBoxItem, void(entity, float, vector, float))
        METHOD(XonoticStatsList, getStats, void(entity))
-       METHOD(XonoticStatsList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticStatsList, doubleClickListBoxItem, void(entity, float, vector))
        METHOD(XonoticStatsList, keyDown, float(entity, float, float, float))
        METHOD(XonoticStatsList, destroy, void(entity))
        METHOD(XonoticStatsList, showNotify, void(entity))
@@ -15,9 +15,6 @@ CLASS(XonoticStatsList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticStatsList, realUpperMargin, float, 0)
        ATTRIB(XonoticStatsList, columnNameOrigin, float, 0)
        ATTRIB(XonoticStatsList, columnNameSize, float, 0)
-
-       ATTRIB(XonoticStatsList, lastClickedDemo, float, -1)
-       ATTRIB(XonoticStatsList, lastClickedTime, float, 0)
 ENDCLASS(XonoticStatsList)
 
 entity statslist; // for reference elsewhere
@@ -333,17 +330,9 @@ void XonoticStatsList_showNotify(entity me)
        PlayerStats_PlayerDetail_CheckUpdate();
 }
 
-void XonoticStatsList_clickListBoxItem(entity me, float i, vector where)
+void XonoticStatsList_doubleClickListBoxItem(entity me, float i, vector where)
 {
-       if(i == me.lastClickedDemo)
-               if(time < me.lastClickedTime + 0.3)
-               {
-                       // DOUBLE CLICK!
-                       me.setSelected(me, i);
-                       //DemoConfirm_ListClick_Check_Gamestatus(me);
-               }
-       me.lastClickedDemo = i;
-       me.lastClickedTime = time;
+       //DemoConfirm_ListClick_Check_Gamestatus(me);
 }
 
 float XonoticStatsList_keyDown(entity me, float scan, float ascii, float shift)
index 8e573b8c3fecbbcbc8121ff79da1d7edc883c0d8..8a8e2205dde03b0ed001162728dda4e6e6783dc9 100644 (file)
@@ -117,7 +117,7 @@ float XonoticWeaponsList_keyDown(entity me, float scan, float ascii, float shift
                WeaponsList_MoveUp_Click(NULL, me);
                return 1;
        }
-       else if(scan == 45) // -
+       else if(ascii == 45) // -
        {
                WeaponsList_MoveDown_Click(NULL, me);
                return 1;
index 22fa4e3a435bc5718d81f8b4818c2f4b3291bc10..eacebb5ecf13fe607b36883949fcd6875e550a30 100644 (file)
@@ -1026,6 +1026,10 @@ void readlevelcvars(void)
        if (!warmup_stage)
                game_starttime = time + cvar("g_start_delay");
 
+       float i;
+       for(i = WEP_FIRST; i <= WEP_LAST; ++i)
+               WEP_ACTION(i, WR_INIT);
+
        readplayerstartcvars();
 }
 
index 95d85d793963181309ad6e63f182106c055717cb..1c33e39739af41cf886143ee6aacdce77ec75b98 100644 (file)
@@ -158,26 +158,26 @@ MUTATOR_HOOKABLE(EditProjectile);
        // INPUT:
                entity self;
                entity other;
-        
+
 MUTATOR_HOOKABLE(MonsterSpawn);
        // called when a monster spawns
-    
+
 MUTATOR_HOOKABLE(MonsterDies);
        // called when a monster dies
        // INPUT:
                entity frag_attacker;
-               
+
 MUTATOR_HOOKABLE(MonsterRespawn);
        // called when a monster wants to respawn
        // INPUT:
                entity other;
-               
+
 MUTATOR_HOOKABLE(MonsterDropItem);
        // called when a monster is dropping loot
        // INPUT, OUTPUT:
                .void() monster_loot;
                entity other;
-       
+
 MUTATOR_HOOKABLE(MonsterMove);
        // called when a monster moves
        // returning TRUE makes the monster stop
@@ -185,10 +185,10 @@ MUTATOR_HOOKABLE(MonsterMove);
                float monster_speed_run;
                float monster_speed_walk;
                entity monster_target;
-    
+
 MUTATOR_HOOKABLE(MonsterFindTarget);
        // called when a monster looks for another target
-    
+
 MUTATOR_HOOKABLE(MonsterCheckBossFlag);
     // called to change a random monster to a miniboss
 
index 22cd79cff3f537a6eb1c367c750a7cb7e3e46b48..7a5e62a7e5189c55e725579376425aa167ce89ca 100644 (file)
@@ -321,7 +321,7 @@ void ok_Initialize()
        precache_sound("weapons/dryfire.wav");
 
        addstat(STAT_OK_AMMO_CHARGE, AS_FLOAT, ok_use_ammocharge);
-       addstat(STAT_OK_AMMO_CHARGEPOOl, AS_FLOAT, ok_ammo_charge);
+       addstat(STAT_OK_AMMO_CHARGEPOOL, AS_FLOAT, ok_ammo_charge);
 
        (get_weaponinfo(WEP_RPC)).spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
        (get_weaponinfo(WEP_HMG)).spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
diff --git a/sound/menu/README b/sound/menu/README
new file mode 100644 (file)
index 0000000..eede58b
--- /dev/null
@@ -0,0 +1,10 @@
+SOUND    PLAYED WHEN
+
+open     opening dialog
+close    closing dialog
+focus    moving focus to new item
+execute  pressing button, enter key, or double click
+select   using checkbox, radiobutton, or similar
+slide    using slider or colorpicker
+clear    clearing inputbox or keybind
+winner   winning single player campaign
diff --git a/sound/menu/clear.wav b/sound/menu/clear.wav
new file mode 100644 (file)
index 0000000..a622af8
Binary files /dev/null and b/sound/menu/clear.wav differ
diff --git a/sound/menu/close.wav b/sound/menu/close.wav
new file mode 100644 (file)
index 0000000..c990fbd
Binary files /dev/null and b/sound/menu/close.wav differ
diff --git a/sound/menu/execute.wav b/sound/menu/execute.wav
new file mode 100644 (file)
index 0000000..58b3d1c
Binary files /dev/null and b/sound/menu/execute.wav differ
diff --git a/sound/menu/focus.wav b/sound/menu/focus.wav
new file mode 100644 (file)
index 0000000..a045d26
Binary files /dev/null and b/sound/menu/focus.wav differ
diff --git a/sound/menu/open.wav b/sound/menu/open.wav
new file mode 100644 (file)
index 0000000..c990fbd
Binary files /dev/null and b/sound/menu/open.wav differ
diff --git a/sound/menu/select.wav b/sound/menu/select.wav
new file mode 100644 (file)
index 0000000..58b3d1c
Binary files /dev/null and b/sound/menu/select.wav differ
diff --git a/sound/menu/slide.wav b/sound/menu/slide.wav
new file mode 100644 (file)
index 0000000..58b3d1c
Binary files /dev/null and b/sound/menu/slide.wav differ
diff --git a/sound/menu/winner.ogg b/sound/menu/winner.ogg
new file mode 100644 (file)
index 0000000..56b114e
Binary files /dev/null and b/sound/menu/winner.ogg differ
diff --git a/sound/misc/menu1.wav b/sound/misc/menu1.wav
deleted file mode 100644 (file)
index a045d26..0000000
Binary files a/sound/misc/menu1.wav and /dev/null differ
diff --git a/sound/misc/menu2.wav b/sound/misc/menu2.wav
deleted file mode 100644 (file)
index 58b3d1c..0000000
Binary files a/sound/misc/menu2.wav and /dev/null differ
diff --git a/sound/misc/mouseclick.wav b/sound/misc/mouseclick.wav
deleted file mode 100644 (file)
index a622af8..0000000
Binary files a/sound/misc/mouseclick.wav and /dev/null differ