openmohaa/code/gamespy/Peer/PeerLobby/LobbyWizard.cpp
2023-02-04 21:00:01 +01:00

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);
}