1 // Copyright (C) 2002, 2003, 2004, 2005 Ulf Lorenz
2 // Copyright (C) 2003 Michael Bartl
3 // Copyright (C) 2007, 2008, 2009, 2010, 2014 Ben Asselstine
4 // Copyright (C) 2007, 2008 Ole Laursen
5 //
6 //  This program is free software; you can redistribute it and/or modify
7 //  it under the terms of the GNU General Public License as published by
8 //  the Free Software Foundation; either version 3 of the License, or
9 //  (at your option) any later version.
10 //
11 //  This program is distributed in the hope that it will be useful,
12 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 //  GNU Library General Public License for more details.
15 //
16 //  You should have received a copy of the GNU General Public License
17 //  along with this program; if not, write to the Free Software
18 //  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19 //  02110-1301, USA.
20 
21 #pragma once
22 #ifndef AI_DUMMY_H
23 #define AI_DUMMY_H
24 
25 #include <list>
26 #include <gtkmm.h>
27 
28 #include "real_player.h"
29 
30 class XML_Helper;
31 class City;
32 class HeroProto;
33 
34 //! A simple artificial intelligence Player suitable to be the neutral Player.
35 /**
36  * This class is a dummy AI used for the neutral player. It just does, well,
37  * nothing.
38  */
39 
40 class AI_Dummy : public RealPlayer
41 {
42     public:
43         /**
44 	 * Make a new AI_Dummy player.
45          *
46          * @param name         The name of the player.
47          * @param armyset      The Id of the player's Armyset.
48          * @param color        The player's colour.
49 	 * @param width        The width of the player's FogMap.
50 	 * @param height       The height of the player's FogMap.
51 	 * @param player_no    The Id of the player.  If this value is -1,
52 	 *                     the next free Id it used.
53          */
54 	//! Default constructor.
55         AI_Dummy (Glib::ustring name, guint32 armyset, Gdk::RGBA color,
56 		  int width, int height, int player_no = -1);
57 
58 	//! Copy constructor.
59         AI_Dummy(const Player& player);
60         //! Loading constructor. See XML_Helper.
61         AI_Dummy(XML_Helper* helper);
62 	//! Destructor.
~AI_Dummy()63         ~AI_Dummy() {};
64 
isComputer()65 	virtual bool isComputer() const {return true;};
66         virtual void abortTurn();
67         virtual bool startTurn();
68         virtual void invadeCity(City* c);
69         virtual bool chooseHero(HeroProto *hero, City* c, int gold);
70         virtual Reward *chooseReward(Ruin *ruin, Sage *sage, Stack *stack);
71         virtual void heroGainsLevel(Hero * a);
72 	virtual bool chooseTreachery (Stack *stack, Player *player, Vector <int> pos);
73         virtual Army::Stat chooseStat(Hero *hero);
74         virtual bool chooseQuest(Hero *hero);
75         virtual bool computerChooseVisitRuin(Stack *stack, Vector<int> dest, guint32 moves, guint32 turns);
76         virtual bool computerChoosePickupBag(Stack *stack, Vector<int> dest, guint32 moves, guint32 turns);
77         virtual bool computerChooseVisitTempleForBlessing(Stack *stack, Vector<int> dest, guint32 moves, guint32 turns);
78         virtual bool computerChooseVisitTempleForQuest(Stack *stack, Vector<int> dest, guint32 moves, guint32 turns);
79         virtual bool computerChooseContinueQuest(Stack *stack, Quest *quest, Vector<int> dest, guint32 moves, guint32 turns);
80 
81 	void setDefensiveProduction(City *city);
82 	void examineCities();
83 
84     private:
85 	//DATA
86 };
87 
88 #endif // AI_DUMMY_H
89