Subversion Repositories public iLand

Rev

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
}