From 798024804993fd73ba62a17166c915ba21f1115b Mon Sep 17 00:00:00 2001 From: blackhc Date: Sat, 13 Aug 2005 21:59:49 +0000 Subject: [PATCH] A lot of work done on the menu, I hope everything works.. Moved all gamemodes into Data::Game, so that it will save and load game configs correctly again. Changed the map system to support a more or less clean map filtering. Needs some clean up and removal of unused code though. But that will be done *not* now. Should be ready for release. Only known bug: Changing filtering resets the first map if the map isnt in the filtered list, but there is nothing I can do about it right now. git-svn-id: svn://svn.icculus.org/nexuiz/trunk@499 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- scmenu/creategame/game.menu | 2 +- scmenu/creategame/gamemodes/ctf.menu | 16 +- scmenu/creategame/gamemodes/domination.menu | 20 +- scmenu/creategame/gamemodes/gamemisc.menu | 48 ++--- scmenu/creategame/gamemodes/runematch.menu | 76 +++---- scmenu/creategame/gamemodes/teamplay.menu | 18 +- scmenu/creategame/maplist.menu | 46 ++--- scmenu/data.menu | 10 +- scmenu/data/game.menu | 153 +------------- scmenu/data/gamemodes/gamemisc.menu | 4 +- scmenu/data/server.menu | 6 +- scmenu/source/custom/creategame.qm | 72 +++---- scmenu/source/custom/creategame/creategame.qh | 13 +- scmenu/source/custom/creategame/maps.qc | 189 +++++++++++++----- 14 files changed, 298 insertions(+), 375 deletions(-) diff --git a/scmenu/creategame/game.menu b/scmenu/creategame/game.menu index 9b9fed951..2c3647298 100644 --- a/scmenu/creategame/game.menu +++ b/scmenu/creategame/game.menu @@ -39,7 +39,7 @@ Item Layout Game normal "Misc" init Nex_Action_JumpToPage - target "Panel::GameMisc" + target "Panel::Misc" } } Item EventWindow Panel diff --git a/scmenu/creategame/gamemodes/ctf.menu b/scmenu/creategame/gamemodes/ctf.menu index fbd4a0232..bc87662f2 100644 --- a/scmenu/creategame/gamemodes/ctf.menu +++ b/scmenu/creategame/gamemodes/ctf.menu @@ -8,37 +8,37 @@ Item Layout CTF Derive Nex_Option_EditBox CaptureLimit { text "CTF Point Limit Override" - target "Data::CTF::CaptureLimit::Text" + target "Data::Game::CTF::CaptureLimit::Text" } Derive Nex_Option_EditBox FlagReturnTime { text "Flag Return Time" - target "::Data::CTF::FlagReturnTime::Text" + target "::Data::Game::CTF::FlagReturnTime::Text" } Derive Nex_Option_EditBox FragsCapture { text "Capture Points (player)" - target "Data::CTF::FragsCapture::Text" + target "Data::Game::CTF::FragsCapture::Text" } Derive Nex_Option_EditBox FragsCaptureTeam { text "Capture Points (team)" - target "::Data::CTF::FragsCaptureTeam::Text" + target "::Data::Game::CTF::FragsCaptureTeam::Text" } Derive Nex_Option_EditBox FragsPickup { text "Flag Pickup Points" - target "Data::CTF::FragsPickup::Text" + target "Data::Game::CTF::FragsPickup::Text" } Derive Nex_Option_EditBox FragsReturn { text "Return Flag Points (ally)" - target "::Data::CTF::FragsReturn::Text" + target "::Data::Game::CTF::FragsReturn::Text" } Derive Nex_Option_EditBox FragsReturnRogue { text "Return Flag Points (rogue team)" - target "::Data::CTF::FragsReturnRogue::Text" + target "::Data::Game::CTF::FragsReturnRogue::Text" } @@ -49,6 +49,6 @@ Item Layout CTF { normal "Reset to default" init Nex_Action_ResetData - target "::Data::CTF" + target "::Data::Game::CTF" } } diff --git a/scmenu/creategame/gamemodes/domination.menu b/scmenu/creategame/gamemodes/domination.menu index f4fde6498..8bfc322b9 100644 --- a/scmenu/creategame/gamemodes/domination.menu +++ b/scmenu/creategame/gamemodes/domination.menu @@ -8,7 +8,7 @@ Item Layout Domination //Derive Nex_Option_Switch Domination_Active //{ // text "Play Domination" - // target "::Data::Domination::Domination_Active::Switch" + // target "::Data::Game::Domination::Domination_Active::Switch" //} Derive Nex_Option_EditBox TimeLimit { @@ -19,43 +19,43 @@ Item Layout Domination Derive Nex_Option_EditBox DomFragLimit { text "Score Limit Override" - target "Data::Domination::DomFragLimit::Text" + target "Data::Game::Domination::DomFragLimit::Text" } Derive Nex_Option_Switch DisableFrags { text "No Scores From Kills" - target "::Data::Domination::DisableFrags::Switch" + target "::Data::Game::Domination::DisableFrags::Switch" } //Derive Nex_Option_Switch BalanceTeamPoints //{ // text "Team Size Affects Points" - // target "::Data::Domination::BalanceTeamPoints::Switch" + // target "::Data::Game::Domination::BalanceTeamPoints::Switch" //} Derive Nex_Option_EditBox PointAmt { text "Domination Score Amount" - target "Data::Domination::PointAmt::Text" + target "Data::Game::Domination::PointAmt::Text" } Derive Nex_Option_EditBox PointRate { text "Score Frequency" - target "Data::Domination::PointRate::Text" + target "Data::Game::Domination::PointRate::Text" } Derive Nex_Option_EditBox CaptureTime { text "DomPoint Capture Delay" - target "::Data::Domination::CaptureTime::Text" + target "::Data::Game::Domination::CaptureTime::Text" } //Derive Nex_Option_EditBox DefaultNumTeams //{ // text "Default # of Teams on Non-Domination Maps (2-4)" - // target "::Data::Domination::DefaultNumTeams::Text" + // target "::Data::Game::Domination::DefaultNumTeams::Text" //} Derive Nex_Option_Switch DefaultNumTeams { text "Default # of teams" - target "Data::Domination::DefaultNumTeams::Switch" + target "Data::Game::Domination::DefaultNumTeams::Switch" } @@ -65,6 +65,6 @@ Item Layout Domination { normal "Reset to default" init Nex_Action_ResetData - target "::Data::CTF" + target "::Data::Game::Domination" } } diff --git a/scmenu/creategame/gamemodes/gamemisc.menu b/scmenu/creategame/gamemodes/gamemisc.menu index 7bd7e4c0c..468f22051 100644 --- a/scmenu/creategame/gamemodes/gamemisc.menu +++ b/scmenu/creategame/gamemodes/gamemisc.menu @@ -1,7 +1,7 @@ // Property of Alientrap/AK // // creategame/game.menu -Item Layout GameMisc +Item Layout Misc { direction [Nex_DefaultVertDirection] size '900 585' @@ -11,112 +11,112 @@ Item Layout GameMisc Derive Nex_Option_EditBox JoinMessageTime { text "Join Message Display Time" - target "Data::GameMisc::JoinMessageTime::Text" + target "Data::Game::Misc::JoinMessageTime::Text" } Derive Nex_Option_Switch Instagib { text "Instagib" - target "::Data::GameMisc::Instagib::Switch" + target "::Data::Game::Misc::Instagib::Switch" } Derive Nex_Option_Switch Rocketarena { text "Rocket Arena" - target "::Data::GameMisc::RocketArena::Switch" + target "::Data::Game::Misc::RocketArena::Switch" } Derive Nex_Option_Switch Vampire { text "Vampire Mode" - target "::Data::GameMisc::Vampire::Switch" + target "::Data::Game::Misc::Vampire::Switch" } Derive Nex_Option_Switch Casings { text "Bullet Casings" - target "::Data::GameMisc::Casings::Switch" + target "::Data::Game::Misc::Casings::Switch" } Derive Nex_Option_EditBox HealthStart { text "Starting Health" - target "Data::GameMisc::HealthStart::Text" + target "Data::Game::Misc::HealthStart::Text" } Derive Nex_Option_EditBox HealthRot { text "Health Rot" - target "Data::GameMisc::HealthRot::Text" + target "Data::Game::Misc::HealthRot::Text" } Derive Nex_Option_EditBox HealthStable { text "Health Stable" - target "Data::GameMisc::HealthStable::Text" + target "Data::Game::Misc::HealthStable::Text" } Derive Nex_Option_EditBox Gravity { text "Level Gravity" - target "Data::GameMisc::Gravity::Text" + target "Data::Game::Misc::Gravity::Text" } Derive Nex_Option_EditBox Maxspeed { text "Player Maxspeed" - target "Data::GameMisc::MaxSpeed::Text" + target "Data::Game::Misc::MaxSpeed::Text" } Derive Nex_Option_EditBox Gamespeed { text "Game Speed" - target "Data::GameMisc::GameSpeed::Text" + target "Data::Game::Misc::GameSpeed::Text" } Derive Nex_Option_EditBox Maxairspeed { text "Max Air Speed" - target "Data::GameMisc::MaxAirSpeed::Text" + target "Data::Game::Misc::MaxAirSpeed::Text" } Derive Nex_Option_EditBox JumpHeight { text "Jump height" - target "Data::GameMisc::JumpHeight::Text" + target "Data::Game::Misc::JumpHeight::Text" } Derive Nex_Option_EditBox HealthRegeneration { text "Health Regeneration Speed" - target "Data::GameMisc::HealthRegeneration::Text" + target "Data::Game::Misc::HealthRegeneration::Text" } Derive Nex_Option_EditBox ArmorRott { text "Armor Rot Speed" - target "Data::GameMisc::ArmorRott::Text" + target "Data::Game::Misc::ArmorRott::Text" } Derive Nex_Option_EditBox ArmorRegen { text "Armor Regeneration Speed" - target "Data::GameMisc::ArmorRegen::Text" + target "Data::Game::Misc::ArmorRegen::Text" } Derive Nex_Option_EditBox ArmorStable { text "Armor Stable" - target "Data::GameMisc::ArmorStable::Text" + target "Data::Game::Misc::ArmorStable::Text" } Derive Nex_Option_EditBox ArmorStart { text "Armor Start" - target "Data::GameMisc::ArmorStart::Text" + target "Data::Game::Misc::ArmorStart::Text" } Derive Nex_Option_EditBox SelfDamagePercent { text "Self Damage Percent" - target "Data::GameMisc::SelfDamagePercent::Text" + target "Data::Game::Misc::SelfDamagePercent::Text" } Derive Nex_Option_EditBox WeaponSwitchDelay { text "Weapon Switch Delay" - target "Data::GameMisc::WeaponSwitchDelay::Text" + target "Data::Game::Misc::WeaponSwitchDelay::Text" } Derive Nex_Option_EditBox Friction { text "Player Friction" - target "Data::GameMisc::Friction::Text" + target "Data::Game::Misc::Friction::Text" } Derive Nex_Option_EditBox Accelerate { text "Player Accelerate" - target "Data::GameMisc::Accelerate::Text" + target "Data::Game::Misc::Accelerate::Text" } Derive Nex_Line Seperator {} @@ -124,6 +124,6 @@ Item Layout GameMisc { normal "Reset to default" init Nex_Action_ResetData - target "::Data::GameMisc" + target "::Data::Game::Misc" } } diff --git a/scmenu/creategame/gamemodes/runematch.menu b/scmenu/creategame/gamemodes/runematch.menu index 8f5288392..cda6bdb43 100644 --- a/scmenu/creategame/gamemodes/runematch.menu +++ b/scmenu/creategame/gamemodes/runematch.menu @@ -39,48 +39,48 @@ Item Layout Runematch Derive Nex_Option_EditBox RunematchFragLimit { text "Score Limit Override" - target "Data::Runematch::RunematchFragLimit::Text" + target "Data::Game::Runematch::RunematchFragLimit::Text" } Derive Nex_Option_EditBox PointAmt { text "Score per Rune" - target "Data::Runematch::PointAmt::Text" + target "Data::Game::Runematch::PointAmt::Text" } Derive Nex_Option_EditBox PointRate { text "Rune Score Frequency" - target "Data::Runematch::PointRate::Text" + target "Data::Game::Runematch::PointRate::Text" } Derive Nex_Option_EditBox RuneRespawnTime { text "Rune Respawn Timer After Dropped" - target "Data::Runematch::RuneRespawnTime::Text" + target "Data::Game::Runematch::RuneRespawnTime::Text" } Derive Nex_Option_EditBox RuneShuffleTime { text "Rune Position Change Timer" - target "Data::Runematch::RuneShuffleTime::Text" + target "Data::Game::Runematch::RuneShuffleTime::Text" } Derive Nex_Option_EditBox FragsKilledbyRuneholder { text "Frags When Holding Runes" - target "Data::Runematch::FragsKilledbyRuneholder::Text" + target "Data::Game::Runematch::FragsKilledbyRuneholder::Text" } Derive Nex_Option_EditBox FragsKilledRuneholder { text "Frags for Killing Rune Holders" - target "Data::Runematch::FragsKilledRuneholder::Text" + target "Data::Game::Runematch::FragsKilledRuneholder::Text" } Derive Nex_Option_EditBox FragsKillNoRunes { text "Other Frags (for non-rune kills)" - target "Data::Runematch::FragsKillNoRunes::Text" + target "Data::Game::Runematch::FragsKillNoRunes::Text" } Derive Nex_Option_EditBox MaxRunesToDrop { text "Max Runes to Drop on Death" - target "Data::Runematch::MaxRunesToDrop::Text" + target "Data::Game::Runematch::MaxRunesToDrop::Text" } Derive Nex_Line SeperatorStrength @@ -88,32 +88,32 @@ Item Layout Runematch Derive Nex_Option_EditBox StrengthDamage { text "Strength Damage" - target "Data::Runematch::StrengthDamage::Text" + target "Data::Game::Runematch::StrengthDamage::Text" } Derive Nex_Option_EditBox StrengthForce { text "Strength Force" - target "Data::Runematch::StrengthForce::Text" + target "Data::Game::Runematch::StrengthForce::Text" } Derive Nex_Option_EditBox WeaknessDamage { text "Weakness Damage" - target "Data::Runematch::WeaknessDamage::Text" + target "Data::Game::Runematch::WeaknessDamage::Text" } Derive Nex_Option_EditBox WeaknessForce { text "Weakness Force" - target "Data::Runematch::WeaknessForce::Text" + target "Data::Game::Runematch::WeaknessForce::Text" } Derive Nex_Option_EditBox StrengthComboDamage { text "Combined Damage" - target "Data::Runematch::StrengthComboDamage::Text" + target "Data::Game::Runematch::StrengthComboDamage::Text" } Derive Nex_Option_EditBox StrengthComboForce { text "Combined Force" - target "Data::Runematch::StrengthComboForce::Text" + target "Data::Game::Runematch::StrengthComboForce::Text" } @@ -122,17 +122,17 @@ Item Layout Runematch Derive Nex_Option_EditBox DefenseDamage { text "Defense TakeDamage" - target "Data::Runematch::DefenseDamage::Text" + target "Data::Game::Runematch::DefenseDamage::Text" } Derive Nex_Option_EditBox VulnerDamage { text "Vulnerability TakeDamage" - target "Data::Runematch::VulnerDamage::Text" + target "Data::Game::Runematch::VulnerDamage::Text" } Derive Nex_Option_EditBox DefenseComboDamage { text "Combined TakeDamage" - target "Data::Runematch::DefenseComboDamage::Text" + target "Data::Game::Runematch::DefenseComboDamage::Text" } @@ -141,17 +141,17 @@ Item Layout Runematch Derive Nex_Option_EditBox VampireDamage { text "Vampire Damage Absorb" - target "Data::Runematch::VampireDamage::Text" + target "Data::Game::Runematch::VampireDamage::Text" } Derive Nex_Option_EditBox EmpathyDamage { text "Empathy Damage Take" - target "Data::Runematch::EmpathyDamage::Text" + target "Data::Game::Runematch::EmpathyDamage::Text" } Derive Nex_Option_EditBox VampireComboDamage { text "Combined Absorb or Take" - target "Data::Runematch::VampireComboDamage::Text" + target "Data::Game::Runematch::VampireComboDamage::Text" } @@ -160,37 +160,37 @@ Item Layout Runematch Derive Nex_Option_EditBox RegenHP { text "Vitality Health" - target "Data::Runematch::RegenHP::Text" + target "Data::Game::Runematch::RegenHP::Text" } Derive Nex_Option_EditBox VenomHP { text "Venom Health" - target "Data::Runematch::VenomHP::Text" + target "Data::Game::Runematch::VenomHP::Text" } Derive Nex_Option_EditBox RegenComboHP { text "Combined Health" - target "Data::Runematch::RegenComboHP::Text" + target "Data::Game::Runematch::RegenComboHP::Text" } Derive Nex_Option_EditBox RegenSpeed { text "Vitality Regenerate Speed" - target "Data::Runematch::RegenSpeed::Text" + target "Data::Game::Runematch::RegenSpeed::Text" } Derive Nex_Option_EditBox VenomSpeed { text "Venom Degenerate Speed" - target "Data::Runematch::VenomSpeed::Text" + target "Data::Game::Runematch::VenomSpeed::Text" } Derive Nex_Option_EditBox RegenComboRegenSpeed { text "Combined Regenerate Speed" - target "Data::Runematch::RegenComboRegenSpeed::Text" + target "Data::Game::Runematch::RegenComboRegenSpeed::Text" } Derive Nex_Option_EditBox RegenComboDegenSpeed { text "Combined Degenerate Speed" - target "Data::Runematch::RegenComboDegenSpeed::Text" + target "Data::Game::Runematch::RegenComboDegenSpeed::Text" } @@ -199,47 +199,47 @@ Item Layout Runematch Derive Nex_Option_EditBox SpeedMoverate { text "Speed Move Rate" - target "Data::Runematch::SpeedMoverate::Text" + target "Data::Game::Runematch::SpeedMoverate::Text" } Derive Nex_Option_EditBox SlowMoverate { text "Slow Move Rate" - target "Data::Runematch::SlowMoverate::Text" + target "Data::Game::Runematch::SlowMoverate::Text" } Derive Nex_Option_EditBox SpeedComboMoverate { text "Combined Move Rate" - target "Data::Runematch::SpeedComboMoverate::Text" + target "Data::Game::Runematch::SpeedComboMoverate::Text" } Derive Nex_Option_EditBox SpeedAtkrate { text "Speed Attack Rate" - target "Data::Runematch::SpeedAtkrate::Text" + target "Data::Game::Runematch::SpeedAtkrate::Text" } Derive Nex_Option_EditBox SlowAtkrate { text "Slow Attack Rate" - target "Data::Runematch::SlowAtkrate::Text" + target "Data::Game::Runematch::SlowAtkrate::Text" } Derive Nex_Option_EditBox SpeedComboAtkrate { text "Combined Attack Rate" - target "Data::Runematch::SpeedComboAtkrate::Text" + target "Data::Game::Runematch::SpeedComboAtkrate::Text" } Derive Nex_Option_EditBox SpeedJumpHeight { text "Speed Jump Height" - target "Data::Runematch::SpeedJumpHeight::Text" + target "Data::Game::Runematch::SpeedJumpHeight::Text" } Derive Nex_Option_EditBox SlowJumpHeight { text "Slow Jump Height" - target "Data::Runematch::SlowJumpHeight::Text" + target "Data::Game::Runematch::SlowJumpHeight::Text" } Derive Nex_Option_EditBox SpeedComboJumpHeight { text "Combined Jump Height" - target "Data::Runematch::SpeedComboJumpHeight::Text" + target "Data::Game::Runematch::SpeedComboJumpHeight::Text" } @@ -250,7 +250,7 @@ Item Layout Runematch { normal "Reset to default" init Nex_Action_ResetData - target "::Data::Runematch" + target "::Data::Game::Runematch" } } } diff --git a/scmenu/creategame/gamemodes/teamplay.menu b/scmenu/creategame/gamemodes/teamplay.menu index d49559d0e..186ee93e4 100644 --- a/scmenu/creategame/gamemodes/teamplay.menu +++ b/scmenu/creategame/gamemodes/teamplay.menu @@ -18,42 +18,42 @@ Item Layout Teamplay Derive Nex_Option_Switch DMForceTeamplay { text "Force Teamplay (TDM) in Deathmatch maps" - target "::Data::Teamplay::DMForceTeamplay::Switch" + target "::Data::Game::Teamplay::DMForceTeamplay::Switch" } Derive Nex_Option_Switch TeamPlay { text "Teamplay Friendly Fire" - target "::Data::Teamplay::TeamPlay::Switch" + target "::Data::Game::Teamplay::TeamPlay::Switch" } Derive Nex_Option_Switch BalanceTeams { text "Auto-Balance Teams on Join" - target "::Data::Teamplay::BalanceTeams::Switch" + target "::Data::Game::Teamplay::BalanceTeams::Switch" } Derive Nex_Option_Switch ForceBalanceTeams { text "Force Balanced Teams" - target "::Data::Teamplay::ForceBalanceTeams::Switch" + target "::Data::Game::Teamplay::ForceBalanceTeams::Switch" } Derive Nex_Option_Switch PreventTeamImbalance { text "Prevent Team-Imbalancing Switch" - target "::Data::Teamplay::PreventTeamImbalance::Switch" + target "::Data::Game::Teamplay::PreventTeamImbalance::Switch" } Derive Nex_Option_Switch BanChangeTeams { text "Changing team not allowed" - target "::Data::Teamplay::BanChangeTeams::Switch" + target "::Data::Game::Teamplay::BanChangeTeams::Switch" } Derive Nex_Option_Switch TDM_NumTeams { text "Team Deathmatch (TDM) # of teams" - target "Data::Teamplay::TDM_NumTeams::Switch" + target "Data::Game::Teamplay::TDM_NumTeams::Switch" } Derive Nex_Option_EditBox ChangeTeamFragTransfer { text "Score Transfer % on Change Team" - target "Data::Teamplay::ChangeTeamFragTransfer::Text" + target "Data::Game::Teamplay::ChangeTeamFragTransfer::Text" } @@ -63,6 +63,6 @@ Item Layout Teamplay { normal "Reset to default" init Nex_Action_ResetData - target "::Data::Teamplay" + target "::Data::Game::Teamplay" } } diff --git a/scmenu/creategame/maplist.menu b/scmenu/creategame/maplist.menu index 09ebbec11..c7580dc92 100644 --- a/scmenu/creategame/maplist.menu +++ b/scmenu/creategame/maplist.menu @@ -5,6 +5,25 @@ Item Window MapList { size '900 585' + DeriveTemplate Nex_Composition Nex_Option_MapType + { + DeriveTemplate Nex_Automation_Option_Switch Automation + {} + DeriveTemplate TextButton Description + {} + DeriveTemplate SwitchButton Switch + { + size '200 12' + action Nex_Action_Maplist_ChangeMapType + } + } + Derive Nex_Option_MapType MapQuery + { + pos '0 0' + size '900 20' + text "Map Type:" + target "Data::Server::Map::Query::Switch" + } Derive Label MapsLabel { pos '0 20' @@ -31,33 +50,6 @@ Item Window MapList target "::Data::Server::Map::Cycle" action Nex_Action_Cycle_Remove } - Item Layout MapOptions - { - pos '0 0' - size '900 20' - flag [FlagEmbedded] - direction '50 0' - - DeriveTemplate Nex_Composition Nex_Option_MapType - { - DeriveTemplate Nex_Automation_Option_Switch Automation - {} - DeriveTemplate TextButton Description - {} - DeriveTemplate SwitchButton Switch - { - size '200 12' - action Nex_Action_Maplist_ChangeMapType - } - } - - Derive Nex_Option_MapType MapQuery - { - text "Map Type" - target "Data::Server::Map::Query::Switch" - } - } - Item Layout Panel { pos '475 470' diff --git a/scmenu/data.menu b/scmenu/data.menu index 7f23061e7..d62d59ab0 100644 --- a/scmenu/data.menu +++ b/scmenu/data.menu @@ -19,14 +19,8 @@ Item DataContainer Data #include "menu/data/serverlist.menu" #include "menu/data/server.menu" - - // game modes - #include "menu/data/gamemodes/gamemisc.menu" - #include "menu/data/gamemodes/teamplay.menu" - #include "menu/data/gamemodes/ctf.menu" - #include "menu/data/gamemodes/domination.menu" - #include "menu/data/gamemodes/runematch.menu" - + #include "menu/data/game.menu" #include "menu/data/weapon.menu" #include "menu/data/management.menu" + } diff --git a/scmenu/data/game.menu b/scmenu/data/game.menu index 30555db92..0789db26d 100644 --- a/scmenu/data/game.menu +++ b/scmenu/data/game.menu @@ -4,151 +4,10 @@ Item DataContainer Game { - Item Data_Cvar Instagib - { - cvarName "g_instagib" - defValue 0 - - [DataLink_OnOffSwitch] - } - Item Data_Cvar RocketArena - { - cvarName "g_rocketarena" - defValue 0 - - [DataLink_OnOffSwitch] - } - Item Data_Cvar Vampire - { - cvarName "g_vampire" - defValue 0 - - [DataLink_OnOffSwitch] - } - Item Data_Cvar Casings - { - cvarName "g_casings" - defValue 0 - - [DataLink_OnOffSwitch] - } - Item Data_Cvar HealthStart - { - cvarName "g_balance_health_start" - defValue 150 - - [DataLink_Setting] - } - Item Data_Cvar HealthRot - { - cvarName "g_balance_health_rot" - defValue 0.1 - - [DataLink_Setting] - } - Item Data_Cvar HealthStable - { - cvarName "g_balance_health_stable" - defValue 100 - - [DataLink_Setting] - } - Item Data_Cvar Gravity - { - cvarName "sv_gravity" - defValue 800 - - [DataLink_Setting] - } - Item Data_Cvar MaxSpeed - { - cvarName "sv_maxspeed" - defValue 400 - - [DataLink_Setting] - } - Item Data_Cvar GameSpeed - { - cvarName "slowmo" - defValue 1 - - [DataLink_Setting] - } - Item Data_Cvar MaxAirSpeed - { - cvarName "sv_maxairspeed" - defValue 50 - - [DataLink_Setting] - } - Item Data_Cvar JumpHeight - { - cvarName "g_balance_jumpheight" - defValue 300 - - [DataLink_Setting] - } - Item Data_Cvar HealthRegeneration - { - cvarName "g_balance_health_regen" - defValue 0.1 - - [DataLink_Setting] - } - Item Data_Cvar ArmorRott - { - cvarName "g_balance_armor_rot" - defValue 0.1 - - [DataLink_Setting] - } - Item Data_Cvar ArmorRegen - { - cvarName "g_balance_armor_regen" - defValue 0 - - [DataLink_Setting] - } - Item Data_Cvar ArmorStable - { - cvarName "g_balance_armor_stable" - defValue 100 - - [DataLink_Setting] - } - Item Data_Cvar ArmorStart - { - cvarName "g_balance_armor_start" - defValue 0 - - [DataLink_Setting] - } - Item Data_Cvar SelfDamagePercent - { - cvarName "g_balance_selfdamagepercent" - defValue 0.6 - - [DataLink_Setting] - } - Item Data_Cvar WeaponSwitchDelay - { - cvarName "g_balance_weaponswitchdelay" - defValue 0.3 - - [DataLink_Setting] - } - Item Data_Cvar Friction - { - cvarName "sv_friction" - defValue 5 - - [DataLink_Setting] - } - Item Data_Cvar Accelerate - { - cvarName "sv_accelerate" - defValue 5.5 - - [DataLink_Setting] - } + // game modes + #include "menu/data/gamemodes/gamemisc.menu" + #include "menu/data/gamemodes/teamplay.menu" + #include "menu/data/gamemodes/ctf.menu" + #include "menu/data/gamemodes/domination.menu" + #include "menu/data/gamemodes/runematch.menu" } diff --git a/scmenu/data/gamemodes/gamemisc.menu b/scmenu/data/gamemodes/gamemisc.menu index 24fb139b8..cea08ce33 100644 --- a/scmenu/data/gamemodes/gamemisc.menu +++ b/scmenu/data/gamemodes/gamemisc.menu @@ -2,7 +2,7 @@ // // data/gamemisc.menu -Item DataContainer GameMisc +Item DataContainer Misc { Item Data_Cvar JoinMessageTime { @@ -31,7 +31,7 @@ Item DataContainer GameMisc defValue 0 [DataLink_OnOffSwitch] - } + } Item Data_Cvar Casings { cvarName "g_casings" diff --git a/scmenu/data/server.menu b/scmenu/data/server.menu index dd3151077..77a76932a 100644 --- a/scmenu/data/server.menu +++ b/scmenu/data/server.menu @@ -8,12 +8,12 @@ Item DataContainer Server { Item Data_Container Query { - defValue "maps/*.mapcfg" - value "maps/*.mapcfg" + defValue "" + value "" Item DataLink_TextSwitch Switch { - valueList "'maps/*.mapcfg' 'maps/dm_*.mapcfg' 'maps/tdm_*.mapcfg' 'maps/dom_*.mapcfg' 'maps/ctf_*.mapcfg' 'maps/rune_*.mapcfg'" + valueList "'' 'dm_' 'tdm_' 'dom_' 'ctf_' 'rune_'" descList "'List All''Classic Deathmatch''Team Deathmatch''Domination''Capture The Flag''Rune Match'" link "##up" diff --git a/scmenu/source/custom/creategame.qm b/scmenu/source/custom/creategame.qm index 08d19f8ef..a7d547ca5 100644 --- a/scmenu/source/custom/creategame.qm +++ b/scmenu/source/custom/creategame.qm @@ -13,7 +13,7 @@ void() Nex_MapSelector_UpdateMap = lSelector = Menu_GetItem( "::Data::Server::Map::Selector" ); Raise_DataEvent( lSelector, ITEM_DATALINK_GET ); lIndex = lSelector._realValue; - lInfo = Nex_MapDB_GetByIndex( lIndex ); + lInfo = Nex_MapDB_GetFilteredByIndex( lIndex ); if( lInfo == null_entity ) { lItem = Menu_GetItem( "Picture" ); @@ -27,19 +27,14 @@ void() Nex_MapSelector_UpdateMap = return; } - // If there is a new selected map, the info panel is updated accordingly - if( lIndex != self.minValue ) { - self.minValue = lIndex; + lItem = Menu_GetItem( "Picture" ); + String_EntitySet( lItem, picture, lInfo.picture ); - lItem = Menu_GetItem( "Picture" ); - String_EntitySet( lItem, picture, lInfo.picture ); - - lItem = Menu_GetItem( "Name" ); - String_EntitySet( lItem, text, lInfo.normal ); + lItem = Menu_GetItem( "Name" ); + String_EntitySet( lItem, text, lInfo.normal ); - lItem = Menu_GetItem( "Description" ); - String_EntitySet( lItem, text, lInfo.text ); - } + lItem = Menu_GetItem( "Description" ); + String_EntitySet( lItem, text, lInfo.text ); lItem = Menu_GetItem( "::Data::Server::Map::Cycle" ); DataLink_Nex_MapList_SetFirst( lItem, lInfo.normal, lInfo.link ); @@ -66,7 +61,7 @@ void() Nex_MapSelector_Synchronize = if( lMapInfo == null_entity ) { Raise_DataEvent( lCycle, ITEM_DATA_RESET ); } else { - lSelector._realValue = Nex_MapDB_GetIndex( lMapInfo ); + lSelector._realValue = Nex_MapDB_GetFilteredIndex( lMapInfo ); Raise_DataEvent( lSelector, ITEM_DATALINK_SET ); } } @@ -142,6 +137,7 @@ void() Nex_Action_Cycle_Add = lPath = DataLink_Nex_MapList_GetCurrentPath( lList ); if( lCycle.stepValue == 1.0 ) { + print( "Before: ", ftos( lCycle._realValue ), "\n" ); DataLink_Nex_MapList_InsertEntryAfter( lCycle, lName, lPath ); } else { DataLink_Nex_MapList_SetFirst( lCycle, lName, lPath ); @@ -153,6 +149,8 @@ void() Nex_Action_Cycle_Add = lCycle._realValue = lCycle._realValue + 1; Raise_DataEvent( lCycle, ITEM_DATALINK_SET ); + print( "After: ", ftos( lCycle._realValue ), "\n" ); + Nex_MapSelector_Synchronize(); }; @@ -202,6 +200,25 @@ void() Nex_Action_Cycle_Clear = Nex_MapSelector_Synchronize(); }; + +void() Nex_Action_Maplist_ChangeMapType = { + local entity lMapQuery; + local entity lOldSelf; + + lMapQuery = Menu_GetItem( "::Data::Server::Map::Query" ); + + Raise_DataEvent( self._target, ITEM_DATALINK_SET ); + + Nex_MapDB_FilterMaps( lMapQuery.value ); + + // kind of a hack + self = Menu_GetItem( "::Data::Server::Map::Selector" ); + Item_DataLink_Nex_MapList_InitWithMapList(); + self = Menu_GetItem( "::Data::Server::Map::List" ); + Item_DataLink_Nex_MapList_InitWithMapList(); + self = lOldSelf; +}; + // mangement entity( float pType ) Nex_Management_GetFileList = @@ -410,32 +427,3 @@ void() Nex_Action_Management_TypeMapList = { Nex_Management_SetType( 2 ); }; - -// FIXME: hackish -void() Nex_Action_Maplist_ChangeMapType = { - local entity lOldSelf; - - // HACK - Nex_Action_TestOnChange(); - - lOldSelf = self; - - Nex_MapDB_RefreshFiles(); - - self = Menu_GetItem( "::Data::Server::Map::Selector" ); - Item_DataLink_Nex_MapList_InitWithMapList(); - //DataLink_Nex_MapList_UpdateRange(self); - //Item_DataLink_Nex_MapList_Load(); - - // fixme: need to change which map the map selector is pointing to right now - - Raise_DataEvent( self, ITEM_DATALINK_GET ); - if(self._realValue > self.maxValue) - self._realValue = self.maxValue; - Raise_DataEvent( self, ITEM_DATALINK_SET ); - - //Nex_MapSelector_UpdateMap(); - //Nex_MapSelector_Synchronize(); - - self = lOldSelf; -}; diff --git a/scmenu/source/custom/creategame/creategame.qh b/scmenu/source/custom/creategame/creategame.qh index 5418152c6..8bc9f5403 100644 --- a/scmenu/source/custom/creategame/creategame.qh +++ b/scmenu/source/custom/creategame/creategame.qh @@ -13,17 +13,20 @@ void() Item_Nex_Map_Info_Spawn; // Map ""database"" Singleton Item_Nex_MapDB -// AK late function (doesnt fit and breaks singleton abstraction) FIXME -void() Nex_MapDB_RefreshFiles; - // pRoot should be an item with no other children void() Item_Nex_MapDB_EnumFiles; void() Item_Nex_MapDB_Destroy; void() Item_Nex_MapDB_Spawn; +void( string pPrefix ) Nex_MapDB_FilterMaps; + entity( string pPath ) Nex_MapDB_GetByPath; -entity( float pIndex ) Nex_MapDB_GetByIndex; -float( entity pItem ) Nex_MapDB_GetIndex; +//entity( float pIndex ) Nex_MapDB_GetByIndex; +entity( float pIndex ) Nex_MapDB_GetFilteredByIndex; +float( entity pItem ) Nex_MapDB_GetFilteredIndex; + +string() Nex_MapDB_GetFilteredPathAltString; +string() Nex_MapDB_GetFilteredNameAltString; string() Nex_MapDB_GetPathAltString; string() Nex_MapDB_GetNameAltString; diff --git a/scmenu/source/custom/creategame/maps.qc b/scmenu/source/custom/creategame/maps.qc index 0b1d7c7a9..00c018643 100644 --- a/scmenu/source/custom/creategame/maps.qc +++ b/scmenu/source/custom/creategame/maps.qc @@ -44,45 +44,11 @@ Item_Nex_MapDB */ string _Nex_MapList_FullPath; string _Nex_MapList_Name; +string _Nex_MapList_FilteredFullPath; +string _Nex_MapList_FilteredName; +string _Nex_MapList_Filter; entity _Nex_MapList_Root; -/* -=================== -Item_Nex_MapDB_RefreshFiles -=================== -*/ - - /* fixme: - - use a switch for gametypes - and just set the action field to Nex_MapDB_RefreshFiles - - Better to write a new action function though.. - And call Nex_Action_TestOnChange to set the Data value - then set up the filter and then call RefreshFiles - or if you put the filter handling into RefrehFiles just call TestOnChange and then RefreshFiles - */ - - -void() Nex_MapDB_RefreshFiles = -{ - local entity lOldSelf; - lOldSelf = self; - - Nex_Action_TestOnChange(); - - Menu_EmptyWindow( _Nex_MapList_Root ); - - String_Free( _Nex_MapList_FullPath ); - String_Free( _Nex_MapList_Name ); - _Nex_MapList_FullPath = String_Create(); - _Nex_MapList_Name = String_Create(); - - self = _Nex_MapList_Root; - Item_Nex_MapDB_EnumFiles(); - self = lOldSelf; -}; - /* =================== Item_Nex_MapDB_EnumFiles @@ -93,15 +59,12 @@ Item_Nex_MapDB_EnumFiles // rest: description text void() Item_Nex_MapDB_EnumFiles = { - local float lSearchHandle; - local float lSearchSize; - local float lSearchCounter; - local entity lMap; - local entity lMapQuery; + local float lSearchHandle; + local float lSearchSize; + local float lSearchCounter; + local entity lMap; - lMapQuery = Menu_GetItem( "::Data::Server::Map::Query" ); - - lSearchHandle = search_begin( lMapQuery.value, true, true ); + lSearchHandle = search_begin( "maps/*.mapcfg", true, true ); if( lSearchHandle < 0 ) return; for( lSearchSize = search_getsize( lSearchHandle ), lSearchCounter = 0; @@ -170,6 +133,9 @@ void() Item_Nex_MapDB_EnumFiles = search_end( lSearchHandle ); + _Nex_MapList_FilteredFullPath = String_Set( _Nex_MapList_FilteredFullPath, _Nex_MapList_FullPath ); + _Nex_MapList_FilteredName = String_Set( _Nex_MapList_FilteredName, _Nex_MapList_Name ); + Menu_LinkChildren( self ); self.minValue = 1; @@ -186,6 +152,9 @@ void() Item_Nex_MapDB_Destroy = { String_Free( _Nex_MapList_FullPath ); String_Free( _Nex_MapList_Name ); + String_Free( _Nex_MapList_FilteredFullPath ); + String_Free( _Nex_MapList_FilteredName ); + String_Free( _Nex_MapList_Filter ); _Nex_MapList_Root = null_entity; }; @@ -202,6 +171,9 @@ void() Item_Nex_MapDB_Spawn = _Nex_MapList_FullPath = String_Create(); _Nex_MapList_Name = String_Create(); + _Nex_MapList_FilteredFullPath = String_Create(); + _Nex_MapList_FilteredName = String_Create(); + _Nex_MapList_Filter = String_Create(); _Nex_MapList_Root = self; Item_Nex_MapDB_EnumFiles(); @@ -232,9 +204,36 @@ entity( string pPath ) Nex_MapDB_GetByPath = /* =================== -Nex_MapDB_GetByIndex +Nex_MapDB_GetFilteredByIndex =================== */ +entity( float pIndex ) Nex_MapDB_GetFilteredByIndex = +{ + local entity lNode; + local float lFilteredIndex; + + if( !_Nex_MapList_Root ) + error( "No Item_Nex_MapDB found!" ); + + pIndex = fabs( pIndex ); + lFilteredIndex = 0; + for( lNode = _Nex_MapList_Root._child ; lNode ; lNode = lNode._next ) { + if( substring( lNode.link, 0, strlen( _Nex_MapList_Filter ) ) == _Nex_MapList_Filter ) { + ++lFilteredIndex; + } + if( pIndex == lFilteredIndex ) { + return lNode; + } + } + + return null_entity; +}; + +/* +=================== +Nex_MapDB_GetByIndex +=================== +*//* entity( float pIndex ) Nex_MapDB_GetByIndex = { local entity lNode; @@ -250,6 +249,62 @@ entity( float pIndex ) Nex_MapDB_GetByIndex = } return null_entity; +};*/ + +/* +=================== +Nex_MapDB_FilterMaps +=================== +*/ +void( string pPrefix ) Nex_MapDB_FilterMaps = +{ + local float lPrefixLength; + local float lCounter; + local float lSize; + + _Nex_MapList_Filter = String_Set( _Nex_MapList_Filter, pPrefix ); + + _Nex_MapList_FilteredFullPath = String_Set( _Nex_MapList_FilteredFullPath, "" ); + _Nex_MapList_FilteredName = String_Set( _Nex_MapList_FilteredName, "" ); + + lPrefixLength = strlen( pPrefix ); + lSize = Util_GetAltStringCount( _Nex_MapList_FullPath ); + for( lCounter = 0 ; lCounter < lSize ; ++lCounter ) { + local string lPath; + + lPath = Util_GetAltStringItem( _Nex_MapList_FullPath, lCounter ); + if( substring( lPath, 0, lPrefixLength ) == pPrefix ) { + local string lName; + lName = Util_GetAltStringItem( _Nex_MapList_Name, lCounter ); + + _Nex_MapList_FilteredFullPath = Util_AltStringPushBack( _Nex_MapList_FilteredFullPath, lPath ); + _Nex_MapList_FilteredName = Util_AltStringPushBack( _Nex_MapList_FilteredName, lName ); + + String_Free( lName ); + } + + String_Free( lPath ); + } +}; + +/* +=================== +Nex_MapDB_GetFilteredPathAltString +=================== +*/ +string() Nex_MapDB_GetFilteredPathAltString = +{ + return _Nex_MapList_FilteredFullPath; +} + +/* +=================== +Nex_MapDB_GetFilteredNameAltString +=================== +*/ +string() Nex_MapDB_GetFilteredNameAltString = +{ + return _Nex_MapList_FilteredName; }; /* @@ -274,14 +329,30 @@ string() Nex_MapDB_GetNameAltString = /* =================== -Nex_MapDB_GetIndex +Nex_MapDB_GetFilteredIndex =================== */ -float( entity pItem ) Nex_MapDB_GetIndex = +float( entity pItem ) Nex_MapDB_GetFilteredIndex = { - return fabs( pItem.orderPos ); + local float lIndex; + local float lCount; + + lCount = Util_GetAltStringCount( _Nex_MapList_FilteredFullPath ); + for( lIndex = 0 ; lIndex < lCount ; ++lIndex ) { + local string lPath; + lPath = String_Normal( Util_GetAltStringItem( _Nex_MapList_FilteredFullPath, lIndex ) ); + if( lPath == pItem.link ) { + return lCount + 1; + } + } + return 1; }; +/* +=================== +Item_DataLink_Nex_MapList_Save +=================== +*/ void() Item_DataLink_Nex_MapList_Save = { local float lCount; @@ -301,6 +372,11 @@ void() Item_DataLink_Nex_MapList_Save = String_Free( lOutput ); }; +/* +=================== +Item_DataLink_Nex_MapList_Load +=================== +*/ void() Item_DataLink_Nex_MapList_Load = { local string lEntry; @@ -331,6 +407,11 @@ void() Item_DataLink_Nex_MapList_Load = Nex_MapSelector_Synchronize(); }; +/* +=================== +Item_DataLink_Nex_MapList_ExecString +=================== +*/ void() Item_DataLink_Nex_MapList_ExecString = { local float lCount; @@ -389,6 +470,11 @@ void( float pEvent ) Item_DataLink_Nex_MapList_DataEvent = } }; +/* +=================== +IDLNML_Reinit +=================== +*/ void() IDLNML_Reinit = { Raise_DataEvent( self, ITEM_DATA_SYNC ); @@ -441,9 +527,10 @@ Item_DataLink_Nex_MapList_InitWithMapList */ void() Item_DataLink_Nex_MapList_InitWithMapList = { - String_EntitySet( self, valueList, Nex_MapDB_GetPathAltString() ); - String_EntitySet( self, descList, Nex_MapDB_GetNameAltString() ); + String_EntitySet( self, valueList, Nex_MapDB_GetFilteredPathAltString() ); + String_EntitySet( self, descList, Nex_MapDB_GetFilteredNameAltString() ); + self._realValue = 1.0; DataLink_Nex_MapList_UpdateRange( self ); }; -- 2.39.2