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

115 lines
2.4 KiB
C++

// CreatePage.cpp : implementation file
//
#include "stdafx.h"
#include "PeerLobby.h"
#include "CreatePage.h"
#include "LobbyWizard.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
CCreatePage * CreatePage;
/////////////////////////////////////////////////////////////////////////////
// CCreatePage property page
IMPLEMENT_DYNCREATE(CCreatePage, CPropertyPage)
// Set page defaults.
/////////////////////
CCreatePage::CCreatePage() : CPropertyPage(CCreatePage::IDD)
{
//{{AFX_DATA_INIT(CCreatePage)
m_name = _T("My Server");
m_maxPlayers = 8;
//}}AFX_DATA_INIT
}
CCreatePage::~CCreatePage()
{
}
void CCreatePage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CCreatePage)
DDX_Text(pDX, IDC_NAME, m_name);
DDX_Text(pDX, IDC_MAX_PLAYERS, m_maxPlayers);
DDV_MinMaxInt(pDX, m_maxPlayers, 2, 9999);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CCreatePage, CPropertyPage)
//{{AFX_MSG_MAP(CCreatePage)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// Switching to this page.
//////////////////////////
BOOL CCreatePage::OnSetActive()
{
// Show the back and next buttons.
//////////////////////////////////
Wizard->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);
// We're hosting the room.
//////////////////////////
Wizard->m_hosting = TRUE;
return CPropertyPage::OnSetActive();
}
// Going to the previous page.
//////////////////////////////
LRESULT CCreatePage::OnWizardBack()
{
// Not hosting anymore.
///////////////////////
Wizard->m_hosting = FALSE;
return CPropertyPage::OnWizardBack();
}
// Called when the staging room has been created (or the attempt failed).
/////////////////////////////////////////////////////////////////////////
static PEERBool createStagingSuccess;
static void CreateStagingRoomCallback
(
PEER peer,
PEERBool success,
PEERJoinResult result,
RoomType roomType,
void * param
)
{
createStagingSuccess = success;
GSI_UNUSED(param);
GSI_UNUSED(roomType);
GSI_UNUSED(result);
GSI_UNUSED(peer);
}
// Going to the next page.
//////////////////////////
LRESULT CCreatePage::OnWizardNext()
{
// Update the data.
///////////////////
UpdateData();
//PEERSTART
// Create the room.
///////////////////
Wizard->StartHourglass();
peerCreateStagingRoom(Wizard->m_peer, m_name, m_maxPlayers, NULL, CreateStagingRoomCallback, NULL, PEERTrue);
Wizard->StopHourglass();
//PEERSTOP
return CPropertyPage::OnWizardNext();
}