Torch
Loading...
Searching...
No Matches
SpriteFactory.h
1
#pragma once
2
3
#include "factories/BaseFactory.h"
4
#include "types/RawBuffer.h"
5
6
// One sprite raster split out of the blob so it can be addressed by name.
7
struct
PM64SpriteRaster
{
8
uint8_t width;
9
uint8_t height;
10
std::vector<uint8_t> pixels;
// CI4
11
};
12
13
struct
PM64SpriteData :
public
RawBuffer {
14
std::vector<PM64SpriteRaster> rasters;
15
std::vector<std::vector<uint8_t>> palettes;
// 16 x RGBA16, 32 bytes each
16
17
explicit
PM64SpriteData(std::vector<uint8_t>& buffer) : RawBuffer(buffer) {}
18
};
19
20
class
PM64SpriteBinaryExporter
:
public
BaseExporter
{
21
ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement)
override
;
22
};
23
24
class
PM64SpriteHeaderExporter
:
public
BaseExporter
{
25
ExportResult Export(std::ostream& write, std::shared_ptr<IParsedData> data, std::string& entryName, YAML::Node& node, std::string* replacement)
override
;
26
};
27
28
class
PM64SpriteFactory
:
public
BaseFactory
{
29
public
:
30
std::optional<std::shared_ptr<IParsedData>> parse(std::vector<uint8_t>& buffer, YAML::Node& data)
override
;
31
inline
std::unordered_map<ExportType, std::shared_ptr<BaseExporter>> GetExporters()
override
{
32
return
{
33
REGISTER(Header,
PM64SpriteHeaderExporter
)
34
REGISTER(Binary,
PM64SpriteBinaryExporter
)
35
};
36
}
37
};
BaseExporter
Definition
BaseFactory.h:96
BaseFactory
Definition
BaseFactory.h:102
PM64SpriteBinaryExporter
Definition
SpriteFactory.h:20
PM64SpriteFactory
Definition
SpriteFactory.h:28
PM64SpriteHeaderExporter
Definition
SpriteFactory.h:24
PM64SpriteRaster
Definition
SpriteFactory.h:7
src
factories
pm64
SpriteFactory.h
Generated by
1.14.0