/*****************************************************************************
*
* PROJECT: Multi Theft Auto v1.0
* LICENSE: See LICENSE in the top level directory
* FILE: multiplayer_sa/CPopulationSA.h
* PURPOSE: Ped world population class
* DEVELOPERS: Ed Lyons <eai@opencoding.net>
* Christian Myhre Lundheim <>
*
* Multi Theft Auto is available from http://w...content-available-to-author-only...o.com/
*
*****************************************************************************/
#include <multiplayer/CPopulationMP.h>
// These includes need to be fixed!
#include "../game_sa/CPedSA.h"
#include "../game_sa/CVehicleSA.h"
#include "../game_sa/CObjectSA.h"
#include "../game_sa/CCivilianPedSA.h"
#include "../sdk/game/CVehicle.h"
#include "../sdk/game/CObject.h"
#include <list>
#ifndef __CMULTIPLAYER_POPULATION
#define __CMULTIPLAYER_POPULATION
#define HOOKPOS_EndOf_CPopulation__Add 0x612C76
#define HOOKPOS_CPopulation__RemovePed 0x610F20
#define HOOKPOS_CVehicle__Add 0x00000000
#define HOOKPOS_CVehicle__Remove 0x00000000
#define HOOKPOS_CObject__Add 0x00000000
#define HOOKPOS_CObject__Remove 0x00000000
#define VTBL_CPlayerPed 0x86D168
class CPopulationSA : public CPopulationMP
{
private:
std::list < CCivilianPedSA* > peds;
std::list < CCivilianPedSA* > ::iterator pedIter;
DWORD dwPedCount;
std::list < CVehicleSA* > vehicles;
std::list < CVehicleSA* > ::iterator vehIter;
DWORD dwVehicleCount;
std::list < CObjectSA* > objects;
std::list < CObjectSA* > ::iterator objectIter;
DWORD dwObjectCount;
public:
CPopulationSA();
VOID AddPed ( CCivilianPed * ped );
VOID AddPed ( CPedSAInterface * ped );
VOID RemovePed ( CCivilianPed * ped );
VOID RemovePed ( CPedSAInterface * ped );
DWORD GetPedCount ( );
CCivilianPed * GetFirstPed ( );
CCivilianPed * GetNextPed ( );
void SetCivilianAddHandler ( CivilianAddHandler * pCivilianAddHandler );
void SetCivilianRemoveHandler ( CivilianAddHandler * pCivilianAddHandler );
VOID AddVehicle(CVehicle * vehicle);
VOID AddVehicle(CVehicleSAInterface * vehicle);
VOID RemoveVehicle(CVehicle * vehicle);
VOID RemoveVehicle(CVehicleSAInterface * vehicle);
DWORD GetVehicleCount();
CVehicle * GetFirstVehicle();
CVehicle * GetNextVehicle();
void SetVehicleAddHandler(VehicleAddHandler * pVehicleAddHandler);
void SetVehicleRemoveHandler(VehicleRemoveHandler * pVehicleRemoveHandler);
VOID AddObject(CObject * Object);
VOID AddObject(CObjectSAInterface * Object);
VOID RemoveObject(CObject * Object);
VOID RemoveObject(CObjectSAInterface * Object);
DWORD GetObjectCount();
CObject * GetFirstObject();
CObject * GetNextObject();
void SetObjectAddHandler(ObjectAddHandler * pObjectAddHandler);
void SetObjectRemoveHandler(ObjectRemoveHandler * pObjectRemoveHandler);
};
#endif