yapb-noob-edition/include/gamestate.h

66 lines
No EOL
1.6 KiB
C++

//
// Yet Another POD-Bot, based on PODBot by Markus Klinge ("CountFloyd").
// Copyright (c) YaPB Development Team.
//
// This software is licensed under the BSD-style license.
// Additional exceptions apply. For full license details, see LICENSE.txt or visit:
// http://yapb.jeefo.net/license
//
// Purpose: Represents Counter-Strike Game.
//
#pragma once
// netmessage handler class
class NetworkMsg
{
private:
Bot *m_bot;
int m_state;
int m_message;
int m_registerdMessages[NETMSG_NUM];
public:
NetworkMsg (void);
~NetworkMsg (void) { };
void Execute (void *p);
inline void Reset (void) { m_message = NETMSG_UNDEFINED; m_state = 0; m_bot = NULL; };
void HandleMessageIfRequired (int messageType, int requiredType);
inline void SetMessage (int message) { m_message = message; }
inline void SetBot (Bot *bot) { m_bot = bot; }
inline int GetId (int messageType) { return m_registerdMessages[messageType]; }
inline void SetId (int messageType, int messsageIdentifier) { m_registerdMessages[messageType] = messsageIdentifier; }
};
// game events
class IGameEvents
{
public:
// called when new round occurs
virtual void OnNewRound (void) = 0;
};
class Game
{
private:
IGameEvents *m_listener;
public:
Game (void) : m_listener (NULL) { }
~Game (void) { }
public:
// we have only one listener, so register it here
void RegisterEventListener (IGameEvents *listener) { m_listener = listener; }
// get events interface
IGameEvents *GetGameEventListener (void) { return m_listener; }
};
// helper macros
#define events game.GetGameEventListener ()