mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
200 lines
4.8 KiB
C++
200 lines
4.8 KiB
C++
// LobbyWizard.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "PeerLobby.h"
|
|
#include "LobbyWizard.h"
|
|
#include "GroupPage.h"
|
|
#include "StagingPage.h"
|
|
#include "TitlePage.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
CLobbyWizard * Wizard;
|
|
|
|
#define THINK_TIMER 100
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CLobbyWizard
|
|
|
|
IMPLEMENT_DYNAMIC(CLobbyWizard, CPropertySheet)
|
|
|
|
CLobbyWizard::CLobbyWizard(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage)
|
|
:CPropertySheet(nIDCaption, pParentWnd, iSelectPage)
|
|
{
|
|
//PEERSTART
|
|
// Initialize our peer pointer to NULL.
|
|
///////////////////////////////////////
|
|
m_peer = NULL;
|
|
//PEERSTOP
|
|
}
|
|
|
|
CLobbyWizard::CLobbyWizard(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage)
|
|
:CPropertySheet(pszCaption, pParentWnd, iSelectPage)
|
|
{
|
|
//PEERSTART
|
|
// Initialize our peer pointer to NULL.
|
|
///////////////////////////////////////
|
|
m_peer = NULL;
|
|
//PEERSTOP
|
|
}
|
|
|
|
CLobbyWizard::~CLobbyWizard()
|
|
{
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CLobbyWizard, CPropertySheet)
|
|
//{{AFX_MSG_MAP(CLobbyWizard)
|
|
ON_WM_TIMER()
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CLobbyWizard message handlers
|
|
|
|
// Init the wizard.
|
|
///////////////////
|
|
BOOL CLobbyWizard::OnInitDialog()
|
|
{
|
|
BOOL bResult = CPropertySheet::OnInitDialog();
|
|
|
|
// Get the "next" button wnd.
|
|
/////////////////////////////
|
|
m_nextButtonWnd = ::FindWindowEx(this->m_hWnd, NULL, "Button", "&Next >");
|
|
|
|
// Rename "Cancel" to "Quit".
|
|
/////////////////////////////
|
|
HWND hWnd = ::FindWindowEx(this->m_hWnd, NULL, "Button", "Cancel");
|
|
if(hWnd)
|
|
::SetWindowText(hWnd, "&Quit");
|
|
|
|
// Hide the "Help" button.
|
|
//////////////////////////
|
|
hWnd = ::FindWindowEx(this->m_hWnd, NULL, "Button", "Help");
|
|
if(hWnd)
|
|
::ShowWindow(hWnd, SW_HIDE);
|
|
|
|
// Load icons.
|
|
//////////////
|
|
m_greenSmileyIcon = AfxGetApp()->LoadIcon(IDI_GREEN_SMILEY);
|
|
m_yellowSmileyIcon = AfxGetApp()->LoadIcon(IDI_YELLOW_SMILEY);
|
|
m_redSmileyIcon = AfxGetApp()->LoadIcon(IDI_RED_SMILEY);
|
|
m_stagingRoomIcon = AfxGetApp()->LoadIcon(IDI_STAGING_ROOM);
|
|
m_runningGameIcon = AfxGetApp()->LoadIcon(IDI_RUNNING_GAME);
|
|
if(!m_greenSmileyIcon || !m_yellowSmileyIcon || !m_redSmileyIcon || !m_stagingRoomIcon || !m_runningGameIcon)
|
|
return FALSE;
|
|
|
|
// Create the image list.
|
|
/////////////////////////
|
|
if(!m_imageList.Create(16, 16, ILC_COLOR, 5, 5))
|
|
return FALSE;
|
|
m_greenSmileyIndex = m_imageList.Add(m_greenSmileyIcon);
|
|
m_yellowSmileyIndex = m_imageList.Add(m_yellowSmileyIcon);
|
|
m_redSmileyIndex = m_imageList.Add(m_redSmileyIcon);
|
|
m_stagingRoomIndex = m_imageList.Add(m_stagingRoomIcon);
|
|
m_runningGameIndex = m_imageList.Add(m_runningGameIcon);
|
|
if((m_yellowSmileyIndex == -1) || (m_redSmileyIndex == -1) || (m_greenSmileyIndex == -1) || (m_runningGameIndex == -1) || (m_stagingRoomIndex == -1))
|
|
return FALSE;
|
|
|
|
//PEERSTART
|
|
// We're not hosting.
|
|
/////////////////////
|
|
m_hosting = FALSE;
|
|
|
|
// Set the timer for every 10 seconds.
|
|
//////////////////////////////////////
|
|
SetTimer(THINK_TIMER, 10, NULL);
|
|
//PEERSTOP
|
|
|
|
return bResult;
|
|
}
|
|
|
|
// Think every 10ms.
|
|
////////////////////
|
|
void CLobbyWizard::OnTimer(UINT nIDEvent)
|
|
{
|
|
if(nIDEvent == THINK_TIMER)
|
|
{
|
|
//PEERSTART
|
|
// Let peer think.
|
|
//////////////////
|
|
if(m_peer)
|
|
peerThink(m_peer);
|
|
//PEERSTOP
|
|
}
|
|
|
|
CPropertySheet::OnTimer(nIDEvent);
|
|
}
|
|
|
|
// Show the hourglass.
|
|
//////////////////////
|
|
void CLobbyWizard::StartHourglass()
|
|
{
|
|
// Load the hourglass.
|
|
//////////////////////
|
|
HCURSOR hourglass = LoadCursor(NULL, IDC_WAIT);
|
|
if(!hourglass)
|
|
return;
|
|
|
|
// Set the cursor.
|
|
//////////////////
|
|
m_lastCursor = SetCursor(hourglass);
|
|
}
|
|
|
|
// Back to normal pointer.
|
|
//////////////////////////
|
|
void CLobbyWizard::StopHourglass()
|
|
{
|
|
// Reset the old cursor.
|
|
////////////////////////
|
|
SetCursor(m_lastCursor);
|
|
}
|
|
|
|
// Catch [Enter] when pressed in a chat message box.
|
|
////////////////////////////////////////////////////
|
|
BOOL CLobbyWizard::PreTranslateMessage(MSG* pMsg)
|
|
{
|
|
// Check for enter.
|
|
///////////////////
|
|
if((pMsg->message == WM_KEYDOWN) && (pMsg->wParam == 0x0d))
|
|
{
|
|
// Check what page we're on.
|
|
/////////////////////////////
|
|
int page = GetActiveIndex();
|
|
CWnd * focus;
|
|
if(page == TITLE_PAGE)
|
|
{
|
|
focus = TitlePage->GetFocus();
|
|
if(focus->m_hWnd == TitlePage->GetDlgItem(IDC_MESSAGE)->m_hWnd)
|
|
{
|
|
TitlePage->SendMessage();
|
|
return TRUE;
|
|
}
|
|
}
|
|
else if(page == GROUP_PAGE)
|
|
{
|
|
focus = GroupPage->GetFocus();
|
|
if(focus->m_hWnd == GroupPage->GetDlgItem(IDC_MESSAGE)->m_hWnd)
|
|
{
|
|
GroupPage->SendMessage();
|
|
return TRUE;
|
|
}
|
|
}
|
|
else if(page == STAGING_PAGE)
|
|
{
|
|
focus = StagingPage->GetFocus();
|
|
if(focus->m_hWnd == StagingPage->GetDlgItem(IDC_MESSAGE)->m_hWnd)
|
|
{
|
|
StagingPage->SendMessage();
|
|
return TRUE;
|
|
}
|
|
}
|
|
}
|
|
|
|
return CPropertySheet::PreTranslateMessage(pMsg);
|
|
}
|