1 #ifndef E323_TASKMERGE_H
2 #define E323_TASKMERGE_H
3 
4 #include "../ATask.h"
5 
6 struct MergeTask: public ATask {
MergeTaskMergeTask7 	MergeTask(AIClasses *_ai): ATask(_ai) { t = TASK_MERGE; }
8 	MergeTask(AIClasses *_ai, std::list<CGroup*>& groups);
9 
10 	bool isRetreating;
11 		// are groups retreating?
12 	float range;
13 		// the minimal range at which groups can merge
14 	std::map<int, CGroup*> mergable;
15 		// groups ready to merge <group_id, group>
16 	CGroup *masterGroup;
17 		// group which position is used as meeting point
18 
19 	bool reelectMasterGroup();
20 	/* overload */
21 	void onUpdate();
22 	/* overload */
23 	bool onValidate();
24 	/* overload */
25 	void remove(ARegistrar &group);
26 	/* overload */
27 	void toStream(std::ostream& out) const;
28 };
29 
30 #endif
31