Added multiplayer page.

Fixed numerous bugs with the alpha.
This commit is contained in:
Justin Marshall
2026-05-20 12:44:52 -07:00
parent 6170f0d4fc
commit b6ea2fb5fa
7 changed files with 1077 additions and 38 deletions
+929 -7
View File
@@ -3,6 +3,10 @@ windowDef Desktop {
backcolor 0, 0, 0, 1
float Button "0"
float Menugui "1"
float MPPage "0"
float server_type "0"
float dedicated "0"
float lanSet "0"
onESC {
set "cmd" "close" ;
@@ -90,7 +94,7 @@ windowDef Desktop {
resetTime "Anim" "0" ;
resetTime "Click1" "0" ;
set "Button1o::visible" "0" ;
transition "Button2::matcolor" "1 1 1 0.4" "1 1 1 0" "200" ;
transition "Button2::matcolor" "1 1 1 0.9" "1 1 1 0" "200" ;
transition "Button3::matcolor" "1 1 1 0.4" "1 1 1 0" "200" ;
transition "Button4::matcolor" "1 1 1 0.4" "1 1 1 0" "200" ;
transition "Button5::matcolor" "1 1 1 0.9" "1 1 1 0" "200" ;
@@ -100,9 +104,9 @@ windowDef Desktop {
windowDef Button2 {
rect 380, 465, 512, 48
background "guis/assets/mainmenu/2"
matcolor 1 ,1, 1, 0.4
matcolor 1 ,1, 1, 0.9
visible 1
/*
onMouseEnter {
set "Button2o::visible" "1" ;
}
@@ -110,15 +114,17 @@ windowDef Desktop {
set "Button2o::visible" "0" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "Desktop::Button" "2" ;
set "Desktop::MPPage" "0" ;
resetTime "Anim" "0" ;
resetTime "Click2" "0" ;
set "Button2o::visible" "0" ;
transition "Button1::matcolor" "1 1 1 0.9" "1 1 1 0" "200" ;
transition "Button3::matcolor" "1 1 1 0.4" "1 1 1 0" "200" ;
transition "Button4::matcolor" "1 1 1 0.4" "1 1 1 0" "200" ;
transition "Button5::matcolor" "1 1 1 0.9" "1 1 1 0" "200" ;
}
*/
}
windowDef Button3 {
@@ -154,7 +160,7 @@ windowDef Desktop {
resetTime "Click5" "0" ;
set "Button5o::visible" "0" ;
transition "Button1::matcolor" "1 1 1 0.9" "1 1 1 0" "200" ;
transition "Button2::matcolor" "1 1 1 0.4" "1 1 1 0" "200" ;
transition "Button2::matcolor" "1 1 1 0.9" "1 1 1 0" "200" ;
transition "Button3::matcolor" "1 1 1 0.4" "1 1 1 0" "200" ;
transition "Button4::matcolor" "1 1 1 0.4" "1 1 1 0" "200" ;
}
@@ -226,6 +232,611 @@ windowDef Desktop {
}
}
windowDef Text2a {
rect 354, 426, -572, 60
text "Start Server"
font "fonts/chain"
textscale 0.75
textalign 1
forecolor 1, 0.1, 0.1, 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
resetTime "HideMPRoot" "0" ;
resetTime "ShowMPStart" "0" ;
}
}
windowDef Text2b {
rect 354, 471, -572, 60
text "Join Server"
font "fonts/chain"
textscale 0.75
textalign 1
forecolor 1, 0.1, 0.1, 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
resetTime "HideMPRoot" "0" ;
resetTime "ShowMPJoin" "0" ;
}
}
windowDef Text2c {
rect 354, 516, -572, 60
text "Server Browser"
font "fonts/chain"
textscale 0.75
textalign 1
forecolor 1, 0.1, 0.1, 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "Desktop::lanSet" "0" ;
resetTime "HideMPRoot" "0" ;
resetTime "ShowMPBrowser" "0" ;
set "cmd" "exec \"seta gui_filter_gameType 1\"" ;
set "cmd" "exec \"seta gui_filter_game 1\"" ;
resetTime "MPBrowserDelayedMasterRefresh" "0" ;
}
}
windowDef Text2d {
rect 354, 561, -572, 60
text "Main Menu"
font "fonts/chain"
textscale 0.75
textalign 1
forecolor 1, 0.1, 0.1, 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_close" ;
resetTime "Main2" "0" ;
}
}
// Multiplayer - Start Server page
windowDef MPStartTitle {
rect 354, 420, 572, 36
text "Start Server"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
windowDef MPStartPlayerLabel {
rect 390, 457, 190, 24
text "Player Name"
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
editDef MPStartPlayerName {
rect 590, 457, 300, 24
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
hovercolor 1, 0.4, 0, 1
backcolor 0, 0, 0, 0.25
bordercolor 1, 0.1, 0.1, 0.5
cvar "ui_name"
maxchars 24
visible 0
noevents 1
}
windowDef MPStartServerLabel {
rect 390, 489, 190, 24
text "Server Name"
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
editDef MPStartServerName {
rect 590, 489, 300, 24
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
hovercolor 1, 0.4, 0, 1
backcolor 0, 0, 0, 0.25
bordercolor 1, 0.1, 0.1, 0.5
cvar "si_name"
maxchars 32
visible 0
noevents 1
}
windowDef MPStartMapLabel {
rect 390, 521, 190, 24
text "Map"
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
choiceDef MPStartMapValue {
rect 590, 521, 300, 24
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
choices "game/mp/d3dm3"
values "game/mp/d3dm3"
choiceType 1
cvar "si_map"
visible 0
noevents 1
}
windowDef MPStartTypeLabel {
rect 390, 553, 190, 24
text "Server Type"
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
choiceDef MPStartServerType {
rect 590, 553, 300, 24
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
hovercolor 1, 0.4, 0, 1
choices "Internet;LAN"
values "0;1"
choiceType 1
gui "server_type"
visible 0
noevents 1
}
windowDef MPStartDedicatedLabel {
rect 390, 585, 190, 24
text "Dedicated"
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
choiceDef MPStartDedicated {
rect 590, 585, 300, 24
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
hovercolor 1, 0.4, 0, 1
choices "Listen;Dedicated"
values "0;1"
choiceType 1
gui "dedicated"
visible 0
noevents 1
}
windowDef MPStartPlayersLabel {
rect 390, 617, 190, 24
text "Max Players"
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
editDef MPStartPlayers {
rect 590, 617, 80, 24
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
hovercolor 1, 0.4, 0, 1
backcolor 0, 0, 0, 0.25
bordercolor 1, 0.1, 0.1, 0.5
cvar "si_maxPlayers"
maxchars 2
numeric 1
visible 0
noevents 1
}
windowDef MPStartGameType {
rect 690, 617, 200, 24
font "fonts/chain"
textscale 0.42
forecolor 1, 0.1, 0.1, 0
text "Deathmatch only"
visible 0
noevents 1
}
choiceDef MPStartGameTypeValue {
rect 0, 0, 1, 1
choices "deathmatch"
values "deathmatch"
choiceType 1
cvar "si_gameType"
visible 0
noevents 1
}
choiceDef MPBrowserGameTypeFilterValue {
rect 0, 0, 1, 1
choices "Deathmatch"
values "1"
choiceType 1
cvar "gui_filter_gameType"
visible 0
noevents 1
}
choiceDef MPBrowserGameFilterValue {
rect 0, 0, 1, 1
choices "Doom 3"
values "1"
choiceType 1
cvar "gui_filter_game"
visible 0
noevents 1
}
windowDef MPStartLaunch {
rect 390, 657, 250, 40
text "Start Server"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "cmd" "exec \"seta si_gameType deathmatch\"" ;
set "cmd" "exec \"seta si_map game/mp/d3dm3\"" ;
resetTime "MPStartDelayedStart" "0" ;
}
}
windowDef MPStartBack {
rect 650, 657, 250, 40
text "Back"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_close" ;
resetTime "HideMPStart" "0" ;
resetTime "Click2" "0" ;
}
}
// Multiplayer - Join Server page
windowDef MPJoinTitle {
rect 354, 420, 572, 40
text "Join Server"
font "fonts/chain"
textscale 0.6
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
windowDef MPJoinAddressLabel {
rect 390, 477, 180, 30
text "Direct IP"
font "fonts/chain"
textscale 0.5
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
editDef inetGame {
rect 560, 477, 310, 30
text "gui::inetGame"
font "fonts/chain"
textscale 0.5
forecolor 1, 0.1, 0.1, 0
hovercolor 1, 0.4, 0, 1
backcolor 0, 0, 0, 0.25
bordercolor 1, 0.1, 0.1, 0.5
maxchars 64
visible 0
noevents 1
onEnter {
set "cmd" "inetConnect" ;
}
}
windowDef MPJoinDirectConnect {
rect 390, 528, 250, 40
text "Connect"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "cmd" "inetConnect" ;
}
}
windowDef MPJoinInternetBrowser {
rect 650, 528, 250, 40
text "Master Servers"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "Desktop::lanSet" "0" ;
resetTime "HideMPJoin" "0" ;
resetTime "ShowMPBrowser" "0" ;
set "cmd" "exec \"seta gui_filter_gameType 1\"" ;
set "cmd" "exec \"seta gui_filter_game 1\"" ;
resetTime "MPBrowserDelayedMasterRefresh" "0" ;
}
}
windowDef MPJoinLANBrowser {
rect 390, 585, 250, 40
text "LAN Servers"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "Desktop::lanSet" "1" ;
resetTime "HideMPJoin" "0" ;
resetTime "ShowMPBrowser" "0" ;
set "cmd" "exec \"seta gui_filter_gameType 1\"" ;
set "cmd" "exec \"seta gui_filter_game 1\"" ;
resetTime "MPBrowserDelayedLANRefresh" "0" ;
}
}
windowDef MPJoinBack {
rect 650, 585, 250, 40
text "Back"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_close" ;
resetTime "HideMPJoin" "0" ;
resetTime "Click2" "0" ;
}
}
// Multiplayer - Server Browser / master server selection page
windowDef MPBrowserTitle {
rect 354, 420, 572, 30
text "Server Selection"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
windowDef MPBrowserNote {
rect 374, 452, 532, 24
text "Master/LAN list - d3dm3 deathmatch only"
font "fonts/chain"
textscale 0.36
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
}
listDef serverList {
rect 374, 480, 532, 104
font "fonts/chain"
textscale 0.28
forecolor 1, 0.1, 0.1, 0
hovercolor 1, 0.4, 0, 1
backcolor 0, 0, 0, 0.25
bordercolor 1, 0.1, 0.1, 0.5
listname "serverlist"
tabstops "0,170,245,315,395"
tabaligns "0,0,0,0,0"
visible 0
noevents 1
onAction {
set "cmd" "serverList" ;
}
onEnter {
set "cmd" "serverList" ;
set "cmd" "LANConnect" ;
}
}
windowDef MPBrowserRefreshMaster {
rect 370, 596, 170, 32
text "Refresh Master"
font "fonts/chain"
textscale 0.38
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "Desktop::lanSet" "0" ;
set "cmd" "exec \"seta gui_filter_gameType 1\"" ;
set "cmd" "exec \"seta gui_filter_game 1\"" ;
resetTime "MPBrowserDelayedMasterRefresh" "0" ;
}
}
windowDef MPBrowserRefreshLAN {
rect 550, 596, 130, 32
text "Refresh LAN"
font "fonts/chain"
textscale 0.38
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "Desktop::lanSet" "1" ;
set "cmd" "exec \"seta gui_filter_gameType 1\"" ;
set "cmd" "exec \"seta gui_filter_game 1\"" ;
resetTime "MPBrowserDelayedLANRefresh" "0" ;
}
}
windowDef MPBrowserSortMap {
rect 690, 596, 110, 32
text "Sort Map"
font "fonts/chain"
textscale 0.38
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "cmd" "sortMap" ;
}
}
windowDef MPBrowserJoinSelected {
rect 810, 596, 110, 32
text "Join"
font "fonts/chain"
textscale 0.38
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_click" ;
set "cmd" "serverList" ;
set "cmd" "LANConnect" ;
}
}
windowDef MPBrowserBack {
rect 354, 642, 572, 40
text "Back"
font "fonts/chain"
textscale 0.55
textalign 1
forecolor 1, 0.1, 0.1, 0
visible 0
noevents 1
onMouseEnter {
set "forecolor" "1 0.4 0 1" ;
}
onMouseExit {
set "forecolor" "1 0.1 0.1 1" ;
}
onAction {
set "cmd" "play guisounds_close" ;
resetTime "HideMPBrowser" "0" ;
resetTime "Click2" "0" ;
}
}
windowDef Text5a {
rect 352, 450, -572, 120
text "Are you sure you\nwant to exit?"
@@ -356,7 +967,7 @@ windowDef Desktop {
set "Text1c::rect" "354 516 -572 60" ;
set "Text1d::rect" "354 561 -572 60" ;
set "Text1e::rect" "354 606 -572 60" ;
transition "Button2::matcolor" "1 1 1 0" "1 1 1 0.4" "100" ;
transition "Button2::matcolor" "1 1 1 0" "1 1 1 0.9" "100" ;
}
onTime 125 {
transition "Button3::matcolor" "1 1 1 0" "1 1 1 0.4" "100" ;
@@ -376,6 +987,317 @@ windowDef Desktop {
}
}
windowDef Click2 {
notime 1
onTime 0 {
set "MPStartTitle::visible" "0" ;
set "MPJoinTitle::visible" "0" ;
set "MPBrowserTitle::visible" "0" ;
}
onTime 200 {
set "Text2a::rect" "354 426 572 60" ;
set "Text2a::noevents" "0" ;
transition "Text2a::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
}
onTime 250 {
set "Text2b::rect" "354 471 572 60" ;
set "Text2b::noevents" "0" ;
transition "Text2b::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
}
onTime 300 {
set "Text2c::rect" "354 516 572 60" ;
set "Text2c::noevents" "0" ;
transition "Text2c::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
}
onTime 350 {
set "Text2d::rect" "354 561 572 60" ;
set "Text2d::noevents" "0" ;
transition "Text2d::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
}
}
windowDef HideMPRoot {
notime 1
onTime 0 {
set "Text2a::noevents" "1" ;
set "Text2b::noevents" "1" ;
set "Text2c::noevents" "1" ;
set "Text2d::noevents" "1" ;
transition "Text2a::forecolor" "1 0.1 0.1 1" "1 0.1 0.1 0" "50" ;
transition "Text2b::forecolor" "1 0.1 0.1 1" "1 0.1 0.1 0" "50" ;
transition "Text2c::forecolor" "1 0.1 0.1 1" "1 0.1 0.1 0" "50" ;
transition "Text2d::forecolor" "1 0.1 0.1 1" "1 0.1 0.1 0" "50" ;
}
onTime 50 {
set "Text2a::rect" "354 426 -572 60" ;
set "Text2b::rect" "354 471 -572 60" ;
set "Text2c::rect" "354 516 -572 60" ;
set "Text2d::rect" "354 561 -572 60" ;
}
}
windowDef ShowMPStart {
notime 1
onTime 50 {
set "Desktop::MPPage" "1" ;
set "MPStartTitle::visible" "1" ;
set "MPStartPlayerLabel::visible" "1" ;
set "MPStartPlayerName::visible" "1" ;
set "MPStartPlayerName::noevents" "0" ;
set "MPStartServerLabel::visible" "1" ;
set "MPStartServerName::visible" "1" ;
set "MPStartServerName::noevents" "0" ;
set "MPStartMapLabel::visible" "1" ;
set "MPStartMapValue::visible" "1" ;
set "MPStartTypeLabel::visible" "1" ;
set "MPStartServerType::visible" "1" ;
set "MPStartServerType::noevents" "0" ;
set "MPStartDedicatedLabel::visible" "1" ;
set "MPStartDedicated::visible" "1" ;
set "MPStartDedicated::noevents" "0" ;
set "MPStartPlayersLabel::visible" "1" ;
set "MPStartPlayers::visible" "1" ;
set "MPStartPlayers::noevents" "0" ;
set "MPStartGameType::visible" "1" ;
set "MPStartGameTypeValue::visible" "1" ;
set "MPStartLaunch::visible" "1" ;
set "MPStartLaunch::noevents" "0" ;
set "MPStartBack::visible" "1" ;
set "MPStartBack::noevents" "0" ;
transition "MPStartTitle::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartPlayerLabel::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartPlayerName::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartServerLabel::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartServerName::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartMapLabel::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartMapValue::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartTypeLabel::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartServerType::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartDedicatedLabel::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartDedicated::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartPlayersLabel::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartPlayers::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartGameType::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartLaunch::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPStartBack::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
}
}
windowDef HideMPStart {
notime 1
onTime 0 {
set "MPStartPlayerName::noevents" "1" ;
set "MPStartServerName::noevents" "1" ;
set "MPStartServerType::noevents" "1" ;
set "MPStartDedicated::noevents" "1" ;
set "MPStartPlayers::noevents" "1" ;
set "MPStartLaunch::noevents" "1" ;
set "MPStartBack::noevents" "1" ;
set "MPStartTitle::visible" "0" ;
set "MPStartPlayerLabel::visible" "0" ;
set "MPStartPlayerName::visible" "0" ;
set "MPStartServerLabel::visible" "0" ;
set "MPStartServerName::visible" "0" ;
set "MPStartMapLabel::visible" "0" ;
set "MPStartMapValue::visible" "0" ;
set "MPStartTypeLabel::visible" "0" ;
set "MPStartServerType::visible" "0" ;
set "MPStartDedicatedLabel::visible" "0" ;
set "MPStartDedicated::visible" "0" ;
set "MPStartPlayersLabel::visible" "0" ;
set "MPStartPlayers::visible" "0" ;
set "MPStartGameType::visible" "0" ;
set "MPStartGameTypeValue::visible" "0" ;
set "MPStartLaunch::visible" "0" ;
set "MPStartBack::visible" "0" ;
}
}
windowDef ShowMPJoin {
notime 1
onTime 50 {
set "Desktop::MPPage" "2" ;
set "MPJoinTitle::visible" "1" ;
set "MPJoinAddressLabel::visible" "1" ;
set "inetGame::visible" "1" ;
set "inetGame::noevents" "0" ;
set "MPJoinDirectConnect::visible" "1" ;
set "MPJoinDirectConnect::noevents" "0" ;
set "MPJoinInternetBrowser::visible" "1" ;
set "MPJoinInternetBrowser::noevents" "0" ;
set "MPJoinLANBrowser::visible" "1" ;
set "MPJoinLANBrowser::noevents" "0" ;
set "MPJoinBack::visible" "1" ;
set "MPJoinBack::noevents" "0" ;
transition "MPJoinTitle::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPJoinAddressLabel::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "inetGame::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPJoinDirectConnect::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPJoinInternetBrowser::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPJoinLANBrowser::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPJoinBack::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
}
}
windowDef HideMPJoin {
notime 1
onTime 0 {
set "inetGame::noevents" "1" ;
set "MPJoinDirectConnect::noevents" "1" ;
set "MPJoinInternetBrowser::noevents" "1" ;
set "MPJoinLANBrowser::noevents" "1" ;
set "MPJoinBack::noevents" "1" ;
set "MPJoinTitle::visible" "0" ;
set "MPJoinAddressLabel::visible" "0" ;
set "inetGame::visible" "0" ;
set "MPJoinDirectConnect::visible" "0" ;
set "MPJoinInternetBrowser::visible" "0" ;
set "MPJoinLANBrowser::visible" "0" ;
set "MPJoinBack::visible" "0" ;
}
}
windowDef ShowMPBrowser {
notime 1
onTime 50 {
set "Desktop::MPPage" "3" ;
set "MPBrowserTitle::visible" "1" ;
set "MPBrowserNote::visible" "1" ;
set "serverList::visible" "1" ;
set "serverList::noevents" "0" ;
set "MPBrowserRefreshMaster::visible" "1" ;
set "MPBrowserRefreshMaster::noevents" "0" ;
set "MPBrowserRefreshLAN::visible" "1" ;
set "MPBrowserRefreshLAN::noevents" "0" ;
set "MPBrowserSortMap::visible" "1" ;
set "MPBrowserSortMap::noevents" "0" ;
set "MPBrowserJoinSelected::visible" "1" ;
set "MPBrowserJoinSelected::noevents" "0" ;
set "MPBrowserBack::visible" "1" ;
set "MPBrowserBack::noevents" "0" ;
transition "MPBrowserTitle::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPBrowserNote::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "serverList::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPBrowserRefreshMaster::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPBrowserRefreshLAN::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPBrowserSortMap::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPBrowserJoinSelected::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
transition "MPBrowserBack::forecolor" "1 0.1 0.1 0" "1 0.1 0.1 1" "50" ;
}
}
windowDef HideMPBrowser {
notime 1
onTime 0 {
set "serverList::noevents" "1" ;
set "MPBrowserRefreshMaster::noevents" "1" ;
set "MPBrowserRefreshLAN::noevents" "1" ;
set "MPBrowserSortMap::noevents" "1" ;
set "MPBrowserJoinSelected::noevents" "1" ;
set "MPBrowserBack::noevents" "1" ;
set "MPBrowserTitle::visible" "0" ;
set "MPBrowserNote::visible" "0" ;
set "serverList::visible" "0" ;
set "MPBrowserRefreshMaster::visible" "0" ;
set "MPBrowserRefreshLAN::visible" "0" ;
set "MPBrowserSortMap::visible" "0" ;
set "MPBrowserJoinSelected::visible" "0" ;
set "MPBrowserBack::visible" "0" ;
}
}
windowDef MPBrowserDelayedMasterRefresh {
notime 1
onTime 100 {
set "Desktop::lanSet" "0" ;
set "cmd" "UpdateServers" ;
set "cmd" "sortMap" ;
set "cmd" "FilterServers" ;
}
}
windowDef MPBrowserDelayedLANRefresh {
notime 1
onTime 100 {
set "Desktop::lanSet" "1" ;
set "cmd" "UpdateServers" ;
set "cmd" "sortMap" ;
set "cmd" "FilterServers" ;
}
}
windowDef MPStartDelayedStart {
notime 1
onTime 100 {
set "cmd" "startMultiplayer" ;
}
}
windowDef Main2 {
notime 1
onTime 0 {
set "Text2a::noevents" "1" ;
set "Text2b::noevents" "1" ;
set "Text2c::noevents" "1" ;
set "Text2d::noevents" "1" ;
resetTime "HideMPStart" "0" ;
resetTime "HideMPJoin" "0" ;
resetTime "HideMPBrowser" "0" ;
transition "Text2a::forecolor" "1 0.1 0.1 1" "1 0.1 0.1 0" "50" ;
transition "Text2b::forecolor" "1 0.1 0.1 1" "1 0.1 0.1 0" "50" ;
transition "Text2c::forecolor" "1 0.1 0.1 1" "1 0.1 0.1 0" "50" ;
transition "Text2d::forecolor" "1 0.1 0.1 1" "1 0.1 0.1 0" "50" ;
}
onTime 0 {
transition "Button1::rect" "380 675 512 48" "380 405 512 48" "300" ;
transition "Button2::rect" "380 675 512 48" "380 465 512 48" "300" ;
transition "Button3::rect" "500 675 278 48" "500 525 278 48" "300" ;
transition "Button4::rect" "506 675 256 48" "506 585 256 48" "300" ;
transition "Button5::rect" "506 675 256 48" "506 645 256 48" "300" ;
transition "PopUp::matcolor" "1 1 1 1" "1 1 1 0" "100" ;
transition "PopUp::rect" "354 406.5 572 313.5" "354 660 572 60" "200" ;
}
onTime 50 {
set "Text2a::rect" "354 426 -572 60" ;
set "Text2b::rect" "354 471 -572 60" ;
set "Text2c::rect" "354 516 -572 60" ;
set "Text2d::rect" "354 561 -572 60" ;
transition "Button1::matcolor" "1 1 1 0" "1 1 1 0.9" "100" ;
}
onTime 125 {
transition "Button2::matcolor" "1 1 1 0" "1 1 1 0.9" "100" ;
}
onTime 200 {
transition "Button3::matcolor" "1 1 1 0" "1 1 1 0.4" "100" ;
}
onTime 275 {
transition "Button4::matcolor" "1 1 1 0" "1 1 1 0.4" "100" ;
}
onTime 300 {
transition "Button5::matcolor" "1 1 1 0" "1 1 1 0.9" "100" ;
set "Button1::noevents" "0" ;
set "Button2::noevents" "0" ;
set "Button3::noevents" "0" ;
set "Button4::noevents" "0" ;
set "Button5::noevents" "0" ;
}
}
windowDef Click5 {
notime 1
@@ -421,7 +1343,7 @@ windowDef Desktop {
transition "Button1::matcolor" "1 1 1 0" "1 1 1 0.9" "100" ;
}
onTime 125 {
transition "Button2::matcolor" "1 1 1 0" "1 1 1 0.4" "100" ;
transition "Button2::matcolor" "1 1 1 0" "1 1 1 0.9" "100" ;
}
onTime 200 {
transition "Button3::matcolor" "1 1 1 0" "1 1 1 0.4" "100" ;
+1 -1
View File
@@ -320,7 +320,7 @@ void idGameLocal::Init( void ) {
botItemTable = FindEntityDef("bot_itemtable", false);
if (botItemTable == NULL)
{
common->FatalError("Failed to find bot_itemtable decl!\n");
common->Warning("Failed to find bot_itemtable decl!\n");
}
// init all the bot systems.
+2 -2
View File
@@ -15,9 +15,9 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
<LocalDebuggerCommand>D:\projects\Doom3\Doom3.exe</LocalDebuggerCommand>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<LocalDebuggerCommandArguments>+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0</LocalDebuggerCommandArguments>
<LocalDebuggerCommandArguments>+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0 +set fs_game e3</LocalDebuggerCommandArguments>
<LocalDebuggerWorkingDirectory>D:\projects\Doom3</LocalDebuggerWorkingDirectory>
<LocalDebuggerCommandArgumentsHistory>+set r_fullscreen 1 +set r_mode 9|+set r_fullscreen 1 +set r_mode 11|+set r_fullscreen0 +set r_mode 9|+set r_fullscreen 0 +set r_mode 9|+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0|</LocalDebuggerCommandArgumentsHistory>
<LocalDebuggerCommandArgumentsHistory>+set r_fullscreen 1 +set r_mode 11|+set r_fullscreen0 +set r_mode 9|+set r_fullscreen 0 +set r_mode 9|+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0|+set r_fullscreen 0 +set r_mode 9 +set sv_pure 0 +set fs_game e3|</LocalDebuggerCommandArgumentsHistory>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Q4 Debug|x64'">
<LocalDebuggerCommand>D:\projects\Doom3\Quake4.exe</LocalDebuggerCommand>
+59 -27
View File
@@ -257,6 +257,7 @@ public:
public:
static void MakeNameCanonical(const char* name, char* result, int maxLength);
idDeclLocal* FindTypeWithoutParsing(declType_t type, const char* name, bool makeDefault = true);
int GetDeclFilePriority(const idDeclFile* declFile) const;
idDeclType* GetDeclType(int type) const { return declTypes[type]; }
const idDeclFile* GetImplicitDeclFile(void) const { return &implicitDecls; }
@@ -716,15 +717,24 @@ int idDeclFile::LoadAndParse() {
declType_t identifiedType = DECL_MAX_TYPES;
if ( token.Icmp( "clampTable" ) == 0 || token.Icmp( "snapTable" ) == 0 || token.Icmp( "soundtable" ) == 0 ) {
identifiedType = DECL_TABLE;
}
// get the decl type from the type name
numTypes = declManagerLocal.GetNumDeclTypes();
for (i = 0; i < numTypes; i++) {
idDeclType* typeInfo = declManagerLocal.GetDeclType(i);
if (typeInfo && typeInfo->typeName.Icmp(token) == 0) {
identifiedType = (declType_t)typeInfo->type;
break;
if ( identifiedType == DECL_MAX_TYPES ) {
for (i = 0; i < numTypes; i++) {
idDeclType* typeInfo = declManagerLocal.GetDeclType(i);
if (typeInfo && typeInfo->typeName.Icmp(token) == 0) {
identifiedType = (declType_t)typeInfo->type;
break;
}
}
}
else {
i = 0;
}
if (i >= numTypes) {
@@ -813,11 +823,29 @@ int idDeclFile::LoadAndParse() {
newDecl = declManagerLocal.FindTypeWithoutParsing(identifiedType, name, false);
if (newDecl) {
// update the existing copy
if (newDecl->sourceFile != this || newDecl->redefinedInReload) {
if (newDecl->sourceFile == this && newDecl->redefinedInReload) {
src.Warning("%s '%s' previously defined at %s:%i", declManagerLocal.GetDeclNameFromType(identifiedType),
name.c_str(), newDecl->sourceFile->fileName.c_str(), newDecl->sourceLine);
continue;
}
if (newDecl->sourceFile != this) {
if (declManagerLocal.GetDeclFilePriority(this) < declManagerLocal.GetDeclFilePriority(newDecl->sourceFile)) {
src.Warning("%s '%s' previously defined at %s:%i", declManagerLocal.GetDeclNameFromType(identifiedType),
name.c_str(), newDecl->sourceFile->fileName.c_str(), newDecl->sourceLine);
continue;
}
idDeclLocal** prev = &newDecl->sourceFile->decls;
while (*prev) {
if (*prev == newDecl) {
*prev = newDecl->nextInFile;
break;
}
prev = &(*prev)->nextInFile;
}
newDecl->nextInFile = this->decls;
this->decls = newDecl;
}
if (newDecl->declState != DS_UNPARSED) {
reparse = true;
}
@@ -1364,30 +1392,15 @@ void idDeclManagerLocal::RegisterDeclType(const char* typeName, declType_t type,
RegisterDeclSubFolder
===================
*/
// jmarshall
void idDeclManagerLocal::RegisterDeclSubFolder(const char* folder, const char* extension, idList<idStr>& fileList) {
// Find all
{
idFileList* list = fileSystem->ListFiles(folder, extension, true);
idFileList* list = fileSystem->ListFilesTree(folder, extension, false);
for (int d = 0; d < list->GetNumFiles(); d++)
{
fileList.Append(va("%s/%s", folder, list->GetFile(d)));
}
fileSystem->FreeFileList(list);
for (int i = 0; i < list->GetNumFiles(); i++) {
fileList.Append(list->GetFile(i));
}
idFileList* dirList = fileSystem->ListFiles(folder, "/", true);
for (int i = 0; i < dirList->GetNumFiles(); i++)
{
idStr dir = va("%s/%s", folder, dirList->GetFile(i));
RegisterDeclSubFolder(dir, extension, fileList);
}
fileSystem->FreeFileList(dirList);
fileSystem->FreeFileList(list);
}
// jmarshall end
/*
===================
@@ -1425,7 +1438,7 @@ void idDeclManagerLocal::RegisterDeclFolder(const char* folder, const char* exte
// jmarshall end
// load and parse decl files
for (i = 0; i < fileList.Num(); i++) {
for (i = fileList.Num() - 1; i >= 0; i--) {
// jmarshall
//fileName = declFolder->folder + "/" + fileList[ i ];
fileName = fileList[i];
@@ -1448,6 +1461,25 @@ void idDeclManagerLocal::RegisterDeclFolder(const char* folder, const char* exte
}
}
/*
===================
idDeclManagerLocal::GetDeclFilePriority
===================
*/
int idDeclManagerLocal::GetDeclFilePriority(const idDeclFile* declFile) const {
if (declFile == &implicitDecls) {
return -1;
}
for (int i = 0; i < loadedFiles.Num(); i++) {
if (loadedFiles[i] == declFile) {
return i;
}
}
return -1;
}
/*
===================
idDeclManagerLocal::GetChecksum
@@ -3124,4 +3156,4 @@ const rvDeclEffect* idDeclManagerLocal::EffectByIndex(int index, bool forceParse
return (const rvDeclEffect*)DeclByIndex(DECL_EFFECT, index, forceParse);
}
#endif
#endif
+46
View File
@@ -121,6 +121,13 @@ bool idDeclTable::Parse(const char* text, const int textLength) {
snap = false;
clamp = false;
if ( !idStr::Icmpn( text, "snapTable", 9 ) ) {
snap = true;
}
else if ( !idStr::Icmpn( text, "clampTable", 10 ) ) {
clamp = true;
}
#ifdef QUAKE4
minValue = idMath::INFINITY;
maxValue = -1.0e30f;
@@ -179,6 +186,45 @@ bool idDeclTable::Parse(const char* text, const int textLength) {
}
}
else if ( token.type == TT_NUMBER || token == "." || token == "-" ) {
src.UnreadToken( &token );
while ( 1 ) {
bool errorFlag;
v = src.ParseFloat( &errorFlag );
if ( errorFlag ) {
MakeDefault();
return false;
}
values.Append( v );
#ifdef QUAKE4
if ( v < minValue ) {
minValue = v;
}
if ( v > maxValue ) {
maxValue = v;
}
#endif
if ( !src.ReadToken( &token ) ) {
break;
}
if ( token == "}" ) {
break;
}
if ( token == "," ) {
continue;
}
src.Warning( "expected comma or brace" );
MakeDefault();
return false;
}
break;
}
else {
src.Warning("unknown token '%s'", token.c_str());
MakeDefault();
+38
View File
@@ -487,6 +487,23 @@ static infoParm_t infoParms[] = {
static const int numInfoParms = sizeof(infoParms) / sizeof(infoParms[0]);
/*
===============
idMaterial::ApplySurfaceParm
Alpha E3 materials commonly use the Quake/id Tech 3-style
"surfaceparm <flag>" wrapper instead of Doom 3's direct material flags.
===============
*/
static bool ApplySurfaceParm( idMaterial *material, idToken *token, materialCoverage_t &coverage ) {
if ( !token->Icmp( "trans" ) ) {
coverage = MC_TRANSLUCENT;
return true;
}
return material->CheckSurfaceParm( token );
}
/*
===============
@@ -2797,16 +2814,37 @@ void idMaterial::ParseMaterial(idLexer& src) {
src.SkipRestOfLine();
continue;
}
else if ( !token.Icmp( "qer_trans" ) ) {
src.SkipRestOfLine();
continue;
}
// description
else if (!token.Icmp("description")) {
src.ReadTokenOnLine(&token);
desc = token.c_str();
continue;
}
else if ( !token.Icmp( "surfaceparm" ) ) {
if ( src.ReadTokenOnLine( &token ) && ApplySurfaceParm( this, &token, coverage ) ) {
src.SkipRestOfLine();
continue;
}
src.Warning( "unknown surfaceparm '%s' in '%s'", token.c_str(), GetName() );
src.SkipRestOfLine();
continue;
}
// check for the surface / content bit flags
else if (CheckSurfaceParm(&token)) {
continue;
}
else if ( !token.Icmp( "nodraw" ) ) {
SetMaterialFlag( MF_NOSHADOWS );
continue;
}
else if ( !token.Icmp( "trans" ) ) {
coverage = MC_TRANSLUCENT;
continue;
}
// polygonOffset
+2 -1
View File
@@ -563,6 +563,8 @@ public:
//BSM Nerve: Added for material editor
bool Save(const char* fileName = NULL);
bool CheckSurfaceParm(idToken* token);
// returns the internal image name for stage 0, which can be used
// for the renderer CaptureRenderToImage() call
// I'm not really sure why this needs to be virtual...
@@ -899,7 +901,6 @@ private:
void ParseStage(idLexer& src, const textureRepeat_t trpDefault = TR_REPEAT);
void ParseDeform(idLexer& src);
void ParseDecalInfo(idLexer& src);
bool CheckSurfaceParm(idToken* token);
int GetExpressionConstant(float f);
int GetExpressionTemporary(void);
expOp_t* GetExpressionOp(void);