summaryrefslogtreecommitdiff
path: root/assets
diff options
context:
space:
mode:
authorPaweł Redman <trem.redman@gmail.com>2013-09-06 22:40:51 +0200
committerPaweł Redman <trem.redman@gmail.com>2013-09-06 22:40:51 +0200
commit5a85e81685300e2299dabfeb25d513b99df471be (patch)
tree45c3e342a9af062528c6c32b695629a65eede91b /assets
Initial commit
Diffstat (limited to 'assets')
-rwxr-xr-xassets/armour/bsuit.armour19
-rwxr-xr-xassets/armour/helmet.armour19
-rwxr-xr-xassets/armour/larmour.armour95
-rwxr-xr-xassets/configs/buildables/acid_tube.cfg5
-rwxr-xr-xassets/configs/buildables/arm.cfg5
-rwxr-xr-xassets/configs/buildables/barricade.cfg5
-rwxr-xr-xassets/configs/buildables/booster.cfg5
-rwxr-xr-xassets/configs/buildables/dcc.cfg5
-rwxr-xr-xassets/configs/buildables/eggpod.cfg5
-rwxr-xr-xassets/configs/buildables/hive.cfg5
-rwxr-xr-xassets/configs/buildables/hovel.cfg5
-rwxr-xr-xassets/configs/buildables/medistat.cfg5
-rwxr-xr-xassets/configs/buildables/mgturret.cfg7
-rwxr-xr-xassets/configs/buildables/overmind.cfg5
-rwxr-xr-xassets/configs/buildables/reactor.cfg5
-rwxr-xr-xassets/configs/buildables/repeater.cfg5
-rwxr-xr-xassets/configs/buildables/telenode.cfg5
-rwxr-xr-xassets/configs/buildables/tesla.cfg5
-rwxr-xr-xassets/configs/buildables/trapper.cfg5
-rwxr-xr-xassets/configs/classes/builder.cfg17
-rwxr-xr-xassets/configs/classes/builderupg.cfg17
-rwxr-xr-xassets/configs/classes/human_base.cfg17
-rwxr-xr-xassets/configs/classes/human_bsuit.cfg17
-rwxr-xr-xassets/configs/classes/level0.cfg17
-rwxr-xr-xassets/configs/classes/level1.cfg17
-rwxr-xr-xassets/configs/classes/level1upg.cfg17
-rwxr-xr-xassets/configs/classes/level2.cfg17
-rwxr-xr-xassets/configs/classes/level2upg.cfg17
-rwxr-xr-xassets/configs/classes/level3.cfg17
-rwxr-xr-xassets/configs/classes/level3upg.cfg17
-rwxr-xr-xassets/configs/classes/level4.cfg17
-rwxr-xr-xassets/configs/classes/spectator.cfg17
-rwxr-xr-xassets/models/buildables/acid_tube/animation.cfg15
-rwxr-xr-xassets/models/buildables/barricade/animation.cfg17
-rwxr-xr-xassets/models/buildables/medistat/animation.cfg18
-rwxr-xr-xassets/models/buildables/mgturret/animation.cfg15
-rwxr-xr-xassets/models/buildables/repeater/animation.cfg15
-rwxr-xr-xassets/models/buildables/tesla/animation.cfg15
-rwxr-xr-xassets/models/players/human_base/locdamage.cfg60
-rwxr-xr-xassets/models/players/human_bsuit/locdamage.cfg29
-rwxr-xr-xassets/models/players/level1/animation.cfg48
-rwxr-xr-xassets/models/weapons/abuild/weapon.cfg11
-rwxr-xr-xassets/models/weapons/abuildupg/weapon.cfg19
-rwxr-xr-xassets/models/weapons/lcannon/weapon.cfg33
-rwxr-xr-xassets/models/weapons/level0/weapon.cfg9
-rwxr-xr-xassets/models/weapons/level1/weapon.cfg11
-rwxr-xr-xassets/models/weapons/level1upg/weapon.cfg17
-rwxr-xr-xassets/models/weapons/level2/weapon.cfg11
-rwxr-xr-xassets/models/weapons/level2upg/weapon.cfg18
-rwxr-xr-xassets/models/weapons/level3/weapon.cfg16
-rwxr-xr-xassets/models/weapons/level3upg/weapon.cfg28
-rwxr-xr-xassets/models/weapons/level4/weapon.cfg11
-rwxr-xr-xassets/models/weapons/mdriver/weapon.cfg12
-rwxr-xr-xassets/models/weapons/prifle/weapon.cfg17
-rwxr-xr-xassets/models/weapons/psaw/weapon.cfg13
-rwxr-xr-xassets/scripts/crosshairs.shader96
-rwxr-xr-xassets/scripts/mdriver.trail10
-rwxr-xr-xassets/scripts/misc.particle378
-rwxr-xr-xassets/scripts/ui.shader19
-rwxr-xr-xassets/scripts/weapons.particle890
-rwxr-xr-xassets/scripts/weapons.shader93
-rwxr-xr-xassets/sound/buildables/barricade/sound.cfg14
-rwxr-xr-xassets/ui/assets/alien/buildstat.cfg37
-rwxr-xr-xassets/ui/assets/human/buildstat.cfg39
-rwxr-xr-xassets/ui/connect.menu14
-rwxr-xr-xassets/ui/createfavorite.menu115
-rwxr-xr-xassets/ui/createserver.menu499
-rwxr-xr-xassets/ui/demo.menu108
-rwxr-xr-xassets/ui/download.menu167
-rwxr-xr-xassets/ui/drop.menu122
-rwxr-xr-xassets/ui/error.menu102
-rwxr-xr-xassets/ui/findplayer.menu173
-rwxr-xr-xassets/ui/help.txt135
-rwxr-xr-xassets/ui/hud.txt11
-rwxr-xr-xassets/ui/ingame.menu140
-rwxr-xr-xassets/ui/ingame.txt9
-rwxr-xr-xassets/ui/ingame_game.menu862
-rwxr-xr-xassets/ui/ingame_help.menu88
-rwxr-xr-xassets/ui/ingame_leave.menu209
-rwxr-xr-xassets/ui/ingame_options.menu2359
-rwxr-xr-xassets/ui/joinserver.menu769
-rwxr-xr-xassets/ui/loading.menu223
-rwxr-xr-xassets/ui/main.menu189
-rwxr-xr-xassets/ui/menudef.h223
-rwxr-xr-xassets/ui/menus.txt21
-rwxr-xr-xassets/ui/mod.menu108
-rwxr-xr-xassets/ui/news.menu102
-rwxr-xr-xassets/ui/options.menu311
-rwxr-xr-xassets/ui/password.menu85
-rwxr-xr-xassets/ui/quit.menu99
-rwxr-xr-xassets/ui/quitcredit.menu410
-rwxr-xr-xassets/ui/say.menu137
-rwxr-xr-xassets/ui/serverinfo.menu112
-rwxr-xr-xassets/ui/teamscore.menu386
-rwxr-xr-xassets/ui/tremulous.txt20
-rwxr-xr-xassets/ui/tremulous_alien_builder_hud.menu42
-rwxr-xr-xassets/ui/tremulous_alien_common_hud.h257
-rwxr-xr-xassets/ui/tremulous_alien_general_hud.menu30
-rwxr-xr-xassets/ui/tremulous_alienbuild.menu136
-rwxr-xr-xassets/ui/tremulous_alienclass.menu157
-rwxr-xr-xassets/ui/tremulous_aliendialogs.menu97
-rwxr-xr-xassets/ui/tremulous_alienupgrade.menu136
-rwxr-xr-xassets/ui/tremulous_common_hud.h224
-rwxr-xr-xassets/ui/tremulous_default_hud.menu37
-rwxr-xr-xassets/ui/tremulous_dialogs.menu98
-rwxr-xr-xassets/ui/tremulous_human_hud.menu379
-rwxr-xr-xassets/ui/tremulous_humanarmoury.menu189
-rwxr-xr-xassets/ui/tremulous_humanbuild.menu135
-rwxr-xr-xassets/ui/tremulous_humandialogs.menu98
-rwxr-xr-xassets/ui/tremulous_humanitem.menu157
-rwxr-xr-xassets/ui/tremulous_teamselect.menu136
111 files changed, 13086 insertions, 0 deletions
diff --git a/assets/armour/bsuit.armour b/assets/armour/bsuit.armour
new file mode 100755
index 0000000..c05a09d
--- /dev/null
+++ b/assets/armour/bsuit.armour
@@ -0,0 +1,19 @@
+
+{
+ name "bsuit body"
+ minHeight 0.0
+ maxHeight 0.8
+ minAngle 0
+ maxAngle 360
+ modifier 0.2
+}
+
+{
+ name "bsuit head"
+ minHeight 0.8
+ maxHeight 1.0
+ minAngle 0
+ maxAngle 360
+ modifier 0.27
+}
+
diff --git a/assets/armour/helmet.armour b/assets/armour/helmet.armour
new file mode 100755
index 0000000..f595bf2
--- /dev/null
+++ b/assets/armour/helmet.armour
@@ -0,0 +1,19 @@
+
+{
+ name "helmet"
+ minHeight 0.8
+ maxHeight 1.0
+ minAngle 0
+ maxAngle 360
+ modifier 0.4
+}
+
+{
+ name "helmet crouch"
+ minHeight 0.7
+ maxHeight 1.0
+ minAngle 0
+ maxAngle 360
+ modifier 0.4
+ crouch
+}
diff --git a/assets/armour/larmour.armour b/assets/armour/larmour.armour
new file mode 100755
index 0000000..5e313fa
--- /dev/null
+++ b/assets/armour/larmour.armour
@@ -0,0 +1,95 @@
+
+{
+ name "larmour chest"
+ minHeight 0.5
+ maxHeight 0.8
+ minAngle 310
+ maxAngle 50
+ modifier 0.35
+}
+
+{
+ name "larmour left arm"
+ minHeight 0.5
+ maxHeight 0.8
+ minAngle 50
+ maxAngle 130
+ modifier 0.3
+}
+
+{
+ name "larmour back"
+ minHeight 0.5
+ maxHeight 0.8
+ minAngle 130
+ maxAngle 230
+ modifier 0.4
+}
+
+{
+ name "larmour right arm"
+ minHeight 0.5
+ maxHeight 0.8
+ minAngle 230
+ maxAngle 310
+ modifier 0.3
+}
+
+{
+ name "larmour legs"
+ minHeight 0.0
+ maxHeight 0.5
+ minAngle 0
+ maxAngle 360
+ modifier 0.3
+}
+
+{
+ name "larmour chest crouch"
+ minHeight 0.3
+ maxHeight 0.7
+ minAngle 310
+ maxAngle 50
+ modifier 0.35
+ crouch
+}
+
+{
+ name "larmour left arm crouch"
+ minHeight 0.3
+ maxHeight 0.7
+ minAngle 50
+ maxAngle 130
+ modifier 0.3
+ crouch
+}
+
+{
+ name "larmour back crouch"
+ minHeight 0.3
+ maxHeight 0.7
+ minAngle 130
+ maxAngle 230
+ modifier 0.4
+ crouch
+}
+
+{
+ name "larmour right arm crouch"
+ minHeight 0.3
+ maxHeight 0.7
+ minAngle 230
+ maxAngle 310
+ modifier 0.3
+ crouch
+}
+
+{
+ name "larmour legs crouch"
+ minHeight 0.0
+ maxHeight 0.3
+ minAngle 0
+ maxAngle 360
+ modifier 0.3
+ crouch
+}
diff --git a/assets/configs/buildables/acid_tube.cfg b/assets/configs/buildables/acid_tube.cfg
new file mode 100755
index 0000000..e44ed48
--- /dev/null
+++ b/assets/configs/buildables/acid_tube.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/acid_tube/acid_tube.md3
+modelScale 0.6
+mins -15 -15 -15
+maxs 15 15 15
+zOffset -8.5
diff --git a/assets/configs/buildables/arm.cfg b/assets/configs/buildables/arm.cfg
new file mode 100755
index 0000000..3e45fc2
--- /dev/null
+++ b/assets/configs/buildables/arm.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/arm/arm.md3
+modelScale 1.0
+mins -40 -40 -13
+maxs 40 40 50
+zOffset -2.0
diff --git a/assets/configs/buildables/barricade.cfg b/assets/configs/buildables/barricade.cfg
new file mode 100755
index 0000000..5614647
--- /dev/null
+++ b/assets/configs/buildables/barricade.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/barricade/barricade.md3
+modelScale 1.0
+mins -35 -35 -15
+maxs 35 35 60
+zOffset 0
diff --git a/assets/configs/buildables/booster.cfg b/assets/configs/buildables/booster.cfg
new file mode 100755
index 0000000..b0903df
--- /dev/null
+++ b/assets/configs/buildables/booster.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/booster/booster.md3
+modelScale 1.0
+mins -26 -26 -9
+maxs 26 26 9
+zOffset 0
diff --git a/assets/configs/buildables/dcc.cfg b/assets/configs/buildables/dcc.cfg
new file mode 100755
index 0000000..932e302
--- /dev/null
+++ b/assets/configs/buildables/dcc.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/dcc/dcc.md3
+modelScale 1.0
+mins -35 -35 -13
+maxs 35 35 47
+zOffset 0
diff --git a/assets/configs/buildables/eggpod.cfg b/assets/configs/buildables/eggpod.cfg
new file mode 100755
index 0000000..71cb6c7
--- /dev/null
+++ b/assets/configs/buildables/eggpod.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/eggpod/eggpod.md3
+modelScale 1.0
+mins -15 -15 -15
+maxs 15 15 15
+zOffset 0
diff --git a/assets/configs/buildables/hive.cfg b/assets/configs/buildables/hive.cfg
new file mode 100755
index 0000000..bd427a2
--- /dev/null
+++ b/assets/configs/buildables/hive.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/hive/hive.md3
+modelScale 1.0
+mins -20 -20 -20
+maxs 20 20 20
+zOffset -10
diff --git a/assets/configs/buildables/hovel.cfg b/assets/configs/buildables/hovel.cfg
new file mode 100755
index 0000000..5e2922c
--- /dev/null
+++ b/assets/configs/buildables/hovel.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/hovel/hovel.md3
+modelScale 1.0
+mins -50 -50 -20
+maxs 50 50 20
+zOffset 0
diff --git a/assets/configs/buildables/medistat.cfg b/assets/configs/buildables/medistat.cfg
new file mode 100755
index 0000000..179a052
--- /dev/null
+++ b/assets/configs/buildables/medistat.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/medistat/medistat.md3
+modelScale 1.0
+mins -35 -35 -7
+maxs 35 35 4
+zOffset 0
diff --git a/assets/configs/buildables/mgturret.cfg b/assets/configs/buildables/mgturret.cfg
new file mode 100755
index 0000000..83a2309
--- /dev/null
+++ b/assets/configs/buildables/mgturret.cfg
@@ -0,0 +1,7 @@
+model 0 models/buildables/mgturret/turret_base.md3
+model 1 models/buildables/mgturret/turret_barrel.md3
+model 2 models/buildables/mgturret/turret_top.md3
+modelScale 1.0
+mins -25 -25 -20
+maxs 25 25 20
+zOffset 0
diff --git a/assets/configs/buildables/overmind.cfg b/assets/configs/buildables/overmind.cfg
new file mode 100755
index 0000000..f9baca5
--- /dev/null
+++ b/assets/configs/buildables/overmind.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/overmind/overmind.md3
+modelScale 1.0
+mins -45 -45 -15
+maxs 45 45 95
+zOffset 0
diff --git a/assets/configs/buildables/reactor.cfg b/assets/configs/buildables/reactor.cfg
new file mode 100755
index 0000000..d724c44
--- /dev/null
+++ b/assets/configs/buildables/reactor.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/reactor/reactor.md3
+mins -41 -41 -15
+maxs 41 41 95
+zOffset -2.0
+modelScale 0.85
diff --git a/assets/configs/buildables/repeater.cfg b/assets/configs/buildables/repeater.cfg
new file mode 100755
index 0000000..eec2824
--- /dev/null
+++ b/assets/configs/buildables/repeater.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/repeater/repeater.md3
+modelScale 1.0
+mins -15 -15 -15
+maxs 15 15 25
+zOffset 0
diff --git a/assets/configs/buildables/telenode.cfg b/assets/configs/buildables/telenode.cfg
new file mode 100755
index 0000000..173a92f
--- /dev/null
+++ b/assets/configs/buildables/telenode.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/telenode/telenode.md3
+modelScale 1.0
+mins -40 -40 -4
+maxs 40 40 6
+zOffset 0
diff --git a/assets/configs/buildables/tesla.cfg b/assets/configs/buildables/tesla.cfg
new file mode 100755
index 0000000..36d1e33
--- /dev/null
+++ b/assets/configs/buildables/tesla.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/tesla/tesla.md3
+modelScale 1.0
+mins -22 -22 -40
+maxs 22 22 40
+zOffset 0
diff --git a/assets/configs/buildables/trapper.cfg b/assets/configs/buildables/trapper.cfg
new file mode 100755
index 0000000..0c3f0d0
--- /dev/null
+++ b/assets/configs/buildables/trapper.cfg
@@ -0,0 +1,5 @@
+model 0 models/buildables/trapper/trapper.md3
+modelScale 1.0
+mins -15 -15 -15
+maxs 15 15 15
+zOffset 0
diff --git a/assets/configs/classes/builder.cfg b/assets/configs/classes/builder.cfg
new file mode 100755
index 0000000..dd1d665
--- /dev/null
+++ b/assets/configs/classes/builder.cfg
@@ -0,0 +1,17 @@
+name "Granger"
+model builder
+modelScale 1.0
+skin default
+shadowScale 1.0
+hud alien_builder_hud
+
+mins -20 -20 -20
+maxs 20 20 20
+crouchMaxs 20 20 20
+deadMins -20 -20 -4
+deadMaxs 20 20 4
+zOffset 0.0
+
+viewheight 0
+crouchViewheight 0
+shoulderOffsets -8 15 13
diff --git a/assets/configs/classes/builderupg.cfg b/assets/configs/classes/builderupg.cfg
new file mode 100755
index 0000000..e1b73fc
--- /dev/null
+++ b/assets/configs/classes/builderupg.cfg
@@ -0,0 +1,17 @@
+name "Advanced Granger"
+model builder
+modelScale 1.0
+skin advanced
+shadowScale 1.0
+hud alien_builder_hud
+
+mins -20 -20 -20
+maxs 20 20 20
+crouchMaxs 20 20 20
+deadMins -20 -20 -4
+deadMaxs 20 20 4
+zOffset 0.0
+
+viewheight 0
+crouchViewheight 0
+shoulderOffsets -8 15 13
diff --git a/assets/configs/classes/human_base.cfg b/assets/configs/classes/human_base.cfg
new file mode 100755
index 0000000..6749bad
--- /dev/null
+++ b/assets/configs/classes/human_base.cfg
@@ -0,0 +1,17 @@
+name "Human Base"
+model human_base
+modelScale 1.0
+skin default
+shadowScale 1.0
+hud human_hud
+
+mins -15 -15 -24
+maxs 15 15 32
+crouchMaxs 15 15 16
+deadMins -15 -15 -4
+deadMaxs 15 15 4
+zOffset -2.0
+
+viewheight 24
+crouchViewheight 7
+shoulderOffsets -10 15 0
diff --git a/assets/configs/classes/human_bsuit.cfg b/assets/configs/classes/human_bsuit.cfg
new file mode 100755
index 0000000..0cdca1e
--- /dev/null
+++ b/assets/configs/classes/human_bsuit.cfg
@@ -0,0 +1,17 @@
+name "Human Battlesuit"
+model human_bsuit
+modelScale 1.0
+skin default
+shadowScale 1.0
+hud human_hud
+
+mins -15 -15 -38
+maxs 15 15 38
+crouchMaxs 15 15 38
+deadMins -15 -15 -4
+deadMaxs 15 15 4
+zOffset -16.0
+
+viewheight 29
+crouchViewheight 29
+shoulderOffsets -30 25 -2
diff --git a/assets/configs/classes/level0.cfg b/assets/configs/classes/level0.cfg
new file mode 100755
index 0000000..1497918
--- /dev/null
+++ b/assets/configs/classes/level0.cfg
@@ -0,0 +1,17 @@
+name "Dretch"
+model level0
+modelScale 1.2
+skin default
+shadowScale 0.5
+hud alien_general_hud
+
+mins -15 -15 -15
+maxs 15 15 15
+crouchMaxs 15 15 15
+deadMins -15 -15 -15
+deadMaxs 15 15 15
+zOffset -5.0
+
+viewheight 0
+crouchViewheight 0
+shoulderOffsets -5 0 17
diff --git a/assets/configs/classes/level1.cfg b/assets/configs/classes/level1.cfg
new file mode 100755
index 0000000..3add57e
--- /dev/null
+++ b/assets/configs/classes/level1.cfg
@@ -0,0 +1,17 @@
+name "Basilisk"
+model level1
+modelScale 1.0
+skin default
+shadowScale 1.0
+hud alien_general_hud
+
+mins -18 -18 -18
+maxs 18 18 18
+crouchMaxs 18 18 18
+deadMins -18 -18 -4
+deadMaxs 18 18 4
+zOffset 0.0
+
+viewheight 0
+crouchViewheight 0
+shoulderOffsets -10 0 18
diff --git a/assets/configs/classes/level1upg.cfg b/assets/configs/classes/level1upg.cfg
new file mode 100755
index 0000000..28a4beb
--- /dev/null
+++ b/assets/configs/classes/level1upg.cfg
@@ -0,0 +1,17 @@
+name "Advanced Basilisk"
+model level1
+modelScale 1.1666
+skin upgrade
+shadowScale 1.0
+hud alien_general_hud
+
+mins -21 -21 -21
+maxs 21 21 21
+crouchMaxs 21 21 21
+deadMins -21 -21 -4.666
+deadMaxs 21 21 4.666
+zOffset 0.0
+
+viewheight 0
+crouchViewheight 0
+shoulderOffsets -10 0 18
diff --git a/assets/configs/classes/level2.cfg b/assets/configs/classes/level2.cfg
new file mode 100755
index 0000000..73fc4ab
--- /dev/null
+++ b/assets/configs/classes/level2.cfg
@@ -0,0 +1,17 @@
+name "Marauder"
+model level2
+modelScale 1.0
+skin default
+shadowScale 1.0
+hud alien_general_hud
+
+mins -23 -23 -22
+maxs 23 23 14
+crouchMaxs 23 23 14
+deadMins -23 -23 -4
+deadMaxs 23 23 4
+zOffset 0.0
+
+viewheight 8
+crouchViewheight 8
+shoulderOffsets 0 12 5
diff --git a/assets/configs/classes/level2upg.cfg b/assets/configs/classes/level2upg.cfg
new file mode 100755
index 0000000..3ef853f
--- /dev/null
+++ b/assets/configs/classes/level2upg.cfg
@@ -0,0 +1,17 @@
+name "Advanced Marauder"
+model level2
+modelScale 1.1
+skin adv
+shadowScale 1.0
+hud alien_general_hud
+
+mins -25 -25 -24
+maxs 25 25 16
+crouchMaxs 25 25 16
+deadMins -25 -25 -4
+deadMaxs 25 25 4
+zOffset 0.0
+
+viewheight 10
+crouchViewheight 10
+shoulderOffsets 0 12 5
diff --git a/assets/configs/classes/level3.cfg b/assets/configs/classes/level3.cfg
new file mode 100755
index 0000000..6073201
--- /dev/null
+++ b/assets/configs/classes/level3.cfg
@@ -0,0 +1,17 @@
+name "Dragoon"
+model level3
+modelScale 1.0
+skin default
+shadowScale 1.0
+hud alien_general_hud
+
+mins -26 -26 -23
+maxs 26 26 32
+crouchMaxs 26 26 32
+deadMins -26 -26 -4
+deadMaxs 26 26 4
+zOffset 0.0
+
+viewheight 24
+crouchViewheight 24
+shoulderOffsets -10 15 8
diff --git a/assets/configs/classes/level3upg.cfg b/assets/configs/classes/level3upg.cfg
new file mode 100755
index 0000000..e0e7455
--- /dev/null
+++ b/assets/configs/classes/level3upg.cfg
@@ -0,0 +1,17 @@
+name "Advanced Dragoon"
+model level3
+modelScale 1.15
+skin adv
+shadowScale 1.0
+hud alien_general_hud
+
+mins -29 -29 -29
+maxs 29 29 37
+crouchMaxs 29 29 38
+deadMins -29 -29 -4
+deadMaxs 29 29 4
+zOffset 0.0
+
+viewheight 27
+crouchViewheight 27
+shoulderOffsets -10 17 12
diff --git a/assets/configs/classes/level4.cfg b/assets/configs/classes/level4.cfg
new file mode 100755
index 0000000..ad8482e
--- /dev/null
+++ b/assets/configs/classes/level4.cfg
@@ -0,0 +1,17 @@
+name "Tyrant"
+model level4
+modelScale 1.0
+skin default
+shadowScale 2.0
+hud alien_general_hud
+
+mins -32 -32 -22
+maxs 32 32 70
+crouchMaxs 32 32 70
+deadMins -32 -32 -34
+deadMaxs 32 32 34
+zOffset 0.0
+
+viewheight 64
+crouchViewheight 64
+shoulderOffsets -20 -25 30
diff --git a/assets/configs/classes/spectator.cfg b/assets/configs/classes/spectator.cfg
new file mode 100755
index 0000000..bfe7bf2
--- /dev/null
+++ b/assets/configs/classes/spectator.cfg
@@ -0,0 +1,17 @@
+name "Spectator"
+model ""
+modelScale 1.0
+skin ""
+shadowScale 1.0
+hud ""
+
+mins -15 -15 -15
+maxs 15 15 15
+crouchMaxs 15 15 15
+deadMins -15 -15 -15
+deadMaxs 15 15 15
+zOffset 0.0
+
+viewheight 0
+crouchViewheight 0
+shoulderOffsets 0 0 0
diff --git a/assets/models/buildables/acid_tube/animation.cfg b/assets/models/buildables/acid_tube/animation.cfg
new file mode 100755
index 0000000..19f616e
--- /dev/null
+++ b/assets/models/buildables/acid_tube/animation.cfg
@@ -0,0 +1,15 @@
+//acid tube
+0 12 0 24 // CONSTRUCT1
+0 12 0 24 // CONSTRUCT2
+12 1 0 24 // IDLE1
+0 0 0 0 // IDLE2
+0 0 0 0 // IDLE3
+13 19 0 24 // ATTACK1
+0 0 0 1 // ATTACK2
+0 0 0 1 // SPAWN1
+0 0 0 1 // SPAWN2
+12 8 0 12 // PAIN1
+0 0 0 1 // PAIN2
+0 -12 0 16 // DESTROY
+12 0 0 12 // DESTROY2
+0 1 1 1 // DESTROYED
diff --git a/assets/models/buildables/barricade/animation.cfg b/assets/models/buildables/barricade/animation.cfg
new file mode 100755
index 0000000..b4703ea
--- /dev/null
+++ b/assets/models/buildables/barricade/animation.cfg
@@ -0,0 +1,17 @@
+//barricade
+0 12 0 24 // CONSTRUCT1
+0 12 0 24 // CONSTRUCT1
+12 1 1 24 // IDLE1
+0 0 0 24 // IDLE2
+0 0 0 0 // IDLE3
+39 9 0 48 // ATTACK1 (shrink)
+39 -9 0 48 // ATTACK2 (unshrink)
+0 0 0 0 // SPAWN1
+0 0 0 0 // SPAWN2
+12 12 0 24 // PAIN1
+48 1 0 24 // PAIN2
+36 12 0 24 // DESTROY
+0 0 0 0 // DESTROY2
+48 1 1 1 // DEAD
+
+//12 frames for each pain, 6 going down 6 going up
diff --git a/assets/models/buildables/medistat/animation.cfg b/assets/models/buildables/medistat/animation.cfg
new file mode 100755
index 0000000..5a5ab0f
--- /dev/null
+++ b/assets/models/buildables/medistat/animation.cfg
@@ -0,0 +1,18 @@
+//medistation
+0 8 0 24 // CONSTRUCT
+0 8 0 24 // CONSTRUCT
+8 19 19 12 // IDLE
+32 1 1 1 // IDLE2-HEAL
+0 1 1 1 // IDLE3-NOPOWER
+27 6 0 24 // ATTACK1-HEAL
+0 0 0 0 // ATTACK2
+0 0 0 0 // SPAWN1
+0 0 0 0 // SPAWN2
+0 0 0 0 // PAIN1
+0 0 0 0 // PAIN2
+33 1 0 5 // DESTROY
+0 0 0 0 // DESTROY2
+33 1 1 1 // DEAD
+
+//attack is the heal activate
+//idle2 is the heal idle
diff --git a/assets/models/buildables/mgturret/animation.cfg b/assets/models/buildables/mgturret/animation.cfg
new file mode 100755
index 0000000..7b80fb7
--- /dev/null
+++ b/assets/models/buildables/mgturret/animation.cfg
@@ -0,0 +1,15 @@
+//mgturret
+0 1 0 1 // CONSTRUCT1
+0 1 0 1 // CONSTRUCT1
+0 1 1 1 // IDLE1
+0 1 1 1 // IDLE2
+0 1 1 1 // IDLE3-NOPOWER
+1 1 0 10 // ATTACK1
+0 1 0 0 // ATTACK2
+0 1 0 0 // SPAWN1
+0 1 0 0 // SPAWN2
+0 1 0 0 // PAIN1
+0 1 0 0 // PAIN2
+0 1 0 1 // DESTROY1
+0 1 0 0 // DESTROY2
+0 1 1 1 // DEAD
diff --git a/assets/models/buildables/repeater/animation.cfg b/assets/models/buildables/repeater/animation.cfg
new file mode 100755
index 0000000..fdfdb65
--- /dev/null
+++ b/assets/models/buildables/repeater/animation.cfg
@@ -0,0 +1,15 @@
+//repeater
+0 12 0 24 // CONSTRUCT1
+0 12 0 24 // CONSTRUCT1
+12 24 24 36 // IDLE1
+0 0 0 0 // IDLE2
+12 24 24 6 // IDLE3-NOPOWER
+0 0 0 0 // ATTACK1
+0 0 0 0 // ATTACK2
+0 0 0 0 // SPAWN1
+0 0 0 0 // SPAWN2
+0 0 0 0 // PAIN1
+0 0 0 0 // PAIN2
+37 1 0 5 // DESTROY
+0 0 0 0 // DESTROY2
+37 1 1 1 // DEAD
diff --git a/assets/models/buildables/tesla/animation.cfg b/assets/models/buildables/tesla/animation.cfg
new file mode 100755
index 0000000..2c3f1d9
--- /dev/null
+++ b/assets/models/buildables/tesla/animation.cfg
@@ -0,0 +1,15 @@
+// tesla
+0 8 0 12 // CONSTRUCT1
+0 8 0 12 // CONSTRUCT1
+8 24 24 24 // IDLE1
+0 0 0 0 // IDLE2
+32 1 1 1 // IDLE3-NOPOWER
+0 0 0 0 // ATTACK1
+0 0 0 0 // ATTACK2
+0 0 0 0 // SPAWN1
+0 0 0 0 // SPAWN2
+0 0 0 0 // PAIN1
+0 0 0 0 // PAIN2
+32 2 0 12 // DESTROY1
+0 0 0 0 // DESTROY2
+34 1 1 1 // DESTROYED
diff --git a/assets/models/players/human_base/locdamage.cfg b/assets/models/players/human_base/locdamage.cfg
new file mode 100755
index 0000000..3beeb16
--- /dev/null
+++ b/assets/models/players/human_base/locdamage.cfg
@@ -0,0 +1,60 @@
+// These regions must cover the entire body and cannot overlap otherwise
+// the non-locational damage calculation will not be correct!
+
+{
+ name "legs"
+ minHeight 0.0
+ maxHeight 0.5
+ minAngle 0
+ maxAngle 360
+ modifier 0.5
+}
+
+{
+ name "torso"
+ minHeight 0.5
+ maxHeight 0.8
+ minAngle 0
+ maxAngle 360
+ modifier 1.0
+}
+
+{
+ name "head"
+ minHeight 0.8
+ maxHeight 1.0
+ minAngle 0
+ maxAngle 360
+ modifier 1.5
+}
+
+{
+ name "legs crouch"
+ minHeight 0.0
+ maxHeight 0.3
+ minAngle 0
+ maxAngle 360
+ modifier 0.5
+ crouch
+}
+
+{
+ name "torso crouch"
+ minHeight 0.3
+ maxHeight 0.7
+ minAngle 0
+ maxAngle 360
+ modifier 1.0
+ crouch
+}
+
+{
+ name "head crouch"
+ minHeight 0.7
+ maxHeight 1.0
+ minAngle 0
+ maxAngle 360
+ modifier 1.5
+ crouch
+}
+
diff --git a/assets/models/players/human_bsuit/locdamage.cfg b/assets/models/players/human_bsuit/locdamage.cfg
new file mode 100755
index 0000000..a2ed6d9
--- /dev/null
+++ b/assets/models/players/human_bsuit/locdamage.cfg
@@ -0,0 +1,29 @@
+// These regions must cover the entire body and cannot overlap otherwise
+// the non-locational damage calculation will not be correct!
+
+{
+ name "legs"
+ minHeight 0.0
+ maxHeight 0.5
+ minAngle 0
+ maxAngle 360
+ modifier 0.5
+}
+
+{
+ name "torso"
+ minHeight 0.5
+ maxHeight 0.8
+ minAngle 0
+ maxAngle 360
+ modifier 1.0
+}
+
+{
+ name "head"
+ minHeight 0.8
+ maxHeight 1.0
+ minAngle 0
+ maxAngle 360
+ modifier 1.5
+}
diff --git a/assets/models/players/level1/animation.cfg b/assets/models/players/level1/animation.cfg
new file mode 100755
index 0000000..1c474f9
--- /dev/null
+++ b/assets/models/players/level1/animation.cfg
@@ -0,0 +1,48 @@
+// animation config file
+// Tremulous: level1 alien
+
+sex n
+
+// first frame, num frames, looping frames, frames per second
+
+footsteps none
+
+nonsegmented
+
+0 40 40 30 //NSPA_STAND
+
+41 141 0 60 //NSPA_GESTURE
+
+182 31 31 30 //NSPA_WALK
+182 31 31 60 //NSPA_RUN
+182 -31 31 60 //NSPA_RUNBACK
+
+0 0 0 30 //NSPA_CHARGE
+
+213 31 31 60 //NSPA_RUNLEFT
+213 31 31 30 //NSPA_WALKLEFT
+244 31 31 60 //NSPA_RUNRIGHT
+244 31 31 30 //NSPA_WALKRIGHT
+
+182 31 31 30 //NSPA_SWIM
+
+275 41 20 30 //NSPA_JUMP
+316 20 0 30 //NSPA_LAND
+275 41 20 30 //NSPA_JUMPBACK
+316 20 0 30 //NSPA_LANDBACK
+
+182 31 31 30 //NSPA_TURN
+
+336 31 0 30 //NSPA_ATTACK1
+336 31 0 30 //NSPA_ATTACK2
+336 31 0 30 //NSPA_ATTACK3
+
+367 11 0 30 //NSPA_PAIN1
+367 11 0 30 //NSPA_PAIN2
+
+378 41 0 30 //NSPA_DEATH1
+418 1 0 30 //NSPA_DEAD1
+378 41 0 30 //NSPA_DEATH2
+418 1 0 30 //NSPA_DEAD2
+378 41 0 30 //NSPA_DEATH3
+418 1 0 30 //NSPA_DEAD3
diff --git a/assets/models/weapons/abuild/weapon.cfg b/assets/models/weapons/abuild/weapon.cfg
new file mode 100755
index 0000000..46cfdaa
--- /dev/null
+++ b/assets/models/weapons/abuild/weapon.cfg
@@ -0,0 +1,11 @@
+disableIn3rdPerson
+crosshair 15 gfx/2d/crosshair-alien_s
+
+icon icons/icona_builder
+
+secondary
+{
+ flashSound 0 models/weapons/abuildupg/flash0.wav
+ impactFleshSound 0 models/weapons/abuildupg/impactflesh0.wav
+ alwaysImpact
+}
diff --git a/assets/models/weapons/abuildupg/weapon.cfg b/assets/models/weapons/abuildupg/weapon.cfg
new file mode 100755
index 0000000..0646359
--- /dev/null
+++ b/assets/models/weapons/abuildupg/weapon.cfg
@@ -0,0 +1,19 @@
+disableIn3rdPerson
+crosshair 15 gfx/2d/crosshair-alien_s
+
+icon icons/icona_builder
+
+secondary
+{
+ flashSound 0 models/weapons/abuildupg/flash0.wav
+ impactFleshSound 0 models/weapons/abuildupg/impactflesh0.wav
+ alwaysImpact
+}
+
+tertiary
+{
+ missileModel models/weapons/level3upg/missile.md3
+
+ impactMark 64 creep
+ impactSound 0 sound/misc/organic_bounce.wav
+}
diff --git a/assets/models/weapons/lcannon/weapon.cfg b/assets/models/weapons/lcannon/weapon.cfg
new file mode 100755
index 0000000..be3ae30
--- /dev/null
+++ b/assets/models/weapons/lcannon/weapon.cfg
@@ -0,0 +1,33 @@
+weaponModel models/weapons/lcannon/lcannon.md3
+icon icons/iconw_lucifer
+crosshair 48 gfx/2d/crosshair-lcannon_s
+idleSound models/weapons/lcannon/idle.wav
+
+primary
+{
+ missileSprite 16 gfx/lcannon/primary
+ missileSpriteCharge 0.25
+ missileSound models/weapons/lcannon/missle.wav
+ missileParticleSystem models/weapons/lcannon/missilePS
+
+ flashDlightColor 1.0 1.0 0.0
+ flashSound 0 models/weapons/lcannon/flash0.wav
+
+ impactMark 32 gfx/marks/bullet_mrk
+ impactSound 0 models/weapons/lcannon/impact0.wav
+ impactParticleSystem models/weapons/lcannon/impactPS
+}
+
+secondary
+{
+ missileSprite 16 gfx/lcannon/primary
+ missileSound models/weapons/lcannon/missle.wav
+ missileParticleSystem models/weapons/lcannon/secondaryMissilePS
+
+ flashDlightColor 1.0 1.0 0.0
+ flashSound 0 models/weapons/lcannon/flash0.wav
+
+ impactMark 8 gfx/marks/bullet_mrk
+ impactSound 0 models/weapons/lcannon/impact0.wav
+ impactParticleSystem models/weapons/lcannon/secondaryImpactPS
+}
diff --git a/assets/models/weapons/level0/weapon.cfg b/assets/models/weapons/level0/weapon.cfg
new file mode 100755
index 0000000..2e52551
--- /dev/null
+++ b/assets/models/weapons/level0/weapon.cfg
@@ -0,0 +1,9 @@
+disableIn3rdPerson
+crosshair 15 gfx/2d/crosshair-alien_s
+
+icon icons/icona_lev0
+
+primary
+{
+ flashSound 0 models/weapons/level0/flash0.wav
+}
diff --git a/assets/models/weapons/level1/weapon.cfg b/assets/models/weapons/level1/weapon.cfg
new file mode 100755
index 0000000..5932283
--- /dev/null
+++ b/assets/models/weapons/level1/weapon.cfg
@@ -0,0 +1,11 @@
+disableIn3rdPerson
+crosshair 15 gfx/2d/crosshair-alien_s
+
+icon icons/icona_lev1
+
+primary
+{
+ flashSound 0 models/weapons/level1/flash0.wav
+ impactFleshSound 0 models/weapons/level1/impactflesh0.wav
+ alwaysImpact
+}
diff --git a/assets/models/weapons/level1upg/weapon.cfg b/assets/models/weapons/level1upg/weapon.cfg
new file mode 100755
index 0000000..5b60e8c
--- /dev/null
+++ b/assets/models/weapons/level1upg/weapon.cfg
@@ -0,0 +1,17 @@
+disableIn3rdPerson
+crosshair 15 gfx/2d/crosshair-alien_s
+
+icon icons/icona_lev1
+
+primary
+{
+ flashSound 0 models/weapons/level1/flash0.wav
+ impactFleshSound 0 models/weapons/level1/impactflesh0.wav
+ alwaysImpact
+}
+
+secondary
+{
+ flashSound 0 models/weapons/level1upg/gas.wav
+ muzzleParticleSystem models/weapons/level1upg/muzzlePS
+}
diff --git a/assets/models/weapons/level2/weapon.cfg b/assets/models/weapons/level2/weapon.cfg
new file mode 100755
index 0000000..927a731
--- /dev/null
+++ b/assets/models/weapons/level2/weapon.cfg
@@ -0,0 +1,11 @@
+disableIn3rdPerson
+crosshair 15 gfx/2d/crosshair-alien_s
+
+icon icons/icona_lev2
+
+primary
+{
+ flashSound 0 models/weapons/level2/flash0.wav
+ impactFleshSound 0 models/weapons/level2/impactflesh0.wav
+ alwaysImpact
+}
diff --git a/assets/models/weapons/level2upg/weapon.cfg b/assets/models/weapons/level2upg/weapon.cfg
new file mode 100755
index 0000000..7a1f26c
--- /dev/null
+++ b/assets/models/weapons/level2upg/weapon.cfg
@@ -0,0 +1,18 @@
+disableIn3rdPerson
+
+icon icons/icona_lev2
+crosshair 15 gfx/2d/crosshair-alien_s
+
+primary
+{
+ flashSound 0 models/weapons/level2/flash0.wav
+ impactFleshSound 0 models/weapons/level2/impactflesh0.wav
+ alwaysImpact
+}
+
+secondary
+{
+ flashSound 0 models/weapons/level2upg/electric.wav
+
+ impactMark 24 gfx/marks/plasma_mrk
+}
diff --git a/assets/models/weapons/level3/weapon.cfg b/assets/models/weapons/level3/weapon.cfg
new file mode 100755
index 0000000..faa2c18
--- /dev/null
+++ b/assets/models/weapons/level3/weapon.cfg
@@ -0,0 +1,16 @@
+disableIn3rdPerson
+crosshair 15 gfx/2d/crosshair-alien_s
+
+icon icons/icona_lev3
+
+primary
+{
+ flashSound 0 models/weapons/level3/flash0.wav
+ impactFleshSound 0 models/weapons/level3/impactflesh0.wav
+ alwaysImpact
+}
+
+secondary
+{
+ flashSound 0 models/weapons/level3/pounce.wav
+}
diff --git a/assets/models/weapons/level3upg/weapon.cfg b/assets/models/weapons/level3upg/weapon.cfg
new file mode 100755
index 0000000..51192f7
--- /dev/null
+++ b/assets/models/weapons/level3upg/weapon.cfg
@@ -0,0 +1,28 @@
+disableIn3rdPerson
+
+icon icons/icona_lev3
+crosshair 15 gfx/2d/crosshair-alien_s
+
+primary
+{
+ flashSound 0 models/weapons/level3/flash0.wav
+ impactFleshSound 0 models/weapons/level3/impactflesh0.wav
+ alwaysImpact
+}
+
+secondary
+{
+ flashSound 0 models/weapons/level3/pounce.wav
+}
+
+tertiary
+{
+ flashSound 0 models/weapons/level3upg/flash0.wav
+
+ missileModel models/weapons/level3upg/missile.md3
+ missileSound models/weapons/level3upg/missile.wav
+
+ impactMark 30 gfx/marks/bullet_mrk
+ impactSound 0 models/weapons/rifle/ricochet0.wav
+ impactParticleSystem models/weapons/level3upg/impactPS
+}
diff --git a/assets/models/weapons/level4/weapon.cfg b/assets/models/weapons/level4/weapon.cfg
new file mode 100755
index 0000000..b890af1
--- /dev/null
+++ b/assets/models/weapons/level4/weapon.cfg
@@ -0,0 +1,11 @@
+disableIn3rdPerson
+crosshair 15 gfx/2d/crosshair-alien_s
+
+icon icons/icona_lev4
+
+primary
+{
+ flashSound 0 models/weapons/level4/flash0.wav
+ impactFleshSound 0 models/weapons/level4/impactflesh0.wav
+ alwaysImpact
+}
diff --git a/assets/models/weapons/mdriver/weapon.cfg b/assets/models/weapons/mdriver/weapon.cfg
new file mode 100755
index 0000000..938e7ae
--- /dev/null
+++ b/assets/models/weapons/mdriver/weapon.cfg
@@ -0,0 +1,12 @@
+weaponModel models/weapons/mdriver/mdriver.md3
+icon icons/iconw_driver
+crosshair 24 gfx/2d/crosshair-mdriver_s
+
+primary
+{
+ flashDlightColor 0.0 1.0 0.0
+ flashSound 0 models/weapons/mdriver/flash0.wav
+
+ impactMark 6 gfx/marks/bullet_mrk
+ impactParticleSystem models/weapons/mdriver/impactPS
+}
diff --git a/assets/models/weapons/prifle/weapon.cfg b/assets/models/weapons/prifle/weapon.cfg
new file mode 100755
index 0000000..ca99f4f
--- /dev/null
+++ b/assets/models/weapons/prifle/weapon.cfg
@@ -0,0 +1,17 @@
+weaponModel models/weapons/prifle/prifle.md3
+icon icons/iconw_pulse
+crosshair 24 gfx/2d/crosshair-prifle_s
+
+primary
+{
+ missileSprite 3 gfx/prifle/red_blob
+ missileTrailSystem models/weapons/prifle/missileTS
+
+ flashDlightColor 1.0 0.0 0.0
+ flashSound 0 models/weapons/prifle/flash0.wav
+
+ impactMark 16 gfx/marks/bullet_mrk
+ impactParticleSystem models/weapons/prifle/impactPS
+ impactSound 0 models/weapons/prifle/impact0.wav
+ alwaysImpact
+}
diff --git a/assets/models/weapons/psaw/weapon.cfg b/assets/models/weapons/psaw/weapon.cfg
new file mode 100755
index 0000000..7b87940
--- /dev/null
+++ b/assets/models/weapons/psaw/weapon.cfg
@@ -0,0 +1,13 @@
+weaponModel models/weapons/psaw/psaw.md3
+icon icons/iconw_saw
+idleSound models/weapons/psaw/idle.wav
+crosshair 24 gfx/2d/crosshair-psaw
+
+primary
+{
+ flashDlightColor 1.0 1.0 1.0
+ firingSound models/weapons/psaw/firing.wav
+
+ impactParticleSystem models/weapons/psaw/impactPS
+ alwaysImpact
+} \ No newline at end of file
diff --git a/assets/scripts/crosshairs.shader b/assets/scripts/crosshairs.shader
new file mode 100755
index 0000000..278a296
--- /dev/null
+++ b/assets/scripts/crosshairs.shader
@@ -0,0 +1,96 @@
+gfx/2d/crosshair-alien_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-alien.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-rifle_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-rifle.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-prifle_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-prifle.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-chaingun_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-chaingun.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-mdriver_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-mdriver.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-lcannon_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-lcannon.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-lgun_s
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-lgun.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-flamer_s
+{
+ nopicmip
+ {
+ clampmap gfx/2d/crosshair-flamer1.tga
+ blendfunc blend
+ tcmod rotate 5
+ rgbGen vertex
+ }
+ {
+ clampmap gfx/2d/crosshair-flamer1.tga
+ blendfunc blend
+ tcmod rotate -5
+ rgbGen vertex
+ }
+}
+
+gfx/2d/crosshair-psaw
+{
+ nopicmip
+ {
+ map gfx/2d/crosshair-psaw.tga
+ blendfunc blend
+ rgbGen vertex
+ }
+} \ No newline at end of file
diff --git a/assets/scripts/mdriver.trail b/assets/scripts/mdriver.trail
new file mode 100755
index 0000000..b1545e6
--- /dev/null
+++ b/assets/scripts/mdriver.trail
@@ -0,0 +1,10 @@
+models/weapons/mdriver/fireTS
+{
+ beam
+ {
+ shader gfx/mdriver/trail
+ width 3.0 3.0
+ textureType stretch 0.94 0.03
+ }
+ lifeTime 70
+}
diff --git a/assets/scripts/misc.particle b/assets/scripts/misc.particle
new file mode 100755
index 0000000..40f3cc0
--- /dev/null
+++ b/assets/scripts/misc.particle
@@ -0,0 +1,378 @@
+firstPersonPoisonCloudPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/poisoncloud
+
+ displacement 0 0 0 ~32.0
+
+ parentVelocityFraction 1.0
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 16
+ velocity 0 0 1 ~0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 1 0
+
+ radius 0 10.0 40.0
+ alpha 0 0.5 0.0
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 1000
+ }
+
+ count 400
+ delay 0
+ period 20 - ~0%
+ }
+}
+
+poisonCloudedPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/poisoncloud
+
+ displacement 0 0 0 ~6.0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 60
+ velocity 0 0 0 ~50
+
+ radius 0 4.0 12.0
+ alpha 0 0.25 0.0
+ rotation 0 ~360 -
+
+ lifeTime 800
+ }
+
+ count 100
+ delay 0
+ period 50 200 ~0%
+ }
+}
+
+
+alienEvolvePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/green_acid
+
+ displacement 0 0 0 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 150~75%
+ velocity 0 0 1 ~50
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 5.0 30.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0.2
+
+ lifeTime 1000
+ }
+
+ count 30
+ delay 0
+ period 5 - ~0%
+ }
+}
+
+alienBleedPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/damage/blood.tga
+ displacement 0 0 0 0
+
+ velocityType normal
+
+ velocityDir linear
+
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .85 0
+ rotation 0 ~-15 ~15
+ bounce 0.0
+ color 0 { 1.0 1.0 0.6 } -
+
+ lifeTime 400~100
+ }
+
+ particle
+ {
+ shader sync gfx/damage/blood.tga
+ displacement 0 0 0 0
+
+ velocityType normal
+
+ velocityDir linear
+
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .85 0
+ rotation 0 ~165 ~195
+ bounce 0.0
+ color 0 { 1.0 1.0 0.6 } -
+
+ lifeTime 400~100
+ }
+
+ count 2
+ delay 0
+ period 0 - 0
+ }
+
+ thirdPersonOnly
+}
+
+alienBuildableBleedPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/damage/blood.tga
+ displacement 0 0 0 0
+
+ velocityType normal
+
+ velocityDir linear
+
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .85 0
+ rotation 0 ~-15 ~15
+ bounce 0.0
+ color 0 { 1.0 1.0 0.6 } -
+
+ lifeTime 400~100
+ }
+
+ particle
+ {
+ shader sync gfx/damage/blood.tga
+ displacement 0 0 0 0
+
+ velocityType normal
+
+ velocityDir linear
+
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .85 0
+ rotation 0 ~165 ~195
+ bounce 0.0
+ color 0 { 1.0 1.0 0.6 } -
+
+ lifeTime 400~100
+ }
+
+ count 2
+ delay 0
+ period 0 - 0
+ }
+}
+
+
+humanBleedPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/damage/blood.tga
+ displacement 0 0 0 0
+
+ velocityType normal
+
+ velocityDir linear
+
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .75 0
+ rotation 0 ~-15 ~15
+ bounce 0.0
+ color 0 { 0.8 0.2 0.2 } -
+
+ lifeTime 400~100
+ }
+
+ particle
+ {
+ shader sync gfx/damage/blood.tga
+ displacement 0 0 0 0
+
+ velocityType normal
+
+ velocityDir linear
+
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .75 0
+ rotation 0 ~-15 ~15
+ bounce 0.0
+ color 0 { 0.8 0.2 0.2 } -
+
+ lifeTime 400~100
+ }
+
+ count 2
+ delay 0
+ period 0 - 0
+ }
+
+ thirdPersonOnly
+}
+
+humanBuildableBleedPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25
+ displacement 0 0 0 0
+
+ velocityType normal
+
+ velocityDir linear
+
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .75 0
+ rotation 0 ~-15 ~15
+ bounce 0.0
+ color 0 { 0.8 0.2 0.2 } -
+
+ lifeTime 200~50
+ }
+
+ particle
+ {
+ shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25
+ displacement 0 0 0 0
+
+ velocityType normal
+
+ velocityDir linear
+
+ velocityMagnitude 15
+ velocity 0 0 0 ~35
+
+ accelerationType static
+ accelerationDir linear
+ acceleration 0 0 -1 ~5
+ accelerationMagnitude 25
+
+ radius 0 5 8
+ alpha 250 .75 0
+ rotation 0 ~-15 ~15
+ bounce 0.0
+ color 0 { 0.8 0.2 0.2 } -
+
+ lifeTime 200~50
+ }
+
+ count 2
+ delay 0
+ period 0 - 0
+ }
+
+
+}
+
+disconnectPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/bubble
+ displacement 0 0 0 ~60
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 15
+ velocity 0 0 1 ~90
+
+ radius 0 24 32
+ alpha 0 1.0 -
+
+ lifeTime 1000~300
+ }
+
+ count 3
+ delay 0
+ period 0 - 0
+ }
+}
diff --git a/assets/scripts/ui.shader b/assets/scripts/ui.shader
new file mode 100755
index 0000000..a99d4f7
--- /dev/null
+++ b/assets/scripts/ui.shader
@@ -0,0 +1,19 @@
+ui/assets/neutral/squad_h
+{
+ nopicmip
+ {
+ map ui/assets/neutral/squad_h.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
+
+ui/assets/neutral/squad_v
+{
+ nopicmip
+ {
+ map ui/assets/neutral/squad_v.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbgen vertex
+ }
+}
diff --git a/assets/scripts/weapons.particle b/assets/scripts/weapons.particle
new file mode 100755
index 0000000..5851fc6
--- /dev/null
+++ b/assets/scripts/weapons.particle
@@ -0,0 +1,890 @@
+models/weapons/hive/missilePS
+{
+ ejector
+ {
+ particle
+ {
+ shader 20 models/weapons/hive/sprite1.tga models/weapons/hive/sprite2.tga
+
+ displacement 0 0 0 ~4.0
+
+ parentVelocityFraction 0.5
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 1 ~180
+
+ accelerationType cent
+ accelerationDir point
+ accelerationMagnitude 2000
+
+ rotation 0 -20.0~40.0 -20.0~40.0
+ radius 0 2.0 2.0
+ alpha 0 1.0 0.0
+ bounce 0.5
+
+ lifeTime 4000
+ }
+
+ count infinite
+ delay 0
+ period 100 - ~0%
+ }
+}
+
+models/weapons/rifle/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/rifle/verysmallrock
+
+ displacement 0 0 0 ~4.0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 0 ~20
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 600
+ acceleration 0 0 -1 0
+
+ radius 0 1.0 1.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0.0
+
+ lifeTime 350
+ }
+
+ count 0~2
+ delay ~100
+ period 0 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke
+
+ displacement 0 0 0 ~1.0
+ normalDisplacement 3.0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 20
+ velocity 0 0 0 0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 1 0
+
+ radius 0 4.0 6.0
+ alpha 0 0.5 0.0
+ rotation 0 ~360 -
+ bounce 0.0
+
+ lifeTime 250
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ normalDisplacement 3.0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 0 0 ~160
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 600
+ acceleration 0 0 -1 0
+
+ radius 0 3.0 0.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0.0
+
+ lifeTime 200
+ }
+
+ count 0~1
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/rifle/muzzlePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke
+
+ displacement 0 0 0 ~0.0
+
+ parentVelocityFraction 0.9
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 20
+ velocity 0 0 0 0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 1 0
+
+ radius 0 2.0 4.0
+ alpha 0 0.4 0.0
+ rotation 0 ~360 -
+ bounce 0.0
+
+ lifeTime 200
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ model models/weapons/shells/rifle-shell.md3
+
+ displacement -5 -3 0 ~0.0
+
+ parentVelocityFraction 0.85
+
+ velocityType static_transform
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 -1 3 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 1.0 -
+ bounce 0.5
+
+ lifeTime 5000
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/shotgun/muzzlePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/smoke
+
+ displacement 0 0 0 ~0.0
+
+ parentVelocityFraction 0.9
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 20
+ velocity 0 0 0 0
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 1 0
+
+ radius 0 2.0 4.0
+ alpha 0 0.4 0.0
+ rotation 0 ~360 -
+ bounce 0.0
+
+ lifeTime 200
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ model models/weapons/shells/shotgun-shell.md3
+
+ displacement -5 -3 0 ~0.0
+
+ parentVelocityFraction 0.85
+
+ velocityType static_transform
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 -1 3 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 1.0 -
+ bounce 0.5
+
+ lifeTime 5000
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/chaingun/muzzlePS
+{
+ ejector
+ {
+ particle
+ {
+ model models/weapons/shells/rifle-shell.md3
+
+ displacement -5 -3 0 ~0.0
+
+ parentVelocityFraction 0.85
+
+ velocityType static_transform
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 -1 3 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 1.0 -
+ bounce 0.5
+
+ lifeTime 5000
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/flamer/muzzlePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25
+ displacement 0 0 0 ~0.0
+
+ parentVelocityFraction 0.65
+
+ velocityType cent
+ velocityDir linear
+ velocityMagnitude 500
+ velocity 0 0 0 ~0
+
+ physicsRadius 15
+
+ radius 0 4.0 40.0
+ alpha 0 1.0 1.0
+ rotation 0 ~360 -
+ bounce 0.1
+
+ lifeTime 800
+ }
+
+ count infinite
+ delay 0
+ period 15 - ~0%
+ }
+}
+
+models/weapons/level1upg/muzzlePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/poisoncloud
+
+ displacement 0 0 0 ~0.0
+
+ parentVelocityFraction 1.0
+
+ velocityType cent
+ velocityDir linear
+ velocityMagnitude 80
+ velocity 0 0 0 ~50
+
+ radius 0 10.0 25.0
+ alpha 0 0.5 0.0
+ rotation 0 ~360 -
+ bounce 1.0
+
+ lifeTime 800
+ }
+
+ count 20
+ delay 0
+ period 40 - ~0%
+ }
+}
+
+models/weapons/blaster/missilePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ displacement 0 0 0 ~2.0
+
+ parentVelocityFraction 0.5
+
+ radius 0 1.5 0.0
+ alpha 0 1.0 0.0
+ bounce 0.01
+
+ lifeTime 400
+ }
+
+ count infinite
+ delay 0
+ period 10 - ~0%
+ }
+}
+
+models/weapons/prifle/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/prifle/red_blob
+
+ radius 0 3.0 6.0
+ alpha 70 1.0 0.0
+ rotation 0 ~360 -
+
+ lifeTime 140
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/prifle/missilePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/prifle/red_blob
+
+ parentVelocityFraction 0.8
+
+ radius 0 2.0 1.5
+ alpha 0 0.8 0.0
+ bounce 0.01
+
+ lifeTime 400
+ }
+
+ count infinite
+ delay 0
+ period 10 - ~0%
+ }
+}
+
+models/weapons/mdriver/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/mdriver/green_particle
+
+ displacement 0 0 0 ~2.0
+
+ normalDisplacement 10.0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 400
+ velocity 0 0 0 ~80
+
+ accelerationType normal
+ accelerationDir linear
+ accelerationMagnitude 200
+ acceleration 0 0 1 ~360
+
+ radius 0 6.0 4.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 1000
+ }
+
+ count 10
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/lcannon/missilePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ displacement 0 0 0 ~3.0
+
+ parentVelocityFraction 1.0
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 120
+ velocity 0 0 1 ~360
+
+ radius 0 1.0 5.0
+ alpha 0 1.0 0.0
+ bounce 0.1
+
+ lifeTime 1000
+ }
+
+ count infinite
+ delay 0
+ period 50 - ~0%
+ }
+}
+
+models/weapons/lcannon/secondaryMissilePS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ displacement 0 0 0 ~3.0
+
+ parentVelocityFraction 0.5
+
+ radius 0 2.0 0.0
+ alpha 0 1.0 0.0
+ bounce 0.1
+
+ lifeTime 400
+ }
+
+ count infinite
+ delay 0
+ period 25 - ~0%
+ }
+}
+
+models/weapons/lcannon/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ radius 0 8.0 16.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+
+ scaleWithCharge 0.10
+
+ lifeTime 250
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ displacement 0 0 0 ~2.0
+
+ normalDisplacement 10.0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 200
+ velocity 0 0 0 ~160
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 -1 0
+
+ radius 0 1.0 5.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0.8
+
+ lifeTime 2000~1000
+ }
+
+ count 30
+ delay 0
+ period 0 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/lcannon/primary
+
+ displacement 0 0 0 ~10.0
+
+ normalDisplacement 15.0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 0 ~160
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 150
+ acceleration 0 0 -1 0
+
+ radius 0 1.0 0.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 1.0
+
+ scaleWithCharge 0.10
+
+ lifeTime 1000~1000
+ }
+
+ count 6
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/lcannon/secondaryImpactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ radius 0 8.0 16.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+
+ lifeTime 250
+ }
+
+ count 1
+ delay 0
+ period 0 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/blaster/orange_particle
+
+ displacement 0 0 0 ~2.0
+
+ normalDisplacement 10.0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 150
+ velocity 0 0 0 ~160
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 -1 0
+
+ radius 0 1.0 5.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0.8
+
+ lifeTime 2000~1000
+ }
+
+ count 10
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/psaw/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/psaw/blue_particle
+
+ displacement 0 0 0 ~2.0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 -1 ~25
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 ~10
+
+ radius 0 1.0~2.0 3.0~2.0
+ alpha 0 1.0 1.0
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 1000
+ }
+
+ count 3
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/lasgun/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/lasgun/purple_particle
+
+ displacement 0 0 0 ~2.0
+ normalDisplacement 7.0
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 100
+ velocity 0 0 0 ~90
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 600
+ acceleration 0 0 -1 ~10
+
+ radius 0 3.0~2.0 0.0
+ alpha 0 1.0 1.0
+ rotation 0 ~360 -
+ bounce 0.5
+
+ lifeTime 500
+ }
+
+ count 3
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/grenade/impactTrailPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25
+
+ displacement 0 0 0 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 30
+ velocity 0 0 -1 ~0
+
+ radius 0 30.0 10.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 500
+ }
+
+ count 5
+ delay 0
+ period 40 - 0
+ }
+}
+
+models/weapons/grenade/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync flame3 flame4 flame5 flame6 flame7 flame8 flame9 flame10 flame11 flame12 flame13 flame14 flame15 flame16 flame17 flame18 flame19 flame20 flame21 flame22 flame23 flame24 flame25
+
+ displacement 0 0 11 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 200~75%
+ velocity 0 0 1 ~10
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 300
+ acceleration 0 0 -1 0
+
+ radius 0 10.0 40.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 500
+
+ childSystem models/weapons/grenade/impactTrailPS
+ }
+
+ count 5
+ delay 0
+ period 10 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/grenade/flare_01
+
+ displacement 0 0 8 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 10~50%
+ velocity 0 0 1 ~60
+
+ radius 0 100.0 200.0
+ alpha 250 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0.0
+
+ lifeTime 300
+ }
+
+ count 1
+ delay 0
+ period 10 - ~0%
+ }
+
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/sprites/spark
+
+ displacement 0 0 8 ~0
+
+ velocityType static
+ velocityDir linear
+ velocityMagnitude 700~3%
+ velocity 0 0 1 ~180
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 1 0
+
+ radius 0 10.0 2.0
+ alpha 0 1.0 0.0
+ rotation 0 ~360 -
+ bounce 0
+
+ lifeTime 300
+ }
+
+ count 150
+ delay 0
+ period 0 - ~0%
+ }
+}
+
+models/weapons/level3upg/impactPS
+{
+ ejector
+ {
+ particle
+ {
+ shader sync gfx/level3upg/barb_splash
+
+ displacement 0 0 0 ~8
+
+ velocityType normal
+ velocityDir linear
+ velocityMagnitude 800
+ velocity 0 0 1 ~80
+
+ accelerationType static
+ accelerationDir linear
+ accelerationMagnitude 800
+ acceleration 0 0 -1 0
+
+ radius 0 3.0~2.0 0.0
+ alpha 0 1.0 1.0
+ rotation 0 ~360 -
+ bounce 0.4~100%
+
+ lifeTime 175
+ }
+
+ count 12
+ delay 0
+ period 0 - ~0%
+ }
+}
diff --git a/assets/scripts/weapons.shader b/assets/scripts/weapons.shader
new file mode 100755
index 0000000..960aecb
--- /dev/null
+++ b/assets/scripts/weapons.shader
@@ -0,0 +1,93 @@
+gfx/blaster/orange_particle
+{
+ cull disable
+ {
+ map gfx/blaster/orange_particle.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ alphaGen vertex
+ rgbGen vertex
+ }
+}
+
+gfx/mdriver/green_particle
+{
+ cull disable
+ {
+ map gfx/mdriver/green_particle.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ rgbGen vertex
+ alphaGen vertex
+ }
+}
+
+gfx/mdriver/trail
+{
+ nomipmaps
+ cull disable
+ {
+ map gfx/mdriver/trail.tga
+ blendFunc blend
+ }
+}
+
+gfx/psaw/blue_particle
+{
+ cull disable
+ {
+ map gfx/psaw/blue_particle.jpg
+ blendFunc GL_ONE GL_ONE
+ alphaGen vertex
+ rgbGen vertex
+ }
+}
+
+gfx/rifle/verysmallrock
+{
+ cull disable
+ {
+ map gfx/rifle/verysmallrock.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ alphaGen vertex
+ rgbGen vertex
+ }
+}
+
+gfx/prifle/red_blob
+{
+ cull disable
+ {
+ map gfx/prifle/red_blob.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ alphaGen vertex
+ }
+}
+
+gfx/prifle/red_streak
+{
+ nomipmaps
+ cull disable
+ {
+ map gfx/prifle/red_streak.tga
+ blendFunc GL_SRC_ALPHA GL_ONE_MINUS_SRC_ALPHA
+ alphaGen vertex
+ }
+}
+
+gfx/lcannon/primary
+{
+ cull disable
+ {
+ animmap 24 gfx/lcannon/primary_1.jpg gfx/lcannon/primary_2.jpg gfx/lcannon/primary_3.jpg gfx/lcannon/primary_4.jpg
+ blendFunc GL_ONE GL_ONE
+ }
+}
+
+gfx/lasgun/purple_particle
+{
+ cull disable
+ {
+ map gfx/lasgun/purple_particle.tga
+ blendFunc GL_ONE GL_ONE
+ }
+}
+
diff --git a/assets/sound/buildables/barricade/sound.cfg b/assets/sound/buildables/barricade/sound.cfg
new file mode 100755
index 0000000..caa49e4
--- /dev/null
+++ b/assets/sound/buildables/barricade/sound.cfg
@@ -0,0 +1,14 @@
+1 0 //construct1.wav
+0 0 //construct2.wav
+0 0 //idle1.wav
+0 0 //idle2.wav
+0 0 //idle3.wav
+1 0 //attack1.wav
+1 0 //attack2.wav
+0 0 //spawn1.wav
+0 0 //spawn2.wav
+1 0 //pain1.wav
+1 0 //pain2.wav
+0 0 //destroy1.wav
+0 0 //destroy2.wav
+0 0 //destroyed.wav
diff --git a/assets/ui/assets/alien/buildstat.cfg b/assets/ui/assets/alien/buildstat.cfg
new file mode 100755
index 0000000..318d401
--- /dev/null
+++ b/assets/ui/assets/alien/buildstat.cfg
@@ -0,0 +1,37 @@
+// config for the building status indicators that builders see
+// NOTES:
+// * all characters (text/icons) are square
+// * character size is derived totally from frameHeight and vertialMargin
+// * healthPadding is NOT used compensated for in the margins
+
+frameShader "ui/assets/alien/buildstat/frame"
+frameWidth 150
+frameHeight 30
+
+healthPadding 2
+healthSevereColor 0.24 0.02 0.02 1
+healthHighColor 0.32 0.04 0.04 1
+healthElevatedColor 0.40 0.06 0.06 1
+healthGuardedColor 0.48 0.08 0.08 1
+healthLowColor 0.56 0.10 0.10 1
+
+// this gets drawn over frame and health, but numbers and icons go on top of it
+overlayShader "ui/assets/alien/buildstat/overlay"
+overlayWidth 156
+overlayHeight 36
+
+// PERCENT of frameHeight to use for top/bottom margin of icons/text
+// value is for total of top and bottom margins
+// valid values between 0.0 and 1.0
+verticalMargin 0.5
+
+// number of CHARS worth of space that should be used for left/right margins
+// value is for one side only
+// char width is determined by frameHeight and verticalMargin
+horizontalMargin 1.0
+
+markedShader "ui/assets/alien/buildstat/mark"
+noPowerShader "ui/assets/alien/buildstat/nopower"
+
+backColor 1.0 1.0 1.0 1
+foreColor 0.0 0.0 0.0 1
diff --git a/assets/ui/assets/human/buildstat.cfg b/assets/ui/assets/human/buildstat.cfg
new file mode 100755
index 0000000..c66b618
--- /dev/null
+++ b/assets/ui/assets/human/buildstat.cfg
@@ -0,0 +1,39 @@
+// config for the building status indicators that builders see
+// NOTES:
+// * all characters (text/icons) are square
+// * character size is derived totally from frameHeight and vertialMargin
+// * healthPadding is NOT used compensated for in the margins
+
+frameShader "ui/assets/human/buildstat/frame"
+frameWidth 150
+frameHeight 30
+
+healthPadding 2
+
+// Homeworld Security Advisory System
+healthSevereColor 0.83 0.03 0.02 1
+healthHighColor 0.84 0.48 0.03 1
+healthElevatedColor 0.82 0.82 0.00 1
+healthGuardedColor 0.19 0.65 0.00 1
+healthLowColor 0.27 0.49 0.55 1
+
+// this gets drawn over frame and health, but numbers and icons go on top of it
+overlayShader ""
+overlayWidth 160
+overlayHeight 40
+
+// PERCENT of frameHeight to use for top/bottom margin of icons/text
+// value is for total of top and bottom margins
+// valid values between 0.0 and 1.0
+verticalMargin 0.5
+
+// number of CHARS worth of space that should be used for left/right margins
+// value is for one side only
+// char width is determined by frameHeight and verticalMargin
+horizontalMargin 1.0
+
+markedShader "ui/assets/human/buildstat/mark"
+noPowerShader "ui/assets/human/buildstat/nopower"
+
+backColor 1.0 1.0 1.0 1
+foreColor 0.0 0.0 0.0 1
diff --git a/assets/ui/connect.menu b/assets/ui/connect.menu
new file mode 100755
index 0000000..108e33c
--- /dev/null
+++ b/assets/ui/connect.menu
@@ -0,0 +1,14 @@
+#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "Connect"
+ background "gfx/2d/load_screen"
+ rect 0 0 640 480
+ fullScreen MENU_FALSE
+ visible MENU_FALSE
+ style WINDOW_STYLE_SHADER
+ aspectBias ASPECT_NONE
+ }
+}
diff --git a/assets/ui/createfavorite.menu b/assets/ui/createfavorite.menu
new file mode 100755
index 0000000..c66ecff
--- /dev/null
+++ b/assets/ui/createfavorite.menu
@@ -0,0 +1,115 @@
+#include "ui/menudef.h"
+
+{
+ \\ CREATE FAVORITE POPUP MENU \\
+
+#define BUTT_W 45
+#define BUTT_H 35
+#define BORDER 10
+#define INPUT_H 20
+#define W 250
+#define H ((3*BORDER)+(2*INPUT_H)+BUTT_H)
+
+ menuDef
+ {
+ name "createfavorite_popmenu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onESC
+ {
+ close createfavorite_popmenu
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ // ENTER NAME AND ADDRESS //
+
+ itemDef
+ {
+ name nameEntry
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ maxchars 40
+ text "Name:"
+ textscale .4
+ cvar "ui_favoriteName"
+ rect BORDER BORDER (W-(2*BORDER)) INPUT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name addressEntry
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ maxchars 40
+ text "Address:"
+ textscale .4
+ cvar "ui_favoriteAddress"
+ rect BORDER ((2*BORDER)+INPUT_H) (W-(2*BORDER)) INPUT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name yes
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript CreateFavorite;
+ close createfavorite_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name yes
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close createfavorite_popmenu
+ }
+ }
+ }
+}
diff --git a/assets/ui/createserver.menu b/assets/ui/createserver.menu
new file mode 100755
index 0000000..f64ba1d
--- /dev/null
+++ b/assets/ui/createserver.menu
@@ -0,0 +1,499 @@
+#include "ui/menudef.h"
+
+{
+ \\ Server Creation \\
+
+#define W 640
+#define H 480
+#define BORDER 10
+
+#define PREVIEW_W 300
+#define PREVIEW_H 225
+#define PREVIEW_X BORDER
+#define PREVIEW_Y BORDER
+
+#define BC_W (W-(2*BORDER))
+#define BC_H 50
+#define BC_X BORDER
+#define BC_Y (H-(BC_H+BORDER))
+#define ARROW_W 50
+#define ARROW_H BC_H
+
+#define MAPS_W PREVIEW_W
+#define MAPS_H (H-((4*BORDER)+PREVIEW_H+BC_H))
+#define MAPS_X BORDER
+#define MAPS_Y ((2*BORDER)+PREVIEW_H)
+
+#define OPTIONS_W (W-((3*BORDER)+PREVIEW_W))
+#define OPTIONS_H (H-((3*BORDER)+BC_H))
+#define OPTIONS_X ((2*BORDER)+PREVIEW_W)
+#define OPTIONS_Y BORDER
+#define ELEM_OFF_Y 20
+#define ELEM_OFF_X -135
+#define ELEM_H 21
+
+ menuDef
+ {
+ name "createserver"
+ visible MENU_FALSE
+ fullscreen MENU_TRUE
+ rect 0 0 W H
+ focusColor 1 .75 0 1
+ outOfBoundsClick
+ style WINDOW_STYLE_EMPTY
+ aspectBias ASPECT_NONE
+
+ onOpen
+ {
+ uiScript loadArenas;
+ hide accept_alt;
+ show accept;
+ hide back_alt;
+ show back
+ }
+
+ onEsc
+ {
+ close createserver
+ }
+
+ itemDef
+ {
+ name background
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ // map selection
+
+ itemDef
+ {
+ name mappreview
+ style WINDOW_STYLE_EMPTY
+ ownerdraw UI_SELECTEDMAPPREVIEW
+ rect PREVIEW_X PREVIEW_Y PREVIEW_W PREVIEW_H
+ border WINDOW_BORDER_FULL
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name maplist
+ rect MAPS_X MAPS_Y MAPS_W MAPS_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_MAPS
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ columns 1
+ 2 190 ALIGN_LEFT
+ }
+
+
+ // SETTINGS //
+
+ itemDef
+ {
+ name window
+ rect OPTIONS_X OPTIONS_Y OPTIONS_W OPTIONS_H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_EDITFIELD
+ text "Host Name:"
+ cvar "sv_hostname"
+ maxChars 40
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(0*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name normal
+ type ITEM_TYPE_NUMERICFIELD
+ text "Time Limit:"
+ cvar "timelimit"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(1*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ maxchars 4
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_NUMERICFIELD
+ text "Maximum Players:"
+ cvar "sv_maxclients"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(2*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ maxchars 4
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_YESNO
+ text "Require Password:"
+ cvar "g_needpassword"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(3*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_EDITFIELD
+ text "Password:"
+ cvar "g_password"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(4*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ maxchars 10
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+
+
+ itemDef
+ {
+ name normal
+ type ITEM_TYPE_YESNO
+ text "Pure Server:"
+ cvar "sv_pure"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(6*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name normal
+ type ITEM_TYPE_MULTI
+ text "Dedicated:"
+ // dedicated is a special cvar in that as soon as it is set,
+ // the game goes to console only so the ui catches this one specifically
+ cvar "ui_dedicated"
+ cvarFloatList { "No" 0 "LAN" 1 "Internet" 2 }
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(7*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_YESNO
+ text "Auto Download:"
+ cvar "sv_allowdownload"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(8*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_YESNO
+ text "Enable Voting:"
+ cvar "g_allowvote"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(9*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_NUMERICFIELD
+ text "Minimum Ping:"
+ cvar "sv_minping"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(11*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ maxchars 4
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_NUMERICFIELD
+ text "Maximum Ping:"
+ cvar "sv_maxping"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(12*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ maxchars 4
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_YESNO
+ text "Synchronous Client:"
+ cvar "g_synchronousclients"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(13*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_NUMERICFIELD
+ text "Max Rate:"
+ cvar "sv_maxrate"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(14*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ maxchars 4
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_NUMERICFIELD
+ text "Zombie Time:"
+ cvar "sv_zombietime"
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(15*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ maxchars 4
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name expert
+ type ITEM_TYPE_NUMERICFIELD
+ text "Reconnect Limit:"
+ cvar "sv_reconnectlimit"
+ maxchars 4
+ rect (OPTIONS_X+BORDER) (OPTIONS_Y+ELEM_OFF_Y+(16*ELEM_H)) (OPTIONS_W-(2*BORDER)) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx ELEM_OFF_X
+ textscale .36
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+
+
+ // BACK BAR //
+
+ itemDef
+ {
+ name back
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/backarrow.tga"
+ rect BC_X BC_Y ARROW_H ARROW_W
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close createserver
+ }
+
+ mouseEnter
+ {
+ hide back;
+ show back_alt
+ }
+ }
+
+ itemDef
+ {
+ name back_alt
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/backarrow_alt.tga"
+ rect BC_X BC_Y ARROW_H ARROW_W
+ aspectBias ALIGN_LEFT
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ type ITEM_TYPE_BUTTON
+
+ text "Back"
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx ARROW_W
+ textscale .6
+
+ mouseExit
+ {
+ hide back_alt;
+ show back
+ }
+
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close createserver
+ }
+ }
+
+
+
+
+ itemDef
+ {
+ name accept
+ style WINDOW_STYLE_SHADER
+ rect ((BC_X+BC_W)-ARROW_W) BC_Y ARROW_H ARROW_W
+ aspectBias ALIGN_RIGHT
+ background "ui/assets/forwardarrow.tga"
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ mouseEnter
+ {
+ hide accept;
+ show accept_alt
+ }
+
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript StartServer
+ }
+ }
+
+ itemDef
+ {
+ name accept_alt
+ style WINDOW_STYLE_SHADER
+ rect ((BC_X+BC_W)-ARROW_W) BC_Y ARROW_H ARROW_W
+ aspectBias ALIGN_RIGHT
+ background "ui/assets/forwardarrow_alt.tga"
+ backcolor 0 0 0 0
+ type ITEM_TYPE_BUTTON
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+
+ text "Create"
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx -ARROW_W
+ textscale .6
+
+ mouseExit
+ {
+ hide accept_alt;
+ show accept
+ }
+
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript StartServer
+ }
+ }
+ }
+}
diff --git a/assets/ui/demo.menu b/assets/ui/demo.menu
new file mode 100755
index 0000000..bec3a05
--- /dev/null
+++ b/assets/ui/demo.menu
@@ -0,0 +1,108 @@
+#include "ui/menudef.h"
+
+{
+ \\ DEMO \\
+
+#define W 300
+#define H 240
+#define BUTT_W 45
+#define BUTT_H 35
+#define BORDER 10
+
+ menuDef
+ {
+ name "demo"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onEsc
+ {
+ close demo
+ }
+ onOpen
+ {
+ uiScript loadDemos
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name demolist
+ rect BORDER BORDER (W-(2*BORDER)) (H-(BUTT_H+BORDER))
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_DEMOS
+ textalign 3
+ textaligny 14
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleClick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RunDemo
+ }
+ }
+
+ itemDef
+ {
+ name play
+ text "Play"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close demo;
+ uiScript RunDemo
+ }
+ }
+
+ itemDef
+ {
+ name cancel
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close demo
+ }
+ }
+ }
+}
diff --git a/assets/ui/download.menu b/assets/ui/download.menu
new file mode 100755
index 0000000..dc8247f
--- /dev/null
+++ b/assets/ui/download.menu
@@ -0,0 +1,167 @@
+#include "ui/menudef.h"
+
+{
+ \\ DOWNLOAD \\
+
+ menuDef
+ {
+ name "download_popmenu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect 158 80 320 320
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onClose { }
+ onOpen
+ {
+ uiScript loadServerInfo;
+ }
+ onESC
+ {
+ play "sound/misc/menu1.wav";
+ close download_popmenu;
+ uiScript downloadIgnore;
+ }
+
+ itemDef
+ {
+ name window
+ rect 10 15 300 320
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name downloadinfo
+ rect 0 50 320 20
+ type ITEM_TYPE_TEXT
+ text "Download"
+ textalign ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_SHADOWEDMORE
+ textscale .333
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name downloadinfo
+ rect 60 80 200 270
+ type ITEM_TYPE_TEXT
+ style WINDOW_STYLE_FILLED
+ textstyle ITEM_TEXTSTYLE_SHADOWED
+ wrapped
+ cvar "com_downloadPromptText"
+ textalign ALIGN_CENTER
+ textvalign VALIGN_TOP
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+
+ // BUTTON //
+
+
+ itemDef
+ {
+ name curl
+ text "Download from website"
+ textscale .25
+ group grpControlbutton
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 60 250 200 15
+ textalign ALIGN_CENTER
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible MENU_TRUE
+ cvarTest "ui_serverinfo_allowdl"
+ showCvar { 1 5 9 13 }
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close download_popmenu;
+ uiScript downloadCURL;
+ }
+ }
+
+ itemDef
+ {
+ name udp
+ text "Download from server"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpControlbutton
+ style WINDOW_STYLE_EMPTY
+ rect 60 265 200 15
+ textalign ALIGN_CENTER
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible MENU_TRUE
+ cvarTest "ui_serverinfo_allowdl"
+ showCvar { 1 3 9 11 }
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close download_popmenu;
+ uiScript downloadUDP;
+ }
+ }
+
+ itemDef
+ {
+ name ignore
+ text "Ignore"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpControlbutton
+ style WINDOW_STYLE_EMPTY
+ rect 60 280 200 15
+ textalign ALIGN_CENTER
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible MENU_TRUE
+ cvarTest "sv_pure"
+ hideCvar { 1 }
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close download_popmenu;
+ uiScript downloadIgnore;
+ }
+ }
+
+ itemDef
+ {
+ name disconnect
+ text "Disconnect"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpControlbutton
+ style WINDOW_STYLE_EMPTY
+ rect 60 295 200 15
+ textalign ALIGN_CENTER
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close download_popmenu;
+ exec "disconnect";
+ }
+ }
+ }
+}
diff --git a/assets/ui/drop.menu b/assets/ui/drop.menu
new file mode 100755
index 0000000..162a019
--- /dev/null
+++ b/assets/ui/drop.menu
@@ -0,0 +1,122 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 320
+#define H 320
+#define BORDER 10
+
+#define BUTT_H 25
+#define BUTT_W 65
+
+#define INFO_W (W-(2*BORDER))
+#define INFO_H (H-((4*BORDER)+(2*BUTT_H)))
+#define INFO_X BORDER
+#define INFO_Y ((2*BORDER)+BUTT_H)
+
+ menuDef
+ {
+ name "drop_popmenu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onClose { uiScript clearError }
+ onESC
+ {
+ play "sound/misc/menu1.wav";
+ close drop_popmenu;
+ open main
+ }
+
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name dropinfo
+ rect BORDER BORDER INFO_W BUTT_H
+ type ITEM_TYPE_TEXT
+ text "Disconnected"
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name dropinfo
+ rect INFO_X INFO_Y INFO_W INFO_H
+ type ITEM_TYPE_TEXT
+ style WINDOW_STYLE_FILLED
+ wrapped
+ cvar "com_errorMessage"
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .33
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name exit
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close drop_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name reconnect
+ text "Reconnect"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible MENU_TRUE
+ action
+ {
+ close drop_popmenu;
+ exec "reconnect";
+ }
+ }
+ }
+}
+
+
diff --git a/assets/ui/error.menu b/assets/ui/error.menu
new file mode 100755
index 0000000..2c54d2d
--- /dev/null
+++ b/assets/ui/error.menu
@@ -0,0 +1,102 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 320
+#define H 320
+#define BORDER 10
+
+#define BUTT_H 25
+#define BUTT_W 65
+
+#define INFO_W (W-(2*BORDER))
+#define INFO_H (H-((4*BORDER)+(2*BUTT_H)))
+#define INFO_X BORDER
+#define INFO_Y ((2*BORDER)+BUTT_H)
+
+ menuDef
+ {
+ name "error_popmenu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onClose { uiScript clearError }
+ onESC
+ {
+ play "sound/misc/menu1.wav";
+ close error_popmenu;
+ open main
+ }
+
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name dropinfo
+ rect BORDER BORDER INFO_W BUTT_H
+ type ITEM_TYPE_TEXT
+ text "Error"
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name dropinfo
+ rect INFO_X INFO_Y INFO_W INFO_H
+ type ITEM_TYPE_TEXT
+ style WINDOW_STYLE_FILLED
+ wrapped
+ cvar "com_errorMessage"
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .33
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name exit
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close error_popmenu
+ }
+ }
+ }
+}
+
+
diff --git a/assets/ui/findplayer.menu b/assets/ui/findplayer.menu
new file mode 100755
index 0000000..09d715a
--- /dev/null
+++ b/assets/ui/findplayer.menu
@@ -0,0 +1,173 @@
+#include "ui/menudef.h"
+
+{
+ \\ FIND PLAYER POPUP MENU \\
+
+#define W 400
+#define H 400
+#define BUTT_W 45
+#define BUTT_H 35
+#define BORDER 10
+#define LIST_W (W-(2*BORDER))
+#define LIST_DW (LIST_W-40)
+#define LEFT_C 0.13
+#define RIGHT_C 0.61
+#define SEARCH_H 30
+#define SERVERS_H 105
+
+ menuDef
+ {
+ name "findplayer_popmenu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onClose { }
+ onOpen
+ {
+ uiScript FindPlayer
+ }
+
+ onESC
+ {
+ close findplayer_popmenu
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name namefield
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Name:"
+ cvar "ui_findplayer"
+ maxChars 20
+ rect BORDER BORDER (W-((2*BORDER)+BUTT_W)) SEARCH_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textscale .3
+ outlinecolor .2 .2 .2 .5
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ border WINDOW_BORDER_NONE
+ bordercolor 0 0 0 0
+ action { ui_script FindPlayer }
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name search
+ text "Search"
+ textscale .25
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) BORDER BUTT_W SEARCH_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ ui_script FindPlayer
+ }
+ }
+
+
+ itemDef
+ {
+ name serverNameList
+ rect BORDER ((2*BORDER)+SEARCH_H) LIST_W SERVERS_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 16
+ textscale .25
+ outlinecolor .2 .2 .2 .5
+ border WINDOW_BORDER_FULL
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_FINDPLAYER
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name serverInfoList
+ rect BORDER ((3*BORDER)+SEARCH_H+SERVERS_H) LIST_W (H-(SEARCH_H+SERVERS_H+BUTT_H+(3*BORDER)))
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 16
+ textscale .25
+ border WINDOW_BORDER_FULL
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_SERVERSTATUS
+ notselectable
+ visible MENU_TRUE
+ columns 4
+ 0 ((2*LEFT_C)*LIST_DW) ALIGN_LEFT
+ (LEFT_C*LIST_DW) (LEFT_C*LIST_DW) ALIGN_LEFT
+ ((2*LEFT_C)*LIST_DW) (LEFT_C*LIST_DW) ALIGN_LEFT
+ ((1-RIGHT_C)*LIST_DW) (RIGHT_C*LIST_DW) ALIGN_LEFT
+ }
+
+ // BUTTON //
+
+ itemDef
+ {
+ name join
+ text "Join"
+ textscale .25
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action { ui_script FoundPlayerJoinServer }
+ }
+
+ itemDef
+ {
+ name close
+ text "Close"
+ textscale .25
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close findplayer_popmenu
+ }
+ }
+ }
+}
+
+
diff --git a/assets/ui/help.txt b/assets/ui/help.txt
new file mode 100755
index 0000000..bd4c6a3
--- /dev/null
+++ b/assets/ui/help.txt
@@ -0,0 +1,135 @@
+{
+ "^3Welcome^7"
+ {
+ "In this section you will find a summary of major changes since 1.1. It is "
+ "not a complete list. In general, all things have been tweaked for balance in "
+ "some way.\n\n"
+ "We hope you enjoy playing. Your support gives us valuable data and "
+ "feedback as we work to bring you Tremulous 1.2. Please report all bugs. Thank "
+ "you."
+ }
+ "Alien Healing"
+ {
+ "The most important change for Alien players to know is that their healing "
+ "rate is slower away from creep. To counter this, healing near Boosters "
+ "and Basilisks is greatly accelerated.\n\n"
+ "Watch the health cross icon on your "
+ "HUD to see what your healing rate is. If the icon glows, you are on "
+ "creep. If you are near a booster or basilisk, you will see two "
+ "(2X healing) or four (3X healing) barbs around the health cross."
+ }
+ "Build-point Changes"
+ {
+ "Structures destroyed by enemy players will not immediately become available "
+ "for reuse, but instead enter a queue. Build points will gradually leave the "
+ "queue to become available again, at a rate proportional to the amount of "
+ "points in the queue.\n\n Repeaters can be built at any stage and come with 20 "
+ "BP that can only be used nearby to facilitate making small outposts. Aliens "
+ "do not have a structure that provides additional buildpoints, but they have 150 "
+ "overall BP to compensate."
+ }
+ "Marked Deconstruction"
+ {
+ "The deconstruction method has changed. Buildables are no longer instantly "
+ "deconstructed. Instead, a deconstruct mark appears on the health bar. "
+ "Go ahead and build a new buildable somewhere else and the old one will "
+ "be removed automatically. Buildables that are about to be removed by "
+ "constructing the selected buildable glow red."
+ }
+ "Alien Buildables"
+ {
+ "Nearly useless in 1.1, Barricades now have more health, are cheaper to "
+ "build, and will shrink to allow Aliens to pass over them. Acid tubes "
+ "will fire from behind barricades, providing a formidable defense. "
+ "Experiment with blocking off hallways and building staged defenses, but "
+ "keep in mind that low ceilings will prevent Tyrants from returning inside "
+ "the base. Hives are also much improved to become worth building in stage 3."
+ }
+ "Human Buildables"
+ {
+ "Turrets now have a small spin up delay before firing, but they have "
+ "increased range and damage output.\n\n"
+ "To protect against small Aliens getting inside "
+ "the base, build Tesla Generators at Stage 3. Tesla Generators no longer "
+ "require the Defense Computer to function. Instead, the Defense Computer "
+ "will automatically repair Human buildables. Tesla Generators can fire "
+ "over turrets. "
+ }
+ "Human Weapons"
+ {
+ "Most of the human projeciles have a small volume now, making them more "
+ "effective against smaller targets.\n"
+ "The Lucifer Cannon projectile can be fired faster but now takes longer "
+ "to charge. You will be able to hear your teammates overcharge "
+ "their Lucifer Cannon.\n"
+ "The Flamer projectile now gains more of the velocity of its wielder, "
+ "making it easier to chase down aliens without burning yourself to a "
+ "crisp. Other weapons also have smaller changes."
+ }
+ "Lag Correction"
+ {
+ "While the Tremulous implementation of Neil Toronto's unlagged is "
+ "becoming widely accepted, we also implement client-side improvements "
+ "not possible in 1.1 servers. For those who insist on leading their "
+ "attacks, setting cg_unlagged to 0 will disable backward reconcilliation "
+ "on your hitscan weapons."
+ }
+ "Sprint"
+ {
+ "The sprint bind has changed from \"boost\" to \"+button8\"; you can bind it "
+ "in the options menu or in the console (\\bind shift +button8). Now, instead "
+ "of tapping the button while moving to start sprinting, just hold it down "
+ "and let go to stop. Alternately, you can change this to a toggle behavior "
+ "with cg_sprintToggle. \n\n"
+ }
+ "Dodge"
+ {
+ "Humans also have a new movement ability: dodge. You can bind it in the "
+ "options menu or the console (\\bind shift +button6). When strafing or "
+ "walking backwards, press the dodge key to make a quick, low jump. You "
+ "can bind this to the same key as sprint in the console with \\bind shift "
+ "\"+button8; +button6\""
+ }
+ "Headshots"
+ {
+ "Headshots on unarmored humans only cause 150% damage. Battlesuit and "
+ "helmet protection have been reduced so headshot damage remains the same."
+ }
+ "Dretch"
+ {
+ "Dretches are slightly faster and can now damage any human structure while it "
+ "is still building, but can no longer damage turrets and teslas that "
+ "have been completed."
+ }
+ "Basilisk"
+ {
+ "Basilisks provide regeneration boosting auras to nearby teammates: 2x "
+ "from regular and 3x from advanced basilisks. Their footsteps are also "
+ "silent for greater stealth."
+ }
+ "Marauder"
+ {
+ "The Adv. Marauder's electric shock damage is no longer split between its "
+ "targets, making it more effective against large groups of humans and "
+ "buildables. Targets are now chosen slightly differently: instead of "
+ "each new chain section originating from the previous target, it will "
+ "originate from the first target."
+ }
+ "Dragoon"
+ {
+ "Advanced dragoons are now available at stage 2. Both dragoons have the "
+ "range of their chomp attacks lowered, but their pounce attacks are much "
+ "more useful. Try to use pounce to pin a human to the wall before chomping."
+ }
+ "Tyrant"
+ {
+ "The Tyrant is now a weaker class as its health has been lowered and "
+ "turret damage is greater. To counter this, Tyrants can charge for longer "
+ "periods of time, hit targets multiple times in a single charge, "
+ "and crush any Humans they land on top of. Trample charge does not "
+ "instantly release when full but can be held for two seconds. Trample "
+ "attacks on a human pinned against a wall are VERY powerful. Use this to "
+ "your advantage. The Tyrant's healing aura has been removed; find a "
+ "booster or a basilisk to heal faster."
+ }
+}
diff --git a/assets/ui/hud.txt b/assets/ui/hud.txt
new file mode 100755
index 0000000..ed3aa43
--- /dev/null
+++ b/assets/ui/hud.txt
@@ -0,0 +1,11 @@
+// hud menu defs
+//
+{
+ loadMenu { "ui/tremulous_human_hud.menu" }
+ loadMenu { "ui/tremulous_alien_builder_hud.menu" }
+ loadMenu { "ui/tremulous_alien_general_hud.menu" }
+ loadMenu { "ui/tremulous_default_hud.menu" }
+
+ loadMenu { "ui/teamscore.menu" }
+ loadMenu { "ui/loading.menu" }
+}
diff --git a/assets/ui/ingame.menu b/assets/ui/ingame.menu
new file mode 100755
index 0000000..808287e
--- /dev/null
+++ b/assets/ui/ingame.menu
@@ -0,0 +1,140 @@
+#include "ui/menudef.h"
+{
+
+#define BUTT_BAR_X 25
+#define BUTT_BAR_Y 0
+#define BUTT_BAR_W 250
+#define BUTT_BAR_H 56
+#define BUTT_W (BUTT_BAR_W/4)
+#define BUTT_H BUTT_BAR_H
+#define BUTT_TEXT_S 20
+
+ assetGlobalDef
+ {
+ font "fonts/font" 26 // font
+ smallFont "fonts/smallfont" 20 // font
+ bigFont "fonts/bigfont" 34 // font
+ cursor "ui/assets/3_cursor3" // cursor
+ gradientBar "ui/assets/gradientbar2.tga" // gradient bar
+ itemFocusSound "sound/misc/menu2.wav" // sound for item getting focus (via keyboard or mouse )
+
+ fadeClamp 1.0 // sets the fadeup alpha
+ fadeCycle 1 // how often fade happens in milliseconds
+ fadeAmount 0.1 // amount to adjust alpha per cycle
+
+ shadowColor 0.1 0.1 0.1 0.25 // shadow color
+ }
+
+
+ \\ INGAME MENU \\
+
+ menuDef
+ {
+ name "ingame"
+ style WINDOW_STYLE_FILLED
+ visible MENU_FALSE
+ fullScreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect 0 0 1280 56
+ focusColor 1 .75 0 1
+ disableColor .5 .5 .5 1
+ backColor 0 0 0 1
+ aspectBias ALIGN_LEFT
+
+ onEsc
+ {
+ close ingame;
+ }
+
+ itemDef
+ {
+ name splashmodel
+ rect 0 -10 640 66
+ type ITEM_TYPE_MODEL
+ style WINDOW_STYLE_FILLED
+ asset_model "models/splash/splash_screen.md3"
+ model_fovx 32.0
+ model_fovy 3.8
+ model_angle 180
+ visible MENU_TRUE
+ decoration
+ backcolor 0 0 0 1
+ }
+
+ itemdef
+ {
+ name game
+ text "Game"
+ rect BUTT_BAR_X BUTT_BAR_Y BUTT_W BUTT_H
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open ingame_game
+ }
+ }
+
+ itemDef
+ {
+ name options
+ text "Options"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (BUTT_BAR_X+BUTT_W) BUTT_BAR_Y BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open ingame_options
+ }
+ }
+
+ itemDef
+ {
+ name leave
+ text "Help"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (BUTT_BAR_X+(2*BUTT_W)) BUTT_BAR_Y BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open ingame_help
+ }
+ }
+
+ itemDef
+ {
+ name leave
+ text "Exit"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (BUTT_BAR_X+(3*BUTT_W)) BUTT_BAR_Y BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open ingame_leave
+ }
+ }
+ }
+}
diff --git a/assets/ui/ingame.txt b/assets/ui/ingame.txt
new file mode 100755
index 0000000..2caf449
--- /dev/null
+++ b/assets/ui/ingame.txt
@@ -0,0 +1,9 @@
+// menu defs
+//
+{
+ loadMenu { "ui/ingame.menu" }
+ loadMenu { "ui/ingame_game.menu" }
+ loadMenu { "ui/ingame_options.menu" }
+ loadMenu { "ui/ingame_leave.menu" }
+ loadMenu { "ui/ingame_help.menu" }
+}
diff --git a/assets/ui/ingame_game.menu b/assets/ui/ingame_game.menu
new file mode 100755
index 0000000..d7d7dd6
--- /dev/null
+++ b/assets/ui/ingame_game.menu
@@ -0,0 +1,862 @@
+#include "ui/menudef.h"
+
+{
+ \\ INGAME GAME BOX \\
+
+#define W 320
+#define H 310
+#define X 10
+#define Y 60
+#define BORDER 10
+
+#define TOPBUTT_W 80
+#define TOPBUTT_H 30
+
+#define SIDEBUTT_W 50
+#define SIDEBUTT_H 25
+
+#define MAP_X (SIDEBUTT_W+BORDER)
+#define MAP_Y ((2*BORDER)+TOPBUTT_H)
+#define MAP_W 124
+#define MAP_H 93
+#define MAPLIST_X MAP_X
+#define MAPLIST_Y ((3*BORDER)+TOPBUTT_H+MAP_H)
+#define MAPLIST_W (W-((2*BORDER)+SIDEBUTT_W))
+#define MAPLIST_H (H-((4*BORDER)+MAP_H+TOPBUTT_H))
+#define MAPBUTT_X (MAP_X+MAP_W+BORDER)
+#define MAPBUTT_Y MAP_Y
+#define MAPBUTT_W (W-(MAPBUTT_X+BORDER))
+#define MAPBUTT_H 20
+
+#define PBUTT_X MAP_X
+#define PBUTT_Y (H-((2*PBUTT_H)+BORDER))
+#define PBUTT_W (W-((2*BORDER)+SIDEBUTT_W))
+#define PBUTT_H 45
+#define PLIST_X PBUTT_X
+#define PLIST_Y ((2*BORDER)+TOPBUTT_H)
+#define PLIST_W PBUTT_W
+#define PLIST_H ((H-((4*BORDER)+(2*PBUTT_H)+TOPBUTT_H)))
+
+#define PLAYER_C 0.7
+#define IGN_C 0.15
+#define IGNY_C 0.15
+#define IGNHEAD_H 15
+#define IGNHEAD_Y ((2*BORDER)+TOPBUTT_H)
+#define IGNBUTT_W ((W-(2*BORDER))/2)
+#define IGNBUTT_H 25
+#define IGNBUTT_X BORDER
+#define IGNBUTT_Y (H-(BORDER+IGNBUTT_H))
+#define IGNORE_W (W-(2*BORDER))
+#define IGNORE_W2 ((W-(2*BORDER))-15)
+#define IGNORE_H (H-((4*BORDER)+TOPBUTT_H+IGNHEAD_H+IGNBUTT_H))
+#define IGNORE_X BORDER
+#define IGNORE_Y ((2*BORDER)+TOPBUTT_H+IGNHEAD_H)
+#define IGNORE_TOFF 5
+
+#define INFO_Y ((2*BORDER)+TOPBUTT_H+10)
+#define INFOELEM_H 15
+#define INFO_OFF (0-(W-90))
+
+ menuDef
+ {
+ name "ingame_game"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect X Y W H
+ focusColor 1 .75 0 1
+ aspectBias ALIGN_LEFT
+ onopen
+ {
+ uiScript InitIgnoreList;
+ uiScript loadArenas;
+ uiScript loadServerInfo;
+ hide gameGrp;
+ show vote;
+ show mapvote;
+
+ setitemcolor voteBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor ignoreBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor infoBtn forecolor 1.0 1.0 1.0 1.0
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ //Section menus
+ itemDef
+ {
+ name voteBtn
+ text "Vote"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect (W-((3*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .35
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide gameGrp;
+ show vote;
+ show mapvote;
+
+ setitemcolor infoBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor voteBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor ignoreBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name ignoreBtn
+ text "Ignore"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .35
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide gameGrp;
+ show ignore;
+
+ setitemcolor infoBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor voteBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor ignoreBtn forecolor 0.2 0.2 0.2 1.0
+ }
+ }
+
+ itemDef
+ {
+ name infoBtn
+ text "Info"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect (W-((1*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .35
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide gameGrp;
+ show info;
+
+ setitemcolor infoBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor voteBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor ignoreBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+
+//////// VOTE
+
+ //Vote menu
+ itemDef
+ {
+ name vote
+ text "Map"
+ group gameGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide gameGrp;
+ show mapvote;
+ show vote;
+ }
+ }
+
+ itemDef
+ {
+ name vote
+ text "Players"
+ group gameGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+SIDEBUTT_H) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide gameGrp;
+ show playervote;
+ show reasonfield;
+ show vote;
+ }
+ }
+
+ itemDef
+ {
+ name vote
+ text "Team"
+ group gameGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(2*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide gameGrp;
+ show teamvote;
+ show reasonfield;
+ show vote;
+ }
+ }
+
+ itemDef
+ {
+ name reasonfield
+ group gameGrp
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Reason:"
+ cvar "ui_reason"
+ maxChars 50
+ rect PBUTT_X (PBUTT_Y+PBUTT_H) PBUTT_W PBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textscale .25
+ outlinecolor .2 .2 .2 .5
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ border WINDOW_BORDER_NONE
+ bordercolor 0 0 0 0
+ visible MENU_FALSE
+ }
+
+///// Map Vote
+ itemDef
+ {
+ name mapvote
+ group gameGrp
+ style WINDOW_STYLE_EMPTY
+ ownerdraw UI_SELECTEDMAPPREVIEW
+ rect MAP_X MAP_Y MAP_W MAP_H
+ border WINDOW_BORDER_FULL
+ bordercolor .5 .5 .5 .5
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name mapvote
+ group gameGrp
+ rect MAPLIST_X MAPLIST_Y MAPLIST_W MAPLIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 15
+ textscale .225
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_MAPS
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_FALSE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteMap;
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name mapvote
+ group gameGrp
+ text "Load Selected Map"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect MAPBUTT_X MAPBUTT_Y MAPBUTT_W MAPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteMap;
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name mapvote
+ group gameGrp
+ text "Load Selected Map Next"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect MAPBUTT_X (MAPBUTT_Y+MAPBUTT_H) MAPBUTT_W MAPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteNextMap;
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name mapvote
+ group gameGrp
+ text "Restart Current Map"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect MAPBUTT_X (MAPBUTT_Y+(2*MAPBUTT_H)) MAPBUTT_W MAPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "cmd callvote map_restart";
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name mapvote
+ group gameGrp
+ text "Begin Sudden Death"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect MAPBUTT_X (MAPBUTT_Y+(3*MAPBUTT_H)) MAPBUTT_W MAPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "cmd callvote sudden_death";
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name mapvote
+ group gameGrp
+ text "End Match In Draw"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect MAPBUTT_X (MAPBUTT_Y+(4*MAPBUTT_H)) MAPBUTT_W MAPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "cmd callvote draw";
+ uiScript closeingame
+ }
+ }
+
+///// Player Vote
+ itemDef
+ {
+ name playervote
+ group gameGrp
+ rect PLIST_X PLIST_Y PLIST_W PLIST_H
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_LISTBOX
+ elementwidth 120
+ elementheight 15
+ textscale .225
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_PLAYER_LIST
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name playervote
+ group gameGrp
+ text "Mute Player"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect PBUTT_X PBUTT_Y (PBUTT_W/2) PBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteMute;
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name playervote
+ group gameGrp
+ text "Un-Mute Player"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect (PBUTT_X+(PBUTT_W/2)) PBUTT_Y (PBUTT_W/2) PBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteUnMute;
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name playervote
+ group gameGrp
+ text "Kick Player"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect PBUTT_X (PBUTT_Y+(PBUTT_H/2)) PBUTT_W PBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteKick;
+ uiScript closeingame
+ }
+ }
+
+
+///// Team Vote
+ itemDef
+ {
+ name teamvote
+ group gameGrp
+ rect PLIST_X PLIST_Y PLIST_W PLIST_H
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_LISTBOX
+ elementwidth 120
+ elementheight 15
+ textscale .225
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TEAM_LIST
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name teamvote
+ group gameGrp
+ text "Kick Teammate"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect PBUTT_X PBUTT_Y (PBUTT_W/2) PBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteTeamKick;
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name teamvote
+ group gameGrp
+ text "Deny Building For Teammate"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect (PBUTT_X+(PBUTT_W/2)) PBUTT_Y (PBUTT_W/2) PBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteTeamDenyBuild;
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name teamvote
+ group gameGrp
+ text "Allow Building For Teammate"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect 110 215 150 20
+ rect PBUTT_X (PBUTT_Y+(PBUTT_H/2)) (PBUTT_W/2) PBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteTeamAllowBuild;
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name teamvote
+ group gameGrp
+ text "Admit Defeat"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect (PBUTT_X+(PBUTT_W/2)) (PBUTT_Y+(PBUTT_H/2)) (PBUTT_W/2) PBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "cmd callteamvote admitdefeat";
+ uiScript closeingame
+ }
+ }
+
+//////// IGNORE
+ itemDef
+ {
+ name ignore
+ group gameGrp
+ rect IGNORE_X IGNHEAD_Y (PLAYER_C*IGNORE_W2) IGNHEAD_H
+ text "Player Name"
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx IGNORE_TOFF
+ visible MENU_FALSE
+ type ITEM_TYPE_TEXT
+ textscale .225
+ }
+ itemDef
+ {
+ name ignore
+ group gameGrp
+ rect (IGNORE_X+(PLAYER_C*IGNORE_W2)) IGNHEAD_Y (IGN_C*IGNORE_W2) IGNHEAD_H
+ text "Ignored"
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ visible MENU_FALSE
+ type ITEM_TYPE_TEXT
+ textscale .225
+ }
+ itemDef
+ {
+ name ignore
+ group gameGrp
+ rect (IGNORE_X+((PLAYER_C+IGN_C)*IGNORE_W2)) IGNHEAD_Y (IGNY_C*IGNORE_W2) IGNHEAD_H
+ text "Ignoring You"
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ visible MENU_FALSE
+ type ITEM_TYPE_TEXT
+ textscale .225
+ }
+ itemDef
+ {
+ name ignore
+ group gameGrp
+ rect IGNORE_X IGNORE_Y IGNORE_W IGNORE_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 16
+ textscale .225
+ border WINDOW_BORDER_FULL
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_IGNORE_LIST
+ visible MENU_FALSE
+ columns 3
+ IGNORE_TOFF ((PLAYER_C*IGNORE_W)-(3*IGNORE_TOFF)) ALIGN_LEFT
+ (IGNORE_TOFF+((PLAYER_C)*IGNORE_W)) ((IGN_C*IGNORE_W)-(3*IGNORE_TOFF)) ALIGN_CENTER
+ (IGNORE_TOFF+((PLAYER_C+IGN_C)*IGNORE_W)) ((IGNY_C*IGNORE_W)-(3*IGNORE_TOFF)) ALIGN_CENTER
+ doubleClick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ToggleIgnore
+ }
+ }
+
+ itemDef
+ {
+ name ignore
+ text "Ignore Player"
+ group gameGrp
+ style WINDOW_STYLE_EMPTY
+ rect IGNBUTT_X IGNBUTT_Y IGNBUTT_W IGNBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript IgnorePlayer
+ }
+ }
+
+ itemDef
+ {
+ name ignore
+ text "Stop Ignoring Player"
+ group gameGrp
+ style WINDOW_STYLE_EMPTY
+ rect (IGNBUTT_X+IGNBUTT_W) IGNBUTT_Y IGNBUTT_W IGNBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript UnIgnorePlayer
+ }
+ }
+
+//////// INFO
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(0*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Server Name:"
+ cvar ui_serverinfo_hostname
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(1*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Time Limit:"
+ cvar ui_serverinfo_timelimit
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(2*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Sudden Death Time:"
+ cvar ui_serverinfo_sd
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(3*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Max Clients:"
+ cvar ui_serverinfo_maxclients
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(4*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Map Name:"
+ cvar ui_serverinfo_mapname
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(5*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_YESNO
+ style WINDOW_STYLE_EMPTY
+ text "Lag Correction:"
+ cvar ui_serverinfo_unlagged
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(6*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_YESNO
+ style WINDOW_STYLE_EMPTY
+ text "Friendly Fire:"
+ textalign ALIGN_RIGHT
+ cvar ui_serverinfo_friendlyFire
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(7*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_YESNO
+ style WINDOW_STYLE_EMPTY
+ text "Buildable Friendly Fire:"
+ cvar ui_serverinfo_friendlyBuildableFire
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+ itemDef
+ {
+ name info
+ group gameGrp
+ rect 0 (INFO_Y+(8*INFOELEM_H)) W INFOELEM_H
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Version:"
+ cvar ui_serverinfo_version
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx INFO_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+ }
+}
diff --git a/assets/ui/ingame_help.menu b/assets/ui/ingame_help.menu
new file mode 100755
index 0000000..4c8065b
--- /dev/null
+++ b/assets/ui/ingame_help.menu
@@ -0,0 +1,88 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 420
+#define H 290
+#define X 10
+#define Y 60
+#define BORDER 10
+
+#define LIST_W 140
+#define LIST_H (H-(2*BORDER))
+#define LIST_X BORDER
+#define LIST_Y BORDER
+
+#define INFO_W (W-((3*BORDER)+LIST_W))
+#define INFO_H (H-(2*BORDER))
+#define INFO_X ((2*BORDER)+LIST_W)
+#define INFO_Y BORDER
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "ingame_help"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect X Y W H
+ focusColor 1 .75 0 1
+ aspectBias ALIGN_LEFT
+ onOpen {
+ setFocus list;
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect LIST_X LIST_Y LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_HELP_LIST
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_HELPINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx INFO_TOFF
+ textaligny INFO_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ visible MENU_TRUE
+ decoration
+ }
+ }
+}
diff --git a/assets/ui/ingame_leave.menu b/assets/ui/ingame_leave.menu
new file mode 100755
index 0000000..d07e3ce
--- /dev/null
+++ b/assets/ui/ingame_leave.menu
@@ -0,0 +1,209 @@
+#include "ui/menudef.h"
+
+{
+ \\ INGAME_LEAVE MENU \\
+
+#define X 160
+#define Y 60
+#define W 120
+#define H 100
+
+#define L1_X 0
+#define L1_Y (H/6)
+#define L1_W W
+#define L1_H (H/3)
+#define L2_X 0
+#define L2_Y (H/2)
+#define L2_W W
+#define L2_H (H/3)
+
+ menuDef
+ {
+ name "ingame_leave"
+ visible MENU_TRUE
+ fullScreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect X Y W H
+ focusColor 1 .75 0 1
+ aspectBias ALIGN_LEFT
+ onOpen
+ {
+ show grpMenu;
+ hide grpConfirm
+ }
+
+ itemDef
+ {
+ name leave
+ style WINDOW_STYLE_FILLED
+ rect 0 0 W H
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name leave
+ type ITEM_TYPE_BUTTON
+ text "Main Menu"
+ group grpMenu
+ style WINDOW_STYLE_EMPTY
+ rect L1_X L1_Y L1_W L1_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpMenu;
+ show leaveConfirm
+ }
+ }
+
+ itemDef
+ {
+ name leave
+ group grpMenu
+ type ITEM_TYPE_BUTTON
+ text "Quit"
+ style WINDOW_STYLE_EMPTY
+ rect L2_X L2_Y L2_W L2_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpMenu;
+ show quitConfirm
+ }
+ }
+
+
+ // CONFIRMS //
+
+
+ itemDef
+ {
+ name leaveConfirm
+ type ITEM_TYPE_TEXT
+ text "Return To Main Menu?"
+ group grpConfirm
+ style WINDOW_STYLE_EMPTY
+ rect L1_X L1_Y L1_W L1_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .25
+ decoration
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name leaveConfirm
+ text "Yes"
+ group grpConfirm
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect L2_X L2_Y (L2_W/2) L2_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript leave
+ }
+ }
+
+ itemDef
+ {
+ name leaveConfirm
+ text "No"
+ group grpConfirm
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (L2_X+(L2_W/2)) L2_Y (L2_W/2) L2_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ hide grpConfirm;
+ show grpMenu
+ }
+ }
+
+ itemDef
+ {
+ name quitConfirm
+ type ITEM_TYPE_TEXT
+ text "Want To Quit Game?"
+ group grpConfirm
+ style WINDOW_STYLE_EMPTY
+ rect L1_X L1_Y L1_W L1_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name quitConfirm
+ text "Yes"
+ group grpConfirm
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect L2_X L2_Y (L2_W/2) L2_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript quit
+ }
+ }
+
+ itemDef
+ {
+ name quitConfirm
+ text "No"
+ group grpConfirm
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (L2_X+(L2_W/2)) L2_Y (L2_W/2) L2_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ hide grpConfirm;
+ show grpMenu
+ }
+ }
+ }
+}
diff --git a/assets/ui/ingame_options.menu b/assets/ui/ingame_options.menu
new file mode 100755
index 0000000..f9f1478
--- /dev/null
+++ b/assets/ui/ingame_options.menu
@@ -0,0 +1,2359 @@
+#include "ui/menudef.h"
+
+{
+ \\ INGAME OPTIONS BOX \\
+
+#define W 320
+#define H 290
+#define X 10
+#define Y 60
+#define BORDER 10
+
+#define TOPBUTT_W ((W-(2*BORDER))/4)
+#define TOPBUTT_H 30
+
+#define CONTENT_X BORDER
+#define CONTENT_Y ((1.5*BORDER)+TOPBUTT_H)
+#define CONTENT_W (W-(2*BORDER))
+#define CONTENT_OFF (0-(CONTENT_W/2))
+
+#define SIDEBUTT_W 65
+#define SIDEBUTT_H 25
+#define SCONTENT_X (SIDEBUTT_W+BORDER)
+#define SCONTENT_Y CONTENT_Y
+#define SCONTENT_W (W-(SIDEBUTT_W+(2*BORDER)))
+#define SCONTENT_OFF (0-(SCONTENT_W/2))
+
+#define RESCOMBO_OFF 8
+
+#define ELEM_H 16
+
+ menuDef
+ {
+ name "ingame_options"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect X Y W H
+ focusColor 1 .75 0 1
+ aspectBias ALIGN_LEFT
+ onopen
+ {
+ hide optionsGrp;
+ show player;
+
+ setitemcolor playerBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor hudBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ //Section menus
+ itemDef
+ {
+ name PlayerBtn
+ text "Player"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect (W-((4*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .35
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show player;
+
+ setitemcolor playerBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor hudBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+ itemDef
+ {
+ name hudBtn
+ text "HUD"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect (W-((3*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .35
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show hud;
+
+ setitemcolor playerBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor hudBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name controlsBtn
+ text "Controls"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .35
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show look;
+
+ setitemcolor playerBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor hudBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor controlsBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name systemBtn
+ text "System"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect (W-((1*TOPBUTT_W)+BORDER)) BORDER TOPBUTT_W TOPBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .35
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show ghardware;
+
+ setitemcolor playerBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor hudBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor systemBtn forecolor 0.2 0.2 0.2 1.0
+ }
+ }
+
+//////// PLAYER
+
+ itemDef
+ {
+ name player
+ group optionsGrp
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Name:"
+ cvar "name"
+ maxchars 40
+ rect CONTENT_X (CONTENT_Y+(0*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name player
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Taunts Sounds Off:"
+ cvar "cg_noTaunt"
+ rect CONTENT_X (CONTENT_Y+(1*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name player
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Team Chats Only:"
+ cvar "cg_teamChatsOnly"
+ rect CONTENT_X (CONTENT_Y+(2*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name player
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Sticky Spectate:"
+ cvar "cg_stickySpec"
+ rect CONTENT_X (CONTENT_Y+(3*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name player
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Tutorial Mode:"
+ cvar "cg_tutorial"
+ rect CONTENT_X (CONTENT_Y+(4*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name player
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Disable Warning Dialogs:"
+ cvar "cg_disableWarningDialogs"
+ cvarFloatList { "No" 0 "Print to Console" 1 "Yes" 2 }
+ rect CONTENT_X (CONTENT_Y+(5*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name player
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Static Death Cam:"
+ cvar "cg_staticDeathCam"
+ rect CONTENT_X (CONTENT_Y+(6*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// HUD
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Show Clock:"
+ cvar "cg_drawClock"
+ cvarFloatList { "No" 0 "12 Hour" 1 "24 Hour" 2 }
+ rect CONTENT_X (CONTENT_Y+(0*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Show Crosshair:"
+ cvar "cg_drawCrosshair"
+ cvarFloatList { "Never" 0 "Ranged Weapons Only" 1 "Always" 2 }
+ rect CONTENT_X (CONTENT_Y+(1*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Crosshair Size:"
+ cvar "cg_crosshairSize"
+ cvarFloatList { "Normal" 1 "Small" 0.75 "Tiny" 0.5 "Huge" 1.25 }
+ rect CONTENT_X (CONTENT_Y+(2*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Show Charge Bar:"
+ cvar "cg_drawChargeBar"
+ rect CONTENT_X (CONTENT_Y+(3*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Show Lag-o-meter:"
+ cvar "cg_lagometer"
+ rect CONTENT_X (CONTENT_Y+(4*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Show Team Overlay:"
+ cvar "cg_drawTeamOverlay"
+ cvarFloatList { "Off" 0 "All Teammates" 1 "Support Teammates" 2 "Nearby Teammates" 3 }
+ rect CONTENT_X (CONTENT_Y+(5*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Sort Team Overlay:"
+ cvar "cg_teamOverlaySortMode"
+ cvarFloatList { "None" 0 "Score" 1 "Weapon/Class" 2 }
+ rect CONTENT_X (CONTENT_Y+(6*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Show Gun:"
+ cvar "cg_drawGun"
+ rect CONTENT_X (CONTENT_Y+(7*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Show Speed:"
+ cvar "cg_drawspeed"
+ cvarFloatList { "No" 0 "Text" 1 "Graph" 2 "Text + Graph" 3 "Text No-Z" 5 "Graph No-Z" 6 "Text + Graph No-Z" 7 }
+ rect CONTENT_X (CONTENT_Y+(8*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Show FPS:"
+ cvar "cg_drawFPS"
+ rect CONTENT_X (CONTENT_Y+(9*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Show Timer:"
+ cvar "cg_drawTimer"
+ rect CONTENT_X (CONTENT_Y+(10*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name hud
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Show Demo State:"
+ cvar "cg_drawDemoState"
+ rect CONTENT_X (CONTENT_Y+(11*ELEM_H)) CONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx CONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// CONTROLS
+
+ //Controls menu
+ itemDef
+ {
+ name controls
+ text "Look"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(0*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show look
+ }
+ }
+
+//////// LOOK
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Lookup:"
+ cvar "+lookup"
+ rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Look Down:"
+ cvar "+lookdown"
+ rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Mouse Look:"
+ cvar "+mlook"
+ rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Centerview:"
+ cvar "centerview"
+ rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Free Look:"
+ cvar "cl_freelook"
+ rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Mouse Sensitivity:"
+ cvarfloat "sensitivity" 5 1 30
+ rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Invert Mouse:"
+ cvar "ui_mousePitch"
+ rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript update ui_mousePitch
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Smooth Mouse:"
+ cvar "m_filter"
+ rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Auto Wallwalk Pitching:"
+ cvar "cg_wwFollow"
+ rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// MOVE
+
+ itemDef
+ {
+ name controls
+ text "Move"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(1*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show move
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Sprint Toggles:"
+ cvar "cg_sprintToggle"
+ rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Wallwalk Control Toggles:"
+ cvar "cg_wwToggle"
+ rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Wallwalking Speed:"
+ cvar "cg_wwSmoothTime"
+ cvarFloatList { "Medium" 300 "Fast" 150 "Instant" 0 "Slow" 600 }
+ rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Run / Walk:"
+ cvar "+speed"
+ rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Dodge:"
+ cvar "+button6"
+ rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Sprint:"
+ cvar "+button8"
+ rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Forward:"
+ cvar "+forward"
+ rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Backpedal:"
+ cvar "+back"
+ rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Move Left:"
+ cvar "+moveleft"
+ rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Move Right:"
+ cvar "+moveright"
+ rect SCONTENT_X (SCONTENT_Y+(9*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Jump:"
+ cvar "+moveup"
+ rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Crouch:"
+ cvar "+movedown"
+ rect SCONTENT_X (SCONTENT_Y+(11*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Turn Left:"
+ cvar "+left"
+ rect SCONTENT_X (SCONTENT_Y+(12*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Turn Right:"
+ cvar "+right"
+ rect SCONTENT_X (SCONTENT_Y+(13*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Strafe:"
+ cvar "+strafe"
+ rect SCONTENT_X (SCONTENT_Y+(14*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+
+
+//////// UPGRADES
+
+ itemDef
+ {
+ name controls
+ text "Upgrades"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(2*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show upgrades
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Primary Attack:"
+ cvar "+attack"
+ rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Secondary Attack:"
+ cvar "+button5"
+ rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Previous Upgrade:"
+ cvar "weapprev"
+ rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Next Upgrade:"
+ cvar "weapnext"
+ rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Activate Upgrade:"
+ cvar "+button2"
+ rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Reload:"
+ cvar "reload"
+ rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Buy Ammo:"
+ cvar "buy ammo"
+ rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Use Medkit:"
+ cvar "itemact medkit"
+ rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// MISC
+
+ itemDef
+ {
+ name controls
+ text "Misc"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(3*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show misc
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Show Scores:"
+ cvar "+scores"
+ rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Scroll Scores Up:"
+ cvar "scoresUp"
+ rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Scroll Scores Down:"
+ cvar "scoresDown"
+ rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Use Structure/Evolve:"
+ cvar "+button7"
+ rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Deconstruct Structure:"
+ cvar "deconstruct"
+ rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Gesture:"
+ cvar "+button3"
+ rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Chat:"
+ cvar "messagemode"
+ rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Team Chat:"
+ cvar "messagemode2"
+ rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Vote Yes:"
+ cvar "vote yes"
+ rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Vote No:"
+ cvar "vote no"
+ rect SCONTENT_X (SCONTENT_Y+(9*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Team Vote Yes:"
+ cvar "teamvote yes"
+ rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Team Vote No:"
+ cvar "teamvote no"
+ rect SCONTENT_X (SCONTENT_Y+(11*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Screenshot:"
+ cvar "screenshotJPEG"
+ rect SCONTENT_X (SCONTENT_Y+(12*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+//////// SYSTEM
+
+ //System menu
+ itemDef
+ {
+ name system
+ text "GFX Hardware"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(0*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show ghardware
+ }
+ }
+
+//////// GFX HARDWARE
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Quality:"
+ cvar "ui_glCustom"
+ cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
+ rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript update "ui_glCustom"
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "GL Extensions:"
+ cvar "r_allowExtensions"
+ rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCuston
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_TEXT
+ text "Video Mode:"
+ rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) (SCONTENT_W/2) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ rect (SCONTENT_X+(SCONTENT_W/2)+RESCOMBO_OFF) (SCONTENT_Y+(2*ELEM_H)) ((SCONTENT_W/2)-(2*RESCOMBO_OFF)) ELEM_H
+ type ITEM_TYPE_COMBOBOX
+ style WINDOW_STYLE_FILLED
+ elementwidth ((SCONTENT_W/2)-(2*BORDER))
+ elementheight ELEM_H
+ dropitems 5
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_RESOLUTIONS
+ border WINDOW_BORDER_FULL
+ borderColor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Color Depth:"
+ cvar "r_colorbits"
+ cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 }
+ rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom;
+ uiScript update "r_colorbits"
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Fullscreen:"
+ cvar "r_fullscreen"
+ rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Lighting:"
+ cvar "r_vertexlight"
+ cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 }
+ rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Geometric Detail:"
+ cvar "r_lodbias"
+ cvarFloatList { "High" 0 "Medium" 1 "Low" 2 }
+ rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom;
+ uiScript update "r_lodbias"
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Texture Detail:"
+ cvar "r_picmip"
+ cvarFloatList { "Low" 2 "Normal" 1 "High" 0 }
+ rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Texture Quality:"
+ cvar "r_texturebits"
+ cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 }
+ rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Texture Filter:"
+ cvar "r_texturemode"
+ cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" }
+ rect SCONTENT_X (SCONTENT_Y+(9*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Anisotropic Filtering:"
+ cvar "r_ext_texture_filter_anisotropic"
+ rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Compress Textures:"
+ cvar "r_ext_compressed_textures "
+ rect SCONTENT_X (SCONTENT_Y+(11*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_BUTTON
+ text "APPLY"
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect SCONTENT_X (SCONTENT_Y+(13*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "vid_restart"
+ }
+ }
+
+//////// GFX SOFTWARE
+
+ itemDef
+ {
+ name system
+ text "GFX Software"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(1*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show gsoftware
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Brightness:"
+ cvarfloat "r_gamma" 1 .5 2
+ rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Screen Size:"
+ cvarfloat "cg_viewsize" 100 30 100
+ rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Marks On Walls:"
+ cvar "cg_marks"
+ rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Dynamic Lights:"
+ cvar "r_dynamiclight"
+ rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Draw Gun:"
+ cvar "cg_drawGun"
+ rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Low Quality Sky:"
+ cvar "r_fastsky"
+ rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Sync Every Frame:"
+ cvar "r_finish"
+ rect SCONTENT_X (SCONTENT_Y+(6*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "In Game Videos:"
+ cvar "r_inGameVideo"
+ rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Depth Sort Particles:"
+ cvar "cg_depthSortParticles"
+ rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Particle Physics:"
+ cvar "cg_bounceParticles"
+ cvarFloatList { "Low Quality" 0 "High Quality" 1 }
+ rect SCONTENT_X (SCONTENT_Y+(9*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Light Flares:"
+ cvar "cg_lightFlare"
+ cvarFloatList { "Off" 0 "No Fade" 1 "Timed Fade" 2 "Real Fade" 3 }
+ rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// GL INFO
+
+ itemDef
+ {
+ name system
+ text "OpenGL Info"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(2*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show glinfo
+ }
+ }
+
+ itemDef
+ {
+ name glinfo
+ group optionsGrp
+ rect SCONTENT_X SCONTENT_Y SCONTENT_W (H-(SCONTENT_Y+BORDER))
+ ownerdraw UI_GLINFO
+ textscale .25
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx 4
+ textaligny 4
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ }
+
+//////// NET & SOUND
+
+ itemDef
+ {
+ name system
+ text "Net & Sound"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 0 ((2*BORDER)+TOPBUTT_H+(3*SIDEBUTT_H)) SIDEBUTT_W SIDEBUTT_H
+ type ITEM_TYPE_BUTTON
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show netsound
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ style WINDOW_STYLE_FILLED
+ type ITEM_TYPE_TEXT
+ text "Sound"
+ rect SCONTENT_X (SCONTENT_Y+(0*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Effects Volume:"
+ cvarfloat "s_volume" 0.7 0 1
+ rect SCONTENT_X (SCONTENT_Y+(1*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Music Volume:"
+ cvarfloat "s_musicvolume" 0.25 0 1
+ rect SCONTENT_X (SCONTENT_Y+(2*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "OpenAL:"
+ cvar "s_useOpenAL"
+ rect SCONTENT_X (SCONTENT_Y+(3*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Sound Quality:"
+ cvar "s_khz"
+ cvarFloatList { "44 khz (very high)" 44 "22 khz (high)" 22 "11 khz (low)" 11 }
+ rect SCONTENT_X (SCONTENT_Y+(4*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Doppler Sound:"
+ cvar "s_doppler"
+ rect SCONTENT_X (SCONTENT_Y+(5*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ style WINDOW_STYLE_FILLED
+ type ITEM_TYPE_TEXT
+ text "Network"
+ rect SCONTENT_X (SCONTENT_Y+(7*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ decoration
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Net Data Rate:"
+ cvar "rate"
+ cvarFloatList { "<=28.8k" 2500 "33.6k" 3000 "56k" 4000 "ISDN" 5000 "LAN/CABLE/xDSl" 25000 }
+ rect SCONTENT_X (SCONTENT_Y+(8*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx SCONTENT_OFF
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_BUTTON
+ text "APPLY"
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect SCONTENT_X (SCONTENT_Y+(10*ELEM_H)) SCONTENT_W ELEM_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "snd_restart"
+ }
+ }
+ }
+}
diff --git a/assets/ui/joinserver.menu b/assets/ui/joinserver.menu
new file mode 100755
index 0000000..45113f6
--- /dev/null
+++ b/assets/ui/joinserver.menu
@@ -0,0 +1,769 @@
+#include "ui/menudef.h"
+
+{
+
+ \\ Server Join \\
+
+#define W 640
+#define H 480
+#define BORDER 10
+
+#define PREVIEW_W 112
+#define PREVIEW_H 84
+#define TOP_W (W-((2*BORDER)+PREVIEW_W))
+#define TOP_H PREVIEW_H
+#define TOP_X BORDER
+#define TOP_Y BORDER
+#define TOPBUTT_W (TOP_W/3)
+#define TOPBUTT_H (TOP_H/2)
+#define TOP_TOFF_X 20
+#define TOP_TOFF_Y 0
+
+#define BCJ_W (W-(2*BORDER))
+#define BCJ_H 50
+#define BCJ_X BORDER
+#define BCJ_Y (H-(BCJ_H+BORDER))
+#define ARROW_W 50
+#define ARROW_H BCJ_H
+
+#define BOT_W (W-(2*BORDER))
+#define BOT_H 45
+#define BOT_X BORDER
+#define BOT_Y (BCJ_Y-BOT_H)
+#define BOTBUTT_W (BOT_W/5)
+#define BOTBUTT_H BOT_H
+
+#define SERVER_C 0.45
+#define GAME_C 0.15
+#define MAP_C 0.2
+#define PLAYERS_C 0.1
+#define PING_C 0.1
+#define LIST_W (W-(2*BORDER))
+#define LIST_H (H-((3*BORDER)+TOP_H+BOT_H+BCJ_H))
+#define LIST_X BORDER
+#define LIST_Y ((2*BORDER)+TOP_H)
+#define LIST_TOFF 5
+#define HEADFOOT_H 25
+
+ menuDef
+ {
+ name "joinserver"
+ visible MENU_FALSE
+ fullscreen MENU_TRUE
+ rect 0 0 W H
+ focusColor 1 .75 0 1
+ outOfBoundsClick
+ style WINDOW_STYLE_EMPTY
+ aspectBias ASPECT_NONE
+ onOpen
+ {
+ uiScript InitServerList 3;
+ hide accept_alt;
+ show accept;
+ hide back_alt;
+ show back;
+ uiScript UpdateFilter
+ }
+
+ onEsc { uiScript closeJoin }
+
+ itemDef
+ {
+ name background
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+ }
+
+
+ // VIEW OPTIONS //
+
+ itemDef
+ {
+ name gametypefield
+ text "Source:"
+ style WINDOW_STYLE_EMPTY
+ ownerdraw UI_NETSOURCE
+ rect TOP_X TOP_Y TOPBUTT_W TOPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx TOP_TOFF_X
+ textaligny TOP_TOFF_Y
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 .5 .5 .5
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ // BUTTONS //
+
+ itemDef
+ {
+ name refreshSource
+ text "Get New List"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect (TOP_X+TOPBUTT_W) TOP_Y TOPBUTT_W TOPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx TOP_TOFF_X
+ textaligny TOP_TOFF_Y
+ backcolor .5 .5 .5 .5
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RefreshServers
+ }
+ }
+
+ itemDef
+ {
+ name refreshFilter
+ text "Refresh List"
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_BUTTON
+ rect (TOP_X+(2*TOPBUTT_W)) TOP_Y TOPBUTT_W TOPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx TOP_TOFF_X
+ textaligny TOP_TOFF_Y
+ backcolor .5 .5 .5 .5
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RefreshFilter
+ }
+ }
+
+ itemDef
+ {
+ name viewEmpty
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_YESNO
+ text "View Empty:"
+ cvar "ui_browserShowEmpty"
+ textscale .4
+ rect TOP_X (TOP_Y+TOPBUTT_H) TOPBUTT_W TOPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx TOP_TOFF_X
+ textaligny TOP_TOFF_Y
+ forecolor 1 1 1 1
+ backcolor .5 .5 .5 .5
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RefreshFilter
+ }
+ }
+
+ itemDef
+ {
+ name viewFull
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_YESNO
+ text "View Full:"
+ cvar "ui_browserShowFull"
+ textscale .4
+ rect (TOP_X+TOPBUTT_W) (TOP_Y+TOPBUTT_H) TOPBUTT_W TOPBUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx TOP_TOFF_X
+ textaligny TOP_TOFF_Y
+ forecolor 1 1 1 1
+ backcolor .5 .5 .5 .5
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RefreshFilter
+ }
+ }
+
+ // LEGEND //
+
+ itemDef
+ {
+ name legend
+ type ITEM_TYPE_TEXT
+ text "[official] = Official Server\n[featured] = Featured Server"
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .25
+ wrapped
+ rect (TOP_X+(2*TOPBUTT_W)) (TOP_Y+TOPBUTT_H) (TOPBUTT_W) (TOPBUTT_H)
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx TOP_TOFF_X
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ // MAP PREVIEW //
+
+ itemDef
+ {
+ name mappreview
+ style WINDOW_STYLE_EMPTY
+ ownerdraw UI_NETMAPPREVIEW
+ rect (W-(PREVIEW_W+BORDER)) BORDER PREVIEW_W PREVIEW_H
+ border WINDOW_BORDER_FULL
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ }
+
+
+ // COLUMNS //
+
+ itemDef
+ {
+ name server
+ group grpTabs
+ text "Server Name"
+ type ITEM_TYPE_BUTTON
+ textscale .33
+ style WINDOW_STYLE_FILLED
+ rect LIST_X LIST_Y (SERVER_C*LIST_W) HEADFOOT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx LIST_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 0
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 0;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor grpTabs backcolor 0 0 0 0;
+ setitemcolor server backcolor 0.3 1 1 0.3;
+ setitemcolor serverColumn backcolor 0.2 0.6 0.6 0.1;
+ }
+ }
+
+ itemDef
+ {
+ name serverColumn
+ group grpColumn
+ rect LIST_X (LIST_Y+HEADFOOT_H) (SERVER_C*LIST_W) (LIST_H-(2*HEADFOOT_H))
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name game
+ group grpTabs
+ type ITEM_TYPE_BUTTON
+ text "Game Type"
+ textscale .33
+ style WINDOW_STYLE_FILLED
+ rect (LIST_X+(SERVER_C*LIST_W)) LIST_Y (GAME_C*LIST_W) HEADFOOT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx LIST_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 0
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 4;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor grpTabs backcolor 0 0 0 0;
+ setitemcolor game backcolor 0.3 1 1 0.3;
+ setitemcolor gameColumn backcolor 0.2 0.6 0.6 0.1;
+ }
+ }
+
+ itemDef
+ {
+ name gameColumn
+ group grpColumn
+ rect (LIST_X+(SERVER_C*LIST_W)) (LIST_Y+HEADFOOT_H) (GAME_C*LIST_W) (LIST_H-(2*HEADFOOT_H))
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name map
+ group grpTabs
+ type ITEM_TYPE_BUTTON
+ text "Map Name"
+ textscale .33
+ style WINDOW_STYLE_FILLED
+ rect (LIST_X+((SERVER_C+GAME_C)*LIST_W)) LIST_Y (MAP_C*LIST_W) HEADFOOT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx LIST_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 0
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 1;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor grpTabs backcolor 0 0 0 0;
+ setitemcolor map backcolor 0.3 1 1 0.3;
+ setitemcolor mapColumn backcolor 0.2 0.6 0.6 0.1;
+ }
+ }
+
+ itemDef
+ {
+ name mapColumn
+ group grpColumn
+ rect (LIST_X+((SERVER_C+GAME_C)*LIST_W)) (LIST_Y+HEADFOOT_H) (MAP_C*LIST_W) (LIST_H-(2*HEADFOOT_H))
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name players
+ group grpTabs
+ text "Players"
+ type ITEM_TYPE_BUTTON
+ textscale .33
+ style WINDOW_STYLE_FILLED
+ rect (LIST_X+((SERVER_C+GAME_C+MAP_C)*LIST_W)) LIST_Y (PLAYERS_C*LIST_W) HEADFOOT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx LIST_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 0
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 2;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor grpTabs backcolor 0 0 0 0;
+ setitemcolor players backcolor 0.3 1 1 0.3;
+ setitemcolor playerColumn backcolor 0.2 0.6 0.6 0.1;
+ }
+ }
+
+ itemDef
+ {
+ name playerColumn
+ group grpColumn
+ rect (LIST_X+((SERVER_C+GAME_C+MAP_C)*LIST_W)) (LIST_Y+HEADFOOT_H) (PLAYERS_C*LIST_W) (LIST_H-(2*HEADFOOT_H))
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name Ping
+ group grpTabs
+ text "Ping"
+ type ITEM_TYPE_BUTTON
+ textscale .33
+ style WINDOW_STYLE_FILLED
+ rect (LIST_X+((SERVER_C+GAME_C+MAP_C+PLAYERS_C)*LIST_W)) LIST_Y (PING_C*LIST_W) HEADFOOT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx LIST_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.3 1 1 0.3
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 3;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor grpTabs backcolor 0 0 0 0;
+ setitemcolor ping backcolor 0.3 1 1 0.3;
+ setitemcolor pingColumn backcolor 0.2 0.6 0.6 0.1;
+ }
+ }
+
+ itemDef
+ {
+ name pingColumn
+ group grpColumn
+ rect (LIST_X+((SERVER_C+GAME_C+MAP_C+PLAYERS_C)*LIST_W)) (LIST_Y+HEADFOOT_H) (PING_C*LIST_W) (LIST_H-(2*HEADFOOT_H))
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ backcolor 0.2 0.6 0.6 0.1
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ // SERVER LIST //
+
+ itemDef
+ {
+ name serverlist
+ rect LIST_X (LIST_Y+HEADFOOT_H) LIST_W (LIST_H-(2*HEADFOOT_H))
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_SERVERS
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.3 0.3 0.4
+ visible MENU_TRUE
+ columns 5
+ LIST_TOFF ((SERVER_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT
+ (LIST_TOFF+((SERVER_C+GAME_C)*LIST_W)) ((MAP_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT
+ (LIST_TOFF+((SERVER_C+GAME_C+MAP_C)*LIST_W)) ((PLAYERS_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT
+ (LIST_TOFF+((SERVER_C+GAME_C+MAP_C+PLAYERS_C)*LIST_W)) ((PING_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT
+ (LIST_TOFF+((SERVER_C)*LIST_W)) ((GAME_C*LIST_W)-(3*LIST_TOFF)) ALIGN_LEFT
+
+ doubleClick { uiScript JoinServer }
+ }
+
+
+ // DATE AND MESSAGE OF THE DAY //
+
+ itemDef
+ {
+ name refreshdate
+ ownerdraw UI_SERVERREFRESHDATE
+ textscale .33
+ rect LIST_X (LIST_Y+(LIST_H-HEADFOOT_H)) (LIST_W/2) HEADFOOT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx LIST_TOFF
+ forecolor 1 1 1 1
+ border WINDOW_BORDER_FULL
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name messageoftheday
+ ownerdraw UI_SERVERMOTD
+ textscale .33
+ rect (LIST_X+(LIST_W/2)) (LIST_Y+(LIST_H-HEADFOOT_H)) (LIST_W/2) HEADFOOT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx LIST_TOFF
+ forecolor 1 1 1 1
+ border WINDOW_BORDER_FULL
+ bordercolor .5 .5 .5 1
+ visible MENU_TRUE
+ decoration
+ }
+
+
+ // BOTTOM BUTTONS //
+
+ itemDef
+ {
+ name password
+ text "Set Password"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect BOT_X BOT_Y BOTBUTT_W BOTBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open password_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name createFavorite
+ text "Create Favorite"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect (BOT_X+BOTBUTT_W) BOT_Y BOTBUTT_W BOTBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open createfavorite_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name addFavorite
+ text "Add Favorite"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ ownerdrawFlag UI_SHOW_NOTFAVORITESERVERS
+ rect (BOT_X+(2*BOTBUTT_W)) BOT_Y BOTBUTT_W BOTBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript addFavorite
+ }
+ }
+
+ itemDef
+ {
+ name delfavorite
+ text "Delete Favorite"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ ownerdrawFlag UI_SHOW_FAVORITESERVERS
+ rect (BOT_X+(2*BOTBUTT_W)) BOT_Y BOTBUTT_W BOTBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript DeleteFavorite;
+ uiScript UpdateFilter
+ }
+ }
+
+ itemDef
+ {
+ name serverinfo
+ text "Server Info"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect (BOT_X+(3*BOTBUTT_W)) BOT_Y BOTBUTT_W BOTBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open serverinfo_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name findplayer
+ text "Find a Friend"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect (BOT_X+(4*BOTBUTT_W)) BOT_Y BOTBUTT_W BOTBUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open findplayer_popmenu
+ }
+ }
+
+
+
+ // BACK CREATE JOIN //
+
+ itemDef
+ {
+ name createServer
+ text "Create Server"
+ textscale .5
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_BUTTON
+ rect (BCJ_X+ARROW_W) BCJ_Y (BCJ_W-(2*ARROW_W)) BCJ_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open createserver
+ }
+ }
+
+
+ itemDef
+ {
+ name back
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/backarrow.tga"
+ rect BCJ_X BCJ_Y ARROW_H ARROW_W
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close joinserver
+ }
+
+ mouseEnter
+ {
+ hide back;
+ show back_alt
+ }
+ }
+
+ itemDef
+ {
+ name back_alt
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/backarrow_alt.tga"
+ rect BCJ_X BCJ_Y ARROW_H ARROW_W
+ aspectBias ALIGN_LEFT
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+ type ITEM_TYPE_BUTTON
+
+ text "Back"
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx ARROW_W
+ textscale .6
+
+ mouseExit
+ {
+ hide back_alt;
+ show back
+ }
+
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close joinserver
+ }
+ }
+
+
+
+
+ itemDef
+ {
+ name accept
+ style WINDOW_STYLE_SHADER
+ rect ((BCJ_X+BCJ_W)-ARROW_W) BCJ_Y ARROW_H ARROW_W
+ aspectBias ALIGN_RIGHT
+ background "ui/assets/forwardarrow.tga"
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ mouseEnter
+ {
+ hide accept;
+ show accept_alt
+ }
+
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript JoinServer
+ }
+ }
+
+ itemDef
+ {
+ name accept_alt
+ style WINDOW_STYLE_SHADER
+ rect ((BCJ_X+BCJ_W)-ARROW_W) BCJ_Y ARROW_H ARROW_W
+ aspectBias ALIGN_RIGHT
+ background "ui/assets/forwardarrow_alt.tga"
+ backcolor 0 0 0 0
+ type ITEM_TYPE_BUTTON
+ forecolor 1 1 1 1
+ visible MENU_FALSE
+
+ text "Join"
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx -ARROW_W
+ textscale .6
+
+ mouseExit
+ {
+ hide accept_alt;
+ show accept
+ }
+
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript JoinServer
+ }
+ }
+ }
+}
diff --git a/assets/ui/loading.menu b/assets/ui/loading.menu
new file mode 100755
index 0000000..b877ce9
--- /dev/null
+++ b/assets/ui/loading.menu
@@ -0,0 +1,223 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 640
+#define H 480
+#define BORDER 10
+
+#define SHOT_W 320
+#define SHOT_H 240
+#define SHOT_X (W-(BORDER+SHOT_W))
+#define SHOT_Y BORDER
+
+#define INFO_X BORDER
+#define INFO_W (W-((3*BORDER)+SHOT_W))
+#define LEVEL_Y BORDER
+#define LEVEL_H 30
+#define HOST_Y (LEVEL_H+(2*BORDER))
+#define HOST_H 30
+#define MOTD_Y (LEVEL_H+HOST_H+(3*BORDER))
+#define MOTD_H ((BORDER+SHOT_H)-MOTD_Y)
+
+#define MAIN_W (W-(2*BORDER))
+#define LABEL_W 180
+#define LABEL_X (W-(LABEL_W+BORDER))
+#define BAR_H ((H-((6*BORDER)+SHOT_H))/4)
+#define BAR_W (MAIN_W-(LABEL_W+BORDER))
+#define BAR_X BORDER
+#define MEDIA_Y (H-((4*BORDER)+(4*BAR_H)))
+#define BUILD_Y (H-((3*BORDER)+(3*BAR_H)))
+#define CHAR_Y (H-((2*BORDER)+(2*BAR_H)))
+#define OVER_Y (H-(BORDER+BAR_H))
+
+ assetGlobalDef
+ {
+ cursor "ui/assets/3_cursor3" // cursor
+ gradientBar "ui/assets/gradientbar2.tga" // gradient bar
+ fadeClamp 1.0 // sets the fadeup alpha
+ fadeCycle 1 // how often fade happens in milliseconds
+ fadeAmount 0.1 // amount to adjust alpha per cycle
+
+ shadowX 5 // x amount for shadow offset
+ shadowY 5 // y amount for shadow offset
+ shadowColor 0.1 0.1 0.1 0.25 // shadow color
+
+ font "fonts/font" 26 // font
+ smallFont "fonts/smallfont" 20 // font
+ bigFont "fonts/bigfont" 34 // font
+ }
+
+ menuDef
+ {
+ name "Loading"
+ rect 0 0 W H
+ fullScreen MENU_TRUE
+ aspectBias ASPECT_NONE
+
+ itemDef
+ {
+ name background
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name "levelname"
+ rect INFO_X LEVEL_Y INFO_W LEVEL_H
+ visible MENU_TRUE
+ decoration
+ forecolor 1 1 1 1
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale 0.4
+ ownerdraw CG_LOAD_LEVELNAME
+ }
+
+ itemDef
+ {
+ name "hostname"
+ rect INFO_X HOST_Y INFO_W HOST_H
+ visible MENU_TRUE
+ decoration
+ forecolor 1 1 1 1
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale 0.4
+ ownerdraw CG_LOAD_HOSTNAME
+ }
+
+ itemDef
+ {
+ name "motd"
+ rect INFO_X MOTD_Y INFO_W MOTD_H
+ visible MENU_TRUE
+ decoration
+ forecolor 1 1 1 1
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale 0.4
+ ownerdraw CG_LOAD_MOTD
+ }
+
+ itemDef
+ {
+ name "levelshot"
+ rect SHOT_X SHOT_Y SHOT_W SHOT_H
+ visible MENU_TRUE
+ decoration
+ forecolor 1 1 1 1
+ ownerdraw CG_LOAD_LEVELSHOT
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "media"
+ rect BAR_X MEDIA_Y BAR_W BAR_H
+ visible MENU_TRUE
+ decoration
+ forecolor 0.0 0.8 1 1
+ ownerdraw CG_LOAD_MEDIA
+ textalign ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NEON
+ textscale 0.5
+ borderSize 1.0
+ }
+
+ itemDef
+ {
+ name "medialabel"
+ style WINDOW_STYLE_EMPTY
+ textscale 0.6
+ rect LABEL_X MEDIA_Y LABEL_W BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ forecolor 0.0 0.8 1 1
+ visible MENU_TRUE
+ decoration
+ ownerdraw CG_LOAD_MEDIA_LABEL
+ }
+
+ itemDef
+ {
+ name "buildables"
+ rect 20 340 380 30
+ rect BAR_X BUILD_Y BAR_W BAR_H
+ visible MENU_TRUE
+ decoration
+ forecolor 0.0 0.8 1 1
+ ownerdraw CG_LOAD_BUILDABLES
+ textalign ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NEON
+ textscale 0.5
+ borderSize 1.0
+ }
+
+ itemDef
+ {
+ name "buildableslabel"
+ style WINDOW_STYLE_EMPTY
+ textscale 0.6
+ rect LABEL_X BUILD_Y LABEL_W BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ forecolor 0.0 0.8 1 1
+ visible MENU_TRUE
+ decoration
+ ownerdraw CG_LOAD_BUILDABLES_LABEL
+ }
+
+ itemDef
+ {
+ name "charmodel"
+ rect BAR_X CHAR_Y BAR_W BAR_H
+ visible MENU_TRUE
+ decoration
+ forecolor 0.0 0.8 1 1
+ ownerdraw CG_LOAD_CHARMODEL
+ textalign ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NEON
+ textscale 0.5
+ borderSize 1.0
+ }
+
+ itemDef
+ {
+ name "charmodellabel"
+ style WINDOW_STYLE_EMPTY
+ textscale 0.6
+ rect LABEL_X CHAR_Y LABEL_W BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ forecolor 0.0 0.8 1 1
+ visible MENU_TRUE
+ decoration
+ ownerdraw CG_LOAD_CHARMODEL_LABEL
+ }
+
+ itemDef
+ {
+ name "overall"
+ rect BAR_X OVER_Y MAIN_W BAR_H
+ visible MENU_TRUE
+ decoration
+ forecolor 0.0 0.8 1 1
+ ownerdraw CG_LOAD_OVERALL
+ textalign ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NEON
+ textscale 0.5
+ borderSize 1.0
+ }
+ }
+}
diff --git a/assets/ui/main.menu b/assets/ui/main.menu
new file mode 100755
index 0000000..daae38a
--- /dev/null
+++ b/assets/ui/main.menu
@@ -0,0 +1,189 @@
+#include "ui/menudef.h"
+
+{
+ assetGlobalDef
+ {
+ font "fonts/font" 26 // font
+ smallFont "fonts/smallfont" 20 // font
+ bigFont "fonts/bigfont" 34 // font
+ cursor "ui/assets/3_cursor3" // cursor
+ gradientBar "ui/assets/gradientbar2.tga" // gradient bar
+ itemFocusSound "sound/misc/menu2.wav" // sound for item getting focus (via keyboard or mouse )
+
+ fadeClamp 1.0 // sets the fadeup alpha
+ fadeCycle 1 // how often fade happens in milliseconds
+ fadeAmount 0.1 // amount to adjust alpha per cycle
+
+ shadowColor 0.1 0.1 0.1 0.25 // shadow color
+ }
+
+
+
+
+
+ menuDef
+ {
+ name main
+ fullScreen MENU_TRUE
+ rect 0 0 640 480 // Size and position of the menu
+ visible MENU_TRUE // Visible on open
+ focusColor 1 .75 0 1 // Menu focus color for text and items
+ background "ui/assets/mainmenu.jpg"
+ aspectBias ASPECT_NONE
+
+ onOpen { uiScript stopRefresh ; playlooped "sound/ui/heartbeat.wav" }
+ onESC { open quit_popmenu }
+
+ itemDef
+ {
+ name splashmodel
+ rect 0 0 640 480
+ type ITEM_TYPE_MODEL
+ style WINDOW_STYLE_EMPTY
+ asset_model "models/splash/splash_screen.md3"
+ model_fovx 32.0
+ model_fovy 24.0
+ model_angle 180
+ visible MENU_TRUE
+ decoration
+ }
+
+#define X 536
+#define Y 20
+#define W 64
+#define ELEM_H 20
+
+ itemDef
+ {
+ name mainmenu
+ text "Play"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ rect X Y W ELEM_H
+ textalign ALIGN_RIGHT
+ textscale .416
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open joinserver
+ }
+ }
+
+ itemDef
+ {
+ name mainmenu
+ text "News"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .416
+ rect X (Y+(1*ELEM_H)) W ELEM_H
+ textalign ALIGN_RIGHT
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open news_menu
+ }
+ }
+
+ itemDef
+ {
+ name mainmenu
+ text "Options"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .416
+ rect X (Y+(2*ELEM_H)) W ELEM_H
+ textalign ALIGN_RIGHT
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open simple_options
+ }
+ }
+
+ itemDef
+ {
+ name mainmenu
+ text "Demos"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .416
+ rect X (Y+(3*ELEM_H)) W ELEM_H
+ textalign ALIGN_RIGHT
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open demo
+ }
+ }
+
+ itemDef
+ {
+ name mainmenu
+ text "Mods"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .416
+ rect X (Y+(4*ELEM_H)) W ELEM_H
+ textalign ALIGN_RIGHT
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open mod
+ }
+ }
+
+ itemDef
+ {
+ name mainmenu
+ text "Quit"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ rect X (Y+(5*ELEM_H)) W ELEM_H
+ textscale .416
+ textalign ALIGN_RIGHT
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open quit_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name copyright
+ type ITEM_TYPE_TEXT
+ text "Tremulous (C) 2005-2009 darklegion development"
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .25
+ rect 0 450 640 10
+ textalign ALIGN_CENTER
+ forecolor .75 .75 .75 .75
+ visible MENU_TRUE
+ decoration
+ }
+ }
+}
diff --git a/assets/ui/menudef.h b/assets/ui/menudef.h
new file mode 100755
index 0000000..cd30f77
--- /dev/null
+++ b/assets/ui/menudef.h
@@ -0,0 +1,223 @@
+#ifndef MENUDEF_H
+#define MENUDEF_H
+
+enum
+{
+ ITEM_TYPE_ANY = -1, // invalid type
+ ITEM_TYPE_NONE, // no specified type
+ ITEM_TYPE_TEXT, // simple text
+ ITEM_TYPE_BUTTON, // button, basically text with a border
+ ITEM_TYPE_RADIOBUTTON, // toggle button, may be grouped
+ ITEM_TYPE_CHECKBOX, // check box
+ ITEM_TYPE_EDITFIELD, // editable text, associated with a cvar
+ ITEM_TYPE_SAYFIELD, // the chat field
+ ITEM_TYPE_CYCLE, // cycling list
+ ITEM_TYPE_LISTBOX, // scrollable list
+ ITEM_TYPE_COMBOBOX, // drop down scrollable list
+ ITEM_TYPE_MODEL, // model
+ ITEM_TYPE_OWNERDRAW, // owner draw, has an associated ownerdraw number
+ ITEM_TYPE_NUMERICFIELD, // editable text, associated with a cvar
+ ITEM_TYPE_SLIDER, // mouse speed, volume, etc.
+ ITEM_TYPE_YESNO, // boolean cvar setting
+ ITEM_TYPE_MULTI, // multiple list setting, enumerated
+ ITEM_TYPE_BIND // keyboard control configuration
+};
+
+// The first items in these enums are the defaults if menus do not specify
+enum
+{
+ ALIGN_LEFT, // left alignment
+ ALIGN_CENTER, // center alignment
+ ALIGN_RIGHT, // right alignment
+ ASPECT_NONE, // no aspect compensation
+ ALIGN_NONE
+};
+
+enum
+{
+ VALIGN_BOTTOM, // bottom alignment
+ VALIGN_CENTER, // center alignment
+ VALIGN_TOP, // top alignment
+ VALIGN_NONE
+};
+
+enum
+{
+ ITEM_TEXTSTYLE_NORMAL, // normal text
+ ITEM_TEXTSTYLE_BLINK, // fast blinking
+ ITEM_TEXTSTYLE_PULSE, // slow pulsing
+ ITEM_TEXTSTYLE_SHADOWED, // drop shadow (need a color for this)
+ ITEM_TEXTSTYLE_OUTLINED, // apparently unimplemented
+ ITEM_TEXTSTYLE_OUTLINESHADOWED, // apparently unimplemented
+ ITEM_TEXTSTYLE_SHADOWEDMORE, // drop shadow (need a color for this)
+ ITEM_TEXTSTYLE_NEON // glow (need a color for this)
+};
+
+enum
+{
+ WINDOW_BORDER_NONE, // no border
+ WINDOW_BORDER_FULL, // full border based on border color (single pixel)
+ WINDOW_BORDER_HORZ, // horizontal borders only
+ WINDOW_BORDER_VERT, // vertical borders only
+ WINDOW_BORDER_KCGRADIENT // horizontal border using the gradient bars
+};
+
+enum
+{
+ WINDOW_STYLE_EMPTY, // no background
+ WINDOW_STYLE_FILLED, // filled with background color
+ WINDOW_STYLE_GRADIENT, // gradient bar based on background color
+ WINDOW_STYLE_SHADER, // use background shader
+ WINDOW_STYLE_TEAMCOLOR, // team color
+ WINDOW_STYLE_CINEMATIC // cinematic
+};
+
+#define MENU_TRUE 1 // uh.. true
+#define MENU_FALSE 0 // and false
+
+enum
+{
+ HUD_VERTICAL,
+ HUD_HORIZONTAL
+};
+
+// list box element types
+enum
+{
+ LISTBOX_TEXT,
+ LISTBOX_IMAGE
+};
+
+// list feeders
+enum
+{
+ FEEDER_SERVERS, // servers
+ FEEDER_MAPS, // all maps available, in graphic format
+ FEEDER_ALIENTEAM_LIST, // alien team members
+ FEEDER_HUMANTEAM_LIST, // human team members
+ FEEDER_TEAM_LIST, // team members for team voting
+ FEEDER_PLAYER_LIST, // players
+ FEEDER_NEWS, // news
+ FEEDER_MODS, // list of available mods
+ FEEDER_DEMOS, // list of available demo files
+ FEEDER_SERVERSTATUS, // server status
+ FEEDER_FINDPLAYER, // find player
+ FEEDER_CINEMATICS, // cinematics
+
+ FEEDER_TREMTEAMS, // teams
+ FEEDER_TREMALIENCLASSES, // alien classes
+ FEEDER_TREMHUMANITEMS, // human items
+ FEEDER_TREMHUMANARMOURYBUY, // human buy
+ FEEDER_TREMHUMANARMOURYSELL, // human sell
+ FEEDER_TREMALIENUPGRADE, // alien upgrade
+ FEEDER_TREMALIENBUILD, // alien buildables
+ FEEDER_TREMHUMANBUILD, // human buildables
+ FEEDER_IGNORE_LIST, // ignored players
+ FEEDER_HELP_LIST, // help topics
+ FEEDER_RESOLUTIONS // display resolutions
+};
+
+// display flags
+#define UI_SHOW_FAVORITESERVERS 0x00000001
+#define UI_SHOW_NOTFAVORITESERVERS 0x00000002
+
+#define UI_SHOW_VOTEACTIVE 0x00000004
+#define UI_SHOW_CANVOTE 0x00000008
+#define UI_SHOW_TEAMVOTEACTIVE 0x00000010
+#define UI_SHOW_CANTEAMVOTE 0x00000020
+
+#define UI_SHOW_NOTSPECTATING 0x00000040
+
+// owner draw types
+enum
+{
+ CG_PLAYER_HEALTH,
+ CG_PLAYER_HEALTH_CROSS,
+ CG_PLAYER_AMMO_VALUE,
+ CG_PLAYER_CLIPS_VALUE,
+ CG_PLAYER_BUILD_TIMER,
+ CG_PLAYER_CREDITS_VALUE,
+ CG_PLAYER_CREDITS_VALUE_NOPAD,
+ CG_PLAYER_STAMINA,
+ CG_PLAYER_STAMINA_1,
+ CG_PLAYER_STAMINA_2,
+ CG_PLAYER_STAMINA_3,
+ CG_PLAYER_STAMINA_4,
+ CG_PLAYER_STAMINA_BOLT,
+ CG_PLAYER_BOOST_BOLT,
+ CG_PLAYER_CLIPS_RING,
+ CG_PLAYER_BUILD_TIMER_RING,
+ CG_PLAYER_SELECT,
+ CG_PLAYER_SELECTTEXT,
+ CG_PLAYER_WEAPONICON,
+ CG_PLAYER_WALLCLIMBING,
+ CG_PLAYER_BOOSTED,
+ CG_PLAYER_POISON_BARBS,
+ CG_PLAYER_ALIEN_SENSE,
+ CG_PLAYER_HUMAN_SCANNER,
+ CG_PLAYER_USABLE_BUILDABLE,
+ CG_PLAYER_CHARGE_BAR_BG,
+ CG_PLAYER_CHARGE_BAR,
+ CG_PLAYER_CROSSHAIR,
+ CG_PLAYER_LOCATION,
+ CG_TEAMOVERLAY,
+ CG_PLAYER_CREDITS_FRACTION,
+
+ CG_KILLER,
+ CG_SPECTATORS,
+ CG_FOLLOW,
+
+// loading screen
+ CG_LOAD_LEVELSHOT,
+ CG_LOAD_MEDIA,
+ CG_LOAD_MEDIA_LABEL,
+ CG_LOAD_BUILDABLES,
+ CG_LOAD_BUILDABLES_LABEL,
+ CG_LOAD_CHARMODEL,
+ CG_LOAD_CHARMODEL_LABEL,
+ CG_LOAD_OVERALL,
+ CG_LOAD_LEVELNAME,
+ CG_LOAD_MOTD,
+ CG_LOAD_HOSTNAME,
+
+ CG_FPS,
+ CG_FPS_FIXED,
+ CG_TIMER,
+ CG_TIMER_MINS,
+ CG_TIMER_SECS,
+ CG_SNAPSHOT,
+ CG_LAGOMETER,
+ CG_SPEEDOMETER,
+ CG_PLAYER_CROSSHAIRNAMES,
+ CG_STAGE_REPORT_TEXT,
+ CG_ALIENS_SCORE_LABEL,
+ CG_HUMANS_SCORE_LABEL,
+ CG_DEMO_PLAYBACK,
+ CG_DEMO_RECORDING,
+
+ CG_CONSOLE,
+ CG_TUTORIAL,
+ CG_CLOCK,
+
+ UI_NETSOURCE,
+ UI_NETMAPPREVIEW,
+ UI_NETMAPCINEMATIC,
+ UI_SERVERREFRESHDATE,
+ UI_SERVERMOTD,
+ UI_GLINFO,
+ UI_KEYBINDSTATUS,
+ UI_SELECTEDMAPPREVIEW,
+ UI_SELECTEDMAPNAME,
+
+ UI_TEAMINFOPANE,
+ UI_ACLASSINFOPANE,
+ UI_AUPGRADEINFOPANE,
+ UI_HITEMINFOPANE,
+ UI_HBUYINFOPANE,
+ UI_HSELLINFOPANE,
+ UI_ABUILDINFOPANE,
+ UI_HBUILDINFOPANE,
+ UI_HELPINFOPANE
+};
+
+#endif
diff --git a/assets/ui/menus.txt b/assets/ui/menus.txt
new file mode 100755
index 0000000..d0d9537
--- /dev/null
+++ b/assets/ui/menus.txt
@@ -0,0 +1,21 @@
+// menu defs
+//
+{
+ loadMenu { "ui/main.menu" }
+ loadMenu { "ui/news.menu" }
+ loadMenu { "ui/joinserver.menu" }
+ loadMenu { "ui/options.menu" }
+ loadMenu { "ui/createserver.menu" }
+ loadMenu { "ui/mod.menu" }
+ loadMenu { "ui/demo.menu" }
+ loadMenu { "ui/connect.menu" }
+ loadMenu { "ui/password.menu" }
+ loadMenu { "ui/quit.menu" }
+ loadMenu { "ui/error.menu" }
+ loadMenu { "ui/download.menu" }
+ loadMenu { "ui/drop.menu" }
+ loadMenu { "ui/serverinfo.menu" }
+ loadMenu { "ui/findplayer.menu" }
+ loadMenu { "ui/quitcredit.menu" }
+ loadMenu { "ui/createfavorite.menu" }
+}
diff --git a/assets/ui/mod.menu b/assets/ui/mod.menu
new file mode 100755
index 0000000..38bee62
--- /dev/null
+++ b/assets/ui/mod.menu
@@ -0,0 +1,108 @@
+#include "ui/menudef.h"
+
+{
+ \\ MOD \\
+
+#define W 300
+#define H 240
+#define BUTT_W 45
+#define BUTT_H 35
+#define BORDER 10
+
+ menuDef
+ {
+ name "mod"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onEsc
+ {
+ close mod
+ }
+ onOpen
+ {
+ uiScript loadMods
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name modlist
+ rect BORDER BORDER (W-(2*BORDER)) (H-(BUTT_H+BORDER))
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_MODS
+ textalign 3
+ textaligny 14
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleClick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RunMod
+ }
+ }
+
+ itemDef
+ {
+ name load
+ text "Load"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close mod;
+ uiScript RunMod
+ }
+ }
+
+ itemDef
+ {
+ name cancel
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close mod
+ }
+ }
+ }
+}
diff --git a/assets/ui/news.menu b/assets/ui/news.menu
new file mode 100755
index 0000000..99d8d68
--- /dev/null
+++ b/assets/ui/news.menu
@@ -0,0 +1,102 @@
+#include "ui/menudef.h"
+
+{
+ \\ NEWS POPUP MENU \\
+
+#define W 400
+#define H 400
+#define BUTT_W 45
+#define BUTT_H 35
+#define TITLE_H 35
+#define BORDER 10
+#define LIST_W (W-(2*BORDER))
+
+ menuDef
+ {
+ name "news_menu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onClose { }
+ onOpen { uiScript getNews }
+ onESC
+ {
+ close news_menu
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name title
+ type ITEM_TYPE_TEXT
+ text "Tremulous News"
+ style WINDOW_STYLE_EMPTY
+ textscale .5
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ rect BORDER BORDER LIST_W TITLE_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ decoration
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name newslistbox
+ rect BORDER ((2*BORDER)+TITLE_H) LIST_W (H-((TITLE_H+BUTT_H)+(2*BORDER)))
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 16
+ textscale .25
+ border WINDOW_BORDER_FULL
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_NEWS
+ notselectable
+ visible MENU_TRUE
+ }
+
+ // BUTTON //
+
+ itemDef
+ {
+ name close
+ text "Close"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close news_menu
+ }
+ }
+ }
+}
+
+
diff --git a/assets/ui/options.menu b/assets/ui/options.menu
new file mode 100755
index 0000000..af9b22d
--- /dev/null
+++ b/assets/ui/options.menu
@@ -0,0 +1,311 @@
+#include "ui/menudef.h"
+
+{
+ \\ FRONT END OPTIONS BOX \\
+
+#define X 0
+#define Y 20
+#define W 250
+#define H ((10*(ELEM_H+ELEM_GAP))+120)
+#define TOFF_X (0-(W/2))
+#define ELEM_H 16
+#define ELEM_GAP 4
+#define BUTT_W 35
+#define BUTT_H 35
+#define BORDER 10
+#define RESCOMBO_OFF 8
+
+ menuDef
+ {
+ name "simple_options"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onEsc
+ {
+ play "sound/misc/menu1.wav";
+ close simple_options
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+
+
+ itemDef
+ {
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Name:"
+ cvar "name"
+ maxchars 26
+ rect X Y W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_MULTI
+ text "Video Quality:"
+ cvar "ui_glCustom"
+ cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
+ rect X (Y+(ELEM_H+ELEM_GAP)) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript update "ui_glCustom"
+ }
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Video Mode:"
+ rect X (Y+(2*(ELEM_H+ELEM_GAP))) (W/2) ELEM_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ rect ((W/2)+RESCOMBO_OFF) (Y+(2*(ELEM_H+ELEM_GAP))) ((W/2)-(2*BORDER)) ELEM_H
+ type ITEM_TYPE_COMBOBOX
+ style WINDOW_STYLE_FILLED
+ elementwidth ((W/2)-(2*BORDER))
+ elementheight ELEM_H
+ dropitems 5
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_RESOLUTIONS
+ border WINDOW_BORDER_FULL
+ borderColor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_SLIDER
+ text "Video Brightness:"
+ cvarfloat "r_gamma" 1 .5 2
+ rect X (Y+(3*(ELEM_H+ELEM_GAP))) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+
+
+ itemDef
+ {
+ type ITEM_TYPE_SLIDER
+ text "Effects Volume:"
+ cvarfloat "s_volume" 0.7 0 1
+ rect X (Y+(4*(ELEM_H+ELEM_GAP))) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_SLIDER
+ text "Music Volume:"
+ cvarfloat "s_musicvolume" 0.25 0 1
+ rect X (Y+(5*(ELEM_H+ELEM_GAP))) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_YESNO
+ text "OpenAL Sound:"
+ cvar "s_useOpenAL"
+ rect X (Y+(6*(ELEM_H+ELEM_GAP))) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+
+
+ itemDef
+ {
+ type ITEM_TYPE_SLIDER
+ text "Mouse Sensitivity:"
+ cvarfloat "sensitivity" 5 1 30
+ rect X (Y+(7*(ELEM_H+ELEM_GAP))) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_YESNO
+ text "Invert Mouse:"
+ cvar "ui_mousePitch"
+ rect X (Y+(8*(ELEM_H+ELEM_GAP))) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript update ui_mousePitch
+ }
+ }
+
+
+
+ itemDef
+ {
+ type ITEM_TYPE_MULTI
+ text "Network Connection:"
+ cvar "rate"
+ cvarFloatList { "<=28.8k" 2500 "33.6k" 3000 "56k" 4000 "ISDN" 5000 "LAN/CABLE/xDSL" 25000 }
+ rect X (Y+(9*(ELEM_H+ELEM_GAP))) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_YESNO
+ text "Allow Auto Download:"
+ cvar "cl_allowDownload"
+ rect X (Y+(10*(ELEM_H+ELEM_GAP))) W ELEM_H
+ textalign ALIGN_RIGHT
+ textalignx TOFF_X
+ textvalign VALIGN_CENTER
+ textscale .25
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+
+ itemDef
+ {
+ text "For further options please use the in-game options menu"
+ type ITEM_TYPE_TEXT
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .25
+ rect 0 (H-60) W 10
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ decoration
+ }
+
+
+ itemDef
+ {
+ text "APPLY"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "snd_restart" // includes vid_restart
+ }
+ }
+
+ itemDef
+ {
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close simple_options
+ }
+ }
+ }
+}
diff --git a/assets/ui/password.menu b/assets/ui/password.menu
new file mode 100755
index 0000000..d6ac4cd
--- /dev/null
+++ b/assets/ui/password.menu
@@ -0,0 +1,85 @@
+#include "ui/menudef.h"
+
+{
+ \\ PASSWORD POPUP MENU \\
+
+#define BUTT_W 45
+#define BUTT_H 35
+#define BORDER 10
+#define INPUT_H 20
+#define W 250
+#define H ((2*BORDER)+INPUT_H+BUTT_H)
+
+ menuDef
+ {
+ name "password_popmenu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+
+ onOpen
+ {
+ setfocus passwordEntry
+ }
+
+ onESC
+ {
+ close password_popmenu
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ // PASSWORD //
+
+ itemDef
+ {
+ name passwordEntry
+ type ITEM_TYPE_EDITFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Password:"
+ maxChars 40
+ textscale .4
+ cvar "password"
+ rect BORDER BORDER (W-(2*BORDER)) INPUT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name yes
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close password_popmenu
+ }
+ }
+ }
+}
diff --git a/assets/ui/quit.menu b/assets/ui/quit.menu
new file mode 100755
index 0000000..0bd2e90
--- /dev/null
+++ b/assets/ui/quit.menu
@@ -0,0 +1,99 @@
+#include "ui/menudef.h"
+
+{
+ \\ QUIT POPUP MENU \\
+
+#define W 120
+#define H 120
+
+ menuDef
+ {
+ name "quit_popmenu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onESC
+ {
+ play "sound/misc/menu1.wav";
+ close quit_popmenu
+ }
+
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+
+ // QUIT //
+
+ itemDef
+ {
+ name confirm
+ type ITEM_TYPE_TEXT
+ text "Quit Tremulous?"
+ style WINDOW_STYLE_EMPTY
+ textscale .3
+ textstyle WINDOW_STYLE_SHADER
+ rect 0 0 W ((2*H)/3)
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ decoration
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ }
+
+
+ itemDef
+ {
+ name yes
+ text "YES"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect 0 (H/3) (W/2) ((2*H)/3)
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu4.wav";
+ open quitCredit
+ }
+ }
+
+
+ itemDef
+ {
+ name no
+ text "NO"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ rect (W/2) (H/3) (W/2) ((2*H)/3)
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close quit_popmenu
+ }
+ }
+ }
+}
+
+
diff --git a/assets/ui/quitcredit.menu b/assets/ui/quitcredit.menu
new file mode 100755
index 0000000..14a8f4f
--- /dev/null
+++ b/assets/ui/quitcredit.menu
@@ -0,0 +1,410 @@
+#include "ui/menudef.h"
+
+{
+ \\ QUIT CREDIT \\
+
+ menuDef
+ {
+ name "quitCredit"
+ visible MENU_FALSE
+ fullscreen MENU_TRUE
+ rect 0 0 640 480
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_NONE
+ aspectBias ASPECT_NONE
+ onEsc
+ {
+ uiScript "quit"
+ }
+
+ itemDef
+ {
+ name exitclickbox
+ style WINDOW_STYLE_SHADER
+ rect 0 0 640 480
+ type ITEM_TYPE_BUTTON
+ visible MENU_TRUE
+ backcolor 0 0 0 1
+ background "ui/assets/credits_splash.jpg"
+ action
+ {
+ close quitCredit;
+ uiScript "quit"
+ }
+ }
+
+ itemDef
+ {
+ name topstripe
+ style WINDOW_STYLE_FILLED
+ rect -5 -5 645 64
+ visible MENU_TRUE
+ backcolor 0 0 0 1
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.5
+ borderColor 1 0 0 1
+ }
+
+ itemDef
+ {
+ name bottomstripe
+ style WINDOW_STYLE_FILLED
+ rect -5 416 645 485
+ visible MENU_TRUE
+ backcolor 0 0 0 1
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.5
+ borderColor 1 0 0 1
+ }
+
+ itemDef
+ {
+ name "creditstitle"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 320 48 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_CENTER
+ textscale 0.75
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "CREDITS"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit1left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 96 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Tim 'Timbo' Angus"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit1right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 96 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Programming and Direction"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit2left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 128 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Nick 'jex' Jansens"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit2right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 128 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mapping, texturing and 2D artwork"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit3left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 160 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Robin 'OverFlow' Marshall"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit3right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 160 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Modelling, animation and mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit4left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 192 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Jan 'Stannum' van der Weg"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit4right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 192 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Texturing and mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit5left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 224 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mike 'Veda' McInerney"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit5right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 224 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Modelling, animation and texturing"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit6left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 256 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Gordon 'Godmil' Miller"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit6right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 256 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit7left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 288 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "'Who-[Soup]'"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit7right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 288 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit8left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 320 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Tristan 'jhrx' Blease"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit8right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 320 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit9left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 352 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Paul 'MoP' Greveson"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit9right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 352 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Modelling and texturing"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit10left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 384 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_LEFT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Chris 'Dolby' McCarthy"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit10right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 384 1 1
+ type ITEM_TYPE_TEXT
+ textalign ALIGN_RIGHT
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Sound"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+ }
+}
diff --git a/assets/ui/say.menu b/assets/ui/say.menu
new file mode 100755
index 0000000..a52f2ed
--- /dev/null
+++ b/assets/ui/say.menu
@@ -0,0 +1,137 @@
+#include "ui/menudef.h"
+
+{
+
+#define BORDER 10
+
+#define X BORDER
+#define Y BORDER
+#define W (600-(2*BORDER))
+#define H (480-(2*BORDER))
+
+ // Say to All
+ menuDef
+ {
+ name say
+ fullScreen MENU_FALSE
+ visible MENU_FALSE
+ rect X Y W H
+ aspectBias ALIGN_LEFT
+ focusColor 1 1 1 1
+ style WINDOW_STYLE_EMPTY
+ onOpen
+ {
+ setfocus say_field;
+ }
+
+ itemDef
+ {
+ name say_field
+ type ITEM_TYPE_SAYFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Say:"
+ cvar "ui_sayBuffer"
+ maxchars 128
+ rect 0 0 W H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_SHADOWED
+ textscale .4
+ forecolor 0.93 0.93 0.92 1
+ visible MENU_TRUE
+ onCharEntry
+ {
+ uiScript SayKeyDown;
+ }
+ onTextEntry
+ {
+ uiScript Say;
+ close say;
+ }
+ }
+ }
+
+ // Say to Team
+ menuDef
+ {
+ name say_team
+ fullScreen MENU_FALSE
+ visible MENU_FALSE
+ rect X Y W H
+ aspectBias ALIGN_LEFT
+ focusColor 1 1 1 1
+ style WINDOW_STYLE_EMPTY
+ onOpen
+ {
+ setfocus say_field
+ }
+
+ itemDef
+ {
+ name say_field
+ type ITEM_TYPE_SAYFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Say to team:"
+ cvar "ui_sayBuffer"
+ maxchars 128
+ rect 0 0 W H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_SHADOWED
+ textscale .4
+ forecolor 0.93 0.93 0.92 1
+ visible MENU_TRUE
+ onCharEntry
+ {
+ uiScript SayKeyDown;
+ }
+ onTextEntry
+ {
+ uiScript Say;
+ close say_team;
+ }
+ }
+ }
+
+ // Command
+ menuDef
+ {
+ name say_command
+ fullScreen MENU_FALSE
+ visible MENU_FALSE
+ rect X Y W H
+ aspectBias ALIGN_LEFT
+ focusColor 1 1 1 1
+ style WINDOW_STYLE_EMPTY
+ onOpen
+ {
+ setfocus say_field
+ }
+
+ itemDef
+ {
+ name say_field
+ type ITEM_TYPE_SAYFIELD
+ style WINDOW_STYLE_EMPTY
+ text "Command:"
+ cvar "ui_sayBuffer"
+ maxchars 128
+ rect 0 0 W H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_SHADOWED
+ textscale .4
+ forecolor 0.93 0.93 0.92 1
+ visible MENU_TRUE
+ onCharEntry
+ {
+ uiScript SayKeyDown;
+ }
+ onTextEntry
+ {
+ uiScript Say;
+ close say_command;
+ }
+ }
+ }
+}
diff --git a/assets/ui/serverinfo.menu b/assets/ui/serverinfo.menu
new file mode 100755
index 0000000..596712c
--- /dev/null
+++ b/assets/ui/serverinfo.menu
@@ -0,0 +1,112 @@
+#include "ui/menudef.h"
+
+{
+ \\ SERVER INFO POPUP MENU \\
+
+#define W 400
+#define H 300
+#define BUTT_W 45
+#define BUTT_H 35
+#define BORDER 10
+#define LIST_W (W-(2*BORDER))
+#define LIST_DW (LIST_W-40)
+#define LEFT_C 0.13
+#define RIGHT_C 0.61
+
+ menuDef
+ {
+ name "serverinfo_popmenu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ popup
+ onClose { }
+ onOpen { uiScript ServerStatus }
+ onESC
+ {
+ close serverinfo_popmenu
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name serverinfo
+ rect BORDER BORDER LIST_W (H-(BUTT_H+BORDER))
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 16
+ textscale .25
+ border WINDOW_BORDER_FULL
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_SERVERSTATUS
+ notselectable
+ visible MENU_TRUE
+ columns 4
+ 0 ((2*LEFT_C)*LIST_DW) ALIGN_LEFT
+ (LEFT_C*LIST_DW) (LEFT_C*LIST_DW) ALIGN_LEFT
+ ((2*LEFT_C)*LIST_DW) (LEFT_C*LIST_DW) ALIGN_LEFT
+ ((1-RIGHT_C)*LIST_DW) (RIGHT_C*LIST_DW) ALIGN_LEFT
+ }
+
+ // BUTTON //
+
+ itemDef
+ {
+ name refresh
+ text "Refresh"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (W-(2*BUTT_W)) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerStatus
+ }
+ }
+
+ itemDef
+ {
+ name close
+ text "Close"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect (W-BUTT_W) (H-BUTT_H) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ forecolor 1 1 1 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close serverinfo_popmenu
+ }
+ }
+ }
+}
+
+
diff --git a/assets/ui/teamscore.menu b/assets/ui/teamscore.menu
new file mode 100755
index 0000000..65893a0
--- /dev/null
+++ b/assets/ui/teamscore.menu
@@ -0,0 +1,386 @@
+#include "ui/menudef.h"
+
+{
+ \\ score_menu \\
+
+#define W 500
+#define H 338
+#define BORDER 10
+
+#define TOFF 10
+#define SPEC_W 75
+#define BAR_H 30
+
+#define LLIST_L 0
+#define LLIST_R (W/2)
+#define RLIST_L (W/2)
+#define RLIST_R W
+
+ menuDef
+ {
+ name "teamscore_menu"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_EMPTY
+
+ // TEAM NAME //
+
+ itemDef
+ {
+ name teamNameWindow
+ rect 0 0 W BAR_H
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .8
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name alienteamname
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx TOFF
+ textscale 0.4
+ rect 0 0 (W/3) BAR_H
+ forecolor 1 1 1 1
+ decoration
+ visible MENU_TRUE
+ ownerdraw CG_ALIENS_SCORE_LABEL
+ }
+
+ itemDef
+ {
+ name stagereport
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale 0.33
+ rect (W/3) 0 (W/3) BAR_H
+ forecolor 1 1 1 1
+ decoration
+ visible MENU_TRUE
+ ownerdraw CG_STAGE_REPORT_TEXT
+ }
+
+ itemDef
+ {
+ name humanteamname
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textalignx -TOFF
+ textscale 0.4
+ rect ((2*W)/3) 0 (W/3) BAR_H
+ forecolor 1 1 1 1
+ decoration
+ visible MENU_TRUE
+ ownerdraw CG_HUMANS_SCORE_LABEL
+ }
+
+ // TEAM BARS //
+
+ itemDef
+ {
+ name leftteambar
+ rect 0 (BAR_H+BORDER) (W/2) BAR_H
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .8
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name rightteambar
+ rect (W/2) (BAR_H+BORDER) (W/2) BAR_H
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .8
+ visible MENU_TRUE
+ decoration
+ }
+
+
+ // TEAM HEADINGS //
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Status"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (LLIST_L+10) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Name"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (LLIST_L+50) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Score"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (LLIST_R-95) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Time"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (LLIST_R-55) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Ping"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (LLIST_R-15) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Status"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (RLIST_L+10) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Name"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (RLIST_L+50) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Score"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (RLIST_R-95) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Time"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (RLIST_R-55) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ text "Ping"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect (RLIST_R-15) (BAR_H+BORDER) 1 BAR_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible MENU_TRUE
+ }
+
+ itemDef
+ {
+ name leftlist
+ rect 0 ((2*BAR_H)+BORDER) (W/2) (H-((3*BAR_H)+(2*BORDER)))
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 .6
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ bordercolor .5 .5 .5 1
+ forecolor .75 .75 .75 1
+ visible MENU_TRUE
+ type ITEM_TYPE_LISTBOX
+ elementwidth 135
+ elementheight 16
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_ALIENTEAM_LIST
+ notselectable
+ noscrollbar
+ columns 7
+ 5 15 ALIGN_LEFT
+ 21 15 ALIGN_LEFT
+ 7 30 ALIGN_LEFT
+ 45 ((W/2)-170) ALIGN_LEFT
+ ((W/2)-120) 20 ALIGN_RIGHT
+ ((W/2)-80) 20 ALIGN_RIGHT
+ ((W/2)-40) 20 ALIGN_RIGHT
+ }
+
+ itemDef
+ {
+ name rightlist
+ rect (W/2) ((2*BAR_H)+BORDER) (W/2) (H-((3*BAR_H)+(2*BORDER)))
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 .6
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ bordercolor .5 .5 .5 1
+ forecolor .75 .75 .75 1
+ visible MENU_TRUE
+ type ITEM_TYPE_LISTBOX
+ elementwidth 135
+ elementheight 16
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_HUMANTEAM_LIST
+ notselectable
+ noscrollbar
+ columns 7
+ 5 15 ALIGN_LEFT
+ 21 15 ALIGN_LEFT
+ 7 30 ALIGN_LEFT
+ 45 ((W/2)-170) ALIGN_LEFT
+ ((W/2)-120) 20 ALIGN_RIGHT
+ ((W/2)-80) 20 ALIGN_RIGHT
+ ((W/2)-40) 20 ALIGN_RIGHT
+ }
+
+ // spectators //
+
+ itemDef
+ {
+ name window
+ rect 0 (H-BAR_H) W BAR_H
+ style WINDOW_STYLE_FILLED
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ bordercolor .5 .5 .5 1
+ backcolor 0 0 0 .8
+ textscale .33
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ type ITEM_TYPE_TEXT
+ name window
+ text "Spectating:"
+ rect 0 (H-BAR_H) SPEC_W BAR_H
+ style WINDOW_STYLE_FILLED
+ forecolor 1 1 1 1
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textalignx TOFF
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ rect SPEC_W (H-BAR_H) (W-SPEC_W) BAR_H
+ style WINDOW_STYLE_FILLED
+ forecolor 1 1 1 1
+ textscale .33
+ textvalign VALIGN_CENTER
+ visible MENU_TRUE
+ ownerdraw CG_SPECTATORS
+ decoration
+ }
+
+ itemDef
+ {
+ name winner
+ type ITEM_TYPE_TEXT
+ rect (W/2) (H+BAR_H) 0 0
+ style WINDOW_STYLE_EMPTY
+ forecolor 1 1 1 1
+ textscale 0.5
+ textalign ALIGN_CENTER
+ textvalign VALIGN_TOP
+ visible MENU_TRUE
+ cvar "ui_winner"
+ decoration
+ }
+ }
+}
diff --git a/assets/ui/tremulous.txt b/assets/ui/tremulous.txt
new file mode 100755
index 0000000..7968411
--- /dev/null
+++ b/assets/ui/tremulous.txt
@@ -0,0 +1,20 @@
+// menu defs
+//
+{
+ loadMenu { "ui/tremulous_teamselect.menu" }
+ loadMenu { "ui/tremulous_alienclass.menu" }
+ loadMenu { "ui/tremulous_humanitem.menu" }
+
+ loadMenu { "ui/tremulous_alienbuild.menu" }
+ loadMenu { "ui/tremulous_humanbuild.menu" }
+
+ loadMenu { "ui/tremulous_humanarmoury.menu" }
+
+ loadMenu { "ui/tremulous_dialogs.menu" }
+ loadMenu { "ui/tremulous_humandialogs.menu" }
+ loadMenu { "ui/tremulous_aliendialogs.menu" }
+
+ loadMenu { "ui/tremulous_alienupgrade.menu" }
+
+ loadMenu { "ui/say.menu" }
+}
diff --git a/assets/ui/tremulous_alien_builder_hud.menu b/assets/ui/tremulous_alien_builder_hud.menu
new file mode 100755
index 0000000..b532264
--- /dev/null
+++ b/assets/ui/tremulous_alien_builder_hud.menu
@@ -0,0 +1,42 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 640
+#define H 480
+
+ menuDef
+ {
+ name "alien_builder_hud"
+ fullScreen MENU_FALSE
+ visible MENU_TRUE
+ rect 0 0 W H
+ aspectBias ASPECT_NONE
+
+#include "ui/tremulous_alien_common_hud.h"
+
+ //BUILD TIMER
+ itemDef
+ {
+ name "buildtimer"
+ rect 567 410 25 25
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor 1.0 0.0 0.0 .5
+ ownerdraw CG_PLAYER_BUILD_TIMER
+ }
+
+ //BUILD POINTS
+ itemDef
+ {
+ name "build-points"
+ rect 493.5 421.5 60 15
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor 1.0 0.0 0.0 1.0
+ ownerdraw CG_PLAYER_AMMO_VALUE
+ }
+ }
+}
diff --git a/assets/ui/tremulous_alien_common_hud.h b/assets/ui/tremulous_alien_common_hud.h
new file mode 100755
index 0000000..c77c9f7
--- /dev/null
+++ b/assets/ui/tremulous_alien_common_hud.h
@@ -0,0 +1,257 @@
+#define COMMON_HUD_R 1.0
+#define COMMON_HUD_G 0.0
+#define COMMON_HUD_B 0.0
+#include "ui/tremulous_common_hud.h"
+
+//////////////////
+//STATIC OBJECTS//
+//////////////////
+
+//LEFT RING CIRCLE
+itemDef
+{
+ name "left-ring-circle"
+ rect 47.5 410 25 25
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+}
+
+//LEFT ARM
+itemDef
+{
+ name "left-arm"
+ rect 77 404.75 104 52.5
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/alien/left-arm.tga"
+}
+
+//LEFT ARM CIRCLE
+itemDef
+{
+ name "left-arm-circle"
+ rect 150 417.5 25 25
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+}
+
+//RIGHT RING CIRCLE
+itemDef
+{
+ name "right-ring-circle"
+ rect 567 410 25 25
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+}
+
+//RIGHT ARM
+itemDef
+{
+ name "right-arm"
+ rect 459 404.75 104 52.5
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/alien/right-arm.tga"
+}
+
+///////////////////
+//DYNAMIC OBJECTS//
+///////////////////
+
+//BOLT
+itemDef
+{
+ name "bolt"
+ rect 52.5 412.5 15 20
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/alien/bolt.tga"
+ ownerdraw CG_PLAYER_BOOST_BOLT
+}
+
+//CROSS
+itemDef
+{
+ name "cross"
+ rect 150 417.5 25 25
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ ownerdraw CG_PLAYER_HEALTH_CROSS
+}
+
+//LEFT RING
+itemDef
+{
+ name "left-ring"
+ rect 7.25 369.5 90.5 106
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/alien/left-ring.tga"
+ ownerdraw CG_PLAYER_BOOSTED
+}
+
+//LEFT SPIKES
+itemDef
+{
+ name "left-spikes"
+ rect 18.5 381 59 83
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1.0
+ backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/alien/left-spikes.tga"
+ ownerdraw CG_PLAYER_WALLCLIMBING
+}
+
+//RIGHT RING
+itemDef
+{
+ name "right-ring"
+ rect 542.25 369.5 90.5 106
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/alien/right-ring.tga"
+ ownerdraw CG_PLAYER_BOOSTED
+}
+
+//RIGHT SPIKES
+itemDef
+{
+ name "right-spikes"
+ rect 562.5 381 59 83
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1.0
+ backcolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/alien/right-spikes.tga"
+ ownerdraw CG_PLAYER_WALLCLIMBING
+}
+
+//HEALTH
+itemDef
+{
+ name "health"
+ rect 78.5 421.5 60 15
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5
+ ownerdraw CG_PLAYER_HEALTH
+}
+
+//ALIEN CLASS ICON
+itemDef
+{
+ name "alien-icon"
+ rect 465 417.5 25 25
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.6
+ ownerdraw CG_PLAYER_WEAPONICON
+}
+
+//ORGANS
+itemDef
+{
+ name "organs"
+ rect 570 416 15 15
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1
+ ownerdraw CG_PLAYER_CREDITS_VALUE_NOPAD
+}
+
+//CREDITS FRACTION
+itemDef
+{
+ name "credits-background"
+ rect 567 410 25 25
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ background "ui/assets/neutral/circle.tga"
+ ownerdraw CG_PLAYER_CREDITS_FRACTION
+}
+
+//ALIENSENSE
+itemDef
+{
+ name "aliensense"
+ rect 20 20 600 400
+ visible MENU_TRUE
+ decoration
+ ownerdraw CG_PLAYER_ALIEN_SENSE
+}
+
+//CHARGE BAR
+itemDef
+{
+ name "charge"
+ rect 292 426 56 8
+ aspectBias ALIGN_CENTER
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ ownerdraw CG_PLAYER_CHARGE_BAR
+ background "ui/assets/neutral/charge_cap_h.tga"
+}
+
+//CHARGE BAR BG
+itemDef
+{
+ name "chargebg"
+ rect 288 422 64 16
+ aspectBias ALIGN_CENTER
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ ownerdraw CG_PLAYER_CHARGE_BAR_BG
+ background "ui/assets/neutral/charge_bg_h.tga"
+}
+
+//TEAM OVERLAY
+itemDef
+{
+ name "teamoverlay"
+ rect BORDER 175 200 128
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.75
+ textscale 0.85
+ ownerdraw CG_TEAMOVERLAY
+}
diff --git a/assets/ui/tremulous_alien_general_hud.menu b/assets/ui/tremulous_alien_general_hud.menu
new file mode 100755
index 0000000..df1352d
--- /dev/null
+++ b/assets/ui/tremulous_alien_general_hud.menu
@@ -0,0 +1,30 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 640
+#define H 480
+
+ menuDef
+ {
+ name "alien_general_hud"
+ fullScreen MENU_FALSE
+ visible MENU_TRUE
+ rect 0 0 W H
+ aspectBias ASPECT_NONE
+
+#include "ui/tremulous_alien_common_hud.h"
+
+ //BLOB
+ itemDef
+ {
+ name "blob"
+ rect 497 419 52 18
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ forecolor 1.0 0.0 0.0 0.5
+ background "ui/assets/alien/tremublob.tga"
+ ownerdraw CG_PLAYER_POISON_BARBS
+ }
+ }
+}
diff --git a/assets/ui/tremulous_alienbuild.menu b/assets/ui/tremulous_alienbuild.menu
new file mode 100755
index 0000000..127b769
--- /dev/null
+++ b/assets/ui/tremulous_alienbuild.menu
@@ -0,0 +1,136 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 450
+#define H 250
+#define BORDER 10
+
+#define LIST_W 140
+#define LIST_H (H-(2*BORDER))
+#define LIST_X BORDER
+#define LIST_Y BORDER
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-((3*BORDER)+LIST_W))
+#define INFO_H (H-((3*BORDER)+BUTT_H))
+#define INFO_X ((2*BORDER)+LIST_W)
+#define INFO_Y BORDER
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "tremulous_alienbuild"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ popup
+ onOpen { uiScript LoadAlienBuilds; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect LIST_X LIST_Y LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMALIENBUILD
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuildAlienBuildable;
+ close tremulous_alienbuild
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_ABUILDINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx INFO_TOFF
+ textaligny INFO_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuildAlienBuildable;
+ close tremulous_alienbuild
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_alienbuild
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_alienclass.menu b/assets/ui/tremulous_alienclass.menu
new file mode 100755
index 0000000..441e27f
--- /dev/null
+++ b/assets/ui/tremulous_alienclass.menu
@@ -0,0 +1,157 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 450
+#define H 250
+#define BORDER 10
+
+#define LIST_W 140
+#define LIST_H (H-(2*BORDER))
+#define LIST_X BORDER
+#define LIST_Y BORDER
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-((3*BORDER)+LIST_W))
+#define INFO_H (H-((3*BORDER)+BUTT_H))
+#define INFO_X ((2*BORDER)+LIST_W)
+#define INFO_Y BORDER
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "tremulous_alienclass"
+ visible MENU_TRUE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ popup
+ onOpen { uiScript LoadAlienClasses; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect LIST_X LIST_Y LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMALIENCLASSES
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SpawnAsAlienClass;
+ close tremulous_alienclass
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_ACLASSINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx INFO_TOFF
+ textaligny INFO_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name "Back"
+ text "< Back"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect ((2*BORDER)+LIST_W) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close tremulous_alienclass;
+ open tremulous_teamselect
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SpawnAsAlienClass;
+ close tremulous_alienclass
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_alienclass
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_aliendialogs.menu b/assets/ui/tremulous_aliendialogs.menu
new file mode 100755
index 0000000..921d2c8
--- /dev/null
+++ b/assets/ui/tremulous_aliendialogs.menu
@@ -0,0 +1,97 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 280
+#define H 190
+#define BORDER 10
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-(2*BORDER))
+#define INFO_H (H-((4*BORDER)+(2*BUTT_H)))
+#define INFO_X BORDER
+#define INFO_Y ((2*BORDER)+BUTT_H)
+
+ menuDef
+ {
+ name "tremulous_alien_dialog"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_EMPTY
+ popup
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name alien_dialog
+ text "Error"
+ type ITEM_TYPE_TEXT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect BORDER BORDER INFO_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name alien_dialog
+ type ITEM_TYPE_TEXT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ cvar "ui_dialog"
+ wrapped
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .33
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name alien_dialog
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close tremulous_alien_dialog
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_alienupgrade.menu b/assets/ui/tremulous_alienupgrade.menu
new file mode 100755
index 0000000..2ef7bcb
--- /dev/null
+++ b/assets/ui/tremulous_alienupgrade.menu
@@ -0,0 +1,136 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 450
+#define H 250
+#define BORDER 10
+
+#define LIST_W 140
+#define LIST_H (H-(2*BORDER))
+#define LIST_X BORDER
+#define LIST_Y BORDER
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-((3*BORDER)+LIST_W))
+#define INFO_H (H-((3*BORDER)+BUTT_H))
+#define INFO_X ((2*BORDER)+LIST_W)
+#define INFO_Y BORDER
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "tremulous_alienupgrade"
+ visible MENU_TRUE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ popup
+ onOpen { uiScript LoadAlienUpgrades; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect LIST_X LIST_Y LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMALIENUPGRADE
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript UpgradeToNewClass;
+ close tremulous_alienupgrade
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_AUPGRADEINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx INFO_TOFF
+ textaligny INFO_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript UpgradeToNewClass;
+ close tremulous_alienupgrade
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_alienupgrade
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_common_hud.h b/assets/ui/tremulous_common_hud.h
new file mode 100755
index 0000000..662a2bc
--- /dev/null
+++ b/assets/ui/tremulous_common_hud.h
@@ -0,0 +1,224 @@
+#define BORDER 10
+
+#define STAT_W 45
+#define STAT_H 22
+#define STAT_X (W-(BORDER+STAT_W))
+
+#define CONSOLE_W (W-((3*BORDER)+STAT_W))
+#define CONSOLE_H 180
+#define MAIN_W (W-(2*BORDER))
+
+//CONSOLE
+itemDef
+{
+ name "console"
+ rect BORDER BORDER CONSOLE_W CONSOLE_H
+ aspectBias ALIGN_LEFT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor 0.93 0.93 0.92 1
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textscale 0.35
+ textstyle ITEM_TEXTSTYLE_SHADOWED
+ ownerdraw CG_CONSOLE
+}
+
+//TUTORIAL
+itemDef
+{
+ name "tutorial"
+ rect BORDER 275 MAIN_W 130
+ aspectBias ALIGN_LEFT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor 1 1 1 0.35
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_TUTORIAL
+}
+
+//FPS
+itemDef
+{
+ name "fps"
+ rect STAT_X BORDER STAT_W STAT_H
+ aspectBias ALIGN_RIGHT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_FPS
+}
+
+//TIMER
+itemDef
+{
+ name "timer"
+ rect STAT_X ((2*BORDER)+STAT_H) STAT_W STAT_H
+ aspectBias ALIGN_RIGHT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_TIMER
+}
+
+//LAGOMETER
+itemDef
+{
+ name "lagometer"
+ rect STAT_X ((3*BORDER)+(2*STAT_H)) STAT_W STAT_H
+ aspectBias ALIGN_RIGHT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1
+ textscale 0.3
+ ownerdraw CG_LAGOMETER
+}
+
+//SPEEDOMETER
+itemDef
+{
+ name "speedometer"
+ rect (320-(STAT_W/2)) 350 STAT_W STAT_H
+ aspectBias ALIGN_CENTER
+ type ITEM_TYPE_OWNERDRAW
+ ownerdraw CG_SPEEDOMETER
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ foreColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ textscale 0.3
+}
+
+//CLOCK
+itemDef
+{
+ name "clock"
+ rect STAT_X ((4*BORDER)+(3*STAT_H)) STAT_W STAT_H
+ aspectBias ALIGN_RIGHT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_CLOCK
+}
+
+//LOCATION
+itemDef
+{
+ name "location"
+ rect (STAT_X-75) ((5*BORDER)+(4*STAT_H)) (STAT_W+75) STAT_H
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor 1 1 1 1
+ textalign ALIGN_RIGHT
+ textscale 0.3
+ ownerdraw CG_PLAYER_LOCATION
+}
+
+//DEMO STATE
+itemDef
+{
+ name "demoRecording"
+ rect (STAT_X+(STAT_W-32)) ((8*BORDER)+(4*STAT_H)) 32 32
+ aspectBias ALIGN_RIGHT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor 1 0 0 1
+ textscale 0.3
+ ownerdraw CG_DEMO_RECORDING
+ background "ui/assets/neutral/circle.tga"
+}
+itemDef
+{
+ name "demoPlayback"
+ rect (STAT_X+(STAT_W-32)) ((8*BORDER)+(4*STAT_H)) 32 32
+ aspectBias ALIGN_RIGHT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor 1 1 1 1
+ textscale 0.3
+ ownerdraw CG_DEMO_PLAYBACK
+ background "ui/assets/forwardarrow.tga"
+}
+
+//SNAPSHOT
+itemDef
+{
+ name "snapshot"
+ rect BORDER (H-(BORDER+STAT_H)) MAIN_W STAT_H
+ aspectBias ALIGN_LEFT
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 1
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textscale 0.4
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_SNAPSHOT
+}
+
+//PLAYER NAME
+itemDef
+{
+ name "playername"
+ rect 200 275 240 25
+ aspectBias ALIGN_CENTER
+ visible MENU_TRUE
+ decoration
+ textScale .5
+ ownerdraw CG_PLAYER_CROSSHAIRNAMES
+ textstyle ITEM_TEXTSTYLE_SHADOWED
+}
+
+//CROSSHAIR
+itemDef
+{
+ name "crosshair"
+ visible MENU_TRUE
+ decoration
+ rect 320 240 0 0
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .35
+ ownerdraw CG_PLAYER_CROSSHAIR
+}
+
+//SPECTATOR TEXT
+itemDef
+{
+ name "followtext"
+ rect 200 375 240 25
+ foreColor 1 1 1 1
+ aspectBias ALIGN_CENTER
+ textalign ALIGN_CENTER
+ textvalign VALIGN_TOP
+ visible MENU_TRUE
+ decoration
+ textScale .7
+ textStyle ITEM_TEXTSTYLE_SHADOWED
+ ownerdraw CG_FOLLOW
+}
+
diff --git a/assets/ui/tremulous_default_hud.menu b/assets/ui/tremulous_default_hud.menu
new file mode 100755
index 0000000..8d1034b
--- /dev/null
+++ b/assets/ui/tremulous_default_hud.menu
@@ -0,0 +1,37 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 640
+#define H 480
+
+ menuDef
+ {
+ name "default_hud"
+ fullScreen MENU_FALSE
+ visible MENU_TRUE
+ rect 0 0 W H
+ aspectBias ASPECT_NONE
+
+#define COMMON_HUD_R 1.0
+#define COMMON_HUD_G 1.0
+#define COMMON_HUD_B 1.0
+#include "ui/tremulous_common_hud.h"
+
+ //SPECTATOR TEXT
+ itemDef
+ {
+ name "spectatortext"
+ text "SPECTATOR"
+ rect 200 415 240 25
+ foreColor 1 1 1 1
+ aspectBias ALIGN_CENTER
+ textalign ALIGN_CENTER
+ textvalign VALIGN_TOP
+ visible MENU_TRUE
+ decoration
+ textScale .7
+ textStyle ITEM_TEXTSTYLE_SHADOWED
+ }
+ }
+}
diff --git a/assets/ui/tremulous_dialogs.menu b/assets/ui/tremulous_dialogs.menu
new file mode 100755
index 0000000..63109dc
--- /dev/null
+++ b/assets/ui/tremulous_dialogs.menu
@@ -0,0 +1,98 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 280
+#define H 190
+#define BORDER 10
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-(2*BORDER))
+#define INFO_H (H-((4*BORDER)+(2*BUTT_H)))
+#define INFO_X BORDER
+#define INFO_Y ((2*BORDER)+BUTT_H)
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "tremulous_default_dialog"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_EMPTY
+ popup
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name default_dialog
+ text "Error"
+ type ITEM_TYPE_TEXT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect BORDER BORDER INFO_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name default_dialog
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ type ITEM_TYPE_TEXT
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ cvar "ui_dialog"
+ wrapped
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .33
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name default_dialog
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close tremulous_default_dialog
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_human_hud.menu b/assets/ui/tremulous_human_hud.menu
new file mode 100755
index 0000000..f2b4ca9
--- /dev/null
+++ b/assets/ui/tremulous_human_hud.menu
@@ -0,0 +1,379 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 640
+#define H 480
+
+ menuDef
+ {
+ name "human_hud"
+ fullScreen MENU_FALSE
+ visible MENU_TRUE
+ rect 0 0 W H
+ aspectBias ASPECT_NONE
+
+#define COMMON_HUD_R 0.0
+#define COMMON_HUD_G 0.8
+#define COMMON_HUD_B 1.0
+#include "ui/tremulous_common_hud.h"
+
+ //////////////////
+ //STATIC OBJECTS//
+ //////////////////
+
+ //LEFT CIRCLE
+ itemDef
+ {
+ name "left-circle"
+ rect 35 417.5 25 25
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //LEFT ARM
+ itemDef
+ {
+ name "left-arm"
+ rect 68.25 420 94.5 35
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/human/left-arm.tga"
+ }
+
+ //CREDITS LABEL
+ itemDef
+ {
+ name "credits-label"
+ rect 508 403 7 7.5
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/human/credits.tga"
+ }
+
+ //RIGHT CIRCLE
+ itemDef
+ {
+ name "right-circle"
+ rect 580 417.5 25 25
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //RIGHT ARM
+ itemDef
+ {
+ name "right-arm"
+ rect 477.25 420 94.5 35
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/human/right-arm.tga"
+ }
+
+ //RIGHT CAP
+ itemDef
+ {
+ name "right-cap"
+ rect 500 400 80 15
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/human/right-cap.tga"
+ }
+
+ ///////////////////
+ //DYNAMIC OBJECTS//
+ ///////////////////
+
+ //BOLT
+ itemDef
+ {
+ name "bolt"
+ rect 40 420 15 20
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/human/bolt.tga"
+ ownerdraw CG_PLAYER_STAMINA_BOLT
+ }
+
+ //CROSS
+ itemDef
+ {
+ name "cross"
+ rect 132.5 425 25 25
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ ownerdraw CG_PLAYER_HEALTH_CROSS
+ }
+
+ //STAMINA 1
+ itemDef
+ {
+ name "stamina1"
+ rect 34.5 403.5 9 11.5
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/human/stamina1.tga"
+ ownerdraw CG_PLAYER_STAMINA_1
+ }
+
+ //STAMINA 2
+ itemDef
+ {
+ name "stamina2"
+ rect 24 410.75 11.5 10.5
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/human/stamina2.tga"
+ ownerdraw CG_PLAYER_STAMINA_2
+ }
+
+ //STAMINA 3
+ itemDef
+ {
+ name "stamina3"
+ rect 20.75 423.5 10.5 7
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/human/stamina3.tga"
+ ownerdraw CG_PLAYER_STAMINA_3
+ }
+
+ //STAMINA 4
+ itemDef
+ {
+ name "stamina4"
+ rect 21 402.5 54 55
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.8
+ backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/human/stamina4.tga"
+ ownerdraw CG_PLAYER_STAMINA_4
+ }
+
+ //RING
+ itemDef
+ {
+ name "ring"
+ //rect 20 402.5 55 55 // Guide for Stamina alignment
+ rect 565 402.5 55 55
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ backColor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.2
+ background "ui/assets/human/ring.tga"
+ ownerdraw CG_PLAYER_CLIPS_RING
+ }
+
+ //CREDITS
+ itemDef
+ {
+ name "credits"
+ rect 515 402 45 11.25
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ ownerdraw CG_PLAYER_CREDITS_VALUE
+ }
+
+ //HEALTH
+ itemDef
+ {
+ name "health"
+ rect 67 430 60 15
+ aspectBias ALIGN_LEFT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5
+ ownerdraw CG_PLAYER_HEALTH
+ }
+
+ //WEAPON ICON
+ itemDef
+ {
+ name "weapon"
+ rect 482.5 425 25 25
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ ownerdraw CG_PLAYER_WEAPONICON
+ }
+
+ //WEAPON SELECT TEXT
+ itemDef
+ {
+ name "selecttext"
+ rect 200 300 240 25
+ aspectBias ALIGN_CENTER
+ visible MENU_TRUE
+ decoration
+ textScale .5
+ ownerdraw CG_PLAYER_SELECTTEXT
+ textstyle ITEM_TEXTSTYLE_SHADOWED
+ }
+
+ //AMMO
+ itemDef
+ {
+ name "ammo"
+ rect 507 430 53 15
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5
+ ownerdraw CG_PLAYER_AMMO_VALUE
+ }
+
+ //CLIPS
+ itemDef
+ {
+ name "clips"
+ rect 538 423 60 15
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5
+ ownerdraw CG_PLAYER_CLIPS_VALUE
+ }
+
+ //BUILD TIMER
+ itemDef
+ {
+ name "buildtimer"
+ rect 580 417.5 25 25
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5
+ ownerdraw CG_PLAYER_BUILD_TIMER
+ }
+
+ //USABLE
+ itemDef
+ {
+ name "usable"
+ rect 307.5 380 25 25
+ aspectBias ALIGN_CENTER
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5
+ background "ui/assets/neutral/use.tga"
+ ownerdraw CG_PLAYER_USABLE_BUILDABLE
+ }
+
+ //SCANNER
+ itemDef
+ {
+ name "scanner"
+ rect 164 340 312 72
+ aspectBias ALIGN_CENTER
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B .5
+ background "ui/assets/human/scanner.tga"
+ ownerdraw CG_PLAYER_HUMAN_SCANNER
+ }
+
+ //INVENTORY
+ itemDef
+ {
+ name "inventory"
+ rect 182.5 425 275 25
+ aspectBias ALIGN_CENTER
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ ownerdraw CG_PLAYER_SELECT
+ }
+
+ //CHARGE BAR
+ itemDef
+ {
+ name "charge"
+ rect 510 384 56 8
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.5
+ ownerdraw CG_PLAYER_CHARGE_BAR
+ background "ui/assets/neutral/charge_cap_h.tga"
+ }
+
+ //CHARGE BAR BG
+ itemDef
+ {
+ name "chargebg"
+ rect 506 380 64 16
+ aspectBias ALIGN_RIGHT
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ ownerdraw CG_PLAYER_CHARGE_BAR_BG
+ background "ui/assets/neutral/charge_bg_h.tga"
+ }
+
+ //SELECTED
+ itemDef
+ {
+ name "selected"
+ rect 306 424 27 27
+ aspectBias ALIGN_CENTER
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/selected.tga"
+ }
+
+ //TEAM OVERLAY
+ itemDef
+ {
+ name "teamoverlay"
+ rect BORDER 175 200 128
+ style WINDOW_STYLE_EMPTY
+ visible MENU_TRUE
+ decoration
+ forecolor COMMON_HUD_R COMMON_HUD_G COMMON_HUD_B 0.75
+ textscale 0.85
+ ownerdraw CG_TEAMOVERLAY
+ }
+ }
+}
diff --git a/assets/ui/tremulous_humanarmoury.menu b/assets/ui/tremulous_humanarmoury.menu
new file mode 100755
index 0000000..2df829f
--- /dev/null
+++ b/assets/ui/tremulous_humanarmoury.menu
@@ -0,0 +1,189 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 550
+#define H 250
+#define BORDER 10
+#define LIST_W 140
+#define LIST_H (H-(2*BORDER))
+#define LIST_LX BORDER
+#define LIST_LY BORDER
+#define LIST_RX (W-(BORDER+LIST_W))
+#define LIST_RY BORDER
+
+#define BUTT_H 25
+#define BUTT_Y (H-(BORDER+BUTT_H))
+
+#define INFO_W (W-((4*BORDER)+(2*LIST_W)))
+#define INFO_H (H-((3*BORDER)+BUTT_H))
+#define INFO_X ((2*BORDER)+LIST_W)
+#define INFO_Y BORDER
+#define INFO_TOFF 6
+
+#define BUTT_X INFO_X
+#define BUTT_W (INFO_W/3)
+
+ menuDef
+ {
+ name "tremulous_humanarmoury"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ popup
+ onOpen
+ {
+ uiScript LoadHumanArmouryBuys;
+ uiScript LoadHumanArmourySells;
+ setFocus list
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "buylist"
+ rect LIST_LX LIST_LY LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMHUMANARMOURYBUY
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ resetonfeederchange
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuyFromArmoury;
+ }
+ }
+
+ itemDef
+ {
+ name "selllist"
+ rect LIST_RX LIST_RY LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMHUMANARMOURYSELL
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ resetonfeederchange
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SellToArmoury;
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_HBUYINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx INFO_TOFF
+ textaligny INFO_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name "Buy"
+ text "Buy >"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect BUTT_X BUTT_Y BUTT_W BUTT_H
+ textalign ALIGN_LEFT
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuyFromArmoury;
+ }
+ }
+
+ itemDef
+ {
+ name "Close"
+ text "Close"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (BUTT_X+BUTT_W) BUTT_Y BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close tremulous_humanarmoury
+ }
+ }
+
+ itemDef
+ {
+ name "Sell"
+ text "< Sell"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (BUTT_X+(2*BUTT_W)) BUTT_Y BUTT_W BUTT_H
+ textalign ALIGN_RIGHT
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SellToArmoury;
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_humanbuild.menu b/assets/ui/tremulous_humanbuild.menu
new file mode 100755
index 0000000..572957b
--- /dev/null
+++ b/assets/ui/tremulous_humanbuild.menu
@@ -0,0 +1,135 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 450
+#define H 250
+#define BORDER 10
+
+#define LIST_W 140
+#define LIST_H (H-(2*BORDER))
+#define LIST_X BORDER
+#define LIST_Y BORDER
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-((3*BORDER)+LIST_W))
+#define INFO_H (H-((3*BORDER)+BUTT_H))
+#define INFO_X ((2*BORDER)+LIST_W)
+#define INFO_Y BORDER
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "tremulous_humanbuild"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ popup
+ onOpen { uiScript LoadHumanBuilds; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect LIST_X LIST_Y LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMHUMANBUILD
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuildHumanBuildable;
+ close tremulous_humanbuild
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_HBUILDINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx INFO_TOFF
+ textaligny INFO_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuildHumanBuildable;
+ close tremulous_humanbuild
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_humanbuild
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_humandialogs.menu b/assets/ui/tremulous_humandialogs.menu
new file mode 100755
index 0000000..96ba08a
--- /dev/null
+++ b/assets/ui/tremulous_humandialogs.menu
@@ -0,0 +1,98 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 280
+#define H 190
+#define BORDER 10
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-(2*BORDER))
+#define INFO_H (H-((4*BORDER)+(2*BUTT_H)))
+#define INFO_X BORDER
+#define INFO_Y ((2*BORDER)+BUTT_H)
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "tremulous_human_dialog"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_EMPTY
+ popup
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name human_dialog
+ text "Error"
+ type ITEM_TYPE_TEXT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect BORDER BORDER INFO_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name human_dialog
+ type ITEM_TYPE_TEXT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ cvar "ui_dialog"
+ wrapped
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .33
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name human_dialog
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close tremulous_human_dialog
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_humanitem.menu b/assets/ui/tremulous_humanitem.menu
new file mode 100755
index 0000000..551334b
--- /dev/null
+++ b/assets/ui/tremulous_humanitem.menu
@@ -0,0 +1,157 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 450
+#define H 250
+#define BORDER 10
+
+#define LIST_W 140
+#define LIST_H (H-(2*BORDER))
+#define LIST_X BORDER
+#define LIST_Y BORDER
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-((3*BORDER)+LIST_W))
+#define INFO_H (H-((3*BORDER)+BUTT_H))
+#define INFO_X ((2*BORDER)+LIST_W)
+#define INFO_Y BORDER
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "tremulous_humanitem"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ popup
+ onOpen { uiScript LoadHumanItems; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect LIST_X LIST_Y LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMHUMANITEMS
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SpawnWithHumanItem;
+ close tremulous_humanitem
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_HITEMINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx INFO_TOFF
+ textaligny INFO_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name "Back"
+ text "< Back"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect ((2*BORDER)+LIST_W) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close tremulous_humanitem;
+ open tremulous_teamselect
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SpawnWithHumanItem;
+ close tremulous_humanitem
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_humanitem
+ }
+ }
+ }
+}
diff --git a/assets/ui/tremulous_teamselect.menu b/assets/ui/tremulous_teamselect.menu
new file mode 100755
index 0000000..7051274
--- /dev/null
+++ b/assets/ui/tremulous_teamselect.menu
@@ -0,0 +1,136 @@
+#include "ui/menudef.h"
+
+{
+
+#define W 450
+#define H 250
+#define BORDER 10
+
+#define LIST_W 140
+#define LIST_H (H-(2*BORDER))
+#define LIST_X BORDER
+#define LIST_Y BORDER
+
+#define BUTT_H 25
+#define BUTT_W 45
+
+#define INFO_W (W-((3*BORDER)+LIST_W))
+#define INFO_H (H-((3*BORDER)+BUTT_H))
+#define INFO_X ((2*BORDER)+LIST_W)
+#define INFO_Y BORDER
+#define INFO_TOFF 6
+
+ menuDef
+ {
+ name "tremulous_teamselect"
+ visible MENU_FALSE
+ fullscreen MENU_FALSE
+ outOfBoundsClick
+ rect (320-(W/2)) (240-(H/2)) W H
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_FILLED
+ popup
+ onOpen { uiScript LoadTeams; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 W H
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible MENU_TRUE
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect LIST_X LIST_Y LIST_W LIST_H
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMTEAMS
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript JoinTeam;
+ close tremulous_teamselect
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_TEAMINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect INFO_X INFO_Y INFO_W INFO_H
+ textscale .33
+ textalign ALIGN_LEFT
+ textvalign VALIGN_TOP
+ textalignx INFO_TOFF
+ textaligny INFO_TOFF
+ border WINDOW_BORDER_FULL
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible MENU_TRUE
+ decoration
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-((2*BORDER)+(2*BUTT_W))) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript JoinTeam;
+ close tremulous_teamselect
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect (W-(BORDER+BUTT_W)) (H-(BORDER+BUTT_H)) BUTT_W BUTT_H
+ textalign ALIGN_CENTER
+ textvalign VALIGN_CENTER
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible MENU_TRUE
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_teamselect
+ }
+ }
+ }
+}