Skip to content

Commit d759113

Browse files
committed
feat(quickmatch): Add minimum maps selection in quickmatch from playlist data
1 parent 2beb353 commit d759113

3 files changed

Lines changed: 20 additions & 0 deletions

File tree

GeneralsMD/Code/GameEngine/Include/GameNetwork/GeneralsOnline/OnlineServices_MatchmakingInterface.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ struct PlaylistEntry
1515
std::string Name = std::string();
1616
int MinPlayers = -1;
1717
int DesiredPlayers = -1;
18+
int MinSelectedMaps = 0;
1819
bool AllowTeams = false;
1920
int TeamSize = -1;
2021
bool AllowArmySelection = false;

GeneralsMD/Code/GameEngine/Source/GameClient/GUI/GUICallbacks/Menus/WOLQuickMatchMenu.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2218,6 +2218,7 @@ WindowMsgHandledType WOLQuickMatchMenuSystem( GameWindow *window, UnsignedInt ms
22182218

22192219
std::vector<int> vecSelectedMapIndexes;
22202220
uint16_t playlistID = 0;
2221+
int minSelectedMaps = 0;
22212222

22222223
// get maps and playlist ID
22232224
std::list<AsciiString> maps;
@@ -2233,6 +2234,7 @@ WindowMsgHandledType WOLQuickMatchMenuSystem( GameWindow *window, UnsignedInt ms
22332234
if (plEntry.PlaylistID != -1)
22342235
{
22352236
playlistID = plEntry.PlaylistID;
2237+
minSelectedMaps = plEntry.MinSelectedMaps;
22362238

22372239
// maps
22382240
Int numMaps = GadgetListBoxGetNumEntries(listboxMapSelect);
@@ -2255,6 +2257,22 @@ WindowMsgHandledType WOLQuickMatchMenuSystem( GameWindow *window, UnsignedInt ms
22552257
{
22562258
// TODO_QUICKMATCH: Error?
22572259
}
2260+
2261+
if (static_cast<int>(vecSelectedMapIndexes.size()) < minSelectedMaps)
2262+
{
2263+
UnicodeString msg;
2264+
msg.format(L"You must select at least %d maps.", minSelectedMaps);
2265+
Int index = GadgetListBoxAddEntryText(quickmatchTextWindow, msg, GameSpyColor[GSCOLOR_DEFAULT], -1, -1);
2266+
GadgetListBoxSetItemData(quickmatchTextWindow, (void*)-1, index);
2267+
2268+
// buttons
2269+
buttonWiden->winEnable(FALSE);
2270+
buttonStart->winHide(FALSE);
2271+
buttonStart->winEnable(TRUE);
2272+
buttonStop->winHide(TRUE);
2273+
2274+
break;
2275+
}
22582276

22592277
// buttons
22602278
buttonWiden->winEnable(FALSE);

GeneralsMD/Code/GameEngine/Source/GameNetwork/GeneralsOnline/OnlineServices_MatchmakingInterface.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ void NGMP_OnlineServices_MatchmakingInterface::RetrievePlaylists(std::function<v
2828
playlistEntryIter["Name"].get_to(playlistEntry.Name);
2929
playlistEntryIter["MinPlayers"].get_to(playlistEntry.MinPlayers);
3030
playlistEntryIter["DesiredPlayers"].get_to(playlistEntry.DesiredPlayers);
31+
playlistEntryIter["MinSelectedMaps"].get_to(playlistEntry.MinSelectedMaps);
3132
playlistEntryIter["AllowTeams"].get_to(playlistEntry.AllowTeams);
3233
playlistEntryIter["TeamSize"].get_to(playlistEntry.TeamSize);
3334
playlistEntryIter["AllowArmySelection"].get_to(playlistEntry.AllowArmySelection);

0 commit comments

Comments
 (0)