#ifndef __WORLD_H_
#define __WORLD_H_
#include "room.h"
#include "avatar.h"
#include "timer.h"
#include "smysql.h"
#include "help.h"
#include <list>
#include <queue>
enum BROADCAST_TYPE { ALL, WCONNECTED };
class World
{
bool _worldExists;
typedef std::priority_queue<Timer *, std::vector<Timer *>, timer_less> TimerQueue;
void FlushOutput( void );
void UpdateAvatars( void );
void KillFlaggedAvatars( void );
void HandleInput( void );
void UpdateTimers();
void Schedule( Timer * );
void Unschedule( Timer * );
TimerQueue _timers;
public:
Room * FindRoom( const std::string & );
Help * FindHelp( const std::string & );
Avatar * FindAvatar ( const std::string & );
bool LoadRooms();
bool LoadHelps();
void Broadcast( const std::string &, BROADCAST_TYPE );
void Exist( const std::string &, int port, bool copyover );
void Die( void );
void Copyover( void );
void CopyoverRecovery( void );
void Monitor( void );
static World &Instance();
RoomMap _room_map;
HelpMap _help_map;
std::list< Avatar * > _avatarList;
};
inline World &World::Instance()
{
static World instance;
return instance;
}
#endif