Skip to content

Commit

Permalink
add additional instance methods on ScriptWorld class
Browse files Browse the repository at this point in the history
  • Loading branch information
dogboydog committed Jan 14, 2024
1 parent 41f89d5 commit 264eb39
Show file tree
Hide file tree
Showing 2 changed files with 49 additions and 24 deletions.
36 changes: 28 additions & 8 deletions src/tiled/editableworld.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -39,20 +39,19 @@ EditableWorld::EditableWorld(WorldDocument *worldDocument, QObject *parent)
}


ScriptWorldMapEntry::ScriptWorldMapEntry(World::MapEntry *mapEntry)
: mMapEntry(mapEntry)
ScriptWorldMapEntry::ScriptWorldMapEntry(World::MapEntry mapEntry)
{

mMapEntry = mapEntry;
}

QString ScriptWorldMapEntry::fileName() const
{
return mMapEntry->fileName;
return mMapEntry.fileName;
}

QRect ScriptWorldMapEntry::rect() const
{
return mMapEntry->rect;
return mMapEntry.rect;
}

QString EditableWorld::displayName() const
Expand All @@ -69,15 +68,15 @@ QVector<ScriptWorldMapEntry*> EditableWorld::allMaps() const
{
QVector<ScriptWorldMapEntry*> maps;
for (auto &entry : world()->allMaps())
maps.append(new ScriptWorldMapEntry(&entry));
maps.append(new ScriptWorldMapEntry(entry));
return maps;
}

QVector<ScriptWorldMapEntry*> EditableWorld::mapsInRect(const QRect &rect) const
QList<ScriptWorldMapEntry*> EditableWorld::mapsInRect(const QRect &rect)
{
QVector<ScriptWorldMapEntry*> maps;
for (auto &entry : world()->mapsInRect(rect))
maps.append(new ScriptWorldMapEntry(&entry));
maps.append(new ScriptWorldMapEntry(entry));
return maps;
}

Expand All @@ -86,6 +85,27 @@ bool EditableWorld::isReadOnly() const
return !world()->canBeModified();
}

int EditableWorld::mapIndex(const QString &fileName) const
{
return mWorldObject.world->mapIndex(fileName);
}
void EditableWorld::setMapRect(int mapIndex, const QRect &rect)
{
mWorldObject.world->setMapRect(mapIndex, rect);
}
void EditableWorld::addMap(const QString &fileName, const QRect &rect)
{
mWorldObject.world->addMap(fileName, rect);
}
void EditableWorld::removeMap(int mapIndex)
{
mWorldObject.world->removeMap(mapIndex);
}

bool EditableWorld::save()
{
return WorldManager::instance().saveWorld(mWorldObject.world->fileName);
}
QSharedPointer<Document> EditableWorld::createDocument()
{
// We don't currently support opening a world in its own tab, which this
Expand Down
37 changes: 21 additions & 16 deletions src/tiled/editableworld.h
Original file line number Diff line number Diff line change
Expand Up @@ -29,18 +29,6 @@

namespace Tiled {

/**
* Wrapper which allows world structs to be used with the EditableAsset
* class.
*/
class ScriptWorld : public Object
{
public:
ScriptWorld(World *world);

World *world;
};

/*
* Exposes the World::MapEntry struct to scripting
*/
Expand All @@ -51,12 +39,24 @@ class ScriptWorldMapEntry : public QObject
Q_PROPERTY(QRect rect READ rect CONSTANT)

public:
ScriptWorldMapEntry(World::MapEntry *mapEntry);
ScriptWorldMapEntry(World::MapEntry mapEntry);
QString fileName() const;
QRect rect() const;

private:
World::MapEntry *mMapEntry;
World::MapEntry mMapEntry;
};

/**
* Wrapper which allows world structs to be used with the EditableAsset
* class.
*/
class ScriptWorld : public Object
{
public:
ScriptWorld(World *world);

World *world;
};

/**
Expand All @@ -77,11 +77,16 @@ class EditableWorld final : public EditableAsset
World *world() const;
QString displayName() const;
Q_INVOKABLE QVector<ScriptWorldMapEntry*> allMaps() const;
Q_INVOKABLE QVector<ScriptWorldMapEntry*> mapsInRect(const QRect &rect) const;
Q_INVOKABLE QVector<ScriptWorldMapEntry*> mapsInRect(const QRect &rect);
Q_INVOKABLE bool containsMap(const QString &fileName);

Q_INVOKABLE int mapIndex(const QString &fileName) const;
Q_INVOKABLE void setMapRect(int mapIndex, const QRect &rect);
Q_INVOKABLE void addMap(const QString &fileName, const QRect &rect);
Q_INVOKABLE void removeMap(int mapIndex);
Q_INVOKABLE bool save();
QSharedPointer<Document> createDocument() override;


private:
ScriptWorld mWorldObject;
};
Expand Down

0 comments on commit 264eb39

Please sign in to comment.