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
13
namespace
yaze
{
14
namespace
zelda3 {
15
16
struct
CustomCollisionMap
{
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.
22
absl::StatusOr<CustomCollisionMap>
LoadCustomCollisionMap
(
Rom
* rom,
23
int
room_id);
24
25
struct
CustomCollisionTileEntry
{
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
30
struct
CustomCollisionRoomEntry
{
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.
47
absl::StatusOr<std::string>
DumpCustomCollisionRoomsToJsonString
(
48
const
std::vector<CustomCollisionRoomEntry>& rooms);
49
50
absl::StatusOr<std::vector<CustomCollisionRoomEntry>>
51
LoadCustomCollisionRoomsFromJsonString
(
const
std::string& json_content);
52
53
}
// namespace zelda3
54
}
// namespace yaze
55
56
#endif
// YAZE_APP_ZELDA3_DUNGEON_CUSTOM_COLLISION_H
yaze::Rom
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
yaze::zelda3::LoadCustomCollisionRoomsFromJsonString
absl::StatusOr< std::vector< CustomCollisionRoomEntry > > LoadCustomCollisionRoomsFromJsonString(const std::string &json_content)
Definition
custom_collision.cc:208
yaze::zelda3::DumpCustomCollisionRoomsToJsonString
absl::StatusOr< std::string > DumpCustomCollisionRoomsToJsonString(const std::vector< CustomCollisionRoomEntry > &rooms)
Definition
custom_collision.cc:145
yaze::zelda3::LoadCustomCollisionMap
absl::StatusOr< CustomCollisionMap > LoadCustomCollisionMap(Rom *rom, int room_id)
Definition
custom_collision.cc:32
yaze
Definition
patch_export_usage.cc:8
rom.h
yaze::zelda3::CustomCollisionMap
Definition
custom_collision.h:16
yaze::zelda3::CustomCollisionMap::tiles
std::array< uint8_t, 64 *64 > tiles
Definition
custom_collision.h:17
yaze::zelda3::CustomCollisionMap::has_data
bool has_data
Definition
custom_collision.h:18
yaze::zelda3::CustomCollisionRoomEntry
Definition
custom_collision.h:30
yaze::zelda3::CustomCollisionRoomEntry::tiles
std::vector< CustomCollisionTileEntry > tiles
Definition
custom_collision.h:32
yaze::zelda3::CustomCollisionRoomEntry::room_id
int room_id
Definition
custom_collision.h:31
yaze::zelda3::CustomCollisionTileEntry
Definition
custom_collision.h:25
yaze::zelda3::CustomCollisionTileEntry::offset
uint16_t offset
Definition
custom_collision.h:26
yaze::zelda3::CustomCollisionTileEntry::value
uint8_t value
Definition
custom_collision.h:27
src
zelda3
dungeon
custom_collision.h
Generated by
1.10.0