diff --git a/neo/d3xp/Weapon.cpp b/neo/d3xp/Weapon.cpp index 30f8882b..679a0532 100644 --- a/neo/d3xp/Weapon.cpp +++ b/neo/d3xp/Weapon.cpp @@ -29,6 +29,7 @@ If you have questions concerning this license or the applicable additional terms #include "sys/platform.h" #include "framework/DeclEntityDef.h" #include "framework/DeclSkin.h" +#include "framework/Session.h" #include "gamesys/SysCvar.h" #include "ai/AI.h" @@ -465,7 +466,8 @@ void idWeapon::Restore( idRestoreGame *savefile ) { WEAPON_RELOAD.LinkTo( scriptObject, "WEAPON_RELOAD" ); WEAPON_NETRELOAD.LinkTo( scriptObject, "WEAPON_NETRELOAD" ); WEAPON_NETENDRELOAD.LinkTo( scriptObject, "WEAPON_NETENDRELOAD" ); - WEAPON_NETFIRING.LinkTo( scriptObject, "WEAPON_NETFIRING" ); + if (!session->demoversion) + WEAPON_NETFIRING.LinkTo( scriptObject, "WEAPON_NETFIRING" ); WEAPON_RAISEWEAPON.LinkTo( scriptObject, "WEAPON_RAISEWEAPON" ); WEAPON_LOWERWEAPON.LinkTo( scriptObject, "WEAPON_LOWERWEAPON" ); @@ -693,7 +695,8 @@ void idWeapon::Clear( void ) { WEAPON_RELOAD.Unlink(); WEAPON_NETRELOAD.Unlink(); WEAPON_NETENDRELOAD.Unlink(); - WEAPON_NETFIRING.Unlink(); + if (!session->demoversion) + WEAPON_NETFIRING.Unlink(); WEAPON_RAISEWEAPON.Unlink(); WEAPON_LOWERWEAPON.Unlink(); @@ -1177,7 +1180,8 @@ void idWeapon::GetWeaponDef( const char *objectname, int ammoinclip ) { WEAPON_RELOAD.LinkTo( scriptObject, "WEAPON_RELOAD" ); WEAPON_NETRELOAD.LinkTo( scriptObject, "WEAPON_NETRELOAD" ); WEAPON_NETENDRELOAD.LinkTo( scriptObject, "WEAPON_NETENDRELOAD" ); - WEAPON_NETFIRING.LinkTo( scriptObject, "WEAPON_NETFIRING" ); + if (!session->demoversion) + WEAPON_NETFIRING.LinkTo( scriptObject, "WEAPON_NETFIRING" ); WEAPON_RAISEWEAPON.LinkTo( scriptObject, "WEAPON_RAISEWEAPON" ); WEAPON_LOWERWEAPON.LinkTo( scriptObject, "WEAPON_LOWERWEAPON" ); diff --git a/neo/framework/Session.cpp b/neo/framework/Session.cpp index 8c5f4bc3..e60f9e85 100644 --- a/neo/framework/Session.cpp +++ b/neo/framework/Session.cpp @@ -374,6 +374,8 @@ idSessionLocal::idSessionLocal() { menuSoundWorld = NULL; + demoversion=false; + Clear(); } @@ -2891,6 +2893,10 @@ void idSessionLocal::Init() { // we have a single instance of the main menu guiMainMenu = uiManager->FindGui( "guis/mainmenu.gui", true, false, true ); + if (!guiMainMenu) { + guiMainMenu = uiManager->FindGui( "guis/demo_mainmenu.gui", true, false, true ); + demoversion = true; + } guiMainMenu_MapList = uiManager->AllocListGUI(); guiMainMenu_MapList->Config( guiMainMenu, "mapList" ); idAsyncNetwork::client.serverList.GUIConfig( guiMainMenu, "serverList" ); diff --git a/neo/framework/Session.h b/neo/framework/Session.h index f94081a9..c6f86ab3 100644 --- a/neo/framework/Session.h +++ b/neo/framework/Session.h @@ -165,6 +165,9 @@ public: idDemoFile * readDemo; idDemoFile * writeDemo; int renderdemoVersion; + +public: + bool demoversion; }; extern idSession * session; diff --git a/neo/game/Weapon.cpp b/neo/game/Weapon.cpp index a381ae24..d3f2e9b6 100644 --- a/neo/game/Weapon.cpp +++ b/neo/game/Weapon.cpp @@ -29,6 +29,7 @@ If you have questions concerning this license or the applicable additional terms #include "sys/platform.h" #include "framework/DeclEntityDef.h" #include "framework/DeclSkin.h" +#include "framework/Session.h" #include "gamesys/SysCvar.h" #include "ai/AI.h" @@ -398,7 +399,8 @@ void idWeapon::Restore( idRestoreGame *savefile ) { WEAPON_RELOAD.LinkTo( scriptObject, "WEAPON_RELOAD" ); WEAPON_NETRELOAD.LinkTo( scriptObject, "WEAPON_NETRELOAD" ); WEAPON_NETENDRELOAD.LinkTo( scriptObject, "WEAPON_NETENDRELOAD" ); - WEAPON_NETFIRING.LinkTo( scriptObject, "WEAPON_NETFIRING" ); + if (!session->demoversion) + WEAPON_NETFIRING.LinkTo( scriptObject, "WEAPON_NETFIRING" ); WEAPON_RAISEWEAPON.LinkTo( scriptObject, "WEAPON_RAISEWEAPON" ); WEAPON_LOWERWEAPON.LinkTo( scriptObject, "WEAPON_LOWERWEAPON" ); @@ -552,7 +554,8 @@ void idWeapon::Clear( void ) { WEAPON_RELOAD.Unlink(); WEAPON_NETRELOAD.Unlink(); WEAPON_NETENDRELOAD.Unlink(); - WEAPON_NETFIRING.Unlink(); + if (!session->demoversion) + WEAPON_NETFIRING.Unlink(); WEAPON_RAISEWEAPON.Unlink(); WEAPON_LOWERWEAPON.Unlink(); @@ -995,7 +998,8 @@ void idWeapon::GetWeaponDef( const char *objectname, int ammoinclip ) { WEAPON_RELOAD.LinkTo( scriptObject, "WEAPON_RELOAD" ); WEAPON_NETRELOAD.LinkTo( scriptObject, "WEAPON_NETRELOAD" ); WEAPON_NETENDRELOAD.LinkTo( scriptObject, "WEAPON_NETENDRELOAD" ); - WEAPON_NETFIRING.LinkTo( scriptObject, "WEAPON_NETFIRING" ); + if (!session->demoversion) + WEAPON_NETFIRING.LinkTo( scriptObject, "WEAPON_NETFIRING" ); WEAPON_RAISEWEAPON.LinkTo( scriptObject, "WEAPON_RAISEWEAPON" ); WEAPON_LOWERWEAPON.LinkTo( scriptObject, "WEAPON_LOWERWEAPON" ); diff --git a/neo/ui/ChoiceWindow.cpp b/neo/ui/ChoiceWindow.cpp index c413e2a4..5351466b 100644 --- a/neo/ui/ChoiceWindow.cpp +++ b/neo/ui/ChoiceWindow.cpp @@ -389,7 +389,8 @@ void idChoiceWindow::PostParse() { } } else if( idStr::Cmp(GetName(), "OS2Primary") == 0 && cvarStr == "r_mode" - && idStr::Icmp(GetGui()->GetSourceFile(), "guis/mainmenu.gui") == 0 ) + && ( idStr::Icmp(GetGui()->GetSourceFile(), "guis/demo_mainmenu.gui") == 0 || + idStr::Icmp(GetGui()->GetSourceFile(), "guis/mainmenu.gui") == 0 ) ) { // always enable this for base/ and d3xp/ mainmenu.gui (like we did before) injectResolutions = true;