BioinstSim  2
 All Classes Functions Variables
simulator.h
1 #ifndef SIMULATOR_H_
2 #define SIMULATOR_H_
3 
4 /******************************************************************************/
5 /******************************************************************************/
6 
7 class CSimulator;
8 
9 #include "arena.h"
10 #include "agent.h"
11 #include "experiment.h"
12 
13 /******************************************************************************/
14 /******************************************************************************/
15 
16 #define RED 0
17 #define GREEN 1
18 #define BLUE 2
19 #define HALFRED 3
20 #define HALFGREEN 4
21 #define HALFBLUE 5
22 #define GREY 6
23 #define YELLOW 7
24 
25 /******************************************************************************/
26 /******************************************************************************/
27 
28 class CSimulator : public CSimObject
29 {
30 public:
31  CSimulator(unsigned int un_number_of_cycles);
32  virtual ~CSimulator();
33 
34  virtual void Run();
35  virtual void SetArena(CArena* pc_arena);
36  virtual CArena* GetArena();
37 
38  virtual void SetExperiment(CExperiment* pc_experiment);
39  virtual CExperiment* GetExperiment();
40 
41  static CSimulator* GetInstance();
42 
43  virtual void AddAgent(CAgent* pc_new_agent);
44  virtual void RemoveAgent(CAgent* pc_agent);
45  virtual TAgentVector* GetAllAgents();
46 
47  virtual void AddAgentToDeleteList(CAgent* pc_agent);
48  virtual void EndSimulation();
49  virtual void SimulationStep(unsigned int un_step_number);
50 
51  virtual unsigned int GetSimulationStepNumber() const;
52  virtual inline unsigned int GetNumberOfCycles() {return m_unNumberOfCycles;}
53 
54 
55 protected:
56  TAgentList m_tDeleteList;
57 
58  CArena* m_pcArena;
59  CExperiment* m_pcExperiment;
60  unsigned int m_unNumberOfCycles;
61  bool m_bEndSimulation;
62 
63  static CSimulator* m_pcSimulator;
64 
65  TAgentVector m_tAllAgents;
66 
67  unsigned int m_unCurrentSimulationStep;
68 };
69 
70 /******************************************************************************/
71 /******************************************************************************/
72 
73 #endif