diff --git a/base/guis/mainmenu.gui b/base/guis/mainmenu.gui
index bc469786..5893250d 100644
--- a/base/guis/mainmenu.gui
+++ b/base/guis/mainmenu.gui
@@ -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" ;
diff --git a/neo/doom3/game/Game_local.cpp b/neo/doom3/game/Game_local.cpp
index fc588f8c..4f1f6e4c 100644
--- a/neo/doom3/game/Game_local.cpp
+++ b/neo/doom3/game/Game_local.cpp
@@ -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.
diff --git a/neo/engine/doomdll.vcxproj.user b/neo/engine/doomdll.vcxproj.user
index 6cbc4a14..a9def5c9 100644
--- a/neo/engine/doomdll.vcxproj.user
+++ b/neo/engine/doomdll.vcxproj.user
@@ -15,9 +15,9 @@
D:\projects\Doom3\Doom3.exe
WindowsLocalDebugger
- +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
D:\projects\Doom3
- +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|
+ +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|
D:\projects\Doom3\Quake4.exe
diff --git a/neo/engine/framework/DeclManager.cpp b/neo/engine/framework/DeclManager.cpp
index fa5890c3..1a03dd13 100644
--- a/neo/engine/framework/DeclManager.cpp
+++ b/neo/engine/framework/DeclManager.cpp
@@ -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& 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
\ No newline at end of file
+#endif
diff --git a/neo/engine/framework/DeclTable.cpp b/neo/engine/framework/DeclTable.cpp
index 4a9bd611..c646b802 100644
--- a/neo/engine/framework/DeclTable.cpp
+++ b/neo/engine/framework/DeclTable.cpp
@@ -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();
diff --git a/neo/engine/renderer/Material.cpp b/neo/engine/renderer/Material.cpp
index e24a24b0..5ead2ab8 100644
--- a/neo/engine/renderer/Material.cpp
+++ b/neo/engine/renderer/Material.cpp
@@ -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 " 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
diff --git a/neo/engine/renderer/Material.h b/neo/engine/renderer/Material.h
index c0605a1a..d2873d08 100644
--- a/neo/engine/renderer/Material.h
+++ b/neo/engine/renderer/Material.h
@@ -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);