-
Notifications
You must be signed in to change notification settings - Fork 1
/
cMission.cpp
77 lines (68 loc) · 1.92 KB
/
cMission.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
#include"cMission.h"
cMission::cMission(const char* fName)
{
m_fileName = fName;
m_pSearch = 0;
m_pLogger = 0;
}
cMission::~cMission()
{
delete m_pSearch;
delete m_pLogger;
}
bool cMission::getMap()
{
return m_map.getMap(m_fileName);
}
bool cMission::getConfig()
{
return m_config.getConfig(m_fileName);
}
void cMission::createSearch()
{
if(m_pSearch)
{
delete m_pSearch;
delete m_pLogger;
}
if(m_config.searchParams[CN_PT_AA]==0)
m_pSearch = new SIPP(m_config.searchParams[CN_PT_WEIGHT], m_config.searchParams[CN_PT_MT], m_config.searchParams[CN_PT_BT]);
else
m_pSearch = new AA_SIPP(m_config.searchParams[CN_PT_WEIGHT], m_config.searchParams[CN_PT_BT], m_config.searchParams[CN_PT_CT]);
}
bool cMission::createLog()
{
if(m_config.searchParams[CN_PT_LOGLVL] == CN_LOGLVL_LOW || m_config.searchParams[CN_PT_LOGLVL] == CN_LOGLVL_HIGH || m_config.searchParams[CN_PT_LOGLVL] == CN_LOGLVL_MED)
{
m_pLogger = new cXmlLogger(m_config.searchParams[CN_PT_LOGLVL]);
}
else if(m_config.searchParams[CN_PT_LOGLVL] == CN_LOGLVL_NO)
{
m_pLogger = new cXmlLogger(m_config.searchParams[CN_PT_LOGLVL]);
return true;
}
else
{
std::cout<<"'loglevel' is not correctly specified in input XML-file.\n";
return false;
}
return m_pLogger->getLog(m_fileName);
}
void cMission::startSearch()
{
sr = m_pSearch->startSearch(m_pLogger, m_map);
}
void cMission::printSearchResultsToConsole()
{
//std::cout<<"Solved:"<<(float)sr.agentsSolved*100/sr.agents<<"% Time:"<<sr.time<<"s Pathlength:"<<sr.pathlength<<"\n";
}
void cMission::saveSearchResultsToLog()
{
m_pLogger->writeToLogSummary(sr);
if (sr.pathfound)
{
m_pLogger->writeToLogPath(sr);
m_pLogger->writeToLogMap(m_map,sr);
}
m_pLogger->saveLog();
}