]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge remote branch 'origin/master' into samual/menu_updates
authorSamual <samual@xonotic.org>
Wed, 18 Jan 2012 16:18:27 +0000 (11:18 -0500)
committerSamual <samual@xonotic.org>
Wed, 18 Jan 2012 16:18:27 +0000 (11:18 -0500)
Conflicts:
qcsrc/menu/xonotic/dialog_settings_network.c

98 files changed:
_hud_common.cfg
defaultXonotic.cfg
effects-high.cfg
effects-low.cfg
effects-med.cfg
effects-normal.cfg
effects-omg.cfg
effects-ultimate.cfg
effects-ultra.cfg
gfx/menu/luminos/gametype_arena.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_as.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_ca.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_ctf.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_cts.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_dm.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_dom.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_duel.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_freezetag.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_keepaway.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_kh.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_lms.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_nexball.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_ons.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_rc.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_rune.tga [new file with mode: 0644]
gfx/menu/luminos/gametype_tdm.tga [new file with mode: 0644]
gfx/menu/luminos/skinvalues.txt
gfx/menu/wickedx/gametype_arena.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_as.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_ca.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_ctf.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_cts.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_dm.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_dom.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_duel.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_freezetag.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_keepaway.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_kh.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_lms.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_nexball.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_ons.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_rc.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_rune.tga [new file with mode: 0644]
gfx/menu/wickedx/gametype_tdm.tga [new file with mode: 0644]
gfx/menu/wickedx/skinvalues.txt
gfx/menu/xaw/gametype_arena.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_as.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_ca.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_ctf.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_cts.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_dm.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_dom.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_duel.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_freezetag.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_keepaway.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_kh.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_lms.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_nexball.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_ons.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_rc.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_rune.tga [new file with mode: 0644]
gfx/menu/xaw/gametype_tdm.tga [new file with mode: 0644]
gfx/menu/xaw/skinvalues.txt
keybinds.txt
qcsrc/client/View.qc
qcsrc/client/autocvars.qh
qcsrc/common/mapinfo.qh
qcsrc/menu/classes.c
qcsrc/menu/skin-customizables.inc
qcsrc/menu/xonotic/demolist.c
qcsrc/menu/xonotic/dialog_firstrun.c
qcsrc/menu/xonotic/dialog_multiplayer.c
qcsrc/menu/xonotic/dialog_multiplayer_create.c
qcsrc/menu/xonotic/dialog_multiplayer_create_mapinfo.c
qcsrc/menu/xonotic/dialog_multiplayer_demo.c
qcsrc/menu/xonotic/dialog_multiplayer_playersetup.c
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c [deleted file]
qcsrc/menu/xonotic/dialog_multiplayer_playersetup_weapons.c
qcsrc/menu/xonotic/dialog_settings.c
qcsrc/menu/xonotic/dialog_settings_audio.c
qcsrc/menu/xonotic/dialog_settings_effects.c
qcsrc/menu/xonotic/dialog_settings_input.c
qcsrc/menu/xonotic/dialog_settings_misc.c
qcsrc/menu/xonotic/dialog_settings_network.c [deleted file]
qcsrc/menu/xonotic/dialog_settings_user.c [new file with mode: 0644]
qcsrc/menu/xonotic/dialog_settings_video.c
qcsrc/menu/xonotic/dialog_singleplayer.c
qcsrc/menu/xonotic/gametypelist.c
qcsrc/menu/xonotic/mainwindow.c
qcsrc/menu/xonotic/maplist.c
qcsrc/menu/xonotic/util.qc
qcsrc/menu/xonotic/util.qh
qcsrc/menu/xonotic/weaponslist.c

index c46bbee713bf099c6bf74b45e474ee7baea0a559..f246ab7bc014a29188a3341232813a9e9631f7ae 100644 (file)
@@ -1,7 +1,7 @@
 // hud variables
 set _hud_configure 0 "1 = configure the HUD"
 seta hud_configure_teamcolorforced 0 "1 = force display of team colors in configure mode"
-seta hud_configure_checkcollisions 1 "check for collisions against other panels when in hud configure mode"
+seta hud_configure_checkcollisions 0 "check for collisions against other panels when in hud configure mode"
 seta hud_configure_bg_minalpha 0.25 "minimum panel background alpha when in hud configure mode"
 seta hud_configure_grid_alpha 0.15 "alpha for visible grid when in configure mode"
 
index b7ac696208372384f5830a20bc6e2a7639e30412..e8d6dc7c07959aa269432fd5d198fe40fcd27ae9 100644 (file)
@@ -22,6 +22,10 @@ gameversion_max 65535 // git builds see all versions
 //   gameversion_min = (gameversion / 100) * 100 - 100
 //   gameversion_max = (gameversion / 100) * 100 + 199
 
+// changes a cvar and reports it to the server (for the menu to notify the
+// server about changes)
+alias setreport "set \"$1\" \"$2\" ; sendcvar \"$1\""
+
 seta cl_firststart "" "how many times the client has been run"
 seta cl_startcount 0 "how many times the client has been run"
 
@@ -58,10 +62,11 @@ _cl_name Player
 _cl_playermodel models/player/erebus.iqm
 _cl_playerskin 0
 seta crosshair 16
+seta crosshair_enabled 2 // main toggle for enabling/disabling crosshair rendering, used mostly just for the menu... 1 = with per-weapon crosshairs, 2 = custom crosshair
 seta crosshair_color "0.6 0.8 1"
 seta crosshair_alpha 0.300000
 seta crosshair_size 0.500000
-seta crosshair_dot 1
+seta crosshair_dot 
 seta crosshair_dot_alpha 1
 seta crosshair_dot_size 0.600000
 seta crosshair_dot_color "1 0 0" "when != 0, use custom color for the crosshair dot"
@@ -1136,7 +1141,7 @@ set quit_and_redirect ""  "set to an IP to redirect all players at the end of the
 set g_campaign 0
 set g_campaign_forceteam 0 "Forces the player to a given team in campaign mode, 1 = red, 2 = blue, 3 = yellow, 4 = pink"
 seta g_campaign_name "xonoticbeta"
-set g_campaign_skill 0
+seta g_campaign_skill -1 // -2 easy -1 medium 0 hard
 
 alias singleplayer_start "g_campaign_index 0; set scmenu_campaign_goto 0"
 alias singleplayer_continue "set scmenu_campaign_goto -1"
@@ -1446,6 +1451,8 @@ seta v_kicktime $v_kicktime
 seta r_subdivisions_tolerance $r_subdivisions_tolerance
 seta vid_gl20 $vid_gl20
 seta vid_gl13 $vid_gl13
+seta r_drawviewmodel $r_drawviewmodel
+seta v_idlescale $v_idlescale
 
 // ticrate
 //sys_ticrate 0.0166667
index 0e011fe56be28f6516e54bd5cf76fab65031acac..68e8abf2fc992c4851555182bf5693f6ebbbe504 100644 (file)
@@ -4,7 +4,6 @@ cl_decals_time 4
 cl_particles_quality 1
 gl_flashblend 0
 gl_picmip -1
-gl_texture_anisotropy 16
 mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
@@ -15,7 +14,7 @@ r_depthfirst 2
 r_drawdecals_drawdistance 500
 r_drawparticles_drawdistance 2000
 r_glsl_deluxemapping 1
-r_glsl_offsetmapping 1
+r_glsl_offsetmapping 0
 r_glsl_offsetmapping_reliefmapping 0
 r_motionblur 0.5
 r_shadow_gloss 1
@@ -30,7 +29,5 @@ r_subdivisions_tolerance 3
 r_texture_dds_load 1
 r_water 1
 r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 2
 
 menu_sync
index a9cff5abe5e85b3f5bd38c64bd5a5293cda43e89..5b42f11666373428a5b79fa50d3e0c0dcf536c17 100644 (file)
@@ -4,7 +4,6 @@ cl_decals_time 2
 cl_particles_quality 0.4
 gl_flashblend 1
 gl_picmip 1
-gl_texture_anisotropy 1
 mod_q3bsp_nolightmaps 1
 r_bloom 0
 r_coronas 1
@@ -30,7 +29,5 @@ r_subdivisions_tolerance 8
 r_texture_dds_load 1
 r_water 0
 r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 0
 
 menu_sync
index 5be8356e2e11c52fca16d0f258372bb05eaddd9f..15f465d46ce3153b2a4c5b76ba51c4675a2102a7 100644 (file)
@@ -4,7 +4,6 @@ cl_decals_time 2
 cl_particles_quality 1
 gl_flashblend 0
 gl_picmip 0
-gl_texture_anisotropy 1
 mod_q3bsp_nolightmaps 0
 r_bloom 0
 r_coronas 1
@@ -30,7 +29,5 @@ r_subdivisions_tolerance 4
 r_texture_dds_load 1
 r_water 0
 r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 0
 
 menu_sync
index 0aebfb79dfd709737399f73b5e83721720415bda..8fe8a31e4b68e6515edc30090d2de015b9668c97 100644 (file)
@@ -4,7 +4,6 @@ cl_decals_time 2
 cl_particles_quality 1
 gl_flashblend 0
 gl_picmip 0
-gl_texture_anisotropy 1
 mod_q3bsp_nolightmaps 0
 r_bloom 0
 r_coronas 1
@@ -30,7 +29,5 @@ r_subdivisions_tolerance 3
 r_texture_dds_load 1
 r_water 0
 r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 0
 
 menu_sync
index 350e9b8497afd77ae4b187b01d1e1e7b9fa4ed55..1ee09b4f648148f6101767a285e3407dcd8b194b 100644 (file)
@@ -4,7 +4,6 @@ cl_decals_time 2
 cl_particles_quality 0.4
 gl_flashblend 1
 gl_picmip 1337
-gl_texture_anisotropy 1
 mod_q3bsp_nolightmaps 1
 r_bloom 0
 r_coronas 1
@@ -30,7 +29,5 @@ r_subdivisions_tolerance 16
 r_texture_dds_load 1
 r_water 0
 r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 0
 
 menu_sync
index 7e4125bf45bf224371e234cf601e70c2e46ff1df..e97726ec8ebc7dd19cd9e3825748cea9835d1619 100644 (file)
@@ -4,7 +4,6 @@ cl_decals_time 10
 cl_particles_quality 1
 gl_flashblend 0
 gl_picmip -1
-gl_texture_anisotropy 16
 mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
@@ -30,7 +29,5 @@ r_subdivisions_tolerance 1
 r_texture_dds_load 0
 r_water 1
 r_water_resolutionmultiplier 1
-vid_samples 1
-r_viewfbo 2
 
 menu_sync
index 1c9b9db3012a4f9d05d76aacac7180feea54880e..6fcfdf0e5dcfc7735596ce925344297bf9a4d768 100644 (file)
@@ -4,7 +4,6 @@ cl_decals_time 10
 cl_particles_quality 1
 gl_flashblend 0
 gl_picmip -1
-gl_texture_anisotropy 16
 mod_q3bsp_nolightmaps 0
 r_bloom 1
 r_coronas 1
@@ -22,7 +21,7 @@ r_shadow_gloss 1
 r_shadow_realtime_dlight 1
 r_shadow_realtime_dlight_shadows 1
 r_shadow_realtime_world 1
-r_shadow_realtime_world_shadows 1
+r_shadow_realtime_world_shadows 0
 r_shadow_shadowmapping 1
 r_shadow_usenormalmap 1
 r_showsurfaces 0
@@ -30,7 +29,5 @@ r_subdivisions_tolerance 2
 r_texture_dds_load 0
 r_water 1
 r_water_resolutionmultiplier 0.5
-vid_samples 1
-r_viewfbo 2
 
 menu_sync
diff --git a/gfx/menu/luminos/gametype_arena.tga b/gfx/menu/luminos/gametype_arena.tga
new file mode 100644 (file)
index 0000000..f49fa28
Binary files /dev/null and b/gfx/menu/luminos/gametype_arena.tga differ
diff --git a/gfx/menu/luminos/gametype_as.tga b/gfx/menu/luminos/gametype_as.tga
new file mode 100644 (file)
index 0000000..59bdfc1
Binary files /dev/null and b/gfx/menu/luminos/gametype_as.tga differ
diff --git a/gfx/menu/luminos/gametype_ca.tga b/gfx/menu/luminos/gametype_ca.tga
new file mode 100644 (file)
index 0000000..c82a992
Binary files /dev/null and b/gfx/menu/luminos/gametype_ca.tga differ
diff --git a/gfx/menu/luminos/gametype_ctf.tga b/gfx/menu/luminos/gametype_ctf.tga
new file mode 100644 (file)
index 0000000..cc3bc7c
Binary files /dev/null and b/gfx/menu/luminos/gametype_ctf.tga differ
diff --git a/gfx/menu/luminos/gametype_cts.tga b/gfx/menu/luminos/gametype_cts.tga
new file mode 100644 (file)
index 0000000..bc917ec
Binary files /dev/null and b/gfx/menu/luminos/gametype_cts.tga differ
diff --git a/gfx/menu/luminos/gametype_dm.tga b/gfx/menu/luminos/gametype_dm.tga
new file mode 100644 (file)
index 0000000..1266f59
Binary files /dev/null and b/gfx/menu/luminos/gametype_dm.tga differ
diff --git a/gfx/menu/luminos/gametype_dom.tga b/gfx/menu/luminos/gametype_dom.tga
new file mode 100644 (file)
index 0000000..f7637f9
Binary files /dev/null and b/gfx/menu/luminos/gametype_dom.tga differ
diff --git a/gfx/menu/luminos/gametype_duel.tga b/gfx/menu/luminos/gametype_duel.tga
new file mode 100644 (file)
index 0000000..03fe067
Binary files /dev/null and b/gfx/menu/luminos/gametype_duel.tga differ
diff --git a/gfx/menu/luminos/gametype_freezetag.tga b/gfx/menu/luminos/gametype_freezetag.tga
new file mode 100644 (file)
index 0000000..8028b67
Binary files /dev/null and b/gfx/menu/luminos/gametype_freezetag.tga differ
diff --git a/gfx/menu/luminos/gametype_keepaway.tga b/gfx/menu/luminos/gametype_keepaway.tga
new file mode 100644 (file)
index 0000000..21e472c
Binary files /dev/null and b/gfx/menu/luminos/gametype_keepaway.tga differ
diff --git a/gfx/menu/luminos/gametype_kh.tga b/gfx/menu/luminos/gametype_kh.tga
new file mode 100644 (file)
index 0000000..ca0d2aa
Binary files /dev/null and b/gfx/menu/luminos/gametype_kh.tga differ
diff --git a/gfx/menu/luminos/gametype_lms.tga b/gfx/menu/luminos/gametype_lms.tga
new file mode 100644 (file)
index 0000000..5549651
Binary files /dev/null and b/gfx/menu/luminos/gametype_lms.tga differ
diff --git a/gfx/menu/luminos/gametype_nexball.tga b/gfx/menu/luminos/gametype_nexball.tga
new file mode 100644 (file)
index 0000000..b4f7441
Binary files /dev/null and b/gfx/menu/luminos/gametype_nexball.tga differ
diff --git a/gfx/menu/luminos/gametype_ons.tga b/gfx/menu/luminos/gametype_ons.tga
new file mode 100644 (file)
index 0000000..a224866
Binary files /dev/null and b/gfx/menu/luminos/gametype_ons.tga differ
diff --git a/gfx/menu/luminos/gametype_rc.tga b/gfx/menu/luminos/gametype_rc.tga
new file mode 100644 (file)
index 0000000..9874c7e
Binary files /dev/null and b/gfx/menu/luminos/gametype_rc.tga differ
diff --git a/gfx/menu/luminos/gametype_rune.tga b/gfx/menu/luminos/gametype_rune.tga
new file mode 100644 (file)
index 0000000..6906411
Binary files /dev/null and b/gfx/menu/luminos/gametype_rune.tga differ
diff --git a/gfx/menu/luminos/gametype_tdm.tga b/gfx/menu/luminos/gametype_tdm.tga
new file mode 100644 (file)
index 0000000..cc0b938
Binary files /dev/null and b/gfx/menu/luminos/gametype_tdm.tga differ
index b4102234acd4e8bc06eef8253bfcc90d83538333..24bf6303cd2681edc64def2fcfa7c19a43401d8b 100755 (executable)
@@ -1,4 +1,4 @@
-title Luminos
+title Luminos (default)
 author sev
 
 // Colors: 'Red Green Blue'
@@ -23,7 +23,7 @@ MARGIN_COLORPICKER              '0 0 0'
 //   uses "border" images
 //   uses "closebutton" images
 MARGIN_TOP                      8
-MARGIN_BOTTOM                   8
+MARGIN_BOTTOM                   12
 MARGIN_LEFT                     16
 MARGIN_RIGHT                    16
 MARGIN_COLUMNS                  4
diff --git a/gfx/menu/wickedx/gametype_arena.tga b/gfx/menu/wickedx/gametype_arena.tga
new file mode 100644 (file)
index 0000000..f49fa28
Binary files /dev/null and b/gfx/menu/wickedx/gametype_arena.tga differ
diff --git a/gfx/menu/wickedx/gametype_as.tga b/gfx/menu/wickedx/gametype_as.tga
new file mode 100644 (file)
index 0000000..59bdfc1
Binary files /dev/null and b/gfx/menu/wickedx/gametype_as.tga differ
diff --git a/gfx/menu/wickedx/gametype_ca.tga b/gfx/menu/wickedx/gametype_ca.tga
new file mode 100644 (file)
index 0000000..c82a992
Binary files /dev/null and b/gfx/menu/wickedx/gametype_ca.tga differ
diff --git a/gfx/menu/wickedx/gametype_ctf.tga b/gfx/menu/wickedx/gametype_ctf.tga
new file mode 100644 (file)
index 0000000..cc3bc7c
Binary files /dev/null and b/gfx/menu/wickedx/gametype_ctf.tga differ
diff --git a/gfx/menu/wickedx/gametype_cts.tga b/gfx/menu/wickedx/gametype_cts.tga
new file mode 100644 (file)
index 0000000..bc917ec
Binary files /dev/null and b/gfx/menu/wickedx/gametype_cts.tga differ
diff --git a/gfx/menu/wickedx/gametype_dm.tga b/gfx/menu/wickedx/gametype_dm.tga
new file mode 100644 (file)
index 0000000..1266f59
Binary files /dev/null and b/gfx/menu/wickedx/gametype_dm.tga differ
diff --git a/gfx/menu/wickedx/gametype_dom.tga b/gfx/menu/wickedx/gametype_dom.tga
new file mode 100644 (file)
index 0000000..f7637f9
Binary files /dev/null and b/gfx/menu/wickedx/gametype_dom.tga differ
diff --git a/gfx/menu/wickedx/gametype_duel.tga b/gfx/menu/wickedx/gametype_duel.tga
new file mode 100644 (file)
index 0000000..03fe067
Binary files /dev/null and b/gfx/menu/wickedx/gametype_duel.tga differ
diff --git a/gfx/menu/wickedx/gametype_freezetag.tga b/gfx/menu/wickedx/gametype_freezetag.tga
new file mode 100644 (file)
index 0000000..8028b67
Binary files /dev/null and b/gfx/menu/wickedx/gametype_freezetag.tga differ
diff --git a/gfx/menu/wickedx/gametype_keepaway.tga b/gfx/menu/wickedx/gametype_keepaway.tga
new file mode 100644 (file)
index 0000000..21e472c
Binary files /dev/null and b/gfx/menu/wickedx/gametype_keepaway.tga differ
diff --git a/gfx/menu/wickedx/gametype_kh.tga b/gfx/menu/wickedx/gametype_kh.tga
new file mode 100644 (file)
index 0000000..ca0d2aa
Binary files /dev/null and b/gfx/menu/wickedx/gametype_kh.tga differ
diff --git a/gfx/menu/wickedx/gametype_lms.tga b/gfx/menu/wickedx/gametype_lms.tga
new file mode 100644 (file)
index 0000000..5549651
Binary files /dev/null and b/gfx/menu/wickedx/gametype_lms.tga differ
diff --git a/gfx/menu/wickedx/gametype_nexball.tga b/gfx/menu/wickedx/gametype_nexball.tga
new file mode 100644 (file)
index 0000000..b4f7441
Binary files /dev/null and b/gfx/menu/wickedx/gametype_nexball.tga differ
diff --git a/gfx/menu/wickedx/gametype_ons.tga b/gfx/menu/wickedx/gametype_ons.tga
new file mode 100644 (file)
index 0000000..a224866
Binary files /dev/null and b/gfx/menu/wickedx/gametype_ons.tga differ
diff --git a/gfx/menu/wickedx/gametype_rc.tga b/gfx/menu/wickedx/gametype_rc.tga
new file mode 100644 (file)
index 0000000..9874c7e
Binary files /dev/null and b/gfx/menu/wickedx/gametype_rc.tga differ
diff --git a/gfx/menu/wickedx/gametype_rune.tga b/gfx/menu/wickedx/gametype_rune.tga
new file mode 100644 (file)
index 0000000..6906411
Binary files /dev/null and b/gfx/menu/wickedx/gametype_rune.tga differ
diff --git a/gfx/menu/wickedx/gametype_tdm.tga b/gfx/menu/wickedx/gametype_tdm.tga
new file mode 100644 (file)
index 0000000..cc0b938
Binary files /dev/null and b/gfx/menu/wickedx/gametype_tdm.tga differ
index d6b7197a1d32c099a1ffbff4fdee06210e066455..ba04902f5178377c954b545846a49b79853f12f2 100755 (executable)
@@ -1,4 +1,4 @@
-title Default // "WickedX"
+title WickedX
 author sev
 
 // Colors: 'Red Green Blue'
@@ -23,7 +23,7 @@ MARGIN_COLORPICKER              '0 0 0'
 //   uses "border" images
 //   uses "closebutton" images
 MARGIN_TOP                      8
-MARGIN_BOTTOM                   8
+MARGIN_BOTTOM                   12
 MARGIN_LEFT                     16
 MARGIN_RIGHT                    16
 MARGIN_COLUMNS                  4
diff --git a/gfx/menu/xaw/gametype_arena.tga b/gfx/menu/xaw/gametype_arena.tga
new file mode 100644 (file)
index 0000000..ca720bc
Binary files /dev/null and b/gfx/menu/xaw/gametype_arena.tga differ
diff --git a/gfx/menu/xaw/gametype_as.tga b/gfx/menu/xaw/gametype_as.tga
new file mode 100644 (file)
index 0000000..750c43f
Binary files /dev/null and b/gfx/menu/xaw/gametype_as.tga differ
diff --git a/gfx/menu/xaw/gametype_ca.tga b/gfx/menu/xaw/gametype_ca.tga
new file mode 100644 (file)
index 0000000..9275e2d
Binary files /dev/null and b/gfx/menu/xaw/gametype_ca.tga differ
diff --git a/gfx/menu/xaw/gametype_ctf.tga b/gfx/menu/xaw/gametype_ctf.tga
new file mode 100644 (file)
index 0000000..99499fe
Binary files /dev/null and b/gfx/menu/xaw/gametype_ctf.tga differ
diff --git a/gfx/menu/xaw/gametype_cts.tga b/gfx/menu/xaw/gametype_cts.tga
new file mode 100644 (file)
index 0000000..ae241c5
Binary files /dev/null and b/gfx/menu/xaw/gametype_cts.tga differ
diff --git a/gfx/menu/xaw/gametype_dm.tga b/gfx/menu/xaw/gametype_dm.tga
new file mode 100644 (file)
index 0000000..9778335
Binary files /dev/null and b/gfx/menu/xaw/gametype_dm.tga differ
diff --git a/gfx/menu/xaw/gametype_dom.tga b/gfx/menu/xaw/gametype_dom.tga
new file mode 100644 (file)
index 0000000..5663a27
Binary files /dev/null and b/gfx/menu/xaw/gametype_dom.tga differ
diff --git a/gfx/menu/xaw/gametype_duel.tga b/gfx/menu/xaw/gametype_duel.tga
new file mode 100644 (file)
index 0000000..2e0cac0
Binary files /dev/null and b/gfx/menu/xaw/gametype_duel.tga differ
diff --git a/gfx/menu/xaw/gametype_freezetag.tga b/gfx/menu/xaw/gametype_freezetag.tga
new file mode 100644 (file)
index 0000000..cfcea61
Binary files /dev/null and b/gfx/menu/xaw/gametype_freezetag.tga differ
diff --git a/gfx/menu/xaw/gametype_keepaway.tga b/gfx/menu/xaw/gametype_keepaway.tga
new file mode 100644 (file)
index 0000000..c65ffba
Binary files /dev/null and b/gfx/menu/xaw/gametype_keepaway.tga differ
diff --git a/gfx/menu/xaw/gametype_kh.tga b/gfx/menu/xaw/gametype_kh.tga
new file mode 100644 (file)
index 0000000..e44ade0
Binary files /dev/null and b/gfx/menu/xaw/gametype_kh.tga differ
diff --git a/gfx/menu/xaw/gametype_lms.tga b/gfx/menu/xaw/gametype_lms.tga
new file mode 100644 (file)
index 0000000..c732414
Binary files /dev/null and b/gfx/menu/xaw/gametype_lms.tga differ
diff --git a/gfx/menu/xaw/gametype_nexball.tga b/gfx/menu/xaw/gametype_nexball.tga
new file mode 100644 (file)
index 0000000..fa4bf49
Binary files /dev/null and b/gfx/menu/xaw/gametype_nexball.tga differ
diff --git a/gfx/menu/xaw/gametype_ons.tga b/gfx/menu/xaw/gametype_ons.tga
new file mode 100644 (file)
index 0000000..e1e00cf
Binary files /dev/null and b/gfx/menu/xaw/gametype_ons.tga differ
diff --git a/gfx/menu/xaw/gametype_rc.tga b/gfx/menu/xaw/gametype_rc.tga
new file mode 100644 (file)
index 0000000..4500c0f
Binary files /dev/null and b/gfx/menu/xaw/gametype_rc.tga differ
diff --git a/gfx/menu/xaw/gametype_rune.tga b/gfx/menu/xaw/gametype_rune.tga
new file mode 100644 (file)
index 0000000..79c8f30
Binary files /dev/null and b/gfx/menu/xaw/gametype_rune.tga differ
diff --git a/gfx/menu/xaw/gametype_tdm.tga b/gfx/menu/xaw/gametype_tdm.tga
new file mode 100644 (file)
index 0000000..e20b7fa
Binary files /dev/null and b/gfx/menu/xaw/gametype_tdm.tga differ
index 5afcb09cfe3751cd5efedde9758be73cd512e864..682594b2d65d4a6906dc4f588a9abf91973fecba 100644 (file)
@@ -112,7 +112,7 @@ COLOR_CVARLIST_UNCHANGED        '1 1 1'
 //   uses "border" images
 //   uses "closebutton" images
 MARGIN_TOP                      8
-MARGIN_BOTTOM                   8
+MARGIN_BOTTOM                   12
 MARGIN_LEFT                     16
 MARGIN_RIGHT                    16
 MARGIN_COLUMNS                  4
index 5cba08f707132a1332cdd2ed01d3db89b229d49b..22f021434183f8611ae0307dc1b2314874ef6292 100644 (file)
@@ -47,7 +47,7 @@
 "+show_info"                            "server info"
 "toggleconsole"                         "enter console"
 "disconnect"                            "disconnect"
-"quit"                                  "quit"
+"menu_showquitdialog"                   "quit"
 ""                                      ""
 ""                                      "Teamplay"
 "messagemode2"                          "team chat"
index afccaf45dc6ab6f217fb0503381ed1ca2a17148b..9f0fc25d2943b7bec27d790965ac3e2585d8d264 100644 (file)
@@ -157,7 +157,7 @@ vector GetCurrentFov(float fov)
                
        makevectors(view_angles);
 
-       if(autocvar_cl_velocityzoom)
+       if(autocvar_cl_velocityzoom && autocvar_cl_velocityzoom_type) // _type = 0 disables velocity zoom too
        {
                switch(autocvar_cl_velocityzoom_type)
                {
@@ -1015,7 +1015,11 @@ void CSQC_UpdateView(float w, float h)
                                CSQC_common_hud();
 
                // crosshair goes VERY LAST
-               if(!scoreboard_active && !camera_active && intermission != 2 && spectatee_status != -1 && hud == HUD_NORMAL) {
+               if(!scoreboard_active && !camera_active && intermission != 2 && spectatee_status != -1 && hud == HUD_NORMAL) 
+               {
+                       if not(autocvar_crosshair_enabled) // main toggle for crosshair rendering
+                               return;
+                               
                        string wcross_style;
                        float wcross_alpha, wcross_resolution;
                        wcross_style = autocvar_crosshair;
index 5c05e2feec513b1438ac12a7d9f53ae30c1eee70..6ea8ad80e337312bd0be9b05ceda47eb56bf2266 100644 (file)
@@ -92,6 +92,7 @@ string autocvar_crosshair_dot_color;
 float autocvar_crosshair_dot_size;
 float autocvar_crosshair_effect_scalefade;
 float autocvar_crosshair_effect_speed;
+float autocvar_crosshair_enabled;
 float autocvar_crosshair_hitindication;
 string autocvar_crosshair_hitindication_color;
 float autocvar_crosshair_hitindication_speed;
index e47a28369f783589cfae824b6b603a61e0b91a03..4e73886d3c98cd970066fbe4099790a4566e7114 100644 (file)
@@ -140,6 +140,7 @@ string MapInfo_ListAllowedMaps(float pFlagsRequired, float pFlagsForbidden);
 string MapInfo_ListAllAllowedMaps(float pFlagsRequired, float pFlagsForbidden);
 
 // gets a gametype from a string
+string _MapInfo_GetDefaultEx(float t);
 float MapInfo_Type_FromString(string t);
 string MapInfo_Type_ToString(float t);
 string MapInfo_Type_ToText(float t);
index c0a9780471e3689ca0f1490c51459d9ce05c84ed..f838257c564d9c7899b694da1c73ecec1254b40c 100644 (file)
@@ -34,7 +34,7 @@
 #include "xonotic/dialog_settings_video.c"
 #include "xonotic/dialog_settings_effects.c"
 #include "xonotic/dialog_settings_audio.c"
-#include "xonotic/dialog_settings_network.c"
+#include "xonotic/dialog_settings_user.c"
 #include "xonotic/dialog_settings_misc.c"
 #include "xonotic/dialog_multiplayer.c"
 #include "xonotic/dialog_multiplayer_playersetup.c"
 #include "xonotic/dialog_singleplayer_winner.c"
 #include "xonotic/dialog_credits.c"
 #include "xonotic/credits.c"
+#include "xonotic/dialog_multiplayer_playersetup_crosshair.c"
+#include "xonotic/dialog_multiplayer_playersetup_hud.c"
+#include "xonotic/dialog_multiplayer_playersetup_hudconfirm.c"
+#include "xonotic/dialog_multiplayer_playersetup_model.c"
+#include "xonotic/dialog_multiplayer_playersetup_view.c"
 #include "xonotic/dialog_multiplayer_playersetup_weapons.c"
 #include "xonotic/weaponslist.c"
-#include "xonotic/dialog_multiplayer_playersetup_waypoint.c"
 #include "xonotic/dialog_multiplayer_demo.c"
 #include "xonotic/demolist.c"
 #include "xonotic/colorpicker.c"
index e8cfba3689a7bcca7ed0fe1fa1eaffa4549dd904..2c3ba80c575f807714795794574aa8e43490fd21 100644 (file)
@@ -64,9 +64,13 @@ SKINBEGIN
        SKINVECTOR(COLOR_DIALOG_SINGLEPLAYER, '1 1 0.7');
        SKINVECTOR(COLOR_DIALOG_CREDITS, '0.7 0.7 1');
        SKINVECTOR(COLOR_DIALOG_WEAPONS, '1 0.7 0.7');
-       SKINVECTOR(COLOR_DIALOG_WAYPOINTS, '0.7 0.7 1');
+       SKINVECTOR(COLOR_DIALOG_VIEW, '1 0.7 0.7');
+       SKINVECTOR(COLOR_DIALOG_MODEL, '1 0.7 0.7');
+       SKINVECTOR(COLOR_DIALOG_CROSSHAIR, '1 0.7 0.7');
+       SKINVECTOR(COLOR_DIALOG_HUD, '1 0.7 0.7');
        SKINVECTOR(COLOR_DIALOG_SERVERINFO, '0.7 0.7 1');
        SKINVECTOR(COLOR_DIALOG_CVARS, '1 0 0');
+       SKINVECTOR(COLOR_DIALOG_HUDCONFIRM, '1 0 0');
 
        // nexposee positions of windows (they are the scale transformation
        // centers, NOT the actual positions of the windows!)
index c16e4ae0008efe802b593f6be86b6e1d4b3d1569..2daed8bcbca504b33ea1993b954680304b5915c9 100644 (file)
@@ -1,26 +1,28 @@
 #ifdef INTERFACE
 CLASS(XonoticDemoList) EXTENDS(XonoticListBox)
-    METHOD(XonoticDemoList, configureXonoticDemoList, void(entity))
-    ATTRIB(XonoticDemoList, rowsPerItem, float, 1)
-    METHOD(XonoticDemoList, resizeNotify, void(entity, vector, vector, vector, vector))
-    METHOD(XonoticDemoList, drawListBoxItem, void(entity, float, vector, float))
-    METHOD(XonoticDemoList, getDemos, void(entity))
-    METHOD(XonoticDemoList, startDemo, void(entity))    
-    METHOD(XonoticDemoList, demoName, string(entity, float))
-    METHOD(XonoticDemoList, clickListBoxItem, void(entity, float, vector))
-    METHOD(XonoticDemoList, keyDown, float(entity, float, float, float))
-    METHOD(XonoticDemoList, destroy, void(entity))
-    METHOD(XonoticDemoList, showNotify, void(entity))
-    ATTRIB(XonoticDemoList, listDemo, float, -1)
-    ATTRIB(XonoticDemoList, realFontSize, vector, '0 0 0')
-    ATTRIB(XonoticDemoList, columnNameOrigin, float, 0)
-    ATTRIB(XonoticDemoList, columnNameSize, float, 0)
-    ATTRIB(XonoticDemoList, realUpperMargin, float, 0)
-    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)    
+       METHOD(XonoticDemoList, configureXonoticDemoList, void(entity))
+       ATTRIB(XonoticDemoList, rowsPerItem, float, 1)
+       METHOD(XonoticDemoList, resizeNotify, void(entity, vector, vector, vector, vector))
+       METHOD(XonoticDemoList, drawListBoxItem, void(entity, float, vector, float))
+       METHOD(XonoticDemoList, getDemos, void(entity))
+       METHOD(XonoticDemoList, startDemo, void(entity))        
+       METHOD(XonoticDemoList, demoName, string(entity, float))
+       METHOD(XonoticDemoList, clickListBoxItem, void(entity, float, vector))
+       METHOD(XonoticDemoList, keyDown, float(entity, float, float, float))
+       METHOD(XonoticDemoList, destroy, void(entity))
+       METHOD(XonoticDemoList, showNotify, void(entity))
+       
+       ATTRIB(XonoticDemoList, listDemo, float, -1)
+       ATTRIB(XonoticDemoList, realFontSize, vector, '0 0 0')
+       ATTRIB(XonoticDemoList, columnNameOrigin, float, 0)
+       ATTRIB(XonoticDemoList, columnNameSize, float, 0)
+       ATTRIB(XonoticDemoList, realUpperMargin, float, 0)
+       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)
 
 entity makeXonoticDemoList();
@@ -33,134 +35,136 @@ void DemoList_Filter_Change(entity box, entity me);
 
 entity makeXonoticDemoList()
 {
-    entity me;
-    me = spawnXonoticDemoList();
-    me.configureXonoticDemoList(me);
-    return me;
+       entity me;
+       me = spawnXonoticDemoList();
+       me.configureXonoticDemoList(me);
+       return me;
 }
 
 void XonoticDemoList_configureXonoticDemoList(entity me)
 {
-    me.configureXonoticListBox(me);
-    me.getDemos(me);    
+       me.configureXonoticListBox(me);
+       me.getDemos(me);        
 }
 
 string XonoticDemoList_demoName(entity me, float i )
 {
-    string s;
-    s = search_getfilename(me.listDemo, i);
-    s = substring(s, 6, strlen(s) - 6 - 4);  // demos/, .dem
-    return s;
+       string s;
+       s = search_getfilename(me.listDemo, i);
+       s = substring(s, 6, strlen(s) - 6 - 4);  // demos/, .dem
+       return s;
 }
 
 
 void XonoticDemoList_getDemos(entity me)
 {
-    string s;
-    
-    if(me.filterString)
-       //subdirectory in filterString allowed    
-       s=strcat("demos/*", me.filterString, "*.dem");          
-    else
-       s="demos/*.dem";
+       string s;
+       
+       if(me.filterString)
+               //subdirectory in filterString allowed  
+               s=strcat("demos/*", me.filterString, "*.dem");          
+       else
+               s="demos/*.dem";
        
-    //dprint("Search demos with the pattern ", s, "\n");    
+       //dprint("Search demos with the pattern ", s, "\n");    
        if(me.listDemo >= 0)
                search_end(me.listDemo);
-    me.listDemo = search_begin(s, FALSE, TRUE);
-    if(me.listDemo < 0)
-       me.nItems=0;
-    else
-       me.nItems=search_getsize(me.listDemo);                          
+               
+       me.listDemo = search_begin(s, FALSE, TRUE);
+
+       if(me.listDemo < 0)
+               me.nItems=0;
+       else
+               me.nItems=search_getsize(me.listDemo);                          
 }
 
 void XonoticDemoList_destroy(entity me)
 {
-    search_end(me.listDemo);
+       search_end(me.listDemo);
 }
 
 void XonoticDemoList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
-    me.itemAbsSize = '0 0 0';
-    SUPER(XonoticDemoList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
+       me.itemAbsSize = '0 0 0';
+       SUPER(XonoticDemoList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
 
-    me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
-    me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
-    me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
+       me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
+       me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
+       me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
 
-    me.columnNameOrigin = me.realFontSize_x;
-    me.columnNameSize = 1 - 2 * me.realFontSize_x;
+       me.columnNameOrigin = me.realFontSize_x;
+       me.columnNameSize = 1 - 2 * me.realFontSize_x;
 }
 
 void XonoticDemoList_drawListBoxItem(entity me, float i, vector absSize, float isSelected)
 {
-    string s;
-    if(isSelected)
-       draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
+       string s;
+       if(isSelected)
+               draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
                
-    s = me.demoName(me,i);
-    s = draw_TextShortenToWidth(s, me.columnNameSize, 0, me.realFontSize);
-    draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);              
+       s = me.demoName(me,i);
+       s = draw_TextShortenToWidth(s, me.columnNameSize, 0, me.realFontSize);
+       draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);           
 }
 
 void XonoticDemoList_showNotify(entity me)
 {
-    me.getDemos(me);
+       me.getDemos(me);
 }
 
 void DemoList_Filter_Change(entity box, entity me)
 {      
-    if(me.filterString)
-       strunzone(me.filterString);
-    
-    if(box.text != "")
-       me.filterString = strzone(box.text);
-    else
-       me.filterString = string_null;
+       if(me.filterString)
+               strunzone(me.filterString);
+       
+       if(box.text != "")
+               me.filterString = strzone(box.text);
+       else
+               me.filterString = string_null;
                
-    me.getDemos(me);
+       me.getDemos(me);
 }
 
 void XonoticDemoList_startDemo(entity me)
 {
-    string s;
-    s = me.demoName(me,me.selectedItem);
-    localcmd("playdemo demos/", s, ".dem\nwait\ntogglemenu\n");        
+       string s;
+       s = me.demoName(me,me.selectedItem);
+       localcmd("playdemo \"demos/", s, ".dem\" \nwait \ntogglemenu\n");       
 }
 
 void StartDemo_Click(entity btn, entity me)
 {
-    me.startDemo(me);
+       me.startDemo(me);
 }
 
 void TimeDemo_Click(entity btn, entity me)
 {
-    string s;
-    s = me.demoName(me,me.selectedItem);
-    localcmd("timedemo demos/", s, ".dem\nwait\ntogglemenu\n");        
+       string s;
+       s = me.demoName(me,me.selectedItem);
+       localcmd("timedemo \"demos/", s, ".dem\" \nwait \ntogglemenu\n");       
 }
 
 void XonoticDemoList_clickListBoxItem(entity me, float i, vector where)
 {
-    if(i == me.lastClickedDemo)
-        if(time < me.lastClickedTime + 0.3)
-        {
-            // DOUBLE CLICK!
-            me.setSelected(me, i);
-            me.startDemo(me);
-        }
-    me.lastClickedDemo = i;
-    me.lastClickedTime = time;
+       if(i == me.lastClickedDemo)
+               if(time < me.lastClickedTime + 0.3)
+               {
+                       // DOUBLE CLICK!
+                       me.setSelected(me, i);
+                       me.startDemo(me);
+               }
+       me.lastClickedDemo = i;
+       me.lastClickedTime = time;
 }
 
 float XonoticDemoList_keyDown(entity me, float scan, float ascii, float shift)
 {
-    if(scan == K_ENTER || scan == K_KP_ENTER) {
-        me.startDemo(me);
-        return 1;
-    }
-    else
-        return SUPER(XonoticDemoList).keyDown(me, scan, ascii, shift);
+       if(scan == K_ENTER || scan == K_KP_ENTER) {
+               me.startDemo(me);
+               return 1;
+       }
+       else
+               return SUPER(XonoticDemoList).keyDown(me, scan, ascii, shift);
 }
 #endif
 
index 6568a7198f301ef4ad9571fe9521ea8af0b6e3a3..47cbd15bb124b390799b1fc6027fb589964155a2 100644 (file)
@@ -3,9 +3,9 @@ CLASS(XonoticFirstRunDialog) EXTENDS(XonoticRootDialog)
        METHOD(XonoticFirstRunDialog, fill, void(entity)) // to be overridden by user to fill the dialog with controls
        ATTRIB(XonoticFirstRunDialog, title, string, _("Welcome"))
        ATTRIB(XonoticFirstRunDialog, color, vector, SKINCOLOR_DIALOG_FIRSTRUN)
-       ATTRIB(XonoticFirstRunDialog, intendedWidth, float, 0.6)
-       ATTRIB(XonoticFirstRunDialog, rows, float, 15)
-       ATTRIB(XonoticFirstRunDialog, columns, float, 3)
+       ATTRIB(XonoticFirstRunDialog, intendedWidth, float, 0.7)
+       ATTRIB(XonoticFirstRunDialog, rows, float, 16)
+       ATTRIB(XonoticFirstRunDialog, columns, float, 6)
        ATTRIB(XonoticFirstRunDialog, name, string, "FirstRun")
        ATTRIB(XonoticFirstRunDialog, playerNameLabel, entity, NULL)
        ATTRIB(XonoticFirstRunDialog, playerNameLabelAlpha, float, 0)
@@ -30,43 +30,56 @@ void XonoticFirstRunDialog_fill(entity me)
        entity label, box;
 
        me.TR(me);
-               me.TD(me, 2, 3, e = makeXonoticTextLabel(0, _("Welcome to Xonotic, please select your language preference and enter your player name to get started.  You can change these options later through the menu system.")));
+       me.TR(me);
+               me.TDempty(me, 1);
+               me.TD(me, 2, 4, e = makeXonoticTextLabel(0, _("Welcome to Xonotic, please select your language preference and enter your player name to get started.  You can change these options later through the menu system.")));
                e.allowWrap = 1;
        me.TR(me);
 
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:")));
-       me.TR(me);
-               me.TD(me, 3, 3, e = makeXonoticLanguageList());
-                       e.name = "languageselector_firstrun";
-                       e.doubleClickCommand = "saveconfig; menu_restart; togglemenu";
-       me.TR(me);
-       me.TR(me);
-
        me.TR(me);
                me.TD(me, 1, 0.5, me.playerNameLabel = makeXonoticTextLabel(0, _("Name:")));
                        me.playerNameLabelAlpha = me.playerNameLabel.alpha;
-               me.TD(me, 1, 2.5, label = makeXonoticTextLabel(0, string_null));
+               me.TD(me, 1, 3.25, label = makeXonoticTextLabel(0, string_null));
                        label.allowCut = 1;
                        label.allowColors = 1;
                        label.alpha = 1;
        me.TR(me);
-               me.TD(me, 1, 3.0, box = makeXonoticInputBox(1, "_cl_name"));
+               me.TD(me, 1, 3.75, box = makeXonoticInputBox(1, "_cl_name"));
                        box.forbiddenCharacters = "\r\n\\\"$"; // don't care, isn't getting saved
                        box.maxLength = -127; // negative means encoded length in bytes
                        box.saveImmediately = 1;
                        label.textEntity = box;
        me.TR(me);
-               me.TD(me, 5, 1, e = makeXonoticColorpicker(box));
-               me.TD(me, 5, 2, e = makeXonoticCharmap(box));
+               me.TD(me, 5, 1.25, e = makeXonoticColorpicker(box));
+               me.TD(me, 5, 2.5, e = makeXonoticCharmap(box));
        me.TR(me);
        me.TR(me);
        me.TR(me);
        me.TR(me);
+       
+       me.gotoRC(me, 3, 4); me.setFirstColumn(me, me.currentColumn);
+       me.TR(me);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Text language:")));
+       me.TR(me);
+               me.TD(me, 6, 2, e = makeXonoticLanguageList());
+                       e.name = "languageselector_firstrun";
+                       e.doubleClickCommand = "saveconfig; menu_restart; togglemenu";
+       me.TR(me);
+       me.TR(me);
+
+       me.gotoRC(me, me.rows - 4, 0);
+       me.TD(me, 1, me.columns, e = makeXonoticTextLabel(0.5, _("Allow player statistics to use your nickname at stats.xonotic.org?")));
+       
+       me.gotoRC(me, me.rows - 3, 0);
+       me.TDempty(me, 1.5);
+       me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "1", _("Yes")));
+       me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "0", _("No")));
+       me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "cl_allow_uid2name", "-1", _("Undecided")));
 
        // because of the language selector, this is a menu_restart!
        me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Save settings"), '0 0 0', "saveconfig; menu_restart; togglemenu", COMMANDBUTTON_APPLY));
+       me.TD(me, 1, me.columns, e = makeXonoticCommandButton(_("Save settings"), '0 0 0', "saveconfig; menu_restart; togglemenu", COMMANDBUTTON_APPLY));
                setDependentWeird(e, CheckFirstRunButton);
 }
 #endif
index 2492581d0603178b2b43dd9b372b38e57c7f667f..2c86f79c38fe322dfe77e8a16cd862a17c896029 100644 (file)
@@ -5,7 +5,7 @@ CLASS(XonoticMultiplayerDialog) EXTENDS(XonoticDialog)
        ATTRIB(XonoticMultiplayerDialog, color, vector, SKINCOLOR_DIALOG_MULTIPLAYER)
        ATTRIB(XonoticMultiplayerDialog, intendedWidth, float, 0.96)
        ATTRIB(XonoticMultiplayerDialog, rows, float, 24)
-       ATTRIB(XonoticMultiplayerDialog, columns, float, 6)
+       ATTRIB(XonoticMultiplayerDialog, columns, float, 4)
 ENDCLASS(XonoticMultiplayerDialog)
 #endif
 
@@ -15,10 +15,10 @@ void XonoticMultiplayerDialog_fill(entity me)
        entity mc, e;
        mc = makeXonoticTabController(me.rows - 2);
        me.TR(me);
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Servers"),  makeXonoticServerListTab()));
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Create"),  makeXonoticServerCreateTab()));
-               me.TD(me, 1, 1, mc.makeTabButton(mc, _("Demos"),   makeXonoticDemoBrowserTab()));
-               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Player Setup"),  makeXonoticPlayerSettingsTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Servers"), makeXonoticServerListTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Create"), makeXonoticServerCreateTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Demos"), makeXonoticDemoBrowserTab()));
+               me.TD(me, 1, 1, e = mc.makeTabButton(mc, _("Player Setup"), makeXonoticPlayerSettingsTab()));
 
        me.TR(me);
        me.TR(me);
index b9b5896804ddc99de65c0f74dee9a6e60192d6d7..f86a186789f84abe3b59da93374ec0112d555b9d 100644 (file)
@@ -5,7 +5,7 @@ CLASS(XonoticServerCreateTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticServerCreateTab, title, string, _("Create"))
        ATTRIB(XonoticServerCreateTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticServerCreateTab, rows, float, 22)
-       ATTRIB(XonoticServerCreateTab, columns, float, 6.5)
+       ATTRIB(XonoticServerCreateTab, columns, float, 6.2) // added extra .2 for center space 
 
        ATTRIB(XonoticServerCreateTab, mapListBox, entity, NULL)
        ATTRIB(XonoticServerCreateTab, sliderFraglimit, entity, NULL)
@@ -33,8 +33,7 @@ void XonoticServerCreateTab_fill(entity me)
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Game type:")));
        me.TR(me);
-               me.TD(me, 9, 3, e = makeXonoticGametypeList());
-       me.TR(me);
+               me.TD(me, 8, 3, e = makeXonoticGametypeList());
        me.TR(me);
        me.TR(me);
        me.TR(me);
@@ -67,8 +66,7 @@ void XonoticServerCreateTab_fill(entity me)
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Number of bots:")));
                me.TD(me, 1, 2, makeXonoticSlider(0, 9, 1, "bot_number"));
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Bot skill:")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Bot skill:")));
                        setDependent(e, "bot_number", 0, -1);
                me.TD(me, 1, 2, e = makeXonoticTextSlider("skill"));
                        e.addValue(e, _("Botlike"), "0");
@@ -84,6 +82,7 @@ void XonoticServerCreateTab_fill(entity me)
                        e.addValue(e, _("Godlike"), "10");
                        e.configureXonoticTextSliderValues(e);
                        setDependent(e, "bot_number", 0, -1);
+       me.TR(me);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticButton(_("Mutators..."), '0 0 0'));
                        e.onClick = DialogOpenButton_Click;
@@ -99,7 +98,7 @@ void XonoticServerCreateTab_fill(entity me)
                        e.onClickEntity = main.advancedDialog;
                        main.advancedDialog.refilterEntity = me.mapListBox;
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.mapListBox = makeXonoticMapList();
                me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Map list:")));
                        makeCallback(e, me.mapListBox, me.mapListBox.refilterCallback);
index 169e9734b16a6b69ae1b0633abb69ab75f5613e9..8e4bc5a23cb153c815da6a06a48477b154229a06 100644 (file)
@@ -43,8 +43,8 @@ void XonoticMapInfoDialog_loadMapInfo(entity me, float i, entity mlb)
                strunzone(me.currentMapFeaturesText);
        }
        me.currentMapBSPName = strzone(MapInfo_Map_bspname);
-       me.currentMapTitle = strzone(MapInfo_Map_title);
-       me.currentMapAuthor = strzone(MapInfo_Map_author);
+       me.currentMapTitle = strzone(strdecolorize(MapInfo_Map_title));
+       me.currentMapAuthor = strzone(strdecolorize(MapInfo_Map_author));
        me.currentMapDescription = strzone(MapInfo_Map_description);
        me.currentMapFeaturesText = strzone((MapInfo_Map_supportedFeatures & MAPINFO_FEATURE_WEAPONS) ? _("Full item placement") : _("MinstaGib only"));
        me.currentMapPreviewImage = strzone(strcat("/maps/", MapInfo_Map_bspname));
index 99f5a179b5ca6ab2bf6711bf20ea1a705c1ff291..be0ba267907bd721ac18bb8cb753b2476a4748bd 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticDemoBrowserTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticDemoBrowserTab, title, string, _("Demo"))
        ATTRIB(XonoticDemoBrowserTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticDemoBrowserTab, rows, float, 22)
-       ATTRIB(XonoticDemoBrowserTab, columns, float, 6.5)
+       ATTRIB(XonoticDemoBrowserTab, columns, float, 4)
        ATTRIB(XonoticDemoBrowserTab, name, string, "DemoBroswer")      
 ENDCLASS(XonoticDemoBrowserTab)
 entity makeXonoticDemoBrowserTab();
@@ -24,21 +24,23 @@ void XonoticDemoBrowserTab_fill(entity me)
        entity btn;
        entity dlist;
 
-       me.TR(me);
-               me.TD(me, 1, me.columns, e = makeXonoticCheckBox(0, "cl_autodemo", _("Record demos while playing")));
-       me.TR(me);
-       dlist = makeXonoticDemoList();
        me.TR(me);
                me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Filter:")));
                me.TD(me, 1, 0.5, btn = makeXonoticButton(_("Clear"), '0 0 0'));
-                       btn.onClick = InputBox_Clear_Click;
-               me.TD(me, 1, me.columns - 1, e = makeXonoticInputBox(0, string_null));
+                       btn.onClick = InputBox_Clear_Click;     
+               me.TD(me, 1, 3, e = makeXonoticInputBox(0, string_null));
+                       dlist = makeXonoticDemoList();
                        e.onChange = DemoList_Filter_Change;
                        e.onChangeEntity = dlist;
                        btn.onClickEntity = e;
                        dlist.controlledTextbox = e;
+                       
        me.TR(me);
                me.TD(me, me.rows - 4, me.columns, dlist);
+
+       me.gotoRC(me, me.rows - 3, 0);
+                       me.TD(me, 1, 4, e = makeXonoticCheckBox(0, "cl_autodemo", _("Automatically record demos while playing")));
+               
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns / 2, e = makeXonoticButton(_("Timedemo"), '0 0 0'));
                        e.onClick = TimeDemo_Click;
index 6365081658c2553d69f566d710c9bbe8e3562e56..daf20fc1405d8c546c6a5d40cd29056804ab6503 100644 (file)
@@ -5,17 +5,14 @@ CLASS(XonoticPlayerSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticPlayerSettingsTab, title, string, _("Player Setup"))
        ATTRIB(XonoticPlayerSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticPlayerSettingsTab, rows, float, 22)
-       ATTRIB(XonoticPlayerSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticPlayerSettingsTab, columns, float, 6.2) // added extra .2 for center space 
        ATTRIB(XonoticPlayerSettingsTab, playerNameLabel, entity, NULL)
        ATTRIB(XonoticPlayerSettingsTab, playerNameLabelAlpha, float, 0)
 ENDCLASS(XonoticPlayerSettingsTab)
 entity makeXonoticPlayerSettingsTab();
-
-void HUDSetup_Join_Click(entity me, entity btn);
 #endif
 
 #ifdef IMPLEMENTATION
-
 entity makeXonoticPlayerSettingsTab()
 {
        entity me;
@@ -83,129 +80,98 @@ void XonoticPlayerSettingsTab_fill(entity me)
                        me.gotoRC(me, r + i * m, 0.4);
                        me.TDNoMargin(me, m, 0.2, e = makeXonoticColorButton(2, 1, i), '0 1 0');
                }
-       me.gotoRC(me, me.rows - 3, 0);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_forceplayermodels", _("Force player models to mine")));
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_forceplayercolors", _("Force player colors to mine")));
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Field of view:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(60, 130, 1, "fov"));
-       me.TR(me);
-               sl = makeXonoticSlider(0.45, 0.75, 0.01, "cl_bobcycle");
-               me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, sl, _("View bobbing:")));
-               makeMulti(sl, "cl_bob2cycle");
-               me.TD(me, 1, 2, sl);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Zoom factor:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(2, 16, 0.5, "cl_zoomfactor"));
-       me.TR(me);
-               sl = makeXonoticSlider(1, 8, 0.5, "cl_zoomspeed");
-               me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1, 1, sl, _("Zoom speed:")));
-               me.TD(me, 1, 2, sl);
+
+       // crosshair_enabled: 0 = no crosshair options, 1 = no crosshair selection, but everything else enabled, 2 = all crosshair options enabled
+       // FIXME: In the future, perhaps make one global crosshair_type cvar which has 0 for disabled, 1 for custom, 2 for per weapon, etc?
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(3, "crosshair_enabled", "0", _("No crosshair")));
        me.TR(me);
-               me.TD(me, 1, 1.5, e = makeXonoticButton(_("Weapon settings..."), '0 0 0'));
-                       e.onClick = DialogOpenButton_Click;
-                       e.onClickEntity = main.weaponsDialog;
-               me.TD(me, 1, 1.5, e0 = makeXonoticTextLabel(0, string_null));
-                       e0.textEntity = main.weaponsDialog;
-                       e0.allowCut = 1;
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(3, "crosshair_per_weapon", string_null, _("Per weapon crosshair")));
+               makeMulti(e, "crosshair_enabled");
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair:")));
-               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "crosshair_per_weapon", _("Per weapon")));
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(3, "crosshair_enabled", "2", _("Custom crosshair")));
        me.TR(me);
-               me.TDempty(me, 0.2);
+               me.TDempty(me, 0.1);
                for(i = 1; i <= 14; ++i) {
-                       me.TDNoMargin(me, 1, 2 / 14, e = makeXonoticCrosshairButton(3, i), '1 1 0');
-                       setDependent(e, "crosshair_per_weapon", 0, 0);
+                       me.TDNoMargin(me, 1, 2 / 14, e = makeXonoticCrosshairButton(4, i), '1 1 0');
+                               setDependentAND(e, "crosshair_per_weapon", 0, 0, "crosshair_enabled", 1, 2);
                }
                // show a larger preview of the selected crosshair
-               me.TDempty(me, 0.2);
-               me.TDNoMargin(me, 2, 2 / 5, e = makeXonoticCrosshairButton(7, -1), '1 1 0'); // crosshair -1 makes this a preview
-               setDependent(e, "crosshair_per_weapon", 0, 0);
+               me.TDempty(me, 0.1);
+               me.TDNoMargin(me, 3, 0.8, e = makeXonoticCrosshairButton(7, -1), '1 1 0'); // crosshair -1 makes this a preview
+                       setDependentAND(e, "crosshair_per_weapon", 0, 0, "crosshair_enabled", 1, 2);
        me.TR(me);
-               me.TDempty(me, 0.2);
+               me.TDempty(me, 0.1);
                for(i = 15; i <= 28; ++i) {
-                       me.TDNoMargin(me, 1, 2 / 14, e = makeXonoticCrosshairButton(3, i), '1 1 0');
-                       setDependent(e, "crosshair_per_weapon", 0, 0);
+                       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.2);
+       me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair size:")));
-               me.TD(me, 1, 1.8, e = makeXonoticSlider(0.1, 1.0, 0.01, "crosshair_size"));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1.0, 0.01, "crosshair_size"));
+                       setDependent(e, "crosshair_enabled", 1, 2);
        me.TR(me);
-               me.TDempty(me, 0.2);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair alpha:")));
-               me.TD(me, 1, 1.8, e = makeXonoticSlider(0, 1, 0.1, "crosshair_alpha"));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.1, "crosshair_alpha"));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+       me.TR(me);
        me.TR(me);
-               me.TDempty(me, 0.2);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Crosshair color:")));
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, "crosshair_color_per_weapon", string_null, _("Per weapon")));
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, "crosshair_color_by_health", string_null, _("By health")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(5, "crosshair_color_per_weapon", string_null, _("Per weapon")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(5, "crosshair_color_by_health", string_null, _("By health")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
        me.TR(me);
-               me.TDempty(me, 0.3);
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(4, string_null, string_null, _("Custom")));
-               me.TD(me, 2, 1.8, e = makeXonoticColorpickerString("crosshair_color", "crosshair_color"));
-                       setDependentAND(e, "crosshair_color_per_weapon", 0, 0, "crosshair_color_by_health", 0, 0);
+               me.TDempty(me, 0.1);
+               me.TD(me, 1, 0.8, e = makeXonoticRadioButton(5, string_null, string_null, _("Custom")));
+                       setDependent(e, "crosshair_enabled", 1, 2);
+               me.TD(me, 2, 2, e = makeXonoticColorpickerString("crosshair_color", "crosshair_color"));
+                       setDependentAND3(e, "crosshair_color_per_weapon", 0, 0, "crosshair_color_by_health", 0, 0, "crosshair_enabled", 1, 2);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "crosshair_dot", _("Enable center dot")));
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Size:")));
-               me.TD(me, 1, 0.9, e = makeXonoticSlider(0.2, 2, 0.1, "crosshair_dot_size"));
-                       setDependent(e, "crosshair_dot", 1, 1);
-               me.TD(me, 1, 0.5, e = makeXonoticTextLabel(0, _("Alpha:")));
-               me.TD(me, 1, 0.9, e = makeXonoticSlider(0.10, 1, 0.1, "crosshair_dot_alpha"));
-                       setDependent(e, "crosshair_dot", 1, 1);
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Other crosshair settings"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.crosshairDialog;
+               setDependent(e, "crosshair_enabled", 1, 2);
+               // TODO: show status of crosshair dot and hittest and pickups and such here with text
+       me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Hit test:")));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "0",    ZCTX(_("HTST^None"))));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1",    _("TrueAim")));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(5, "crosshair_hittest", "1.25", _("Enemies")));
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Model settings"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.modelDialog;
+               // TODO: show csqc model settings like forcemyplayer and deglowing/ghosting bodies with text here
+       me.TR(me);
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("View settings"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.viewDialog;
+               // TODO: show fov and other settings with text here
        me.TR(me);
-               me.TDempty(me, 0.4);
-               me.TD(me, 1, 2.2, e = makeXonoticButton(_("Waypoints setup..."), '0 0 0'));
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Weapon settings"), '0 0 0'));
                        e.onClick = DialogOpenButton_Click;
-                       e.onClickEntity = main.waypointDialog;
-       me.TR(me);
-               me.TDempty(me, 0.4);
-               me.TD(me, 1, 2.2, e = makeXonoticButton(_("Enter HUD editor"), '0 0 0'));
-                       e.onClick = HUDSetup_Join_Click;
-                       e.onClickEntity = me;
-       #ifdef ALLOW_FORCEMODELS
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Force models:")));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, string_null, string_null, ZCTX(_("MDL^None"))));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodelsfromxonotic", string_null, ZCTX(_("MDL^Custom"))));
-               me.TD(me, 1, 2/3, e = makeXonoticRadioButton(6, "cl_forceplayermodels", string_null, ZCTX(_("MDL^All"))));
-       #endif
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_gentle", _("Disable gore effects")));
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gibs:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_nogibs"));
-                       e.addValue(e, ZCTX(_("GIBS^None")), "1");
-                       e.addValue(e, ZCTX(_("GIBS^Few")), "0.75");
-                       e.addValue(e, ZCTX(_("GIBS^Many")), "0.5");
-                       e.addValue(e, ZCTX(_("GIBS^Lots")), "0");
-                       e.configureXonoticTextSliderValues(e);
-                       setDependent(e, "cl_gentle", 0, 0);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Damage splash:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.05, "hud_damage"));
+                       e.onClickEntity = main.weaponsDialog;
+               // I don't really think this is useful as is, and especially it doesn't look very clean...
+               // In the future, if ALL of these buttons had some information, then it would be justified/clean
+               //me.TD(me, 1, 1, e0 = makeXonoticTextLabel(0, string_null)); 
+               //      e0.textEntity = main.weaponsDialog;
+               //      e0.allowCut = 1;
+       me.TR(me);
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("HUD settings"), '0 0 0'));
+                       e.onClick = DialogOpenButton_Click;
+                       e.onClickEntity = main.hudDialog;
+               // TODO: show hud config name with text here 
 
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "color -1 -1;name \"$_cl_name\";cl_cmd sendcvar cl_weaponpriority;sendcvar cl_zoomfactor;sendcvar cl_zoomspeed;sendcvar cl_autoswitch;sendcvar cl_forceplayermodelsfromxonotic;sendcvar cl_forceplayermodels;playermodel $_cl_playermodel;playerskin $_cl_playerskin", COMMANDBUTTON_APPLY));
 }
-void HUDSetup_Join_Click(entity me, entity btn)
-{
-       if(! (gamestatus & (GAME_CONNECTED | GAME_ISSERVER)))
-       {
-               localcmd("map hudsetup/hudsetup", "\n");
-       }
-       else
-               localcmd("togglemenu 0\n");
-       localcmd("_hud_configure 1", "\n");
-}
 #endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_crosshair.c
new file mode 100644 (file)
index 0000000..7ca7d96
--- /dev/null
@@ -0,0 +1,34 @@
+#ifdef INTERFACE
+CLASS(XonoticCrosshairDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticCrosshairDialog, toString, string(entity))
+       METHOD(XonoticCrosshairDialog, fill, void(entity))
+       METHOD(XonoticCrosshairDialog, showNotify, void(entity))
+       ATTRIB(XonoticCrosshairDialog, title, string, _("Crosshair settings"))
+       ATTRIB(XonoticCrosshairDialog, color, vector, SKINCOLOR_DIALOG_CROSSHAIR)
+       ATTRIB(XonoticCrosshairDialog, intendedWidth, float, 0.5)
+       ATTRIB(XonoticCrosshairDialog, rows, float, 12)
+       ATTRIB(XonoticCrosshairDialog, columns, float, 3)
+ENDCLASS(XonoticCrosshairDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void XonoticCrosshairDialog_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+string XonoticCrosshairDialog_toString(entity me)
+{
+       return "hi"; // TODO: show status of crosshair dot and hittest and pickups and such here with text
+}
+void XonoticCrosshairDialog_fill(entity me)
+{
+       entity e;
+       
+
+               
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hud.c
new file mode 100644 (file)
index 0000000..d638edb
--- /dev/null
@@ -0,0 +1,51 @@
+#ifdef INTERFACE
+CLASS(XonoticHUDDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticHUDDialog, toString, string(entity))
+       METHOD(XonoticHUDDialog, fill, void(entity))
+       METHOD(XonoticHUDDialog, showNotify, void(entity))
+       ATTRIB(XonoticHUDDialog, title, string, _("HUD settings"))
+       ATTRIB(XonoticHUDDialog, color, vector, SKINCOLOR_DIALOG_HUD)
+       ATTRIB(XonoticHUDDialog, intendedWidth, float, 0.5)
+       ATTRIB(XonoticHUDDialog, rows, float, 12)
+       ATTRIB(XonoticHUDDialog, columns, float, 3)
+ENDCLASS(XonoticHUDDialog)
+void HUDSetup_Start(entity me, entity btn);
+#endif
+
+#ifdef IMPLEMENTATION
+void HUDSetup_Check_Gamestatus(entity me, entity btn)
+{
+       if not(gamestatus & (GAME_CONNECTED | GAME_ISSERVER)) // we're not in a match, ask the player if they want to start one anyway
+       {
+               DialogOpenButton_Click(me, main.hudconfirmDialog);
+       }
+       else // already in a match, lets just cut to the point and open up the hud editor directly
+       {
+               HUDSetup_Start(me, btn);
+       }
+}
+void XonoticHUDDialog_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+string XonoticHUDDialog_toString(entity me)
+{
+       return "hi"; // TODO: show hud config name with text here 
+}
+void XonoticHUDDialog_fill(entity me)
+{
+       entity e;
+       
+       me.TR(me);
+               me.TDempty(me, 0.5);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Enter HUD editor"), '0 0 0'));
+                       e.onClick = HUDSetup_Check_Gamestatus;
+                       e.onClickEntity = me;
+               // TODO: show hud config name with text here 
+               
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
\ No newline at end of file
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_hudconfirm.c
new file mode 100644 (file)
index 0000000..433c99b
--- /dev/null
@@ -0,0 +1,40 @@
+#ifdef INTERFACE
+CLASS(XonoticHUDConfirmDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticHUDConfirmDialog, fill, void(entity))
+       ATTRIB(XonoticHUDConfirmDialog, title, string, _("Enter HUD editor"))
+       ATTRIB(XonoticHUDConfirmDialog, color, vector, SKINCOLOR_DIALOG_HUDCONFIRM)
+       ATTRIB(XonoticHUDConfirmDialog, intendedWidth, float, 0.5)
+       ATTRIB(XonoticHUDConfirmDialog, rows, float, 4)
+       ATTRIB(XonoticHUDConfirmDialog, columns, float, 2)
+ENDCLASS(XonoticHUDConfirmDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void HUDSetup_Start(entity me, entity btn)
+{
+       if not(gamestatus & (GAME_CONNECTED | GAME_ISSERVER))
+               localcmd("map hudsetup/hudsetup", "\n");
+       else
+               localcmd("togglemenu 0\n");
+               
+       localcmd("_hud_configure 1", "\n");
+}
+
+void XonoticHUDConfirmDialog_fill(entity me)
+{
+       entity e;
+
+       me.TR(me);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("In order for the HUD editor to show, you must first be in game.")));
+       me.TR(me);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("Do you wish to start a local game to set up the HUD?")));
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Yes"), '1 0 0'));
+                       e.onClick = HUDSetup_Start;
+                       e.onClickEntity = me;
+               me.TD(me, 1, 1, e = makeXonoticButton(_("No"), '0 1 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_model.c
new file mode 100644 (file)
index 0000000..71c7134
--- /dev/null
@@ -0,0 +1,34 @@
+#ifdef INTERFACE
+CLASS(XonoticModelDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticModelDialog, toString, string(entity))
+       METHOD(XonoticModelDialog, fill, void(entity))
+       METHOD(XonoticModelDialog, showNotify, void(entity))
+       ATTRIB(XonoticModelDialog, title, string, _("Model settings"))
+       ATTRIB(XonoticModelDialog, color, vector, SKINCOLOR_DIALOG_MODEL)
+       ATTRIB(XonoticModelDialog, intendedWidth, float, 0.5)
+       ATTRIB(XonoticModelDialog, rows, float, 12)
+       ATTRIB(XonoticModelDialog, columns, float, 3)
+ENDCLASS(XonoticModelDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void XonoticModelDialog_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+string XonoticModelDialog_toString(entity me)
+{
+       return "hi"; // TODO: show csqc model settings like forcemyplayer and deglowing/ghosting bodies with text here
+}
+void XonoticModelDialog_fill(entity me)
+{
+       entity e;
+       
+
+               
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_view.c
new file mode 100644 (file)
index 0000000..a5a4936
--- /dev/null
@@ -0,0 +1,118 @@
+#ifdef INTERFACE
+CLASS(XonoticViewDialog) EXTENDS(XonoticDialog)
+       METHOD(XonoticViewDialog, toString, string(entity))
+       METHOD(XonoticViewDialog, fill, void(entity))
+       METHOD(XonoticViewDialog, showNotify, void(entity))
+       ATTRIB(XonoticViewDialog, title, string, _("View settings"))
+       ATTRIB(XonoticViewDialog, color, vector, SKINCOLOR_DIALOG_VIEW)
+       ATTRIB(XonoticViewDialog, intendedWidth, float, 0.9)
+       ATTRIB(XonoticViewDialog, rows, float, 12)
+       ATTRIB(XonoticViewDialog, columns, float, 6.2) // added extra .2 for center space 
+ENDCLASS(XonoticViewDialog)
+#endif
+
+#ifdef IMPLEMENTATION
+void XonoticViewDialog_showNotify(entity me)
+{
+       loadAllCvars(me);
+}
+string XonoticViewDialog_toString(entity me)
+{
+       return "hi"; // TODO: show fov and other settings with text here
+}
+void XonoticViewDialog_fill(entity me)
+{
+       entity e;
+       
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Field of view:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(60, 130, 5, "fov"));
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Zoom:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_reticle"));
+                       e.addValue(e, _("Fullscreen"), "0");
+                       e.addValue(e, _("With reticle"), "1");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Factor:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(2, 16, 0.5, "cl_zoomfactor"));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_zoomspeed"));
+                       e.addValue(e, "1", "1"); // Samual: for() loop doesn't work here, even though it would make sense.
+                       e.addValue(e, "2", "2");
+                       e.addValue(e, "3", "3");
+                       e.addValue(e, "4", "4");
+                       e.addValue(e, "5", "5");
+                       e.addValue(e, "6", "6");
+                       e.addValue(e, "7", "7");
+                       e.addValue(e, "8", "8");
+                       e.addValue(e, _("Instant"), "-1");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Sensitivity:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(0, 1, 0.1, "cl_zoomsensitivity"));
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Velocity zoom:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_velocityzoom_type"));
+                       e.addValue(e, _("Disabled"), "0");
+                       e.addValue(e, _("Forward only"), "3");
+                       e.addValue(e, _("All directions"), "1");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(-1, 1, 0.2, "cl_velocityzoom"));
+               setDependent(e, "cl_velocityzoom_type", 1, 3);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_clippedspectating", _("Allow passing through walls while spectating")));
+       
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "chase_active", "0", _("1st person perspective")));
+               makeMulti(e, "crosshair_hittest_showimpact");
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.05, 0, "cl_bobfall", _("Smooth the view when landing from a jump")));
+               setDependent(e, "chase_active", -1, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.05, 0, "cl_smoothviewheight", _("Smooth the view while crouching")));
+               setDependent(e, "chase_active", -1, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(1, 0, "v_idlescale", _("View waving while idle")));
+               setDependent(e, "chase_active", -1, 0);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBoxEx(0.65, 0, "cl_bobcycle", _("View bobbing while walking around")));
+               makeMulti(e, "cl_bob2cycle");
+               setDependent(e, "chase_active", -1, 0);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "chase_active", "1", _("3rd person perspective")));
+               makeMulti(e, "crosshair_hittest_showimpact");
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Back distance")));
+               setDependent(e, "chase_active", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(10, 100, 1, "chase_back"));
+               setDependent(e, "chase_active", 1, 1);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Up distance")));
+               setDependent(e, "chase_active", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(10, 50, 1, "chase_up"));
+               setDependent(e, "chase_active", 1, 1);
+       me.TR(me);
+               
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
+                       e.onClick = Dialog_Close;
+                       e.onClickEntity = me;
+}
+#endif
diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c b/qcsrc/menu/xonotic/dialog_multiplayer_playersetup_waypoint.c
deleted file mode 100644 (file)
index 7ded2c5..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#ifdef INTERFACE
-CLASS(XonoticWaypointDialog) EXTENDS(XonoticDialog)
-       METHOD(XonoticWaypointDialog, fill, void(entity))
-       METHOD(XonoticWaypointDialog, showNotify, void(entity))
-       ATTRIB(XonoticWaypointDialog, title, string, _("Waypoints"))
-       ATTRIB(XonoticWaypointDialog, color, vector, SKINCOLOR_DIALOG_WAYPOINTS)
-       ATTRIB(XonoticWaypointDialog, intendedWidth, float, 0.5)
-       ATTRIB(XonoticWaypointDialog, rows, float, 5)
-       ATTRIB(XonoticWaypointDialog, columns, float, 3)
-ENDCLASS(XonoticWaypointDialog)
-#endif
-
-#ifdef IMPLEMENTATION
-void XonoticWaypointDialog_showNotify(entity me)
-{
-       loadAllCvars(me);
-}
-void XonoticWaypointDialog_fill(entity me)
-{
-       entity e;
-
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_hidewaypoints", _("Show base waypoints")));
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Waypoint scale:")));
-                       me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 1.5, 0.05, "g_waypointsprite_scale"));
-                               setDependent(e, "cl_hidewaypoints", 0, 0);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Waypoint alpha:")));
-                       me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 1, 0.05, "g_waypointsprite_alpha"));
-                               setDependent(e, "cl_hidewaypoints", 0, 0);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "hud_shownames", _("Show names above players")));
-       me.gotoRC(me, me.rows - 1, 0);
-               me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
-                       e.onClick = Dialog_Close;
-                       e.onClickEntity = me;
-}
-#endif
index 2c960d36886b12a2c717162fac022dd08a32859c..8edb1e074839a0a2fa887a1ca9cc1d65f616035f 100644 (file)
@@ -5,9 +5,9 @@ CLASS(XonoticWeaponsDialog) EXTENDS(XonoticDialog)
        METHOD(XonoticWeaponsDialog, showNotify, void(entity))
        ATTRIB(XonoticWeaponsDialog, title, string, _("Weapon settings"))
        ATTRIB(XonoticWeaponsDialog, color, vector, SKINCOLOR_DIALOG_WEAPONS)
-       ATTRIB(XonoticWeaponsDialog, intendedWidth, float, 0.4)
-       ATTRIB(XonoticWeaponsDialog, rows, float, 18)
-       ATTRIB(XonoticWeaponsDialog, columns, float, 3)
+       ATTRIB(XonoticWeaponsDialog, intendedWidth, float, 0.7)
+       ATTRIB(XonoticWeaponsDialog, rows, float, 12)
+       ATTRIB(XonoticWeaponsDialog, columns, float, 5.2)
        ATTRIB(XonoticWeaponsDialog, weaponsList, entity, NULL)
 ENDCLASS(XonoticWeaponsDialog)
 #endif
@@ -26,21 +26,22 @@ void XonoticWeaponsDialog_fill(entity me)
        entity e;
 
        me.TR(me);
-               me.TD(me, 1, 3, makeXonoticTextLabel(0, _("Weapon priority list:")));
+               me.TD(me, 1, 2, makeXonoticTextLabel(0, _("Weapon priority list:")));
        me.TR(me);
-               me.TD(me, 10, 3, e = me.weaponsList = makeXonoticWeaponsList());
-       me.gotoRC(me, 11, 0);
-               me.TDempty(me, 0.5);
+               me.TD(me, 8, 2, e = me.weaponsList = makeXonoticWeaponsList());
+       me.gotoRC(me, 9, 0);
                me.TD(me, 1, 1, e = makeXonoticButton(_("Up"), '0 0 0'));
                        e.onClick = WeaponsList_MoveUp_Click;
                        e.onClickEntity = me.weaponsList;
                me.TD(me, 1, 1, e = makeXonoticButton(_("Down"), '0 0 0'));
                        e.onClick = WeaponsList_MoveDown_Click;
                        e.onClickEntity = me.weaponsList;
-       me.TR(me);
+                       
+       me.gotoRC(me, 0, 2.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_weaponpriority_useforcycling", _("Use priority list for weapon cycling")));
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_autoswitch", _("Auto switch weapons on pickup")));
+       me.TR(me);
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_drawviewmodel", _("Draw 1st person weapon model")));
        me.TR(me);
@@ -52,8 +53,24 @@ void XonoticWeaponsDialog_fill(entity me)
                me.TD(me, 1, 1.0, e = makeXonoticRadioButton(1, "cl_gunalign", "3", _("Right align")));
                        setDependent(e, "r_drawviewmodel", 1, 1);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_flipped", _("Flip view horizontally")));
        me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_followmodel", _("Gun model swaying")));
+               makeMulti(e, "cl_leanmodel");
+               setDependent(e, "r_drawviewmodel", 1, 1);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_bobmodel", _("Gun model bobbing")));
+               setDependent(e, "r_drawviewmodel", 1, 1);
+       me.TR(me);
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Scale")));
+               setDependent(e, "r_drawviewmodel", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.1, 2, 0.1, "cl_viewmodel_scale"));
+               setDependent(e, "r_drawviewmodel", 1, 1);
+                       
+       me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0'));
                        e.onClick = Dialog_Close;
                        e.onClickEntity = me;
index 1f084a16cc0e9600cc4743626a9b8789a8c4d157..930fa7df9789c02dcabc26860d90f540e63b89b0 100644 (file)
@@ -19,7 +19,7 @@ void XonoticSettingsDialog_fill(entity me)
                me.TD(me, 1, 1, mc.makeTabButton(mc, _("Video"),   makeXonoticVideoSettingsTab()));
                me.TD(me, 1, 1, mc.makeTabButton(mc, _("Effects"), makeXonoticEffectsSettingsTab()));
                me.TD(me, 1, 1, mc.makeTabButton(mc, _("Audio"),   makeXonoticAudioSettingsTab()));
-               me.TD(me, 1, 1, mc.makeTabButton(mc, _("Network"), makeXonoticNetworkSettingsTab()));
+               me.TD(me, 1, 1, mc.makeTabButton(mc, _("User"),    makeXonoticUserSettingsTab()));
                me.TD(me, 1, 1, mc.makeTabButton(mc, _("Misc"),    makeXonoticMiscSettingsTab()));
        me.TR(me);
        me.TR(me);
index bf3406142c4c91f188a09f2c98e66267adfcdb80..c2b841f11e97e215de8bc42697f78ccb82cec1e0 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticAudioSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticAudioSettingsTab, title, string, _("Audio"))
        ATTRIB(XonoticAudioSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticAudioSettingsTab, rows, float, 17)
-       ATTRIB(XonoticAudioSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticAudioSettingsTab, columns, float, 6.2) // added extra .2 for center space 
 ENDCLASS(XonoticAudioSettingsTab)
 entity makeXonoticAudioSettingsTab();
 #endif
@@ -25,12 +25,16 @@ void XonoticAudioSettingsTab_fill(entity me)
        me.TR(me);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "mastervolume");
                me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Master:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
        me.TR(me);
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "bgmvolume");
                makeMulti(s, "snd_channel8volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Music:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -39,6 +43,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_staticvolume");
                makeMulti(s, "snd_channel9volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, ZCTX(_("VOL^Ambient:"))));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -46,6 +52,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel0volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Info:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -53,6 +61,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel3volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Items:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -60,6 +70,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel6volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Pain:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -67,6 +79,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel7volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Player:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -74,6 +88,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel4volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Shots:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -81,6 +97,8 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TDempty(me, 0.2);
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel2volume");
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Voice:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
@@ -89,12 +107,16 @@ void XonoticAudioSettingsTab_fill(entity me)
                s = makeXonoticDecibelsSlider(-20, 0, 0.5, "snd_channel1volume");
                makeMulti(s, "snd_channel5volume"); // @!#%'n Tuba
                me.TD(me, 1, 0.8, e = makeXonoticSliderCheckBox(-1000000, 1, s, _("Weapons:")));
+               if(s.value != e.savedValue)
+                       e.savedValue = 0; // default
                me.TD(me, 1, 2, s);
                setDependentStringNotEqual(e, "mastervolume", "0");
                setDependentStringNotEqual(s, "mastervolume", "0");
        me.TR(me);
-
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "menu_snd_attenuation_method", _("New style sound attenuation")));
+       
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Frequency:")));
                me.TD(me, 1, 2, e = makeXonoticTextSlider("snd_speed"));
                        e.addValue(e, _("8 kHz"), "8000");
@@ -119,17 +141,12 @@ void XonoticAudioSettingsTab_fill(entity me)
                        e.addValue(e, _("7.1"), "8");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_swapstereo", _("Swap Stereo")));
+               me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "snd_swapstereo", _("Swap Stereo")));
                setDependent(e, "snd_channels", 1.5, 0.5);
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "snd_spatialization_control", _("Headphone friendly mode")));
+               me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "snd_spatialization_control", _("Headphone friendly mode")));
                setDependent(e, "snd_channels", 1.5, 0.5);
        me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "menu_snd_attenuation_method", _("New style sound attenuation")));
-       me.TR(me);
+       /*me.TR(me); // Samual: I REALLY don't think these are relevant to anyone, and just clutter up the menu pointlessly. The defaults are fine.
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Spatial voices:")));
                me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "0", ZCTX(_("VOCS^None"))));
                me.TD(me, 1, 2/3, e = makeXonoticRadioButton(1, "cl_voice_directional", "2", ZCTX(_("VOCS^Taunts"))));
@@ -146,6 +163,23 @@ void XonoticAudioSettingsTab_fill(entity me)
                        e.addValue(e, ZCTX(_("RNG^Full")), "0.015625");
                        e.configureXonoticTextSliderValues(e);
                setDependent(e, "cl_voice_directional", 0.5, -0.5);
+       me.TR(me);*/
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_hitsound", _("Hit indication sound")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_chatsound", _("Chat message sound")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "menu_sounds", _("Menu sounds")));
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Time announcer:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_announcer_maptime"));
+                       e.addValue(e, ZCTX(_("WRN^Disabled")), "0");
+                       e.addValue(e, _("1 minute"), "1");
+                       e.addValue(e, _("5 minutes"), "2");
+                       e.addValue(e, ZCTX(_("WRN^Both")), "3");
+                       e.configureXonoticTextSliderValues(e);
+       me.TR(me);
        me.TR(me);
                sl = makeXonoticSlider(0.15, 1, 0.05, "cl_autotaunt");
                        sl.valueDisplayMultiplier = 100;
@@ -159,17 +193,9 @@ void XonoticAudioSettingsTab_fill(entity me)
                me.TD(me, 1, 2, sl);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Time warning:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_sound_maptime_warning"));
-                       e.addValue(e, ZCTX(_("WRN^None")), "0");
-                       e.addValue(e, _("1 minute"), "1");
-                       e.addValue(e, _("5 minutes"), "2");
-                       e.addValue(e, ZCTX(_("WRN^Both")), "3");
-                       e.configureXonoticTextSliderValues(e);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_hitsound", _("Hit indicator")));
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "menu_sounds", _("Menu sounds")));
+               if(cvar("developer"))
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "showsound", _("Debug info about sounds")));
+       
 
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "snd_restart; snd_attenuation_method_$menu_snd_attenuation_method; sendcvar cl_hitsound; sendcvar cl_autotaunt; sendcvar cl_voice_directional; sendcvar cl_voice_directional_taunt_attenuation", COMMANDBUTTON_APPLY));
index 385252bcb106f9d1c432212b8042a8792ccfa8c6..bfa100017633c844ac87bda0b385f6a8fb321aaa 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticEffectsSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticEffectsSettingsTab, title, string, _("Effects"))
        ATTRIB(XonoticEffectsSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticEffectsSettingsTab, rows, float, 17)
-       ATTRIB(XonoticEffectsSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticEffectsSettingsTab, columns, float, 6.2) // added extra .2 for center space 
 ENDCLASS(XonoticEffectsSettingsTab)
 entity makeXonoticEffectsSettingsTab();
 float updateCompression();
@@ -38,18 +38,18 @@ void XonoticEffectsSettingsTab_fill(entity me)
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Quality preset:")));
                n = 5 + 2 * !!cvar("developer");
                if(cvar("developer"))
-                       me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^OMG!")), '1 0 1', "exec effects-omg.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Low")), '0 0 0', "exec effects-low.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Medium")), '0 0 0', "exec effects-med.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Normal")), '0 0 0', "exec effects-normal.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^High")), '0 0 0', "exec effects-high.cfg", 0));
-               me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultra")), '0 0 0', "exec effects-ultra.cfg", 0));
+                       me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^OMG!")), '1 0 1', "exec effects-omg.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Low")), '0 0 0', "exec effects-low.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Medium")), '0 0 0', "exec effects-med.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Normal")), '0 0 0', "exec effects-normal.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^High")), '0 0 0', "exec effects-high.cfg", 0));
+               me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultra")), '0 0 0', "exec effects-ultra.cfg", 0));
                if(cvar("developer"))
-                       me.TD(me, 1, 5.5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultimate")), '0 0 0', "exec effects-ultimate.cfg", 0));
+                       me.TD(me, 1, 5 / n, e = makeXonoticCommandButton(ZCTX(_("PRE^Ultimate")), '0.5 0 0', "exec effects-ultimate.cfg", 0));
 
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Geometry detail:")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Geometry detail:")));
                me.TD(me, 1, 2, e = makeXonoticTextSlider("r_subdivisions_tolerance"));
                        e.addValue(e, ZCTX(_("DET^Lowest")), "16");
                        e.addValue(e, ZCTX(_("DET^Low")), "8");
@@ -59,18 +59,7 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.addValue(e, ZCTX(_("DET^Insane")), "1");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Antialiasing:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_samples"));
-                       e.addValue(e, ZCTX(_("AA^Disabled")), "1");
-                       e.addValue(e, _("2x"), "2");
-                       e.addValue(e, _("4x"), "4");
-                       e.configureXonoticTextSliderValues(e);
-                       setDependent(e, "r_viewfbo", 0, 0);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "r_viewfbo", _("High-quality frame buffer")));
-                       setDependent(e, "vid_samples", 1, 1);
-       me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Texture resolution:")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Texture resolution:")));
                me.TD(me, 1, 2, e = makeXonoticPicmipSlider());
                        if(cvar("developer"))
                                e.addValue(e, ZCTX(_("RES^Leet")), "1337");
@@ -81,7 +70,7 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.addValue(e, ZCTX(_("RES^Best")), "-2");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TDempty(me, 0.2);
+       me.TR(me);
                {
                        // detect texture compression method
                        float f;
@@ -91,75 +80,52 @@ void XonoticEffectsSettingsTab_fill(entity me)
                                case 0:
                                        break;
                                case 1:
-                                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression")));
+                                       me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression")));
                                        break;
                                case 2:
-                                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression")));
+                                       me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "r_texture_dds_load", _("Avoid lossy texture compression")));
                                                makeMulti(e, "gl_texturecompression");
                                        break;
                        }
                }
        me.TR(me);
-       me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Anisotropy:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy"));
-                       e.addValue(e, ZCTX(_("ANISO^Disabled")), "1");
-                       e.addValue(e, _("2x"), "2");
-                       e.addValue(e, _("4x"), "4");
-                       e.addValue(e, _("8x"), "8");
-                       e.addValue(e, _("16x"), "16");
-                       e.configureXonoticTextSliderValues(e);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", _("Use lightmaps")));
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", _("Deluxe mapping")));
+                       setDependentAND(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss")));
+                       setDependentAND3(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0, "r_glsl_deluxemapping", 1, 1);
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Particle quality:")));
-               me.TD(me, 1, 1.9, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality"));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Particles quality:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 1.0, 0.1, "cl_particles_quality"));
        me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticTextLabel(0, _("Particle distance:")));
-               me.TD(me, 1, 1.9, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance"));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Particles distance:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance"));
        me.TR(me);
        me.TR(me);
-               me.TD(me, 1, 1.5, e = makeXonoticCheckBox(0, "cl_decals", _("Decals")));
-               me.TD(me, 1, 1.5, e = makeXonoticCheckBox(0, "cl_decals_models", _("Decals on models")));
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_decals", _("Decals")));
+               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_decals_models", _("Decals on models")));
                        setDependent(e, "cl_decals", 1, 1);
        me.TR(me);
                me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, _("Distance:")));
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:")));
                        setDependent(e, "cl_decals", 1, 1);
-               me.TD(me, 1, 1.9, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
+               me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
                        setDependent(e, "cl_decals", 1, 1);
        me.TR(me);
                me.TDempty(me, 0.2);
-           me.TD(me, 1, 0.9, e = makeXonoticTextLabel(0, _("Time:")));
+           me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:")));
                setDependent(e, "cl_decals", 1, 1);
-           me.TD(me, 1, 1.9, e = makeXonoticSlider(1, 20, 1, "cl_decals_time"));
+           me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_time"));
                setDependent(e, "cl_decals", 1, 1);
 
-       me.gotoRC(me, 2, 3.5); me.setFirstColumn(me, me.currentColumn);
-       me.TD(me, 1, 1.2, e = makeXonoticCheckBox(1, "mod_q3bsp_nolightmaps", _("Use lightmaps")));
-       me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_deluxemapping", _("Deluxe mapping")));
-               setDependentAND(e, "vid_gl20", 1, 1, "mod_q3bsp_nolightmaps", 0, 0);
-       me.TD(me, 1, 0.6, e = makeXonoticCheckBox(0, "r_shadow_gloss", _("Gloss"))); // FIXME move this box elsewhere, it has nothing to do with Q3BSP lightmaps
-               setDependent(e, "vid_gl20", 1, 1);
-       me.TR(me);
-               me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", _("Offset mapping")));
-                       setDependent(e, "vid_gl20", 1, 1);
-               me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_reliefmapping", _("Relief mapping")));
-                       setDependentAND(e, "vid_gl20", 1, 1, "r_glsl_offsetmapping", 1, 1);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_water", _("Reflections:")));
-                       setDependent(e, "vid_gl20", 1, 1);
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("r_water_resolutionmultiplier"));
-                       e.addValue(e, _("Blurred"), "0.25");
-                       e.addValue(e, ZCTX(_("REFL^Good")), "0.5");
-                       e.addValue(e, _("Sharp"), "1");
-                       e.configureXonoticTextSliderValues(e);
-                       setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1);
-       me.TR(me);
-               if(cvar("developer"))
-                       me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(3, 0, "r_showsurfaces", _("Show surfaces")));
+       me.gotoRC(me, 2, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 1.2, e = makeXonoticCheckBox(0, "r_coronas", _("Coronas")));
+               me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", _("Use Occlusion Queries")));
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticRadioButton(1, string_null, string_null, _("No dynamic lighting")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, _("Flash blend approximation")));
+               me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, _("Fake corona lighting")));
        me.TR(me);
                me.TD(me, 1, 2, e = makeXonoticRadioButton(1, "r_shadow_realtime_dlight", string_null, _("Realtime dynamic lighting")));
                me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_realtime_dlight_shadows", _("Shadows")));
@@ -175,11 +141,26 @@ void XonoticEffectsSettingsTab_fill(entity me)
                me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_shadow_shadowmapping", _("Soft shadows")));
                        setDependentWeird(e, someShadowCvarIsEnabled);
        me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_coronas", _("Coronas")));
-               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_coronas_occlusionquery", _("Use Occlusion Queries")));
+               if(cvar("developer"))
+                       me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(3, 0, "r_showsurfaces", _("Show surfaces")));
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping", _("Offset mapping")));
+                       setDependent(e, "vid_gl20", 1, 1);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_reliefmapping", _("Relief mapping")));
+                       setDependentAND(e, "vid_gl20", 1, 1, "r_glsl_offsetmapping", 1, 1);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_glsl_offsetmapping_lod", _("LOD")));
+                       setDependentAND(e, "vid_gl20", 1, 1, "r_glsl_offsetmapping", 1, 1);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_bloom", _("High Dynamic Range (HDR)")));
-       
+               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "r_bloom", _("Bloom (High dynamic range/HDR)")));
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "r_water", _("Reflections:")));
+                       setDependent(e, "vid_gl20", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("r_water_resolutionmultiplier"));
+                       e.addValue(e, _("Blurred"), "0.25");
+                       e.addValue(e, ZCTX(_("REFL^Good")), "0.5");
+                       e.addValue(e, _("Sharp"), "1");
+                       e.configureXonoticTextSliderValues(e);
+                       setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1);
        me.TR(me);
                s = makeXonoticSlider(0.1, 1, 0.1, "r_motionblur");
                me.TD(me, 1, 1, e = makeXonoticSliderCheckBox(0, 1, s, _("Motion blur:")));
@@ -187,10 +168,11 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.savedValue = 0.5; // default
                me.TD(me, 1, 2, s);
        me.TR(me);
-               e = makeXonoticCheckBoxEx(0.5, 0, "hud_postprocessing_maxbluralpha", _("Blur and sharpen postprocessing"));
+               e = makeXonoticCheckBoxEx(0.5, 0, "hud_postprocessing_maxbluralpha", _("Extra postprocessing effects"));
                makeMulti(e, "hud_powerup");
                me.TD(me, 1, 2, e);
-       
+               setDependent(e, "vid_gl20", 1, 1);
+                       
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "vid_restart", COMMANDBUTTON_APPLY));
 }
index 440d00d8b1aefc0b07d7f555ec7c45a8abb4780e..6e15da11bc226d946089610549ceb632e33aaa92 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticInputSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticInputSettingsTab, title, string, _("Input"))
        ATTRIB(XonoticInputSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticInputSettingsTab, rows, float, 17)
-       ATTRIB(XonoticInputSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticInputSettingsTab, columns, float, 6.2) // added extra .2 for center space 
 ENDCLASS(XonoticInputSettingsTab)
 entity makeXonoticInputSettingsTab();
 #endif
@@ -25,51 +25,66 @@ void XonoticInputSettingsTab_fill(entity me)
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Key bindings:")));
        me.TR(me);
-               me.TD(me, me.rows - 4, 3.3, kb = makeXonoticKeyBinder());
+               me.TD(me, me.rows - 4, 3, kb = makeXonoticKeyBinder());
        me.gotoRC(me, me.rows - 3, 0);
-       me.TR(me);
-               me.TD(me, 1, 1.1, e = makeXonoticButton(_("Change key..."), '0 0 0'));
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Change key..."), '0 0 0'));
                        e.onClick = KeyBinder_Bind_Change;
                        e.onClickEntity = kb;
                        kb.keyGrabButton = e;
-               me.TD(me, 1, 1.1, e = makeXonoticButton(_("Edit..."), '0 0 0'));
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Edit..."), '0 0 0'));
                        e.onClick = KeyBinder_Bind_Edit;
                        e.onClickEntity = kb;
                        kb.userbindEditButton = e;
                        kb.userbindEditDialog = main.userbindEditDialog;
                        main.userbindEditDialog.keybindBox = kb;
-               me.TD(me, 1, 1.1, e = makeXonoticButton(_("Clear"), '0 0 0'));
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Clear"), '0 0 0'));
                        e.onClick = KeyBinder_Bind_Clear;
                        e.onClickEntity = kb;
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Sensitivity:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(1, 32, 0.2, "sensitivity"));
-       me.TR(me);
-               if(cvar("menu_mouse_absolute") == 0) // TODO remove this entirely later
-               {
-                       me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("UI mouse speed:")));
-                       me.TD(me, 1, 2, e = makeXonoticSlider(0.2, 4.0, 0.1, "menu_mouse_speed"));
-               }
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", _("Pressing \"enter console\" key also closes it")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "m_filter", _("Mouse filter")));
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_movement_track_canjump", _("Automatically repeat jumping if holding jump")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(1.022, "m_pitch", _("Invert mouse")));
        me.TR(me);
                if(cvar_type("joy_enable") & CVAR_TYPEFLAG_ENGINE)
                        me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joy_enable", _("Use joystick input")));
                else if(cvar_type("joystick") & CVAR_TYPEFLAG_ENGINE)
                        me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "joystick", _("Use joystick input")));
+               else
+               {
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "", _("Use joystick input")));
+                       e.disabled = 1; // the option is never available in this case, just there for show
+               }
        me.TR(me);
-               if(cvar_type("vid_dgamouse") & CVAR_TYPEFLAG_ENGINE)
-                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_dgamouse", _("Turn off OS mouse acceleration")));
-               else if(cvar_type("apple_mouse_noaccel") & CVAR_TYPEFLAG_ENGINE)
-                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", _("Turn off OS mouse acceleration")));
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "con_closeontoggleconsole", _("\"enter console\" also closes")));
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Mouse:")));
        me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Sensitivity:")));
+               me.TD(me, 1, 2, e = makeXonoticSlider(1, 32, 0.2, "sensitivity"));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "m_filter", _("Smooth aiming")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(1.022, "m_pitch", _("Invert aiming")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               if(cvar_type("vid_dgamouse") & CVAR_TYPEFLAG_ENGINE)
+                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "vid_dgamouse", _("Disable system mouse acceleration")));
+               else if(cvar_type("apple_mouse_noaccel") & CVAR_TYPEFLAG_ENGINE)
+                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "apple_mouse_noaccel", _("Disable system mouse acceleration")));
+               else
+               {
+                       me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "", _("Disable system mouse acceleration")));
+                       e.disabled = 1; // the option is never available in this case, just there for show
+               }
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_movement_track_canjump", _("Holding jump key keeps jumping")));
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "m_accelerate", _("Enable built in mouse acceleration")));
+               
+       
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "sendcvar cl_movement_track_canjump", COMMANDBUTTON_APPLY));
 }
index 61295359aa67fe2e4ddf71a5783b3ac112d96f68..6bc0c350aa25bd12e8eade847185d34e6ea867ea 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticMiscSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticMiscSettingsTab, title, string, _("Misc"))
        ATTRIB(XonoticMiscSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticMiscSettingsTab, rows, float, 17)
-       ATTRIB(XonoticMiscSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticMiscSettingsTab, columns, float, 6.2)
 ENDCLASS(XonoticMiscSettingsTab)
 entity makeXonoticMiscSettingsTab();
 #endif
@@ -31,7 +31,7 @@ void XonoticMiscSettingsTab_fill(entity me)
                        e.onClick = SetSkin_Click;
                        e.onClickEntity = sk;
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Text language:")));
        me.TR(me);
                me.TD(me, 3, 3, sk = makeXonoticLanguageList());
@@ -68,5 +68,11 @@ void XonoticMiscSettingsTab_fill(entity me)
                me.TD(me, 1, 2, e = makeXonoticButton(_("Advanced settings..."), '0 0 0'));
                        e.onClick = DialogOpenButton_Click;
                        e.onClickEntity = main.cvarsDialog;
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_movement", _("Client-side movement prediction")));
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_movement_errorcompensation", _("Compensate for prediction errors")));
+               setDependent(e, "cl_movement", 1, 1);
 }
 #endif
diff --git a/qcsrc/menu/xonotic/dialog_settings_network.c b/qcsrc/menu/xonotic/dialog_settings_network.c
deleted file mode 100644 (file)
index 9f489a8..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-#ifdef INTERFACE
-CLASS(XonoticNetworkSettingsTab) EXTENDS(XonoticTab)
-       METHOD(XonoticNetworkSettingsTab, fill, void(entity))
-       ATTRIB(XonoticNetworkSettingsTab, title, string, _("Network"))
-       ATTRIB(XonoticNetworkSettingsTab, intendedWidth, float, 0.9)
-       ATTRIB(XonoticNetworkSettingsTab, rows, float, 17)
-       ATTRIB(XonoticNetworkSettingsTab, columns, float, 6.5)
-ENDCLASS(XonoticNetworkSettingsTab)
-entity makeXonoticNetworkSettingsTab();
-#endif
-
-#ifdef IMPLEMENTATION
-entity makeXonoticNetworkSettingsTab()
-{
-       entity me;
-       me = spawnXonoticNetworkSettingsTab();
-       me.configureDialog(me);
-       return me;
-}
-
-void XonoticNetworkSettingsTab_fill(entity me)
-{
-       entity e;
-
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_movement", _("Client-side movement prediction")));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "cl_movement_errorcompensation", _("Movement error compensation")));
-                       setDependent(e, "cl_movement", 1, 1);
-       me.TR(me);
-               //me.TD(me, 1, 3, e = makeXonoticCheckBox(1, "cl_nolerp", _("Network update smoothing")));
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "shownetgraph", _("Show netgraph")));
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Network speed:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("_cl_rate"));
-                       e.addValue(e, _("56k"), "4000");
-                       e.addValue(e, _("ISDN"), "7000");
-                       e.addValue(e, _("Slow ADSL"), "15000");
-                       e.addValue(e, _("Fast ADSL"), "20000");
-                       e.addValue(e, _("Broadband"), "66666");
-                       e.configureXonoticTextSliderValues(e);
-    me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Input packets/s:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(20, 100, 1, "cl_netfps"));
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("HTTP downloads:")));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Downloads:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(1, 5, 1, "cl_curl_maxdownloads"));
-       me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Speed (kB/s):")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(10, 1500, 10, "cl_curl_maxspeed"));
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Client UDP port:")));
-               me.TD(me, 1, 0.64, e = makeXonoticInputBox(0, "cl_port"));
-}
-#endif
diff --git a/qcsrc/menu/xonotic/dialog_settings_user.c b/qcsrc/menu/xonotic/dialog_settings_user.c
new file mode 100644 (file)
index 0000000..e482b50
--- /dev/null
@@ -0,0 +1,74 @@
+#ifdef INTERFACE
+CLASS(XonoticUserSettingsTab) EXTENDS(XonoticTab)
+       METHOD(XonoticUserSettingsTab, fill, void(entity))
+       ATTRIB(XonoticUserSettingsTab, title, string, _("User"))
+       ATTRIB(XonoticUserSettingsTab, intendedWidth, float, 0.9)
+       ATTRIB(XonoticUserSettingsTab, rows, float, 17)
+       ATTRIB(XonoticUserSettingsTab, columns, float, 5)
+ENDCLASS(XonoticUserSettingsTab)
+entity makeXonoticUserSettingsTab();
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeXonoticUserSettingsTab()
+{
+       entity me;
+       me = spawnXonoticUserSettingsTab();
+       me.configureDialog(me);
+       return me;
+}
+
+void XonoticUserSettingsTab_fill(entity me)
+{
+       entity e;
+       entity sk;
+
+       me.TR(me);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0, _("Menu skins:")));
+       me.TR(me);
+               me.TD(me, me.rows - 2, 2, sk = makeXonoticSkinList());
+       me.gotoRC(me, me.rows - 1, 0);
+               me.TD(me, 1, 2, e = makeXonoticButton(_("Apply immediately"), '0 0 0'));
+                       e.onClick = SetSkin_Click;
+                       e.onClickEntity = sk;
+
+       me.gotoRC(me, 0, 2.2); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Text language:")));
+       me.TR(me);
+               me.TD(me, 6, 1, sk = makeXonoticLanguageList());
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1, e = makeXonoticButton(_("Set language"), '0 0 0'));
+                       e.onClick = SetLanguage_Click;
+                       e.onClickEntity = sk;
+
+       me.gotoRC(me, 0, 3.3); me.setFirstColumn(me, me.currentColumn);
+               me.TD(me, 1, 1.5, e = makeXonoticTextLabel(0, _("Font:")));
+       me.TR(me);
+               me.TD(me, 2, 1.5, sk = makeXonoticLanguageList());
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 1.5, e = makeXonoticButton(_("Set font"), '0 0 0'));
+                       e.onClick = SetLanguage_Click;
+                       e.onClickEntity = sk;
+               
+       me.gotoRC(me, 7, 2.2); me.setFirstColumn(me, me.currentColumn);
+       if(cvar("developer"))
+       {
+               me.TR(me);
+               me.TR(me);
+                       me.TD(me, 1, 0.75, e = makeXonoticTextLabel(0, _("Menu tooltips:")));
+                       me.TD(me, 1, 0.75, e = makeXonoticRadioButton(2, "menu_tooltips", "0", _("Disabled")));
+                       me.TD(me, 1, 0.75, e = makeXonoticRadioButton(2, "menu_tooltips", "1", _("Standard")));
+                       me.TD(me, 1, 0.75, e = makeXonoticRadioButton(2, "menu_tooltips", "2", _("Advanced")));
+       }
+}
+#endif
index 474798c1785fdd98e601d941adaa8072034586ea..5d4133435b551b06096365af406fd1f36c16b35e 100644 (file)
@@ -4,7 +4,7 @@ CLASS(XonoticVideoSettingsTab) EXTENDS(XonoticTab)
        ATTRIB(XonoticVideoSettingsTab, title, string, _("Video"))
        ATTRIB(XonoticVideoSettingsTab, intendedWidth, float, 0.9)
        ATTRIB(XonoticVideoSettingsTab, rows, float, 17)
-       ATTRIB(XonoticVideoSettingsTab, columns, float, 6.5)
+       ATTRIB(XonoticVideoSettingsTab, columns, float, 6.2) // added extra .2 for center space 
        ATTRIB(XonoticVideoSettingsTab, name, string, "videosettings")
 ENDCLASS(XonoticVideoSettingsTab)
 entity makeXonoticVideoSettingsTab();
@@ -40,27 +40,37 @@ void XonoticVideoSettingsTab_fill(entity me)
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Color depth:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(16, 32, 16, "vid_bitsperpixel"));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_bitsperpixel"));
+                       e.addValue(e, _("16bit"), "16");
+                       e.addValue(e, _("32bit"), "32");
+                       e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticCheckBox(0, "vid_fullscreen", _("Full screen")));
                me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "vid_vsync", _("Vertical Synchronization")));
+               
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", _("Use OpenGL 2.0 shaders (GLSL)")));
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "v_glslgamma", _("Use GLSL to handle color control")));
-                       setDependent(e, "vid_gl20", 1, 1);
-       me.TR(me);
-       me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Vertex Buffer Objects (VBOs)")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Anisotropy:")));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("gl_texture_anisotropy"));
+                       e.addValue(e, ZCTX(_("ANISO^Disabled")), "1");
+                       e.addValue(e, _("2x"), "2");
+                       e.addValue(e, _("4x"), "4");
+                       e.addValue(e, _("8x"), "8");
+                       e.addValue(e, _("16x"), "16");
+                       e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", ZCTX(_("VBO^Off"))));
-               me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "3", _("Vertices, some Tris (compatible)")));
+               me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Antialiasing:")));
+                       setDependent(e, "r_viewfbo", 0, 0);
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("vid_samples"));
+                       e.addValue(e, ZCTX(_("AA^Disabled")), "1");
+                       e.addValue(e, _("2x"), "2");
+                       e.addValue(e, _("4x"), "4");
+                       e.configureXonoticTextSliderValues(e);
+                       setDependent(e, "r_viewfbo", 0, 0);
        me.TR(me);
-               me.TDempty(me, 0.2);
-               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "2", _("Vertices")));
-               me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "1", _("Vertices and Triangles")));
+               me.TD(me, 1, 3, e = makeXonoticCheckBoxEx(2, 0, "r_viewfbo", _("High-quality frame buffer")));
+                       setDependent(e, "vid_samples", 1, 1);
+               
        me.TR(me);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Depth first:")));
@@ -70,9 +80,17 @@ void XonoticVideoSettingsTab_fill(entity me)
                        e.addValue(e, ZCTX(_("DF^All")), "2");
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "gl_finish", _("Wait for GPU to finish each frame")));
+               me.TD(me, 1, 3, e = makeXonoticTextLabel(0, _("Vertex Buffer Objects (VBOs)")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "0", ZCTX(_("VBO^Off"))));
+               me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "3", _("Vertices, some Tris (compatible)")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.9, e = makeXonoticRadioButton(1, "gl_vbo", "2", _("Vertices")));
+               me.TD(me, 1, 1.9, e = makeXonoticRadioButton(1, "gl_vbo", "1", _("Vertices and Triangles")));
 
-       me.gotoRC(me, 0, 3.5); me.setFirstColumn(me, me.currentColumn);
+       me.gotoRC(me, 0, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Brightness:")));
                me.TD(me, 1, 2, e = makeXonoticSlider(0.0, 0.5, 0.02, "v_brightness"));
        me.TR(me);
@@ -80,19 +98,19 @@ void XonoticVideoSettingsTab_fill(entity me)
                me.TD(me, 1, 2, e = makeXonoticSlider(1.0, 3.0, 0.05, "v_contrast"));
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Gamma:")));
-                       setDependentAND(e, "r_glsl", 1, 1, "v_glslgamma", 1, 1);
+                       setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
                me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "v_gamma"));
-                       setDependentAND(e, "r_glsl", 1, 1, "v_glslgamma", 1, 1);
+                       setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Contrast boost:")));
-                       setDependentAND(e, "r_glsl", 1, 1, "v_glslgamma", 1, 1);
+                       setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
                me.TD(me, 1, 2, e = makeXonoticSlider(1.0, 5.0, 0.1, "v_contrastboost"));
-                       setDependentAND(e, "r_glsl", 1, 1, "v_glslgamma", 1, 1);
+                       setDependentAND(e, "vid_gl20", 1, 1, "v_glslgamma", 1, 1);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Saturation:")));
-                       setDependent(e, "r_glsl", 1, 1);
+                       setDependent(e, "vid_gl20", 1, 1);
                me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "r_glsl_saturation"));
-                       setDependent(e, "r_glsl", 1, 1);
+                       setDependent(e, "vid_gl20", 1, 1);
        me.TR(me);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, ZCTX(_("LIT^Ambient:"))));
@@ -100,6 +118,25 @@ void XonoticVideoSettingsTab_fill(entity me)
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Intensity:")));
                me.TD(me, 1, 2, e = makeXonoticSlider(0.5, 2.0, 0.05, "r_hdr_scenebrightness"));
+       me.TR(me);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "vid_gl20", _("Use OpenGL 2.0 shaders (GLSL)")));
+       me.TR(me);
+               me.TD(me, 1, 2.8, e = makeXonoticCheckBox(0, "v_glslgamma", _("Use GLSL to handle color control")));
+                       setDependent(e, "vid_gl20", 1, 1);
+       me.TR(me);
+               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "gl_finish", _("Wait for GPU to finish each frame")));
+       if(cvar("developer"))
+       {
+               me.TR(me);
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_psycho", _("Psycho coloring (easter egg)")));
+                               setDependent(e, "vid_gl20", 1, 1);
+               me.TR(me);
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "r_trippy", _("Trippy vertices (easter egg)")));
+                               setDependent(e, "vid_gl20", 1, 1);
+               me.TR(me);
+                       me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "v_flipped", _("Flip view horizontally")));
+       }
 
        me.gotoRC(me, me.rows - 1, 0);
                me.TD(me, 1, me.columns, makeXonoticCommandButton(_("Apply immediately"), '0 0 0', "menu_cmd sync; vid_restart; menu_restart; togglemenu; defer 0.1 \"menu_cmd videosettings\"", COMMANDBUTTON_APPLY));
index 6e1be0067a075606c74b13fba4aafabe8d63788b..351e3ac818f1e22bb7e6c5ec1f4212b746b520c8 100644 (file)
@@ -123,7 +123,7 @@ void XonoticSingleplayerDialog_fill(entity me)
                me.TD(me, 1, me.columns - 2, lblTitle = makeXonoticTextLabel(0.5, _("???")));
                me.TD(me, 1, 1, btnNext = makeXonoticButton(">>", '0 0 0'));
        me.TR(me);
-               me.TD(me, me.rows - 5, me.columns, me.campaignBox = makeXonoticCampaignList());
+               me.TD(me, me.rows - 6, me.columns, me.campaignBox = makeXonoticCampaignList());
                        btnPrev.onClick = MultiCampaign_Prev;
                        btnPrev.onClickEntity = me.campaignBox;
                        btnNext.onClick = MultiCampaign_Next;
@@ -133,7 +133,12 @@ void XonoticSingleplayerDialog_fill(entity me)
                        me.campaignBox.labelTitle = lblTitle;
                        me.campaignBox.campaignGo(me.campaignBox, 0);
 
-       me.gotoRC(me, me.rows - 1, 0);
+       me.gotoRC(me, me.rows - 2, 0);
+               me.TD(me, 1, 2, e = makeXonoticTextLabel(0.5, _("Campaign Difficulty:")));
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "g_campaign_skill", "-2", _("Easy")));
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "g_campaign_skill", "-1", _("Medium")));
+               me.TD(me, 1, 1, e = makeXonoticRadioButton(1, "g_campaign_skill", "0", _("Hard")));
+               me.TR(me);
                me.TD(me, 1, me.columns, e = makeXonoticButton(_("Start Singleplayer!"), '0 0 0'));
                        e.onClick = CampaignList_LoadMap;
                        e.onClickEntity = me.campaignBox;
index cbc239946a70112b25f1818756dbf930b4c63a2a..14d8bbb5c7625aeeccff3c62af17005ae151b00a 100644 (file)
@@ -1,7 +1,7 @@
 #ifdef INTERFACE
 CLASS(XonoticGametypeList) EXTENDS(XonoticListBox)
        METHOD(XonoticGametypeList, configureXonoticGametypeList, void(entity))
-       ATTRIB(XonoticGametypeList, rowsPerItem, float, 1)
+       ATTRIB(XonoticGametypeList, rowsPerItem, float, 2)
        METHOD(XonoticGametypeList, drawListBoxItem, void(entity, float, vector, float))
        METHOD(XonoticGametypeList, resizeNotify, void(entity, vector, vector, vector, vector))
        METHOD(XonoticGametypeList, setSelected, void(entity, float))
@@ -9,7 +9,10 @@ CLASS(XonoticGametypeList) EXTENDS(XonoticListBox)
        METHOD(XonoticGametypeList, saveCvars, void(entity))
 
        ATTRIB(XonoticGametypeList, realFontSize, vector, '0 0 0')
-       ATTRIB(XonoticGametypeList, realUpperMargin, float, 0)
+       ATTRIB(XonoticGametypeList, realUpperMargin1, float, 0)
+       ATTRIB(XonoticGametypeList, realUpperMargin2, float, 0)
+       ATTRIB(XonoticGametypeList, columnIconOrigin, float, 0)
+       ATTRIB(XonoticGametypeList, columnIconSize, float, 0)
        ATTRIB(XonoticGametypeList, columnNameOrigin, float, 0)
        ATTRIB(XonoticGametypeList, columnNameSize, float, 0)
 ENDCLASS(XonoticGametypeList)
@@ -70,16 +73,25 @@ void XonoticGametypeList_drawListBoxItem(entity me, float i, vector absSize, flo
        string s;
        if(isSelected)
                draw_Fill('0 0 0', '1 1 0', SKINCOLOR_LISTBOX_SELECTED, SKINALPHA_LISTBOX_SELECTED);
-       s = MapInfo_Type_ToText(GameType_GetID(i));
-       draw_Text(me.realUpperMargin * eY + (me.columnNameOrigin + (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize)) * 0.5) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
+
+       draw_Picture(me.columnIconOrigin * eX, GameType_GetIcon(i), me.columnIconSize * eX + eY, '1 1 1', SKINALPHA_LISTBOX_SELECTED);
+       s = GameType_GetName(i);
+       draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
+       s = GameType_GetTeams(i);
+       draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 1.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, '1 1 1', SKINALPHA_TEXT, 0);
 }
 void XonoticGametypeList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
 {
+       me.itemAbsSize = '0 0 0';
        SUPER(XonoticServerList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
-       me.realFontSize_y = me.fontSize / (absSize_y * me.itemHeight);
-       me.realFontSize_x = me.fontSize / (absSize_x * (1 - me.controlWidth));
-       me.realUpperMargin = 0.5 * (1 - me.realFontSize_y);
-       me.columnNameOrigin = 0;
-       me.columnNameSize = 1;
+       
+       me.realFontSize_y = me.fontSize / (me.itemAbsSize_y = (absSize_y * me.itemHeight));
+       me.realFontSize_x = me.fontSize / (me.itemAbsSize_x = (absSize_x * (1 - me.controlWidth)));
+       me.realUpperMargin1 = 0.5 * (1 - me.realFontSize_y);
+       me.realUpperMargin2 = me.realUpperMargin1 + me.realFontSize_y;
+       me.columnIconOrigin = 0;
+       me.columnIconSize = me.itemAbsSize_y / me.itemAbsSize_x;
+       me.columnNameOrigin = me.columnIconOrigin + me.columnIconSize;
+       me.columnNameSize = 1 - me.columnIconSize - 2 * me.realFontSize_x;
 }
 #endif
index 20627c7a579d25adee8be4192d7e00c8264640e5..2adb9343e491b7f70f1355ad14865463753b5857 100644 (file)
@@ -9,9 +9,13 @@ CLASS(MainWindow) EXTENDS(ModalController)
        ATTRIB(MainWindow, mapInfoDialog, entity, NULL)
        ATTRIB(MainWindow, userbindEditDialog, entity, NULL)
        ATTRIB(MainWindow, winnerDialog, entity, NULL)
-       ATTRIB(MainWindow, waypointDialog, entity, NULL)
        ATTRIB(MainWindow, serverInfoDialog, entity, NULL)
        ATTRIB(MainWindow, cvarsDialog, entity, NULL)
+       ATTRIB(MainWindow, viewDialog, entity, NULL)
+       ATTRIB(MainWindow, modelDialog, entity, NULL)
+       ATTRIB(MainWindow, crosshairDialog, entity, NULL)
+       ATTRIB(MainWindow, hudDialog, entity, NULL)
+       ATTRIB(MainWindow, hudconfirmDialog, entity, NULL)
        ATTRIB(MainWindow, mainNexposee, entity, NULL)
        ATTRIB(MainWindow, fadedAlpha, float, SKINALPHA_BEHIND)
        ATTRIB(MainWindow, dialogToShow, entity, NULL)
@@ -42,18 +46,13 @@ void MainWindow_configureMainWindow(entity me)
 {
        entity n, i;
 
+       // dialog run upon startup
        me.firstRunDialog = i = spawnXonoticFirstRunDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       i = spawnXonoticTeamSelectDialog();
-       i.configureDialog(i);
-       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       i = spawnXonoticSandboxToolsDialog();
-       i.configureDialog(i);
-       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
        
+       
+       // hud_configure dialogs
        i = spawnXonoticHUDExitDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
@@ -125,7 +124,35 @@ void MainWindow_configureMainWindow(entity me)
        i = spawnXonoticHUDCenterprintDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
+       
+       
+       // dialogs used by settings
+       me.userbindEditDialog = i = spawnXonoticUserbindEditDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       me.cvarsDialog = i = spawnXonoticCvarsDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       
+       // dialog used by singleplayer
+       me.winnerDialog = i = spawnXonoticWinnerDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       
+       // dialog used by multiplayer/join
+       me.serverInfoDialog = i = spawnXonoticServerInfoDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       
+       // dialogs used by multiplayer/create
+       me.mapInfoDialog = i = spawnXonoticMapInfoDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
        me.advancedDialog = i = spawnXonoticAdvancedDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
@@ -133,35 +160,47 @@ void MainWindow_configureMainWindow(entity me)
        me.mutatorsDialog = i = spawnXonoticMutatorsDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
 
-       me.mapInfoDialog = i = spawnXonoticMapInfoDialog();
+       // dialogs used by multiplayer/player setup
+       me.crosshairDialog = i = spawnXonoticCrosshairDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       me.userbindEditDialog = i = spawnXonoticUserbindEditDialog();
+       
+       me.hudDialog = i = spawnXonoticHUDDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
 
-       me.winnerDialog = i = spawnXonoticWinnerDialog();
+       me.hudconfirmDialog = i = spawnXonoticHUDConfirmDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       me.weaponsDialog = i = spawnXonoticWeaponsDialog();
+       
+       me.modelDialog = i = spawnXonoticModelDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
-
-       me.waypointDialog = i = spawnXonoticWaypointDialog();
+       
+       me.viewDialog = i = spawnXonoticViewDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
        
-       me.serverInfoDialog = i = spawnXonoticServerInfoDialog();
+       me.weaponsDialog = i = spawnXonoticWeaponsDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
        
-       me.cvarsDialog = i = spawnXonoticCvarsDialog();
+
+       // mutator dialogs
+       i = spawnXonoticSandboxToolsDialog();
        i.configureDialog(i);
        me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
        
+       
+       // miscellaneous dialogs
+       i = spawnXonoticTeamSelectDialog();
+       i.configureDialog(i);
+       me.addItemCentered(me, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
+       
+       
+       // main dialogs/windows
        me.mainNexposee = n = spawnXonoticNexposee();
        /*
                if(checkextension("DP_GECKO_SUPPORT"))
@@ -198,6 +237,7 @@ void MainWindow_configureMainWindow(entity me)
                n.addItemCentered(n, i, i.intendedWidth * eX + i.intendedHeight * eY, SKINALPHAS_MAINMENU_z);
                n.setNexposee(n, i, SKINPOSITION_DIALOG_QUIT, SKINALPHAS_MAINMENU_x, SKINALPHAS_MAINMENU_y);
                n.pullNexposee(n, i, eY * (SKINHEIGHT_TITLE * SKINFONTSIZE_TITLE / conheight));
+               
        me.addItem(me, n, '0 0 0', '1 1 0', SKINALPHAS_MAINMENU_z);
        me.moveItemAfter(me, n, NULL);
 
index 14bf48ec9edf0f00282075f5549ce40f3456587b..54b9554a80456d1ccc25a2f7df2c02790c1f961a 100644 (file)
@@ -193,9 +193,9 @@ void XonoticMapList_drawListBoxItem(entity me, float i, vector absSize, float is
 
        if(included)
                draw_Picture(me.checkMarkOrigin, "checkmark", me.checkMarkSize, '1 1 1', 1);
-       s = draw_TextShortenToWidth(MapInfo_Map_titlestring, me.columnNameSize, 0, me.realFontSize);
+       s = draw_TextShortenToWidth(strdecolorize(MapInfo_Map_titlestring), me.columnNameSize, 0, me.realFontSize);
        draw_Text(me.realUpperMargin1 * eY + (me.columnNameOrigin + 0.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, SKINCOLOR_MAPLIST_TITLE, theAlpha, 0);
-       s = draw_TextShortenToWidth(MapInfo_Map_author, me.columnNameSize, 0,  me.realFontSize);
+       s = draw_TextShortenToWidth(strdecolorize(MapInfo_Map_author), me.columnNameSize, 0,  me.realFontSize);
        draw_Text(me.realUpperMargin2 * eY + (me.columnNameOrigin + 1.00 * (me.columnNameSize - draw_TextWidth(s, 0, me.realFontSize))) * eX, s, me.realFontSize, SKINCOLOR_MAPLIST_AUTHOR, theAlpha, 0);
 
        MapInfo_ClearTemps();
index 74fe810fe74759d9d015e69f1248c4207e4cb8a4..5c0a958d0f6b96396cf263bd0b70ddc9b64266f4 100644 (file)
@@ -565,21 +565,62 @@ float GameType_GetID(float cnt)
 {
        float i;
        i = 0;
-#define GAMETYPE(id) if(i++ == cnt) return id;
+       
+       #define GAMETYPE(id) if(i++ == cnt) return id;
        GAMETYPES
-#undef GAMETYPE
+       #undef GAMETYPE
+       
        return 0;
 }
+
 float GameType_GetCount()
 {
        float i;
        i = 0;
-#define GAMETYPE(id) ++i;
+       
+       #define GAMETYPE(id) ++i;
        GAMETYPES
-#undef GAMETYPE
+       #undef GAMETYPE
+       
        return i;
 }
 
+string GameType_GetName(float cnt)
+{
+       float i = GameType_GetID(cnt);
+       
+       if(i)
+               return MapInfo_Type_ToText(i);
+       
+       return "";
+}
+
+string GameType_GetIcon(float cnt)
+{
+       float i = GameType_GetID(cnt);
+       
+       if(i)
+               return strcat("gametype_", MapInfo_Type_ToString(i));
+       
+       return "";
+}
+
+string GameType_GetTeams(float cnt)
+{
+       float i = GameType_GetID(cnt);
+       string s = _MapInfo_GetDefaultEx(i);
+       
+       if(i)
+       {
+               if(strstrofs(s, "teams", 0) >= 0)
+                       return _("teamplay");
+               else
+                       return _("free for all");
+       }
+       
+       return _("tuba for all");
+}
+
 void dialog_hudpanel_common_notoggle(entity me, string panelname)
 {
        float i;
index 6165fb3606b945968910c437bf76732d931c3ad5..4055f915f89931862860bb10073d13e6313b37e8 100644 (file)
@@ -37,6 +37,9 @@ void URI_Get_Callback(float id, float status, string data);
 // game type list box stuff (does not NEED to contain all game types, other
 // types stay available via console)
 float GameType_GetID(float cnt);
+string GameType_GetName(float cnt);
+string GameType_GetIcon(float cnt);
+string GameType_GetTeams(float cnt);
 float GameType_GetCount();
 
 void dialog_hudpanel_common_notoggle(entity me, string panelname);
index aa47110bee63eeec644582a2b99e8b356d955d15..e64cc72d087f99aaa1315f304eeab312320c3ca8 100644 (file)
@@ -10,7 +10,6 @@ CLASS(XonoticWeaponsList) EXTENDS(XonoticListBox)
        ATTRIB(XonoticWeaponsList, realFontSize, vector, '0 0 0')
        ATTRIB(XonoticWeaponsList, realUpperMargin, float, 0)
        METHOD(XonoticWeaponsList, mouseDrag, float(entity, vector))
-       ATTRIB(XonoticWeaponsList, scrollbarWidth, float, 0)
 ENDCLASS(XonoticWeaponsList)
 entity makeXonoticWeaponsList();
 void WeaponsList_MoveUp_Click(entity btn, entity me);
@@ -66,11 +65,22 @@ void XonoticWeaponsList_resizeNotify(entity me, vector relOrigin, vector relSize
 }
 float XonoticWeaponsList_mouseDrag(entity me, vector pos)
 {
-       float f, i;
+       float f, i, scrollbar;
        i = me.selectedItem;
        f = SUPER(XonoticWeaponsList).mouseDrag(me, pos);
-       if(me.selectedItem != i)
-               cvar_set("cl_weaponpriority", swapInPriorityList(cvar_string("cl_weaponpriority"), me.selectedItem, i));
+       
+       scrollbar = 1;
+       if(pos_x < 1 - me.controlWidth - me.tolerance_y * me.controlWidth) scrollbar = 0;
+       if(pos_y < 0 - me.tolerance_x) scrollbar = 0;
+       if(pos_x >= 1 + me.tolerance_y * me.controlWidth) scrollbar = 0;
+       if(pos_y >= 1 + me.tolerance_x) scrollbar = 0;
+       
+       if not(scrollbar) // don't change priority if the person is just scrolling
+       {
+               if(me.selectedItem != i)
+                       cvar_set("cl_weaponpriority", swapInPriorityList(cvar_string("cl_weaponpriority"), me.selectedItem, i));
+       }
+       
        return f;
 }
 string XonoticWeaponsList_toString(entity me)