/* 
 * Tactic is the legal property of its developers, whose names are too numerous 
 * to list here.  Please refer to the COPYRIGHT file distributed with this 
 * source distribution. 
 * 
 * This library is free software; you can redistribute it and/or 
 * modify it under the terms of the GNU Lesser General Public 
 * License as published by the Free Software Foundation; either 
 * version 2.1 of the License, or (at your option) any later version. 
 * 
 * This library is distributed in the hope that it will be useful, 
 * but WITHOUT ANY WARRANTY; without even the implied warranty of 
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
 * Lesser General Public License for more details. 
 * 
 * You should have received a copy of the GNU Lesser General Public 
 * License along with this library; if not, write to the Free Software 
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA 
 *
 * See README for more informations
 *
 * OrderAttack.h
 *
 * ...
 * Date 22/03/06
 *
 */
#ifndef ORDERATTACK_H
#define ORDERATTACK_H

#include "Order.h"
#include "GroupEnnemy.h"
#include <list>

/*
 * Data we need:
 *  we need to give orders to each unit of the group.
 *  then we will execute them in order.
 *  so what we need is a vector for each unit of the group concerned by order.
 *  each part of the vector will be a vector of actions for a specified unit.
 */

class OrderAttack : public Order
{

private:
	Point2D position;

	void attack (std::list<EnnemyUnit*>*first,std::list<EnnemyUnit*>*second,
				std::list<EnnemyUnit*>*third,std::list<EnnemyUnit*>*forth,
				std::vector<EnnemyUnit*>* ennemies);

public:
	OrderAttack();
	OrderAttack(GroupAI *g);
	~OrderAttack();
	FuzzyValueName getType();
	void execute();
	static bool cmpEnnemies(EnnemyUnit*& e, EnnemyUnit*& f);
};

#endif
