Rev 189 | Rev 216 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1 | |||
185 | werner | 2 | #include "global.h" |
3 | #include "management.h" |
||
4 | #include "helper.h" |
||
186 | werner | 5 | #include "model.h" |
189 | iland | 6 | #include "resourceunit.h" |
186 | werner | 7 | #include "tree.h" |
8 | |||
9 | |||
185 | werner | 10 | #include <QtScript> |
11 | |||
186 | werner | 12 | |
185 | werner | 13 | Management::Management() |
14 | { |
||
15 | // setup the engine |
||
16 | mEngine = new QScriptEngine(); |
||
17 | QScriptValue objectValue = mEngine->newQObject(this); |
||
18 | mEngine->globalObject().setProperty("management", objectValue); |
||
19 | } |
||
20 | |||
21 | Management::~Management() |
||
22 | { |
||
23 | delete mEngine; |
||
24 | } |
||
25 | |||
26 | void Management::loadScript(const QString &fileName) |
||
27 | { |
||
28 | QString program = Helper::loadTextFile(fileName); |
||
29 | if (program.isEmpty()) |
||
30 | return; |
||
31 | |||
32 | mEngine->evaluate(program); |
||
33 | qDebug() << "management script loaded"; |
||
34 | if (mEngine->hasUncaughtException()) |
||
35 | qDebug() << "Script Error occured: " << mEngine->uncaughtExceptionBacktrace(); |
||
36 | |||
37 | } |
||
38 | |||
39 | void Management::remain(int number) |
||
40 | { |
||
41 | qDebug() << "remain called (number): " << number; |
||
186 | werner | 42 | Model *m = GlobalSettings::instance()->model(); |
43 | AllTreeIterator at(m); |
||
44 | QList<Tree*> trees; |
||
45 | while (Tree *t=at.next()) |
||
46 | trees.push_back(t); |
||
47 | int to_kill = trees.count() - number; |
||
48 | qDebug() << trees.count() << " standing, targetsize" << number << ", hence " << to_kill << "trees to remove"; |
||
49 | for (int i=0;i<to_kill;i++) { |
||
187 | iland | 50 | int index = irandom(0, trees.count()); |
186 | werner | 51 | trees[index]->die(); |
52 | trees.removeAt(index); |
||
53 | } |
||
54 | mRemoved += to_kill; |
||
185 | werner | 55 | } |
56 | |||
57 | void Management::kill(int number) |
||
58 | { |
||
187 | iland | 59 | qDebug() << "kill called with" << number; |
185 | werner | 60 | } |
61 | |||
62 | void Management::run() |
||
63 | { |
||
186 | werner | 64 | mRemoved=0; |
185 | werner | 65 | qDebug() << "Management::run() called"; |
66 | QScriptValue mgmt = mEngine->globalObject().property("manage"); |
||
67 | int year = GlobalSettings::instance()->currentYear(); |
||
68 | mgmt.call(QScriptValue(), QScriptValueList()<<year); |
||
69 | if (mEngine->hasUncaughtException()) |
||
70 | qDebug() << "Script Error occured: " << mEngine->uncaughtExceptionBacktrace(); |
||
71 | |||
186 | werner | 72 | if (mRemoved>0) { |
187 | iland | 73 | foreach(ResourceUnit *ru, GlobalSettings::instance()->model()->ruList()) |
186 | werner | 74 | ru->cleanTreeList(); |
75 | } |
||
185 | werner | 76 | } |