Skip to content

Commit

Permalink
tmxrasterizer: Added parameter to advance animations (mapeditor#2868)
Browse files Browse the repository at this point in the history
  • Loading branch information
sballew authored Jul 20, 2020
1 parent 1d005ed commit 4c15081
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 2 deletions.
4 changes: 2 additions & 2 deletions src/libtiled/tilesetmanager.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ class TILEDSHARED_EXPORT TilesetManager : public QObject

void setAnimateTiles(bool enabled);
bool animateTiles() const;

void advanceTileAnimations(int ms);
void resetTileAnimations();

void tilesetImageSourceChanged(const Tileset &tileset,
Expand All @@ -91,8 +93,6 @@ class TILEDSHARED_EXPORT TilesetManager : public QObject
private:
void filesChanged(const QStringList &fileNames);

void advanceTileAnimations(int ms);

/**
* The list of loaded tilesets (weak references).
*/
Expand Down
12 changes: 12 additions & 0 deletions src/tmxrasterizer/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,9 @@ int main(int argc, char *argv[])
{ "show-layer",
QCoreApplication::translate("main", "If used only specified layers are shown. Can be repeated to show multiple specified layers only."),
QCoreApplication::translate("main", "name") },
{ "advance-animations",
QCoreApplication::translate("main", "If used tile animations are advanced by the specified duration."),
QCoreApplication::translate("main", "duration") }
});
parser.addPositionalArgument("map|world", QCoreApplication::translate("main", "Map or world file to render."));
parser.addPositionalArgument("image", QCoreApplication::translate("main", "Image file to output."));
Expand Down Expand Up @@ -126,5 +129,14 @@ int main(int argc, char *argv[])
}
}

if (parser.isSet(QLatin1String("advance-animations"))) {
bool ok;
w.setAdvanceAnimations(parser.value(QLatin1String("advance-animations")).toInt(&ok));
if (!ok || w.advanceAnimations() < 0) {
qWarning().noquote() << QCoreApplication::translate("main", "Invalid advance-animations specified: \"%1\"").arg(parser.value(QLatin1String("advance-animations")));
exit(1);
}
}

return w.render(fileToOpen, fileToSave);
}
9 changes: 9 additions & 0 deletions src/tmxrasterizer/tmxrasterizer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
#include "hexagonalrenderer.h"
#include "imagelayer.h"
#include "isometricrenderer.h"
#include "tilesetmanager.h"
#include "map.h"
#include "mapformat.h"
#include "mapreader.h"
Expand Down Expand Up @@ -66,6 +67,7 @@ TmxRasterizer::TmxRasterizer():
mScale(1.0),
mTileSize(0),
mSize(0),
mAdvanceAnimations(0),
mUseAntiAliasing(false),
mSmoothImages(true),
mIgnoreVisibility(false)
Expand Down Expand Up @@ -181,6 +183,9 @@ int TmxRasterizer::renderMap(const QString &mapFileName,
xScale = yScale = mScale;
}

if (mAdvanceAnimations > 0)
TilesetManager::instance()->advanceTileAnimations(mAdvanceAnimations);

QMargins margins = map->computeLayerOffsetMargins();
mapSize.setWidth(mapSize.width() + margins.left() + margins.right());
mapSize.setHeight(mapSize.height() + margins.top() + margins.bottom());
Expand Down Expand Up @@ -288,8 +293,12 @@ int TmxRasterizer::renderWorld(const QString &worldFileName,
qUtf8Printable(errorString));
continue;
}
if (mAdvanceAnimations > 0)
TilesetManager::instance()->advanceTileAnimations(mAdvanceAnimations);

std::unique_ptr<MapRenderer> renderer = createRenderer(*map);
drawMapLayers(*renderer, painter, *map, mapEntry.rect.topLeft());
TilesetManager::instance()->resetTileAnimations();
}

return saveImage(imageFileName, image);
Expand Down
3 changes: 3 additions & 0 deletions src/tmxrasterizer/tmxrasterizer.h
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,15 @@ class TmxRasterizer
qreal scale() const { return mScale; }
int tileSize() const { return mTileSize; }
int size() const { return mSize; }
int advanceAnimations() const { return mAdvanceAnimations; }
bool useAntiAliasing() const { return mUseAntiAliasing; }
bool smoothImages() const { return mSmoothImages; }
bool ignoreVisibility() const { return mIgnoreVisibility; }

void setScale(qreal scale) { mScale = scale; }
void setTileSize(int tileSize) { mTileSize = tileSize; }
void setSize(int size) { mSize = size; }
void setAdvanceAnimations(int duration) { mAdvanceAnimations = duration; }
void setAntiAliasing(bool useAntiAliasing) { mUseAntiAliasing = useAntiAliasing; }
void setSmoothImages(bool smoothImages) { mSmoothImages = smoothImages; }
void setIgnoreVisibility(bool IgnoreVisibility) { mIgnoreVisibility = IgnoreVisibility; }
Expand All @@ -69,6 +71,7 @@ class TmxRasterizer
qreal mScale;
int mTileSize;
int mSize;
int mAdvanceAnimations;
bool mUseAntiAliasing;
bool mSmoothImages;
bool mIgnoreVisibility;
Expand Down

0 comments on commit 4c15081

Please sign in to comment.