// =========================
// 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"
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"
_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)"
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)"
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)"
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"
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"
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"
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"
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"
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"
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"
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
}
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);
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");
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
}
}
}
// 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)
+ {
+ 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)
{
- p_x += 0.25 * mySize_x;
- pa_x += 0.25 * 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)
{
- 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_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
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();
}
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))
// 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;
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)
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))
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)
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)
{
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))
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)
}
}
-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)
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))
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)
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)
{
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))
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;
+ me.setLanguage(me);
}
float XonoticLanguageList_keyDown(entity me, float scan, float ascii, float shift)
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))
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)
if(where_x <= me.columnPreviewOrigin + me.columnPreviewSize)
if(where_x >= 0)
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
+ 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));
}
}
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))
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();
{
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);
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)
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))
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)
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)
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))
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)
{
if(gethostcachestring(SLIST_FIELD_CNAME, i) == me.selectedServer)
{
- if(i != me.selectedItem)
- {
- me.lastClickedServer = -1;
- me.selectedItem = i;
- }
+ me.selectedItem = i;
found = 1;
break;
}
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)
{
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))
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)
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;
+ me.setSkin(me);
}
float XonoticSkinList_keyDown(entity me, float scan, float ascii, float shift)
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))
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)
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)
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))
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
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)
WeaponsList_MoveUp_Click(NULL, me);
return 1;
}
- else if(scan == 45) // -
+ else if(ascii == 45) // -
{
WeaponsList_MoveDown_Click(NULL, me);
return 1;
not_allowed_to_move = 0;
if(self.race_penalty)
not_allowed_to_move = 1;
- if(!autocvar_sv_ready_restart_after_countdown)
if(time < game_starttime)
not_allowed_to_move = 1;