initial commit, lordsawar source, slightly modified
[lordsawar] / src / RoadPathCalculator.cpp
1 // Copyright (C) 2009 Ben Asselstine
2 //
3 //  This program is free software; you can redistribute it and/or modify
4 //  it under the terms of the GNU General Public License as published by
5 //  the Free Software Foundation; either version 3 of the License, or
6 //  (at your option) any later version.
7 //
8 //  This program is distributed in the hope that it will be useful,
9 //  but WITHOUT ANY WARRANTY; without even the implied warranty of
10 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 //  GNU Library General Public License for more details.
12 //
13 //  You should have received a copy of the GNU General Public License
14 //  along with this program; if not, write to the Free Software
15 //  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 
16 //  02110-1301, USA.
17
18 #include "RoadPathCalculator.h"
19 #include "PathCalculator.h"
20 #include "stack.h"
21 #include "armysetlist.h"
22 #include "tileset.h"
23 #include "army.h"
24
25 using namespace std;
26 #define debug(x) {cerr<<__FILE__<<": "<<__LINE__<<": "<<x<<flush<<endl;}
27 //#define debug(x)
28
29 RoadPathCalculator::RoadPathCalculator(Vector<int> starting_point)
30 {
31   stack = new Stack(NULL, starting_point);
32
33   ArmyProto *basearmy = ArmyProto::createScout();
34   Army *a = Army::createNonUniqueArmy(*basearmy);
35   delete basearmy;
36   stack->push_back(a);
37   path_calculator = new PathCalculator(stack, false);
38 }
39 RoadPathCalculator::RoadPathCalculator(const RoadPathCalculator &r)
40 {
41   stack = new Stack(*r.stack);
42   path_calculator = new PathCalculator(*r.path_calculator);
43 }
44
45 RoadPathCalculator::~RoadPathCalculator()
46 {
47   delete stack;
48   delete path_calculator;
49 }
50 Path* RoadPathCalculator::calculate(Vector<int> dest)
51 {
52   guint32 moves = 0;
53   guint32 turns = 0;
54   return path_calculator->calculate(dest, moves, turns, false);
55 }