From 91f7c44e699fe1f863290a4e3e270bc0c72e93e9 Mon Sep 17 00:00:00 2001 From: div0 Date: Sat, 17 Nov 2007 11:03:56 +0000 Subject: [PATCH] it can start games now git-svn-id: svn://svn.icculus.org/nexuiz/trunk@2979 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- .../nexuiz/dialog_multiplayer_create.c | 3 ++ data/qcsrc/menu-div0test/nexuiz/maplist.c | 37 +++++++++++++++++++ data/qcsrc/server/g_world.qc | 3 ++ 3 files changed, 43 insertions(+) diff --git a/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c b/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c index a683cba32..a15555e7d 100644 --- a/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c +++ b/data/qcsrc/menu-div0test/nexuiz/dialog_multiplayer_create.c @@ -94,6 +94,9 @@ void fillNexuizServerCreateTab(entity me) me.gotoXY(me, me.rows - 1, 0); me.TD(me, 1, me.columns, e = makeNexuizButton("Start!", '0 0 0')); + e.onClick = MapList_LoadMap; + e.onClickEntity = me.mapListBox; + me.mapListBox.startButton = e; me.gameTypeChangeNotify(me); } diff --git a/data/qcsrc/menu-div0test/nexuiz/maplist.c b/data/qcsrc/menu-div0test/nexuiz/maplist.c index 382a5f15d..5cbeecdbf 100644 --- a/data/qcsrc/menu-div0test/nexuiz/maplist.c +++ b/data/qcsrc/menu-div0test/nexuiz/maplist.c @@ -2,6 +2,7 @@ CLASS(NexuizMapList) EXTENDS(NexuizListBox) METHOD(NexuizMapList, configureNexuizMapList, void(entity)) ATTRIB(NexuizMapList, rowsPerItem, float, 4) + METHOD(NexuizMapList, draw, void(entity)) METHOD(NexuizMapList, drawListBoxItem, void(entity, float, vector, float)) METHOD(NexuizMapList, clickListBoxItem, void(entity, float, vector)) METHOD(NexuizMapList, resizeNotify, void(entity, vector, vector, vector, vector)) @@ -29,10 +30,16 @@ CLASS(NexuizMapList) EXTENDS(NexuizListBox) ATTRIB(NexuizMapList, g_maplistCache, string, string_null) METHOD(NexuizMapList, g_maplistCacheToggle, void(entity, float)) METHOD(NexuizMapList, g_maplistCacheQuery, float(entity, float)) + + ATTRIB(NexuizMapList, startButton, entity, NULL) + + ATTRIB(NexuizMapList, cvarName, string, "dummy") + METHOD(NexuizMapList, loadCvars, void(entity)) ENDCLASS(NexuizMapList) entity makeNexuizMapList(); void MapList_All(entity btn, entity me); void MapList_None(entity btn, entity me); +void MapList_LoadMap(entity btn, entity me); #endif #ifdef IMPLEMENTATION @@ -49,6 +56,11 @@ void configureNexuizMapListNexuizMapList(entity me) me.refilter(me); } +void loadCvarsNexuizMapList(entity me) +{ + me.refilter(me); +} + float g_maplistCacheQueryNexuizMapList(entity me, float i) { return stof(substring(me.g_maplistCache, i, 1)); @@ -87,6 +99,13 @@ void g_maplistCacheToggleNexuizMapList(entity me, float i) } } +void drawNexuizMapList(entity me) +{ + if(me.startButton) + me.startButton.disabled = ((me.selectedItem < 0) || (me.selectedItem >= me.nItems)); + drawListBox(me); +} + void resizeNotifyNexuizMapList(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize) { me.origin = absOrigin; @@ -215,4 +234,22 @@ void MapList_None(entity btn, entity me) cvar_set("g_maplist", ""); me.refilter(me); } +void MapList_LoadMap(entity btn, entity me) +{ + string m; + if(me.selectedItem >= me.nItems || me.selectedItem < 0) + return; + m = MapInfo_BSPName_ByID(me.selectedItem); + if not(m) + return; + if(MapInfo_CheckMap(m)) + { + MapInfo_LoadMap(m); + } + else + { + print("Huh? Can't play this. Refiltering so this won't happen again.\n"); + me.refilter(me); + } +} #endif diff --git a/data/qcsrc/server/g_world.qc b/data/qcsrc/server/g_world.qc index f00a6c722..261394fd4 100644 --- a/data/qcsrc/server/g_world.qc +++ b/data/qcsrc/server/g_world.qc @@ -700,6 +700,7 @@ void() Maplist_Init = bprint( "Maplist is empty! Resetting it to default map list.\n" ); #ifdef MAPINFO cvar_set("g_maplist", temp = MapInfo_ListAllowedMaps()); + localcmd("\nmenu_cmd sync\n"); #else cvar_set("g_maplist", temp = cvar_string("g_maplist_defaultlist")); #endif @@ -825,6 +826,7 @@ void() GotoNextMap = bprint( "Maplist contains no single playable map! Resetting it to default map list.\n" ); #ifdef MAPINFO cvar_set("g_maplist", MapInfo_ListAllowedMaps()); + localcmd("\nmenu_cmd sync\n"); #else cvar_set("g_maplist", cvar_string("g_maplist_defaultlist")); #endif @@ -1876,6 +1878,7 @@ void MapVote_Init() bprint( "Maplist contains no single playable map! Resetting it to default map list.\n" ); #ifdef MAPINFO cvar_set("g_maplist", MapInfo_ListAllowedMaps()); + localcmd("\nmenu_cmd sync\n"); #else cvar_set("g_maplist", cvar_string("g_maplist_defaultlist")); #endif -- 2.39.2