1 #ifndef wpchunk_hpp
2 #define wpchunk_hpp 1
3 
4 #include "chunk.hpp"
5 #include "chnktype.hpp"
6 #include "obchunk.hpp"
7 
8 struct WaypointLink
9 {
10 	int index;
11 	int flags;
12 };
13 
14 struct ModuleLink
15 {
16 	~ModuleLink();
17 
18 	char*  module_name;
19 	int flags;
20 };
21 
22 #define WaypointFlag_CentreDefinedByUser 0x80000000
23 #define WaypointFlag_FirstGroundWaypoint 0x40000000
24 struct ChunkWaypoint
25 {
26 	ChunkWaypoint();
27 	~ChunkWaypoint();
28 
29 	int index;
30 	ChunkVectorInt min,max; //relative to centre
31 	ChunkVectorInt centre; //relative to world
32 
33 	int NumWPLinks;
34 	WaypointLink* WayLinks;
35 
36 	int NumModLinks;
37 	ModuleLink* ModLinks;
38 
39 	int flags,spare2;
40 
41 };
42 
43 class Module_Waypoint_Chunk : public Chunk
44 {
45 	public :
46 	Module_Waypoint_Chunk(Chunk_With_Children*,const char *,size_t);
47 	Module_Waypoint_Chunk(Chunk_With_Children*);
48 	~Module_Waypoint_Chunk();
49 
50 	virtual size_t size_chunk();
51 	virtual void fill_data_block(char* data_start);
52 
53 	//Copies waypoint data and deletes the old waypoint_chunk
54 	void TransferWaypointData(Module_Waypoint_Chunk*);
55 
56 	int NumWaypoints;
57 	ChunkWaypoint* Waypoints;
58 
59 	ChunkWaypoint* AlienWaypoints;
60 	ChunkWaypoint* GroundWaypoints;
61 
62 	short NumAlienWaypoints;
63 	short NumGroundWaypoints;
64 
65 	int spare1;
66 	int spare2;
67 };
68 
69 class AI_Module_Master_Chunk : public Chunk
70 {
71 	public :
72 	AI_Module_Master_Chunk(Chunk_With_Children*,const char*,size_t);
73 	AI_Module_Master_Chunk(Object_Module_Data_Chunk*);
74 
75 	virtual size_t size_chunk();
76 	virtual void fill_data_block(char* data_start);
77 
78 	void AddModule(Object_Chunk*);
79 	Object_Chunk* get_my_object_chunk();
80 
81 	List<Object_Chunk*> ModuleList;
82 };
83 
84 class AI_Module_Slave_Chunk : public Chunk
85 {
86 	public :
87 	AI_Module_Slave_Chunk(Chunk_With_Children*,const char*,size_t);
88 	AI_Module_Slave_Chunk(Object_Module_Data_Chunk*,Object_Chunk*);
89 	~AI_Module_Slave_Chunk();
90 
91 	virtual size_t size_chunk();
92 	virtual void fill_data_block(char* data_start);
93 	virtual void post_input_processing();
94 
95 	Object_Chunk* get_my_object_chunk();
96 
97 	Object_Chunk* MasterModule;
98 	int MasterModuleIndex;
99 };
100 
101 
102 #endif
103 
104 
105