qmlFrontend/hwengine.cpp
author unc0rr
Thu, 04 Dec 2014 00:34:40 +0300
branchqmlfrontend
changeset 10612 eb3c1a289a23
parent 10517 844bd43db47a
child 10616 20a2d5e6930a
permissions -rw-r--r--
Script combobox.wiki
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
     1
#include <QLibrary>
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
     2
#include <QtQml>
10404
1baaab44a0b2 - Fix arguments parsing in engine assuming paramcount > 0
unc0rr
parents: 10402
diff changeset
     3
#include <QDebug>
10420
unc0rr
parents: 10418
diff changeset
     4
#include <QPainter>
10424
4be6cd55f1cf - Get rid of engine's PathPrefix and UserPathPrefix
unc0rr
parents: 10420
diff changeset
     5
#include <QUuid>
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
     6
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
     7
#include "hwengine.h"
10420
unc0rr
parents: 10418
diff changeset
     8
#include "previewimageprovider.h"
10436
084e046f6bd5 flib provides theme icons, qmlFrontend shows them
unc0rr
parents: 10434
diff changeset
     9
#include "themeiconprovider.h"
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    10
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    11
extern "C" {
10428
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    12
    RunEngine_t *flibRunEngine;
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    13
    registerGUIMessagesCallback_t *flibRegisterGUIMessagesCallback;
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
    14
    setSeed_t *flibSetSeed;
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
    15
    getSeed_t *flibGetSeed;
10456
6fd99bb73524 Theme can be changed
unc0rr
parents: 10452
diff changeset
    16
    setTheme_t *flibSetTheme;
10612
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
    17
    setScript_t *flibSetScript;
10428
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    18
    getPreview_t *flibGetPreview;
10432
b0abef0ee78c Quick Game PoC
unc0rr
parents: 10430
diff changeset
    19
    runQuickGame_t *flibRunQuickGame;
10448
4cb727e029fa - Allow to delete teams from config
unc0rr
parents: 10444
diff changeset
    20
    runLocalGame_t *flibRunLocalGame;
10416
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
    21
    flibInit_t *flibInit;
10424
4be6cd55f1cf - Get rid of engine's PathPrefix and UserPathPrefix
unc0rr
parents: 10420
diff changeset
    22
    flibFree_t *flibFree;
10450
bf9e30b4ef9b - Store index of color instead of its value
unc0rr
parents: 10448
diff changeset
    23
    resetGameConfig_t * flibResetGameConfig;
10434
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
    24
    getThemesList_t *flibGetThemesList;
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
    25
    freeThemesList_t *flibFreeThemesList;
10436
084e046f6bd5 flib provides theme icons, qmlFrontend shows them
unc0rr
parents: 10434
diff changeset
    26
    getThemeIcon_t *flibGetThemeIcon;
10517
844bd43db47a getScriptsList implementation
unc0rr
parents: 10456
diff changeset
    27
    getScriptsList_t *flibGetScriptsList;
10442
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
    28
    getTeamsList_t *flibGetTeamsList;
10444
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
    29
    tryAddTeam_t * flibTryAddTeam;
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
    30
    tryRemoveTeam_t * flibTryRemoveTeam;
10452
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
    31
    changeTeamColor_t * flibChangeTeamColor;
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    32
}
10420
unc0rr
parents: 10418
diff changeset
    33
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
    34
Q_DECLARE_METATYPE(MessageType);
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
    35
10420
unc0rr
parents: 10418
diff changeset
    36
HWEngine::HWEngine(QQmlEngine *engine, QObject *parent) :
unc0rr
parents: 10418
diff changeset
    37
    QObject(parent),
unc0rr
parents: 10418
diff changeset
    38
    m_engine(engine)
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    39
{
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
    40
    qRegisterMetaType<MessageType>("MessageType");
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
    41
10404
1baaab44a0b2 - Fix arguments parsing in engine assuming paramcount > 0
unc0rr
parents: 10402
diff changeset
    42
    QLibrary hwlib("./libhwengine.so");
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    43
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    44
    if(!hwlib.load())
10404
1baaab44a0b2 - Fix arguments parsing in engine assuming paramcount > 0
unc0rr
parents: 10402
diff changeset
    45
        qWarning() << "Engine library not found" << hwlib.errorString();
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    46
10428
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    47
    flibRunEngine = (RunEngine_t*) hwlib.resolve("RunEngine");
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    48
    flibRegisterGUIMessagesCallback = (registerGUIMessagesCallback_t*) hwlib.resolve("registerGUIMessagesCallback");
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
    49
    flibGetSeed = (getSeed_t*) hwlib.resolve("getSeed");
10428
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    50
    flibGetPreview = (getPreview_t*) hwlib.resolve("getPreview");
10432
b0abef0ee78c Quick Game PoC
unc0rr
parents: 10430
diff changeset
    51
    flibRunQuickGame = (runQuickGame_t*) hwlib.resolve("runQuickGame");
10448
4cb727e029fa - Allow to delete teams from config
unc0rr
parents: 10444
diff changeset
    52
    flibRunLocalGame = (runLocalGame_t*) hwlib.resolve("runLocalGame");
10416
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
    53
    flibInit = (flibInit_t*) hwlib.resolve("flibInit");
10424
4be6cd55f1cf - Get rid of engine's PathPrefix and UserPathPrefix
unc0rr
parents: 10420
diff changeset
    54
    flibFree = (flibFree_t*) hwlib.resolve("flibFree");
10416
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
    55
10612
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
    56
    flibSetSeed = (setSeed_t*) hwlib.resolve("setSeed");
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
    57
    flibSetTheme = (setTheme_t*) hwlib.resolve("setTheme");
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
    58
    flibSetScript = (setScript_t*) hwlib.resolve("setScript");
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
    59
10434
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
    60
    flibGetThemesList = (getThemesList_t*) hwlib.resolve("getThemesList");
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
    61
    flibFreeThemesList = (freeThemesList_t*) hwlib.resolve("freeThemesList");
10436
084e046f6bd5 flib provides theme icons, qmlFrontend shows them
unc0rr
parents: 10434
diff changeset
    62
    flibGetThemeIcon = (getThemeIcon_t*) hwlib.resolve("getThemeIcon");
10434
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
    63
10517
844bd43db47a getScriptsList implementation
unc0rr
parents: 10456
diff changeset
    64
    flibGetScriptsList = (getScriptsList_t*) hwlib.resolve("getScriptsList");
844bd43db47a getScriptsList implementation
unc0rr
parents: 10456
diff changeset
    65
10450
bf9e30b4ef9b - Store index of color instead of its value
unc0rr
parents: 10448
diff changeset
    66
    flibResetGameConfig = (resetGameConfig_t*) hwlib.resolve("resetGameConfig");
10442
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
    67
    flibGetTeamsList = (getTeamsList_t*) hwlib.resolve("getTeamsList");
10444
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
    68
    flibTryAddTeam = (tryAddTeam_t*) hwlib.resolve("tryAddTeam");
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
    69
    flibTryRemoveTeam = (tryRemoveTeam_t*) hwlib.resolve("tryRemoveTeam");
10452
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
    70
    flibChangeTeamColor = (changeTeamColor_t*) hwlib.resolve("changeTeamColor");
10442
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
    71
10434
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
    72
    flibInit("/usr/home/unC0Rr/Sources/Hedgewars/Hedgewars-GC/share/hedgewars/Data", "/usr/home/unC0Rr/.hedgewars");
10428
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    73
    flibRegisterGUIMessagesCallback(this, &guiMessagesCallback);
10434
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
    74
10436
084e046f6bd5 flib provides theme icons, qmlFrontend shows them
unc0rr
parents: 10434
diff changeset
    75
    ThemeIconProvider * themeIcon = (ThemeIconProvider *)m_engine->imageProvider(QLatin1String("theme"));
084e046f6bd5 flib provides theme icons, qmlFrontend shows them
unc0rr
parents: 10434
diff changeset
    76
    themeIcon->setFileContentsFunction(flibGetThemeIcon);
084e046f6bd5 flib provides theme icons, qmlFrontend shows them
unc0rr
parents: 10434
diff changeset
    77
10434
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
    78
    fillModels();
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    79
}
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    80
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    81
HWEngine::~HWEngine()
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    82
{
10424
4be6cd55f1cf - Get rid of engine's PathPrefix and UserPathPrefix
unc0rr
parents: 10420
diff changeset
    83
    flibFree();
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    84
}
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    85
10428
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    86
void HWEngine::getPreview()
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    87
{
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
    88
    flibSetSeed(QUuid::createUuid().toString().toLatin1());
10428
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
    89
    flibGetPreview();
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    90
}
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
    91
10432
b0abef0ee78c Quick Game PoC
unc0rr
parents: 10430
diff changeset
    92
void HWEngine::runQuickGame()
b0abef0ee78c Quick Game PoC
unc0rr
parents: 10430
diff changeset
    93
{
b0abef0ee78c Quick Game PoC
unc0rr
parents: 10430
diff changeset
    94
    flibSetSeed(QUuid::createUuid().toString().toLatin1());
b0abef0ee78c Quick Game PoC
unc0rr
parents: 10430
diff changeset
    95
    flibRunQuickGame();
b0abef0ee78c Quick Game PoC
unc0rr
parents: 10430
diff changeset
    96
}
b0abef0ee78c Quick Game PoC
unc0rr
parents: 10430
diff changeset
    97
10448
4cb727e029fa - Allow to delete teams from config
unc0rr
parents: 10444
diff changeset
    98
void HWEngine::runLocalGame()
4cb727e029fa - Allow to delete teams from config
unc0rr
parents: 10444
diff changeset
    99
{
4cb727e029fa - Allow to delete teams from config
unc0rr
parents: 10444
diff changeset
   100
    flibRunLocalGame();
4cb727e029fa - Allow to delete teams from config
unc0rr
parents: 10444
diff changeset
   101
}
4cb727e029fa - Allow to delete teams from config
unc0rr
parents: 10444
diff changeset
   102
4cb727e029fa - Allow to delete teams from config
unc0rr
parents: 10444
diff changeset
   103
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   104
static QObject *hwengine_singletontype_provider(QQmlEngine *engine, QJSEngine *scriptEngine)
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   105
{
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   106
    Q_UNUSED(scriptEngine)
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   107
10420
unc0rr
parents: 10418
diff changeset
   108
    HWEngine *hwengine = new HWEngine(engine);
10402
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   109
    return hwengine;
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   110
}
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   111
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   112
void HWEngine::exposeToQML()
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   113
{
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   114
    qDebug("HWEngine::exposeToQML");
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   115
    qmlRegisterSingletonType<HWEngine>("Hedgewars.Engine", 1, 0, "HWEngine", hwengine_singletontype_provider);
3313336c1ee0 Let's get it started
unc0rr
parents:
diff changeset
   116
}
10416
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
   117
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
   118
10428
7c25297720f1 More refactoring: move PoC preview getting code into flib
unc0rr
parents: 10426
diff changeset
   119
void HWEngine::guiMessagesCallback(void *context, MessageType mt, const char * msg, uint32_t len)
10420
unc0rr
parents: 10418
diff changeset
   120
{
unc0rr
parents: 10418
diff changeset
   121
    HWEngine * obj = (HWEngine *)context;
10444
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   122
    QByteArray b = QByteArray(msg, len);
10420
unc0rr
parents: 10418
diff changeset
   123
unc0rr
parents: 10418
diff changeset
   124
    qDebug() << "FLIPC in" << b.size() << b;
unc0rr
parents: 10418
diff changeset
   125
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
   126
    QMetaObject::invokeMethod(obj, "engineMessageHandler", Qt::QueuedConnection, Q_ARG(MessageType, mt), Q_ARG(QByteArray, b));
10416
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
   127
}
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
   128
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
   129
void HWEngine::engineMessageHandler(MessageType mt, const QByteArray &msg)
10416
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
   130
{
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
   131
    switch(mt)
10426
727a154cf784 Some refactoring
unc0rr
parents: 10424
diff changeset
   132
    {
10444
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   133
    case MSG_PREVIEW: {
10426
727a154cf784 Some refactoring
unc0rr
parents: 10424
diff changeset
   134
        PreviewImageProvider * preview = (PreviewImageProvider *)m_engine->imageProvider(QLatin1String("preview"));
727a154cf784 Some refactoring
unc0rr
parents: 10424
diff changeset
   135
        preview->setPixmap(msg);
727a154cf784 Some refactoring
unc0rr
parents: 10424
diff changeset
   136
        emit previewImageChanged();
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
   137
        break;
10426
727a154cf784 Some refactoring
unc0rr
parents: 10424
diff changeset
   138
    }
10444
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   139
    case MSG_ADDPLAYINGTEAM: {
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   140
        QStringList l = QString::fromUtf8(msg).split('\n');
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   141
        emit playingTeamAdded(l[1], l[0].toInt(), true);
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   142
        break;
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   143
    }
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   144
    case MSG_REMOVEPLAYINGTEAM: {
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   145
        emit playingTeamRemoved(msg);
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   146
        break;
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   147
    }
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   148
    case MSG_ADDTEAM: {
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   149
        emit localTeamAdded(msg, 0);
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   150
        break;
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   151
    }
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   152
    case MSG_REMOVETEAM: {
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   153
        emit localTeamRemoved(msg);
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   154
        break;
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   155
    }
10452
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   156
    case MSG_TEAMCOLOR: {
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   157
        QStringList l = QString::fromUtf8(msg).split('\n');
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   158
        emit teamColorChanged(l[0], QColor::fromRgba(l[1].toInt()).name());
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   159
        break;
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   160
    }
10444
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   161
    }
10424
4be6cd55f1cf - Get rid of engine's PathPrefix and UserPathPrefix
unc0rr
parents: 10420
diff changeset
   162
}
10416
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
   163
10424
4be6cd55f1cf - Get rid of engine's PathPrefix and UserPathPrefix
unc0rr
parents: 10420
diff changeset
   164
QString HWEngine::currentSeed()
4be6cd55f1cf - Get rid of engine's PathPrefix and UserPathPrefix
unc0rr
parents: 10420
diff changeset
   165
{
10430
899a30018ede Getter and setter for seed
unc0rr
parents: 10428
diff changeset
   166
    return QString::fromLatin1(flibGetSeed());
10416
1c301054694d - Remove --port command
unc0rr
parents: 10404
diff changeset
   167
}
10434
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   168
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   169
void HWEngine::fillModels()
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   170
{
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   171
    QStringList resultModel;
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   172
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   173
    char ** themes = flibGetThemesList();
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   174
    for (char **i = themes; *i != NULL; i++) {
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   175
        QString theme = QString::fromUtf8(*i);
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   176
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   177
        resultModel << theme;
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   178
    }
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   179
    flibFreeThemesList(themes);
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   180
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   181
    m_engine->rootContext()->setContextProperty("themesModel", QVariant::fromValue(resultModel));
10612
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   182
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   183
    resultModel.clear();
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   184
    char ** scripts = flibGetScriptsList();
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   185
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   186
    for (char **i = scripts; *i != NULL; i++) {
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   187
        QString script = QString::fromUtf8(*i);
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   188
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   189
        resultModel << script;
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   190
    }
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   191
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   192
    m_engine->rootContext()->setContextProperty("scriptsModel", QVariant::fromValue(resultModel));
10434
1614b13ad35e Themes model, also add some files I forgot to add previously
unc0rr
parents: 10432
diff changeset
   193
}
10442
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   194
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   195
void HWEngine::getTeamsList()
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   196
{
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   197
    char ** teams = flibGetTeamsList();
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   198
    for (char **i = teams; *i != NULL; i++) {
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   199
        QString team = QString::fromUtf8(*i);
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   200
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   201
        emit localTeamAdded(team, 0);
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   202
    }
c58db813240b Load and show local teams list
unc0rr
parents: 10436
diff changeset
   203
}
10444
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   204
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   205
void HWEngine::tryAddTeam(const QString &teamName)
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   206
{
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   207
    flibTryAddTeam(teamName.toUtf8().constData());
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   208
}
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   209
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   210
void HWEngine::tryRemoveTeam(const QString &teamName)
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   211
{
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   212
    flibTryRemoveTeam(teamName.toUtf8().constData());
47a6231f1fc1 Teams widget now allows to add and remove teams (basic implementation, no checks performed, no colors, no hedgehogs)
unc0rr
parents: 10442
diff changeset
   213
}
10450
bf9e30b4ef9b - Store index of color instead of its value
unc0rr
parents: 10448
diff changeset
   214
bf9e30b4ef9b - Store index of color instead of its value
unc0rr
parents: 10448
diff changeset
   215
void HWEngine::resetGameConfig()
bf9e30b4ef9b - Store index of color instead of its value
unc0rr
parents: 10448
diff changeset
   216
{
bf9e30b4ef9b - Store index of color instead of its value
unc0rr
parents: 10448
diff changeset
   217
    flibResetGameConfig();
bf9e30b4ef9b - Store index of color instead of its value
unc0rr
parents: 10448
diff changeset
   218
}
10452
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   219
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   220
void HWEngine::changeTeamColor(const QString &teamName, int dir)
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   221
{
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   222
    flibChangeTeamColor(teamName.toUtf8().constData(), dir);
03519fd9f98d Show team color in teams list widget, also allow to change it on mouse click
unc0rr
parents: 10450
diff changeset
   223
}
10456
6fd99bb73524 Theme can be changed
unc0rr
parents: 10452
diff changeset
   224
6fd99bb73524 Theme can be changed
unc0rr
parents: 10452
diff changeset
   225
void HWEngine::setTheme(const QString &theme)
6fd99bb73524 Theme can be changed
unc0rr
parents: 10452
diff changeset
   226
{
6fd99bb73524 Theme can be changed
unc0rr
parents: 10452
diff changeset
   227
    flibSetTheme(theme.toUtf8().constData());
6fd99bb73524 Theme can be changed
unc0rr
parents: 10452
diff changeset
   228
}
10612
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   229
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   230
void HWEngine::setScript(const QString &script)
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   231
{
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   232
    flibSetScript(script.toUtf8().constData());
eb3c1a289a23 Script combobox.wiki
unc0rr
parents: 10517
diff changeset
   233
}