From 4ab1871fd642e23bc790fa52fd8b2a38a8d6c719 Mon Sep 17 00:00:00 2001 From: div0 Date: Tue, 17 Jun 2008 06:06:52 +0000 Subject: [PATCH] cleanup of victim's patch for a Play button git-svn-id: svn://svn.icculus.org/nexuiz/trunk@3705 f962a42d-fe04-0410-a3ab-8c8b0445ebaa --- .../dialog_multiplayer_create_mapinfo.c | 13 ++++++-- data/qcsrc/menu/nexuiz/maplist.c | 31 ++++++++++++++++--- 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c b/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c index 45bf4f2f5..1f8d6d18f 100644 --- a/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c +++ b/data/qcsrc/menu/nexuiz/dialog_multiplayer_create_mapinfo.c @@ -1,7 +1,7 @@ #ifdef INTERFACE CLASS(NexuizMapInfoDialog) EXTENDS(NexuizDialog) METHOD(NexuizMapInfoDialog, fill, void(entity)) - METHOD(NexuizMapInfoDialog, loadMapInfo, void(entity, float)) + METHOD(NexuizMapInfoDialog, loadMapInfo, void(entity, float, entity)) ATTRIB(NexuizMapInfoDialog, title, string, "Map Information") ATTRIB(NexuizMapInfoDialog, color, vector, SKINCOLOR_DIALOG_MAPINFO) ATTRIB(NexuizMapInfoDialog, intendedWidth, float, 0.85) @@ -36,9 +36,10 @@ ENDCLASS(NexuizMapInfoDialog) #endif #ifdef IMPLEMENTATION -void loadMapInfoNexuizMapInfoDialog(entity me, float i) +void loadMapInfoNexuizMapInfoDialog(entity me, float i, entity mlb) { me.currentMapIndex = i; + me.startButton.onClickEntity = mlb; MapInfo_Get_ByID(i); if(me.currentMapBSPName) @@ -140,8 +141,14 @@ void fillNexuizMapInfoDialog(entity me) me.descriptionLabel = e; me.gotoRC(me, me.rows - 1, 0); - me.TD(me, 1, me.columns, e = makeNexuizButton("OK", '0 0 0')); + me.TDempty(me, 0.5); + + me.TD(me, 1, me.columns - 5.5, e = makeNexuizButton("OK", '0 0 0')); e.onClick = Dialog_Close; e.onClickEntity = me; + me.TD(me, 1, me.columns - 5.5, me.startButton = e = makeNexuizButton("Play", '0 0 0')); + me.startButton.onClick = MapList_LoadMap; + me.startButton.onClickEntity = NULL; // filled later + me.TDempty(me, 0.5); } #endif diff --git a/data/qcsrc/menu/nexuiz/maplist.c b/data/qcsrc/menu/nexuiz/maplist.c index b89f4b71f..0119e9f1f 100644 --- a/data/qcsrc/menu/nexuiz/maplist.c +++ b/data/qcsrc/menu/nexuiz/maplist.c @@ -54,6 +54,7 @@ entity makeNexuizMapList() me.configureNexuizMapList(me); return me; } + void configureNexuizMapListNexuizMapList(entity me) { me.configureNexuizListBox(me); @@ -129,6 +130,7 @@ void resizeNotifyNexuizMapList(entity me, vector relOrigin, vector relSize, vect me.checkMarkSize = (eX * (me.itemAbsSize_y / me.itemAbsSize_x) + eY) * 0.5; me.checkMarkOrigin = eY + eX * (me.columnPreviewOrigin + me.columnPreviewSize) - me.checkMarkSize; } + void clickListBoxItemNexuizMapList(entity me, float i, vector where) { if(where_x <= me.columnPreviewOrigin + me.columnPreviewSize) @@ -144,7 +146,7 @@ void clickListBoxItemNexuizMapList(entity me, float i, vector where) { // DOUBLE CLICK! // pop up map info screen - main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, i); + main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, i, me); DialogOpenButton_Click_withCoords(NULL, main.mapInfoDialog, me.origin + eX * (me.columnNameOrigin * me.size_x) + eY * ((me.itemHeight * i - me.scrollPos) * me.size_y), eY * me.itemAbsSize_y + eX * (me.itemAbsSize_x * me.columnNameSize)); return; } @@ -152,6 +154,7 @@ void clickListBoxItemNexuizMapList(entity me, float i, vector where) me.lastClickedTime = time; } } + void drawListBoxItemNexuizMapList(entity me, float i, vector absSize, float isSelected) { // layout: Ping, Map name, Map name, NP, TP, MP @@ -221,6 +224,7 @@ void refilterNexuizMapList(entity me) me.setSelected(me, 0); } } + void MapList_All(entity btn, entity me) { float i; @@ -232,19 +236,35 @@ void MapList_All(entity btn, entity me) cvar_set("g_maplist", substring(s, 1, strlen(s) - 1)); me.refilter(me); } + 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) + float i; + + i = me.selectedItem; + + if(btn.parent.instanceOfNexuizMapInfoDialog) + { + i = btn.parent.currentMapIndex; + Dialog_Close(btn, btn.parent); + } + + if(i >= me.nItems || i < 0) return; - m = MapInfo_BSPName_ByID(me.selectedItem); + + m = MapInfo_BSPName_ByID(i); if not(m) + { + print("Huh? Can't play this (m is NULL). Refiltering so this won't happen again.\n"); return; + } if(MapInfo_CheckMap(m)) { localcmd("\ndisconnect\nwait\nmaxplayers $menu_maxplayers\ng_maplist_shufflenow\nhostname \"", strdecolorize(cvar_string("_cl_name")), "'s Nexuiz server\"\n"); @@ -252,7 +272,7 @@ void MapList_LoadMap(entity btn, entity me) } else { - print("Huh? Can't play this. Refiltering so this won't happen again.\n"); + print("Huh? Can't play this (invalid game type). Refiltering so this won't happen again.\n"); me.refilter(me); } } @@ -263,7 +283,7 @@ float keyDownNexuizMapList(entity me, float scan, float ascii, float shift) if(scan == K_ENTER) { // pop up map info screen - main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, me.selectedItem); + main.mapInfoDialog.loadMapInfo(main.mapInfoDialog, me.selectedItem, me); DialogOpenButton_Click_withCoords(NULL, main.mapInfoDialog, me.origin + eX * (me.columnNameOrigin * me.size_x) + eY * ((me.itemHeight * me.selectedItem - me.scrollPos) * me.size_y), eY * me.itemAbsSize_y + eX * (me.itemAbsSize_x * me.columnNameSize)); } else if(scan == K_SPACE) @@ -316,4 +336,5 @@ float keyDownNexuizMapList(entity me, float scan, float ascii, float shift) return keyDownListBox(me, scan, ascii, shift); return 1; } + #endif -- 2.39.2