yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
custom_collision.h
Go to the documentation of this file.
1#ifndef YAZE_APP_ZELDA3_DUNGEON_CUSTOM_COLLISION_H
2#define YAZE_APP_ZELDA3_DUNGEON_CUSTOM_COLLISION_H
3
4#include <array>
5#include <cstdint>
6#include <string>
7#include <vector>
8
9#include "absl/status/status.h"
10#include "absl/status/statusor.h"
11#include "rom/rom.h"
12
13namespace yaze {
14namespace zelda3 {
15
17 std::array<uint8_t, 64 * 64> tiles{};
18 bool has_data = false;
19};
20
21// Load the ZScream custom collision map for a dungeon room.
22absl::StatusOr<CustomCollisionMap> LoadCustomCollisionMap(Rom* rom,
23 int room_id);
24
26 uint16_t offset = 0; // Y*64 + X (0..4095)
27 uint8_t value = 0; // Collision type (0..255). 0 typically means "unset".
28};
29
31 int room_id = -1;
32 std::vector<CustomCollisionTileEntry> tiles;
33};
34
35// JSON import/export helpers for authoring workflows.
36//
37// Format (v1):
38// {
39// "version": 1,
40// "rooms": [
41// { "room_id": "0x25", "tiles": [ [ 1234, 8 ], [ 42, "0x1B" ] ] }
42// ]
43// }
44//
45// `room_id`, offsets, and values may be provided as ints or strings (hex
46// allowed). Values of 0 are allowed and can be used to explicitly clear tiles.
47absl::StatusOr<std::string> DumpCustomCollisionRoomsToJsonString(
48 const std::vector<CustomCollisionRoomEntry>& rooms);
49
50absl::StatusOr<std::vector<CustomCollisionRoomEntry>>
51LoadCustomCollisionRoomsFromJsonString(const std::string& json_content);
52
53} // namespace zelda3
54} // namespace yaze
55
56#endif // YAZE_APP_ZELDA3_DUNGEON_CUSTOM_COLLISION_H
The Rom class is used to load, save, and modify Rom data. This is a generic SNES ROM container and do...
Definition rom.h:28
absl::StatusOr< std::vector< CustomCollisionRoomEntry > > LoadCustomCollisionRoomsFromJsonString(const std::string &json_content)
absl::StatusOr< std::string > DumpCustomCollisionRoomsToJsonString(const std::vector< CustomCollisionRoomEntry > &rooms)
absl::StatusOr< CustomCollisionMap > LoadCustomCollisionMap(Rom *rom, int room_id)
std::array< uint8_t, 64 *64 > tiles
std::vector< CustomCollisionTileEntry > tiles