Merge branch 'TimePath/xonotic-data.pk3dir-TimePath/compat_weapons'
authorMario <zacjardine@y7mail.com>
Thu, 27 Nov 2014 02:41:58 +0000 (13:41 +1100)
committerMario <zacjardine@y7mail.com>
Thu, 27 Nov 2014 02:41:58 +0000 (13:41 +1100)
53 files changed:
effects-high.cfg
effects-low.cfg
effects-med.cfg
effects-normal.cfg
effects-omg.cfg
effects-ultimate.cfg
effects-ultra.cfg
models/weapons/g_arc_simple.iqm [new file with mode: 0644]
models/weapons/g_arc_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_arc_simple.tga [new file with mode: 0644]
models/weapons/g_campingrifle_simple.iqm [new file with mode: 0644]
models/weapons/g_campingrifle_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_campingrifle_simple.tga [new file with mode: 0644]
models/weapons/g_crylink_simple.tga
models/weapons/g_electro_simple.tga
models/weapons/g_fireball_simple.iqm [new file with mode: 0644]
models/weapons/g_fireball_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_fireball_simple.tga [new file with mode: 0644]
models/weapons/g_gl_simple.tga
models/weapons/g_hagar_simple.tga
models/weapons/g_hlac_simple.iqm [new file with mode: 0644]
models/weapons/g_hlac_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_hlac_simple.tga [new file with mode: 0644]
models/weapons/g_hookgun_simple.iqm [new file with mode: 0644]
models/weapons/g_hookgun_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_hookgun_simple.tga [new file with mode: 0644]
models/weapons/g_laser_simple.iqm [new file with mode: 0644]
models/weapons/g_laser_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_laser_simple.tga [new file with mode: 0644]
models/weapons/g_minelayer_simple.iqm [new file with mode: 0644]
models/weapons/g_minelayer_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_minelayer_simple.tga [new file with mode: 0644]
models/weapons/g_minstanex_simple.iqm [new file with mode: 0644]
models/weapons/g_minstanex_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_minstanex_simple.tga [new file with mode: 0644]
models/weapons/g_nex_simple.tga
models/weapons/g_porto_simple.iqm [new file with mode: 0644]
models/weapons/g_porto_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_porto_simple.tga [new file with mode: 0644]
models/weapons/g_rl_simple.tga
models/weapons/g_seeker_simple.iqm [new file with mode: 0644]
models/weapons/g_seeker_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_seeker_simple.tga [new file with mode: 0644]
models/weapons/g_shotgun_simple.tga
models/weapons/g_tuba_simple.iqm [new file with mode: 0644]
models/weapons/g_tuba_simple.iqm_0.skin [new file with mode: 0644]
models/weapons/g_tuba_simple.tga [new file with mode: 0644]
models/weapons/g_uzi_simple.tga
models/weapons/make-sprites.sh [new file with mode: 0755]
qcsrc/menu/classes.c
qcsrc/menu/xonotic/dialog_settings_effects.c
qcsrc/menu/xonotic/slider_particles.c [new file with mode: 0644]
scripts/simpleitems.shader

index 456061536d6986d9973275bfc62067906a81aa4d..a514ce5cb67d9f2eb563ff8d4220d3a510ee61f7 100644 (file)
@@ -1,10 +1,11 @@
 cl_decals 1
 cl_decals_models 0
 cl_decals_fadetime 4
-cl_particles_quality 1
+cl_particles 1
+cl_particles_quality 1.0
 cl_damageeffect 1
 cl_spawn_point_particles 1
-cl_playerdetailreduction 4
+cl_playerdetailreduction 4.0
 gl_flashblend 0
 gl_picmip -1
 mod_q3bsp_nolightmaps 0
@@ -15,7 +16,7 @@ hud_postprocessing_maxbluralpha 0.5
 hud_powerup 0
 r_depthfirst 2
 r_drawdecals_drawdistance 500
-r_drawparticles_drawdistance 2000
+r_drawparticles_drawdistance 1500
 r_glsl_deluxemapping 1
 r_glsl_offsetmapping 0
 r_glsl_offsetmapping_reliefmapping 0
index d98ba526d8e4f97f4a441def438be5bad3bc08f8..b7e9a98a3a7a78fa396023d1f3fe615cd4cb4c4a 100644 (file)
@@ -1,6 +1,7 @@
 cl_decals 1
 cl_decals_models 0
 cl_decals_fadetime 2
+cl_particles 1
 cl_particles_quality 0.4
 cl_damageeffect 0
 cl_spawn_point_particles 0
index 58191f266e907d85f9adf26ccad59d440fc62b49..66eed5aa5d55dc897c6cd748848cd5ed82cb3efe 100644 (file)
@@ -1,7 +1,8 @@
 cl_decals 1
 cl_decals_models 0
 cl_decals_fadetime 2
-cl_particles_quality 1
+cl_particles 1
+cl_particles_quality 0.8
 cl_damageeffect 0
 cl_spawn_point_particles 0
 cl_playerdetailreduction 4
@@ -15,7 +16,7 @@ hud_postprocessing_maxbluralpha 0
 hud_powerup 0
 r_depthfirst 0
 r_drawdecals_drawdistance 300
-r_drawparticles_drawdistance 1000
+r_drawparticles_drawdistance 750
 r_glsl_deluxemapping 0
 r_glsl_offsetmapping 0
 r_glsl_offsetmapping_reliefmapping 0
index dd8cce9a787ed27958b26190c69b2ec86ce6519e..63dcd134a066f0c4255c4ad380f085249e177d0a 100644 (file)
@@ -1,7 +1,8 @@
 cl_decals 1
 cl_decals_models 0
 cl_decals_fadetime 2
-cl_particles_quality 1
+cl_particles 1
+cl_particles_quality 1.0
 cl_damageeffect 1
 cl_spawn_point_particles 1
 cl_playerdetailreduction 4
index 7c39fbbef6335d8467d2747f119c9b96ab4421cd..9018ee2c94375ba8740fa35f3357f55ff1d3cf15 100644 (file)
@@ -1,6 +1,7 @@
 cl_decals 0
 cl_decals_models 0
 cl_decals_fadetime 2
+cl_particles 1
 cl_particles_quality 0.4
 cl_damageeffect 0
 cl_spawn_point_particles 0
index 6897ccc16fa9cfdd6e44e504e18b495570ba5054..0cf3a899cbcebf5fa385a66ffd3fc07f326ca3c0 100644 (file)
@@ -1,7 +1,8 @@
 cl_decals 1
 cl_decals_models 1
 cl_decals_fadetime 10
-cl_particles_quality 1
+cl_particles 1
+cl_particles_quality 1.0
 cl_damageeffect 2
 cl_spawn_point_particles 1
 cl_playerdetailreduction 0
@@ -15,7 +16,7 @@ hud_postprocessing_maxbluralpha 0.5
 hud_powerup 0.5
 r_depthfirst 2
 r_drawdecals_drawdistance 500
-r_drawparticles_drawdistance 2000
+r_drawparticles_drawdistance 3000
 r_glsl_deluxemapping 1
 r_glsl_offsetmapping 1
 r_glsl_offsetmapping_reliefmapping 1
index d530f03b8b7ff004af587d317a6d2ae5f0c23b89..5909f3b83dc956b18141d4c0111b251c60080813 100644 (file)
@@ -1,10 +1,11 @@
 cl_decals 1
 cl_decals_models 0
 cl_decals_fadetime 10
-cl_particles_quality 1
-cl_damageeffect 1
+cl_particles 1
+cl_particles_quality 1.0
+cl_damageeffect 2
 cl_spawn_point_particles 1
-cl_playerdetailreduction 2
+cl_playerdetailreduction 0
 gl_flashblend 0
 gl_picmip -1
 mod_q3bsp_nolightmaps 0
diff --git a/models/weapons/g_arc_simple.iqm b/models/weapons/g_arc_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_arc_simple.iqm differ
diff --git a/models/weapons/g_arc_simple.iqm_0.skin b/models/weapons/g_arc_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..df43c61
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_arc_simple
\ No newline at end of file
diff --git a/models/weapons/g_arc_simple.tga b/models/weapons/g_arc_simple.tga
new file mode 100644 (file)
index 0000000..2e94008
Binary files /dev/null and b/models/weapons/g_arc_simple.tga differ
diff --git a/models/weapons/g_campingrifle_simple.iqm b/models/weapons/g_campingrifle_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_campingrifle_simple.iqm differ
diff --git a/models/weapons/g_campingrifle_simple.iqm_0.skin b/models/weapons/g_campingrifle_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..6b2726f
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_campingrifle_simple
\ No newline at end of file
diff --git a/models/weapons/g_campingrifle_simple.tga b/models/weapons/g_campingrifle_simple.tga
new file mode 100644 (file)
index 0000000..2a9c449
Binary files /dev/null and b/models/weapons/g_campingrifle_simple.tga differ
index f4054b7beca99c12d8bce595362efa95b4a05a5d..0bbdbc7bfa892c8a2ad2aa53facb44f06d4e3949 100644 (file)
Binary files a/models/weapons/g_crylink_simple.tga and b/models/weapons/g_crylink_simple.tga differ
index b523c722e32a60c0df4d60f82c1d5c13bfddce07..02c67de755bd6d3b443b798697ac8f4d68605ed7 100644 (file)
Binary files a/models/weapons/g_electro_simple.tga and b/models/weapons/g_electro_simple.tga differ
diff --git a/models/weapons/g_fireball_simple.iqm b/models/weapons/g_fireball_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_fireball_simple.iqm differ
diff --git a/models/weapons/g_fireball_simple.iqm_0.skin b/models/weapons/g_fireball_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..cceb6a6
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_fireball_simple
\ No newline at end of file
diff --git a/models/weapons/g_fireball_simple.tga b/models/weapons/g_fireball_simple.tga
new file mode 100644 (file)
index 0000000..2632b76
Binary files /dev/null and b/models/weapons/g_fireball_simple.tga differ
index e138aa42e71c1776426d63f632882f9fcf46c168..114c6f25f5431c8a2649161b2e1d220c1570075d 100644 (file)
Binary files a/models/weapons/g_gl_simple.tga and b/models/weapons/g_gl_simple.tga differ
index 4c82e4beee45ac267cf24ecfb47b70274e4183df..fb99dea73952998b8e23e578b6c1d554ffb3e9e4 100644 (file)
Binary files a/models/weapons/g_hagar_simple.tga and b/models/weapons/g_hagar_simple.tga differ
diff --git a/models/weapons/g_hlac_simple.iqm b/models/weapons/g_hlac_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_hlac_simple.iqm differ
diff --git a/models/weapons/g_hlac_simple.iqm_0.skin b/models/weapons/g_hlac_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..020dcc1
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_hlac_simple
\ No newline at end of file
diff --git a/models/weapons/g_hlac_simple.tga b/models/weapons/g_hlac_simple.tga
new file mode 100644 (file)
index 0000000..6d2302c
Binary files /dev/null and b/models/weapons/g_hlac_simple.tga differ
diff --git a/models/weapons/g_hookgun_simple.iqm b/models/weapons/g_hookgun_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_hookgun_simple.iqm differ
diff --git a/models/weapons/g_hookgun_simple.iqm_0.skin b/models/weapons/g_hookgun_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..2c8bd5f
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_hookgun_simple
\ No newline at end of file
diff --git a/models/weapons/g_hookgun_simple.tga b/models/weapons/g_hookgun_simple.tga
new file mode 100644 (file)
index 0000000..be44b81
Binary files /dev/null and b/models/weapons/g_hookgun_simple.tga differ
diff --git a/models/weapons/g_laser_simple.iqm b/models/weapons/g_laser_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_laser_simple.iqm differ
diff --git a/models/weapons/g_laser_simple.iqm_0.skin b/models/weapons/g_laser_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..02e24bc
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_laser_simple
\ No newline at end of file
diff --git a/models/weapons/g_laser_simple.tga b/models/weapons/g_laser_simple.tga
new file mode 100644 (file)
index 0000000..66223a3
Binary files /dev/null and b/models/weapons/g_laser_simple.tga differ
diff --git a/models/weapons/g_minelayer_simple.iqm b/models/weapons/g_minelayer_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_minelayer_simple.iqm differ
diff --git a/models/weapons/g_minelayer_simple.iqm_0.skin b/models/weapons/g_minelayer_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..f9d4b61
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_minelayer_simple
\ No newline at end of file
diff --git a/models/weapons/g_minelayer_simple.tga b/models/weapons/g_minelayer_simple.tga
new file mode 100644 (file)
index 0000000..dfba264
Binary files /dev/null and b/models/weapons/g_minelayer_simple.tga differ
diff --git a/models/weapons/g_minstanex_simple.iqm b/models/weapons/g_minstanex_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_minstanex_simple.iqm differ
diff --git a/models/weapons/g_minstanex_simple.iqm_0.skin b/models/weapons/g_minstanex_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..3a255b4
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_minstanex_simple
\ No newline at end of file
diff --git a/models/weapons/g_minstanex_simple.tga b/models/weapons/g_minstanex_simple.tga
new file mode 100644 (file)
index 0000000..68bf311
Binary files /dev/null and b/models/weapons/g_minstanex_simple.tga differ
index 27c984f8a19a03899373e464c8941f9003709e4f..a254e962d8489f251301b43a9e00ecd22b632b40 100644 (file)
Binary files a/models/weapons/g_nex_simple.tga and b/models/weapons/g_nex_simple.tga differ
diff --git a/models/weapons/g_porto_simple.iqm b/models/weapons/g_porto_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_porto_simple.iqm differ
diff --git a/models/weapons/g_porto_simple.iqm_0.skin b/models/weapons/g_porto_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..944e14a
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_porto_simple
\ No newline at end of file
diff --git a/models/weapons/g_porto_simple.tga b/models/weapons/g_porto_simple.tga
new file mode 100644 (file)
index 0000000..aa6f6cd
Binary files /dev/null and b/models/weapons/g_porto_simple.tga differ
index d65fa8788b4030e21160c61fb0ef91dd971a0745..2ac19c8f53a2a9d5763fbc87a1699fb69f9a90e3 100644 (file)
Binary files a/models/weapons/g_rl_simple.tga and b/models/weapons/g_rl_simple.tga differ
diff --git a/models/weapons/g_seeker_simple.iqm b/models/weapons/g_seeker_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_seeker_simple.iqm differ
diff --git a/models/weapons/g_seeker_simple.iqm_0.skin b/models/weapons/g_seeker_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..5123515
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_seeker_simple
\ No newline at end of file
diff --git a/models/weapons/g_seeker_simple.tga b/models/weapons/g_seeker_simple.tga
new file mode 100644 (file)
index 0000000..322ee53
Binary files /dev/null and b/models/weapons/g_seeker_simple.tga differ
index 37da2f8629232c453e012071ff6bd1b27b76b78e..3c120c89ae6625827d3eb4e5fe2a8a25cea83888 100644 (file)
Binary files a/models/weapons/g_shotgun_simple.tga and b/models/weapons/g_shotgun_simple.tga differ
diff --git a/models/weapons/g_tuba_simple.iqm b/models/weapons/g_tuba_simple.iqm
new file mode 100644 (file)
index 0000000..a5cc3e6
Binary files /dev/null and b/models/weapons/g_tuba_simple.iqm differ
diff --git a/models/weapons/g_tuba_simple.iqm_0.skin b/models/weapons/g_tuba_simple.iqm_0.skin
new file mode 100644 (file)
index 0000000..3fd8bd8
--- /dev/null
@@ -0,0 +1 @@
+Plane,g_tuba_simple
\ No newline at end of file
diff --git a/models/weapons/g_tuba_simple.tga b/models/weapons/g_tuba_simple.tga
new file mode 100644 (file)
index 0000000..8af65e0
Binary files /dev/null and b/models/weapons/g_tuba_simple.tga differ
index d9b5df404a54bc6ec61a93aa41acd13c037ec319..55d68cd930f2e2dfb60bba49ade7772181dd12b6 100644 (file)
Binary files a/models/weapons/g_uzi_simple.tga and b/models/weapons/g_uzi_simple.tga differ
diff --git a/models/weapons/make-sprites.sh b/models/weapons/make-sprites.sh
new file mode 100755 (executable)
index 0000000..50f3fc6
--- /dev/null
@@ -0,0 +1,80 @@
+#!/bin/bash
+
+baseline=20
+
+sprite()
+{
+       name=$1
+       text=$(echo $2) # Handle newlines
+       color=$3
+
+       echo $name
+
+       # Text
+       exec {FD}< <(convert \
+       -size 185x120 \
+       -background transparent \
+       -fill "#$color" \
+       -font BigNoodleTitling \
+       -interline-spacing -15 \
+       -gravity south \
+       label:"$text" \
+       -trim \
+       png:-)
+       itext=$FD
+
+       # Rectangles
+
+       # Thick
+       xa1=34
+       xa2=$((xa1+185-1))
+       ya1=174
+       ya2=$((ya1+37-1))
+
+       # Thin
+       xb1=34
+       xb2=$((xb1+185-1))
+       yb1=224
+       yb2=$((yb1+15-1))
+
+       exec {FD}< <(convert \
+       -size 256x256 \
+       -background transparent \
+       -fill "#$color" \
+       xc:none \
+       -draw "rectangle $xa1,$ya1 $xa2,$ya2" \
+       -draw "rectangle $xb1,$yb1 $xb2,$yb2" \
+       png:-)
+       irects=$FD
+
+       # Join
+
+       composite \
+       -gravity south \
+       -geometry -2+$((82+$baseline)) \
+       -compress RLE \
+       png:fd:$itext png:fd:$irects g_${name}_simple.tga
+}
+
+# grep '* color' ../../qcsrc/common/weapons/w_*.qc | awk '{ print $1 "  \t" $4 " " $5 " " $6 }'
+# def h(r,g,b): return '#{:02x}{:02x}{:02x}'.format(int(round(r*255)),int(round(g*255)),int(round(b*255)))
+sprite arc                     "Arc"                           ffffff # White
+sprite laser           "Blaster"                       ff8080 # Vivid Tangerine
+sprite crylink         "Crylink"                       ff80ff # Blush Pink
+sprite rl                      "Devastator"            ffff00 # Yellow
+sprite electro         "Electro"                       0080ff # Azure Radiance
+sprite fireball                "Fireball"                      ff8000 # Flush Orange
+sprite hagar           "Hagar"                         ffff80 # Dolly
+sprite hlac                    "HLAC"                          00ff00 # Green
+sprite hookgun         "Grappling\nHook"       008000 # Japanese Laurel
+sprite uzi                     "Machine\nGun"          ffff00 # Yellow
+sprite minelayer       "Mine\nLayer"           bfff00 # Lime
+sprite gl                      "Mortar"                        ff0000 # Red
+sprite porto           "Port-O-Launch"         808080 # Gray
+sprite campingrifle    "Rifle"                         80ff00 # Chartreuse
+sprite seeker          "T.A.G.\nSeeker"        80ff00 # Chartreuse
+#sprite shockwave      "Shockwave"                     804000 # Cinnamon
+sprite shotgun         "Shotgun"                       804000 # Cinnamon
+sprite tuba                    "Tuba"                          00ff00 # Green
+sprite minstanex       "Vaporizer"                     80ffff # Anakiwa
+sprite nex                     "Vortex"                        80ffff # Anakiwa
index ee1ce5d31e025d709b9b3f983b3c420f7a0cc429..46d0c0269e01d8a3532941343457e1cb39fe346b 100644 (file)
 #include "xonotic/dialog_hudpanel_centerprint.c"
 #include "xonotic/dialog_hudpanel_buffs.c"
 #include "xonotic/slider_picmip.c"
+#include "xonotic/slider_particles.c"
index e3b562ee3bb0459385968fa0a99e16f38bd63151..c56d972d9da92eac957a6a3888709eef3a444456 100644 (file)
@@ -47,8 +47,7 @@ void XonoticEffectsSettingsTab_fill(entity me)
                if(cvar("developer"))
                        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.gotoRC(me, 1.25, 0);
                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");
@@ -60,7 +59,13 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Player detail:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(4, 0, -0.1, "cl_playerdetailreduction"));
+               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_playerdetailreduction"));
+                       e.addValue(e, ZCTX(_("PDET^Low")), "4");
+                       e.addValue(e, ZCTX(_("PDET^Medium")), "3");
+                       e.addValue(e, ZCTX(_("PDET^Normal")), "2");
+                       e.addValue(e, ZCTX(_("PDET^Good")), "1");
+                       e.addValue(e, ZCTX(_("PDET^Best")), "0");
+                       e.configureXonoticTextSliderValues(e);
        me.TR(me);
                me.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Texture resolution:")));
                        setDependent(e, "r_showsurfaces", 0, 0);
@@ -126,23 +131,23 @@ void XonoticEffectsSettingsTab_fill(entity me)
                        setDependentAND(e, "vid_gl20", 1, 1, "r_water", 1, 1);
        me.TR(me);
        me.TR(me);
-               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, e = makeXonoticTextLabel(0, _("Particles distance:")));
-               me.TD(me, 1, 2, e = makeXonoticSlider(500, 2000, 100, "r_drawparticles_drawdistance"));
+               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.TD(me, 1, 1, e = makeXonoticTextLabel(0, _("Damage effects:")));
-               me.TD(me, 1, 2, e = makeXonoticTextSlider("cl_damageeffect"));
-                       e.addValue(e, ZCTX(_("DMGPRTCLS^Disabled")), "0");
-                       e.addValue(e, ZCTX(_("DMGPRTCLS^Skeletal")), "1");
-                       e.addValue(e, ZCTX(_("DMGPRTCLS^All")), "2");
-                       e.configureXonoticTextSliderValues(e);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:")));
+                       setDependent(e, "cl_decals", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
+                       setDependent(e, "cl_decals", 1, 1);
        me.TR(me);
-               me.TD(me, 1, 3, e = makeXonoticCheckBox(0, "cl_spawn_point_particles", _("Particle effects for spawnpoints")));
-               makeMulti(e, "cl_spawn_event_particles");
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:")));
+                       setDependent(e, "cl_decals", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_fadetime"));
+                       setDependent(e, "cl_decals", 1, 1);
 
-       me.gotoRC(me, 2, 3.2); me.setFirstColumn(me, me.currentColumn);
+       me.gotoRC(me, 1.25, 3.2); me.setFirstColumn(me, me.currentColumn);
                me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "r_coronas", "0", _("No dynamic lighting")));
        me.TR(me);
                me.TD(me, 1, 3, e = makeXonoticRadioButton(1, "gl_flashblend", string_null, _("Fake corona lighting")));
@@ -180,21 +185,28 @@ void XonoticEffectsSettingsTab_fill(entity me)
                me.TD(me, 1, 2, s);
        me.TR(me);
        me.TR(me);
-               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.TD(me, 1, 1, e = makeXonoticCheckBox(0, "cl_particles", _("Particles")));
+               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "cl_spawn_point_particles", _("Spawnpoint effects")));
+                       makeMulti(e, "cl_spawn_event_particles");
+                       setDependent(e, "cl_particles", 1, 1);
        me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Quality:")));
+                       setDependent(e, "cl_particles", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticParticlesSlider());
+                       setDependent(e, "cl_particles", 1, 1);
+               me.TR(me);
                me.TDempty(me, 0.2);
                me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Distance:")));
                        setDependent(e, "cl_decals", 1, 1);
                me.TD(me, 1, 2, e = makeXonoticSlider(200, 500, 20, "r_drawdecals_drawdistance"));
                        setDependent(e, "cl_decals", 1, 1);
-       me.TR(me);
+               me.TR(me);
                me.TDempty(me, 0.2);
-           me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:")));
-               setDependent(e, "cl_decals", 1, 1);
-           me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_fadetime"));
-               setDependent(e, "cl_decals", 1, 1);
+               me.TD(me, 1, 0.8, e = makeXonoticTextLabel(0, _("Time:")));
+                       setDependent(e, "cl_decals", 1, 1);
+               me.TD(me, 1, 2, e = makeXonoticSlider(1, 20, 1, "cl_decals_fadetime"));
+                       setDependent(e, "cl_decals", 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));
diff --git a/qcsrc/menu/xonotic/slider_particles.c b/qcsrc/menu/xonotic/slider_particles.c
new file mode 100644 (file)
index 0000000..db29f55
--- /dev/null
@@ -0,0 +1,48 @@
+#ifdef INTERFACE
+CLASS(XonoticParticlesSlider) EXTENDS(XonoticTextSlider)
+       METHOD(XonoticParticlesSlider, configureXonoticParticlesSlider, void(entity))
+       METHOD(XonoticParticlesSlider, loadCvars, void(entity))
+       METHOD(XonoticParticlesSlider, saveCvars, void(entity))
+ENDCLASS(XonoticParticlesSlider)
+entity makeXonoticParticlesSlider();
+#endif
+
+#ifdef IMPLEMENTATION
+entity makeXonoticParticlesSlider()
+{
+       entity me;
+       me = spawnXonoticParticlesSlider();
+       me.configureXonoticParticlesSlider(me);
+       return me;
+}
+void XonoticParticlesSlider_configureXonoticParticlesSlider(entity me)
+{
+       me.configureXonoticTextSlider(me, "cl_particles_quality");
+       if(cvar("developer")) { me.addValue(me, ZCTX(_("PART^OMG")),      "0.4 250 0"); }
+       me.addValue(me,                         ZCTX(_("PART^Low")),      "0.4 500 0");
+       me.addValue(me,                         ZCTX(_("PART^Medium")),   "0.8 750 0");
+       me.addValue(me,                         ZCTX(_("PART^Normal")),   "1.0 1000 1");
+       me.addValue(me,                         ZCTX(_("PART^High")),     "1.0 1500 1");
+       me.addValue(me,                         ZCTX(_("PART^Ultra")),    "1.0 2000 2");
+       if(cvar("developer")) { me.addValue(me, ZCTX(_("PART^Ultimate")), "1.0 3000 2"); }
+       me.configureXonoticTextSliderValues(me);
+}
+void XonoticParticlesSlider_loadCvars(entity me)
+{
+       me.setValueFromIdentifier(me, sprintf("%s %s %s",
+               cvar_string("cl_particles_quality"),
+               cvar_string("r_drawparticles_drawdistance"),
+               cvar_string("cl_damageeffect")
+       ));
+}
+void XonoticParticlesSlider_saveCvars(entity me)
+{
+       if(me.value >= 0 || me.value < me.nValues)
+       {
+               tokenize_console(me.getIdentifier(me));
+               cvar_set("cl_particles_quality", argv(0));
+               cvar_set("r_drawparticles_drawdistance", argv(1));
+               cvar_set("cl_damageeffect", argv(2)); 
+       }
+}
+#endif
index 69376e86091a684c6030bd717b500f57bdfac6cf..92e9e5affd847cbdc578d8d41239ff7d3ba9c4d0 100644 (file)
@@ -53,6 +53,19 @@ a_shells_simple // shells
 
 ////////// WEAPONS //////////
 
+g_arc_simple // arc
+{
+       deformVertexes autosprite
+       cull none
+       nopicmip
+
+       {
+               map models/weapons/g_arc_simple
+               blendfunc blend
+
+       }
+}
+
 g_crylink_simple // crylink
 {
        deformVertexes autosprite
@@ -79,7 +92,7 @@ g_electro_simple // electro
        }
 }
 
-g_nex_simple // nex
+g_nex_simple // vortex
 {
        deformVertexes autosprite
        cull none
@@ -118,7 +131,7 @@ g_gl_simple // mortar
        }
 }
 
-g_rl_simple // rocket launcher
+g_rl_simple // devastator
 {
        deformVertexes autosprite
        cull none
@@ -157,19 +170,6 @@ g_uzi_simple // machine gun
        }
 }
 
-g_uzi_simple // machine gun
-{
-       deformVertexes autosprite
-       cull none
-       nopicmip
-
-       {
-               map models/weapons/g_uzi_simple
-               blendfunc blend
-
-       }
-}
-
 g_campingrifle_simple // sniper rifle
 {
        deformVertexes autosprite
@@ -222,7 +222,7 @@ g_hookgun_simple // hook gun
        }
 }
 
-g_laser_simple // laser
+g_laser_simple // blaster
 {
        deformVertexes autosprite
        cull none
@@ -248,7 +248,7 @@ g_minelayer_simple // minelayer
        }
 }
 
-g_minstanex_simple // minstanex
+g_minstanex_simple // vaporizer
 {
        deformVertexes autosprite
        cull none
@@ -475,4 +475,4 @@ g_fuelregen_simple // fuel regen powerup
                blendfunc blend
 
        }
-}
\ No newline at end of file
+}