/* ** 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 . */ /*********************************************************************************************** *** Confidential - Westwood Studios *** *********************************************************************************************** * * * Project Name : Commando * * * * $Archive:: /Commando/Code/Commando/AutoStart.h $* * * * $Author:: Steve_t $* * * * $Modtime:: 8/13/02 4:57p $* * * * $Revision:: 6 $* * * *---------------------------------------------------------------------------------------------* * Functions: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #pragma once #ifndef _AUTOSTART_H #define _AUTOSTART_H #include "WOLLogonMgr.h" #include #include "wolgmode.h" #include "menudialog.h" #include "resource.h" #include #include namespace WOL { class WOLSession; class ServerError; } /* ** ** This class handles restarting a server after a crash or system reboot. ** ** */ class AutoRestartClass : public Observer, public Observer, protected Signaler { public: /* ** Constructor, destructor. */ AutoRestartClass(void); /* ** Misc public functions. */ void Restart_Game(void); void Think(void); bool Is_Active(void) {return((bool)(RestartState != STATE_DONE));} void Set_Restart_Flag(bool enable); bool Get_Restart_Flag(void); void Cancel(void); /* ** Callbacks. */ void HandleNotification(WOLLogonAction&); void HandleNotification(WWOnline::ServerError& server_error); void ReceiveSignal(WolGameModeClass&); /* ** Enum of steps to go through to restart a game. */ typedef enum { STATE_FIRST, STATE_GAME_MODE_WAIT, STATE_LOGIN, STATE_CREATE_GAME, STATE_CREATE_CHANNEL, STATE_WAIT_CHANNEL_CREATE, STATE_WAIT_CHANNEL_CREATE_RETRY, STATE_START_GAME, STATE_CANCELLED, STATE_DONE, } RestartStateType; static const char *REG_VALUE_AUTO_RESTART_FLAG; static const char *REG_VALUE_AUTO_RESTART_TYPE; private: /* ** WOL Login state. */ WOLLogonAction LogonAction; /* ** Restart state. */ RestartStateType RestartState; /* ** Cancel request flag. */ bool CancelRequest; /* ** Game mode. 0 = LAN, 1 = internet. */ int GameMode; /* ** Reference pointer to WOLSession. */ RefPtr WOLSession; /* ** Time we last tried to create the game channel. */ unsigned long LastChannelCreateTime; /* ** Number of times we tried to create the channel. */ int NumChannelCreateTries; }; extern AutoRestartClass AutoRestart; #endif //_AUTOSTART_H