/*
** Command & Conquer Renegade(tm)
** Copyright 2025 Electronic Arts Inc.
**
** This program is free software: you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation, either version 3 of the License, or
** (at your option) any later version.
**
** This program is distributed in the hope that it will be useful,
** but WITHOUT ANY WARRANTY; without even the implied warranty of
** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
** GNU General Public License for more details.
**
** You should have received a copy of the GNU General Public License
** along with this program. If not, see .
*/
/******************************************************************************
*
* FILE
* $Archive: /Commando/Code/Commando/DlgWOLWait.h $
*
* DESCRIPTION
*
* PROGRAMMER
* Denzil E. Long, Jr.
* $Author: Bhayes $
*
* VERSION INFO
* $Revision: 14 $
* $Modtime: 2/18/02 7:51p $
*
******************************************************************************/
#ifndef __DLGWOLWAIT_H__
#define __DLGWOLWAIT_H__
#include
#include
#include
#include
namespace WWOnline
{
class Session;
}
class DlgWOLWait;
class DlgWOLWaitEvent :
public TypedEventPtr
{
public:
typedef WaitCondition::WaitResult WaitResult;
inline WaitResult Result(void) const
{return mResult;}
DlgWOLWaitEvent(WaitResult result, WaitCondition* wait) :
TypedEventPtr(wait),
mResult(result)
{}
protected:
// Prevent copy and assignment
DlgWOLWaitEvent(const DlgWOLWaitEvent&);
const DlgWOLWaitEvent& operator=(const DlgWOLWaitEvent&);
private:
WaitResult mResult;
};
class DlgWOLWait :
public PopupDialogClass,
public Notifier
{
public:
enum {SHOW_NEVER = 0xFFFFFFFF};
static bool DoDialog(const WCHAR* title, const WCHAR* button_text, RefPtr& wait,
Observer* observer = NULL, unsigned long timeout = 0, unsigned long dialog_timeout = 0);
static bool DoDialog(const WCHAR* title, RefPtr& wait,
Observer* observer = NULL, unsigned long timeout = 0, unsigned long dialog_timeout = 0);
static bool DoDialog(int titleID, RefPtr& wait,
Observer* observer = NULL, unsigned long timeout = 0, unsigned long dialog_timeout = 0);
const RefPtr& GetWait(void)
{return mWait;}
static DlgWOLWait *Get_Instance (void) { return mTheInstance; }
protected:
DlgWOLWait(RefPtr& wait, unsigned long timeout, unsigned long dialog_timeout = 0);
~DlgWOLWait();
// Prevent copy and assignment
DlgWOLWait(const DlgWOLWait&);
const DlgWOLWait& operator=(const DlgWOLWait&);
void CheckCondition(void);
void On_Init_Dialog(void);
void On_Destroy(void);
void On_Periodic(void);
void On_Command(int ctrl, int message, DWORD param);
void Render(void);
DECLARE_NOTIFIER(DlgWOLWaitEvent)
private:
RefPtr mWait;
RefPtr mWOLSession;
unsigned mStartTime;
unsigned long mTimeout;
unsigned long mDialogTimeout;
bool mShowDialog;
static DlgWOLWait * mTheInstance;
};
#endif // __DLGWOLLOGON_H__