diff --git a/stepmania/src/smlobby/resource2.h b/stepmania/src/smlobby/resource2.h index 5330f69c89..4d48c59d58 100644 --- a/stepmania/src/smlobby/resource2.h +++ b/stepmania/src/smlobby/resource2.h @@ -37,6 +37,7 @@ #define IDC_XFERSTATUS 1022 #define IDC_TOFROM 1023 #define IDC_SENTRECVD 1024 +#define IDC_COMBO1 1030 // Next default values for new objects // @@ -44,7 +45,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 136 #define _APS_NEXT_COMMAND_VALUE 32771 -#define _APS_NEXT_CONTROL_VALUE 1029 +#define _APS_NEXT_CONTROL_VALUE 1031 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/stepmania/src/smlobby/smlobby.aps b/stepmania/src/smlobby/smlobby.aps index aa0b621399..56bdef1325 100644 Binary files a/stepmania/src/smlobby/smlobby.aps and b/stepmania/src/smlobby/smlobby.aps differ diff --git a/stepmania/src/smlobby/smlobby.clw b/stepmania/src/smlobby/smlobby.clw index 89793f5ffb..0bbee9e060 100644 --- a/stepmania/src/smlobby/smlobby.clw +++ b/stepmania/src/smlobby/smlobby.clw @@ -7,11 +7,11 @@ LastTemplate=CDialog NewFileInclude1=#include "stdafx.h" NewFileInclude2=#include "smlobby.h" -ClassCount=4 +ClassCount=2 Class1=CSmlobbyApp Class2=CSmlobbyDlg -ResourceCount=211 +ResourceCount=355 Resource2=IDR_MAINFRAME Resource3=IDD_CONNECT (Unknown language: 0xD Resource4=IDD_CONNECT (Unknown language: 0xD @@ -218,10 +218,154 @@ Resource204=IDD_CONNECT (Unknown language: 0xD Resource205=IDD_CONNECT (Unknown language: 0xD Resource206=IDD_CONNECT (Unknown language: 0xD Resource207=IDD_CONNECT (Unknown language: 0xD -Resource208=IDD_ABOUTBOX -Resource209=IDD_SMLOBBY_DIALOG -Resource210=IDD_FILEXFER -Resource211=IDD_CONNECT (Unknown language: 0xD, 0x1) +Resource208=IDD_CONNECT (Unknown language: 0xD +Resource209=IDD_CONNECT (Unknown language: 0xD +Resource210=IDD_CONNECT (Unknown language: 0xD +Resource211=IDD_CONNECT (Unknown language: 0xD +Resource212=IDD_CONNECT (Unknown language: 0xD +Resource213=IDD_CONNECT (Unknown language: 0xD +Resource214=IDD_CONNECT (Unknown language: 0xD +Resource215=IDD_CONNECT (Unknown language: 0xD +Resource216=IDD_CONNECT (Unknown language: 0xD +Resource217=IDD_CONNECT (Unknown language: 0xD +Resource218=IDD_CONNECT (Unknown language: 0xD +Resource219=IDD_CONNECT (Unknown language: 0xD +Resource220=IDD_CONNECT (Unknown language: 0xD +Resource221=IDD_CONNECT (Unknown language: 0xD +Resource222=IDD_CONNECT (Unknown language: 0xD +Resource223=IDD_CONNECT (Unknown language: 0xD +Resource224=IDD_CONNECT (Unknown language: 0xD +Resource225=IDD_CONNECT (Unknown language: 0xD +Resource226=IDD_CONNECT (Unknown language: 0xD +Resource227=IDD_CONNECT (Unknown language: 0xD +Resource228=IDD_CONNECT (Unknown language: 0xD +Resource229=IDD_CONNECT (Unknown language: 0xD +Resource230=IDD_CONNECT (Unknown language: 0xD +Resource231=IDD_CONNECT (Unknown language: 0xD +Resource232=IDD_CONNECT (Unknown language: 0xD +Resource233=IDD_CONNECT (Unknown language: 0xD +Resource234=IDD_CONNECT (Unknown language: 0xD +Resource235=IDD_CONNECT (Unknown language: 0xD +Resource236=IDD_CONNECT (Unknown language: 0xD +Resource237=IDD_CONNECT (Unknown language: 0xD +Resource238=IDD_CONNECT (Unknown language: 0xD +Resource239=IDD_CONNECT (Unknown language: 0xD +Resource240=IDD_CONNECT (Unknown language: 0xD +Resource241=IDD_CONNECT (Unknown language: 0xD +Resource242=IDD_CONNECT (Unknown language: 0xD +Resource243=IDD_CONNECT (Unknown language: 0xD +Resource244=IDD_CONNECT (Unknown language: 0xD +Resource245=IDD_CONNECT (Unknown language: 0xD +Resource246=IDD_CONNECT (Unknown language: 0xD +Resource247=IDD_CONNECT (Unknown language: 0xD +Resource248=IDD_CONNECT (Unknown language: 0xD +Resource249=IDD_CONNECT (Unknown language: 0xD +Resource250=IDD_CONNECT (Unknown language: 0xD +Resource251=IDD_CONNECT (Unknown language: 0xD +Resource252=IDD_CONNECT (Unknown language: 0xD +Resource253=IDD_CONNECT (Unknown language: 0xD +Resource254=IDD_CONNECT (Unknown language: 0xD +Resource255=IDD_CONNECT (Unknown language: 0xD +Resource256=IDD_CONNECT (Unknown language: 0xD +Resource257=IDD_CONNECT (Unknown language: 0xD +Resource258=IDD_CONNECT (Unknown language: 0xD +Resource259=IDD_CONNECT (Unknown language: 0xD +Resource260=IDD_CONNECT (Unknown language: 0xD +Resource261=IDD_CONNECT (Unknown language: 0xD +Resource262=IDD_CONNECT (Unknown language: 0xD +Resource263=IDD_CONNECT (Unknown language: 0xD +Resource264=IDD_CONNECT (Unknown language: 0xD +Resource265=IDD_CONNECT (Unknown language: 0xD +Resource266=IDD_CONNECT (Unknown language: 0xD +Resource267=IDD_CONNECT (Unknown language: 0xD +Resource268=IDD_CONNECT (Unknown language: 0xD +Resource269=IDD_CONNECT (Unknown language: 0xD +Resource270=IDD_CONNECT (Unknown language: 0xD +Resource271=IDD_CONNECT (Unknown language: 0xD +Resource272=IDD_CONNECT (Unknown language: 0xD +Resource273=IDD_CONNECT (Unknown language: 0xD +Resource274=IDD_CONNECT (Unknown language: 0xD +Resource275=IDD_CONNECT (Unknown language: 0xD +Resource276=IDD_CONNECT (Unknown language: 0xD +Resource277=IDD_CONNECT (Unknown language: 0xD +Resource278=IDD_CONNECT (Unknown language: 0xD +Resource279=IDD_CONNECT (Unknown language: 0xD +Resource280=IDD_CONNECT (Unknown language: 0xD +Resource281=IDD_CONNECT (Unknown language: 0xD +Resource282=IDD_CONNECT (Unknown language: 0xD +Resource283=IDD_CONNECT (Unknown language: 0xD +Resource284=IDD_CONNECT (Unknown language: 0xD +Resource285=IDD_CONNECT (Unknown language: 0xD +Resource286=IDD_CONNECT (Unknown language: 0xD +Resource287=IDD_CONNECT (Unknown language: 0xD +Resource288=IDD_CONNECT (Unknown language: 0xD +Resource289=IDD_CONNECT (Unknown language: 0xD +Resource290=IDD_CONNECT (Unknown language: 0xD +Resource291=IDD_CONNECT (Unknown language: 0xD +Resource292=IDD_CONNECT (Unknown language: 0xD +Resource293=IDD_CONNECT (Unknown language: 0xD +Resource294=IDD_CONNECT (Unknown language: 0xD +Resource295=IDD_CONNECT (Unknown language: 0xD +Resource296=IDD_CONNECT (Unknown language: 0xD +Resource297=IDD_CONNECT (Unknown language: 0xD +Resource298=IDD_CONNECT (Unknown language: 0xD +Resource299=IDD_CONNECT (Unknown language: 0xD +Resource300=IDD_CONNECT (Unknown language: 0xD +Resource301=IDD_CONNECT (Unknown language: 0xD +Resource302=IDD_CONNECT (Unknown language: 0xD +Resource303=IDD_CONNECT (Unknown language: 0xD +Resource304=IDD_CONNECT (Unknown language: 0xD +Resource305=IDD_CONNECT (Unknown language: 0xD +Resource306=IDD_CONNECT (Unknown language: 0xD +Resource307=IDD_CONNECT (Unknown language: 0xD +Resource308=IDD_CONNECT (Unknown language: 0xD +Resource309=IDD_CONNECT (Unknown language: 0xD +Resource310=IDD_CONNECT (Unknown language: 0xD +Resource311=IDD_CONNECT (Unknown language: 0xD +Resource312=IDD_CONNECT (Unknown language: 0xD +Resource313=IDD_CONNECT (Unknown language: 0xD +Resource314=IDD_CONNECT (Unknown language: 0xD +Resource315=IDD_CONNECT (Unknown language: 0xD +Resource316=IDD_CONNECT (Unknown language: 0xD +Resource317=IDD_CONNECT (Unknown language: 0xD +Resource318=IDD_CONNECT (Unknown language: 0xD +Resource319=IDD_CONNECT (Unknown language: 0xD +Resource320=IDD_CONNECT (Unknown language: 0xD +Resource321=IDD_CONNECT (Unknown language: 0xD +Resource322=IDD_CONNECT (Unknown language: 0xD +Resource323=IDD_CONNECT (Unknown language: 0xD +Resource324=IDD_CONNECT (Unknown language: 0xD +Resource325=IDD_CONNECT (Unknown language: 0xD +Resource326=IDD_CONNECT (Unknown language: 0xD +Resource327=IDD_CONNECT (Unknown language: 0xD +Resource328=IDD_CONNECT (Unknown language: 0xD +Resource329=IDD_CONNECT (Unknown language: 0xD +Resource330=IDD_CONNECT (Unknown language: 0xD +Resource331=IDD_CONNECT (Unknown language: 0xD +Resource332=IDD_CONNECT (Unknown language: 0xD +Resource333=IDD_CONNECT (Unknown language: 0xD +Resource334=IDD_CONNECT (Unknown language: 0xD +Resource335=IDD_CONNECT (Unknown language: 0xD +Resource336=IDD_CONNECT (Unknown language: 0xD +Resource337=IDD_CONNECT (Unknown language: 0xD +Resource338=IDD_CONNECT (Unknown language: 0xD +Resource339=IDD_CONNECT (Unknown language: 0xD +Resource340=IDD_CONNECT (Unknown language: 0xD +Resource341=IDD_CONNECT (Unknown language: 0xD +Resource342=IDD_CONNECT (Unknown language: 0xD +Resource343=IDD_CONNECT (Unknown language: 0xD +Resource344=IDD_CONNECT (Unknown language: 0xD +Resource345=IDD_CONNECT (Unknown language: 0xD +Resource346=IDD_CONNECT (Unknown language: 0xD +Resource347=IDD_CONNECT (Unknown language: 0xD +Resource348=IDD_CONNECT (Unknown language: 0xD +Resource349=IDD_CONNECT (Unknown language: 0xD +Resource350=IDD_CONNECT (Unknown language: 0xD +Resource351=IDD_CONNECT (Unknown language: 0xD +Resource352=IDD_ABOUTBOX +Resource353=IDD_SMLOBBY_DIALOG +Resource354=IDD_FILEXFER +Resource355=IDD_CONNECT (Unknown language: 0xD, 0x1) [CLS:CSmlobbyApp] Type=0 @@ -234,6 +378,9 @@ Type=0 HeaderFile=smlobbyDlg.h ImplementationFile=smlobbyDlg.cpp Filter=D +BaseClass=CDialog +VirtualFilter=dWC +LastObject=CSmlobbyDlg @@ -248,7 +395,7 @@ Control4=IDC_LIST_GAMES,listbox,1352728835 Control5=IDC_STATIC,button,1342177287 Control6=IDC_EDIT_GAME_INFO,edit,1350631428 Control7=IDC_STATIC,button,1342177287 -Control8=IDC_COMBO_MUSIC,combobox,1344340226 +Control8=IDC_COMBO_MUSIC,combobox,1344340227 Control9=IDC_STATIC,static,1342308352 Control10=IDC_BUTTON_CREATE_GAME,button,1342242816 Control11=IDC_LIST_USERS,listbox,1352728835 diff --git a/stepmania/src/smlobby/smlobby.dsp b/stepmania/src/smlobby/smlobby.dsp index 6394bd7c10..72e578deac 100644 --- a/stepmania/src/smlobby/smlobby.dsp +++ b/stepmania/src/smlobby/smlobby.dsp @@ -63,7 +63,7 @@ LINK32=link.exe # PROP BASE Target_Dir "" # PROP Use_MFC 6 # PROP Use_Debug_Libraries 1 -# PROP Output_Dir "Debug" +# PROP Output_Dir "../../" # PROP Intermediate_Dir "Debug" # PROP Ignore_Export_Lib 0 # PROP Target_Dir "" @@ -108,6 +108,10 @@ SOURCE=.\irc.cpp # End Source File # Begin Source File +SOURCE=.\RageUtil.cpp +# End Source File +# Begin Source File + SOURCE=.\SendFileDialog.cpp # End Source File # Begin Source File @@ -148,6 +152,10 @@ SOURCE=.\irc.h # End Source File # Begin Source File +SOURCE=.\RageUtil.h +# End Source File +# Begin Source File + SOURCE=.\resource2.h # End Source File # Begin Source File diff --git a/stepmania/src/smlobby/smlobby.ncb b/stepmania/src/smlobby/smlobby.ncb index eb0a038146..954d0534b5 100644 Binary files a/stepmania/src/smlobby/smlobby.ncb and b/stepmania/src/smlobby/smlobby.ncb differ diff --git a/stepmania/src/smlobby/smlobby.opt b/stepmania/src/smlobby/smlobby.opt index ea8bec8d8d..c3a2045c3f 100644 Binary files a/stepmania/src/smlobby/smlobby.opt and b/stepmania/src/smlobby/smlobby.opt differ diff --git a/stepmania/src/smlobby/smlobby.rc b/stepmania/src/smlobby/smlobby.rc index d19e2597ec..7c3a20c88d 100644 --- a/stepmania/src/smlobby/smlobby.rc +++ b/stepmania/src/smlobby/smlobby.rc @@ -88,7 +88,7 @@ IDD_SMLOBBY_DIALOG DIALOGEX 0, 0, 464, 330 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "StepMania Lobby" -FONT 8, "MS Sans Serif", 0, 0, 0x1 +FONT 8, "MS Sans Serif" BEGIN EDITTEXT IDC_EDIT_ENTRY,105,281,347,12,ES_AUTOHSCROLL GROUPBOX "Chat",IDC_STATIC,5,140,453,160 @@ -98,8 +98,8 @@ BEGIN GROUPBOX "Game Information",IDC_STATIC,143,5,107,130 EDITTEXT IDC_EDIT_GAME_INFO,153,20,90,105,ES_MULTILINE GROUPBOX "Create New Game",IDC_STATIC,271,5,185,130 - COMBOBOX IDC_COMBO_MUSIC,278,35,170,15,CBS_DROPDOWN | CBS_SORT | - WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_COMBO_MUSIC,278,35,170,88,CBS_DROPDOWNLIST | + CBS_SORT | WS_VSCROLL | WS_TABSTOP LTEXT "Select Music:",IDC_STATIC,278,25,44,10 PUSHBUTTON "Create Game",IDC_BUTTON_CREATE_GAME,338,100,56,20 LISTBOX IDC_LIST_USERS,10,155,85,140,LBS_SORT | diff --git a/stepmania/src/smlobby/smlobbyDlg.cpp b/stepmania/src/smlobby/smlobbyDlg.cpp index b3fbf0d2f3..c9bd30c482 100644 --- a/stepmania/src/smlobby/smlobbyDlg.cpp +++ b/stepmania/src/smlobby/smlobbyDlg.cpp @@ -4,6 +4,7 @@ #include "stdafx.h" #include "smlobby.h" #include "smlobbyDlg.h" +#include "RageUtil.h" #ifdef _DEBUG #define new DEBUG_NEW @@ -84,6 +85,7 @@ void CSmlobbyDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CSmlobbyDlg) + DDX_Control(pDX, IDC_COMBO_MUSIC, m_comboMusic); DDX_Control(pDX, IDC_EDIT_GAME_NAME, m_editGameName); DDX_Control(pDX, IDC_EDIT_GAME_INFO, m_editGameInfo); DDX_Control(pDX, IDC_LIST_USERS, m_listUsers); @@ -189,6 +191,41 @@ BOOL CSmlobbyDlg::OnInitDialog() return FALSE; + // + // populate drop-down list of songs + // + CString sDir = "Songs"; // search only in "Songs" directory in program folder + + // Find all group directories in "Songs" folder + CStringArray arrayGroupDirs; + GetDirListing( sDir+"\\*.*", arrayGroupDirs, true ); + SortCStringArray( arrayGroupDirs ); + + for( unsigned i=0; i< arrayGroupDirs.GetSize(); i++ ) // for each dir in /Songs/ + { + CString sGroupDirName = arrayGroupDirs[i]; + + if( 0 == stricmp( sGroupDirName, "cvs" ) ) // the directory called "CVS" + continue; // ignore it + + // Find all Song folders in this group directory + CStringArray arraySongDirs; + GetDirListing( ssprintf("%s\\%s\\*.*", sDir, sGroupDirName), arraySongDirs, true ); + SortCStringArray( arraySongDirs ); + + for( unsigned j=0; j< arraySongDirs.GetSize(); j++ ) // for each song dir + { + CString sSongDirName = arraySongDirs[j]; + + if( 0 == stricmp( sSongDirName, "cvs" ) ) // the directory called "CVS" + continue; // ignore it + + CString sSongDir = ssprintf("%s\\%s\\%s", sDir, sGroupDirName, sSongDirName); + + m_comboMusic.AddString( sSongDir ); + } + } + return TRUE; // return TRUE unless you set the focus to a control } @@ -588,14 +625,24 @@ void CSmlobbyDlg::OnButtonCreateGame() sprintf(host_ip_str, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]); //Insert song name/hash code here - char songHash[12] = "0x00000000"; + + int iIndex = m_comboMusic.GetCurSel(); + if( iIndex <= 0 ) + ASSERT(0); // what do we do here? + CString sSongDir; + m_comboMusic.GetLBText( iIndex, sSongDir ); + unsigned long hash = GetHashForDirectory( sSongDir ); + //Now tell the server our game info - g_ircSession << irc::CIrcMessage(CString("topic #") + gameName + CString(" :") - + gameName + CString(" ") - + CString(host_ip_str) + CString(" ") - + CString(g_ircSession.GetInfo().sNick.c_str()) + CString(" ") - + CString(songHash)); + CString sIrcMessage = ssprintf( "topic #%s :%s %s %s %u", + gameName, + gameName, + host_ip_str, + g_ircSession.GetInfo().sNick.c_str(), + hash ); + + g_ircSession << irc::CIrcMessage(sIrcMessage); } bool CSmlobbyDlg::IsUniqueGameName(const CString GameName) @@ -649,4 +696,4 @@ CString CSmlobbyDlg::SelectFolder() } return CString(szPath); -} \ No newline at end of file +} diff --git a/stepmania/src/smlobby/smlobbyDlg.h b/stepmania/src/smlobby/smlobbyDlg.h index 741750a096..72db976783 100644 --- a/stepmania/src/smlobby/smlobbyDlg.h +++ b/stepmania/src/smlobby/smlobbyDlg.h @@ -26,6 +26,7 @@ public: // Dialog Data //{{AFX_DATA(CSmlobbyDlg) enum { IDD = IDD_SMLOBBY_DIALOG }; + CComboBox m_comboMusic; CEdit m_editGameName; CEdit m_editGameInfo; CListBox m_listUsers;