mirror of
https://github.com/huderlem/porymap.git
synced 2026-08-14 04:46:49 -05:00
Implement proof of concept for scripting capabilities
This commit is contained in:
@@ -8,6 +8,7 @@ class Block
|
||||
public:
|
||||
Block();
|
||||
Block(uint16_t);
|
||||
Block(uint16_t tile, uint16_t collision, uint16_t elevation);
|
||||
Block(const Block&);
|
||||
bool operator ==(Block);
|
||||
bool operator !=(Block);
|
||||
|
||||
@@ -74,8 +74,7 @@ public:
|
||||
void cacheBlockdata();
|
||||
void cacheCollision();
|
||||
Block *getBlock(int x, int y);
|
||||
void setBlock(int x, int y, Block block);
|
||||
void _setBlock(int x, int y, Block block);
|
||||
void setBlock(int x, int y, Block block, bool invokeCallback = false);
|
||||
void floodFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
||||
void _floodFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
||||
void magicFillCollisionElevation(int x, int y, uint16_t collision, uint16_t elevation);
|
||||
|
||||
@@ -37,6 +37,8 @@ public:
|
||||
MainWindow(const MainWindow &) = delete;
|
||||
MainWindow & operator = (const MainWindow &) = delete;
|
||||
|
||||
Q_INVOKABLE void scriptapi_setBlock(int x, int y, int tile, int collision, int elevation);
|
||||
|
||||
public slots:
|
||||
void scaleMapView(int);
|
||||
|
||||
|
||||
31
include/scripting.h
Normal file
31
include/scripting.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef SCRIPTING_H
|
||||
#define SCRIPTING_H
|
||||
|
||||
#include "mainwindow.h"
|
||||
#include "block.h"
|
||||
|
||||
#include <QStringList>
|
||||
#include <QJSEngine>
|
||||
|
||||
enum CallbackType {
|
||||
OnBlockChanged,
|
||||
};
|
||||
|
||||
class Scripting
|
||||
{
|
||||
public:
|
||||
Scripting(MainWindow *mainWindow);
|
||||
QJSValue newBlockObject(Block block);
|
||||
static void init(MainWindow *mainWindow);
|
||||
static void cb_MetatileChanged(int x, int y, Block prevBlock, Block newBlock);
|
||||
|
||||
private:
|
||||
QJSEngine *engine;
|
||||
QStringList filepaths;
|
||||
QList<QJSValue> modules;
|
||||
|
||||
void loadModules(QStringList moduleFiles);
|
||||
void invokeCallback(CallbackType type, QJSValueList args);
|
||||
};
|
||||
|
||||
#endif // SCRIPTING_H
|
||||
Reference in New Issue
Block a user