Веб-сайт самохостера Lotigara

summaryrefslogtreecommitdiff
path: root/source/game/StarDungeonImagePart.hpp
blob: a749d194ed3dda696fb6d9a67cee89b22a22ff13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#pragma once

#include "StarDungeonGenerator.hpp"

namespace Star {

namespace Dungeon {

  STAR_CLASS(ImagePartReader);
  STAR_CLASS(ImageTileset);

  class ImagePartReader : public PartReader {
  public:
    ImagePartReader(ImageTilesetConstPtr tileset) : m_tileset(tileset) {}

    virtual void readAsset(String const& asset) override;
    virtual Vec2U size() const override;

    virtual void forEachTile(TileCallback const& callback) const override;
    virtual void forEachTileAt(Vec2I pos, TileCallback const& callback) const override;

  private:
    List<pair<String, ImageConstPtr>> m_images;
    ImageTilesetConstPtr m_tileset;
  };

  class ImageTileset {
  public:
    ImageTileset(Json const& tileset);

    Tile const* getTile(Vec4B color) const;

  private:
    unsigned colorAsInt(Vec4B color) const;

    Map<unsigned, Tile> m_tiles;
  };
}
}