yaze
0.3.2
Link to the Past ROM Editor
Loading...
Searching...
No Matches
scratch_workspace.h
Go to the documentation of this file.
1
#ifndef YAZE_APP_EDITOR_OVERWORLD_SCRATCH_WORKSPACE_H_
2
#define YAZE_APP_EDITOR_OVERWORLD_SCRATCH_WORKSPACE_H_
3
4
#include <array>
5
#include <cstdint>
6
#include <filesystem>
7
#include <optional>
8
#include <string>
9
#include <vector>
10
11
#include "absl/status/status.h"
12
#include "absl/status/statusor.h"
13
#include "absl/strings/string_view.h"
14
#include "
app/editor/overworld/painting/tile_brush.h
"
15
16
namespace
yaze::editor
{
17
18
// Detached layouts contain Tile16 references, never world-map mutations.
19
struct
ScratchPage
{
20
uint64_t
id
= 1;
21
std::string
name
=
"Scratch Space"
;
22
int
width
= 16;
23
int
height
= 16;
24
bool
in_use
=
false
;
25
int
source_map
= -1;
26
std::array<std::array<int, 32>, 32>
tile_data
{};
// [x][y]
27
28
bool
operator==
(
const
ScratchPage
& other)
const
;
29
TileBrush
AsBrush
()
const
;
30
};
31
32
struct
ScratchWorkspaceState
{
33
std::vector<ScratchPage>
pages
= {
ScratchPage
{}};
34
uint64_t
selected_id
= 1;
35
uint64_t
next_id
= 2;
36
37
bool
operator==
(
const
ScratchWorkspaceState
& other)
const
;
38
};
39
40
class
ScratchWorkspace
{
41
public
:
42
static
constexpr
size_t
kMaxPages
= 32;
43
44
const
ScratchWorkspaceState
&
state
()
const
{
return
state_
; }
45
void
Restore
(
const
ScratchWorkspaceState
&
state
);
46
ScratchPage
&
current
();
47
const
ScratchPage
&
current
()
const
;
48
bool
Select
(uint64_t
id
);
49
absl::Status
AddPage
(
bool
duplicate =
false
);
50
absl::Status
DeletePage
();
51
absl::Status
Rename
(absl::string_view name);
52
absl::Status
Resize
(
int
width,
int
height);
53
absl::Status
Stamp
(
const
TileBrush
& brush,
int
x,
int
y);
54
absl::Status
Capture
(
const
TileBrush
& brush,
int
source_map);
55
void
Clear
();
56
57
// V1 is the original single ScratchPad.dat. Invalid input never mutates state.
58
absl::Status
Parse
(absl::string_view contents);
59
std::string
Serialize
()
const
;
60
absl::Status
Load
(
const
std::filesystem::path& path);
61
// Reject another session's changes instead of silently overwriting its pages.
62
absl::Status
Save
(
const
std::filesystem::path& path);
63
64
private
:
65
ScratchWorkspaceState
state_
;
66
std::optional<std::string>
saved_contents_
;
67
bool
file_loaded_
=
false
;
68
};
69
70
}
// namespace yaze::editor
71
72
#endif
// YAZE_APP_EDITOR_OVERWORLD_SCRATCH_WORKSPACE_H_
yaze::editor::ScratchWorkspace
Definition
scratch_workspace.h:40
yaze::editor::ScratchWorkspace::Capture
absl::Status Capture(const TileBrush &brush, int source_map)
Definition
scratch_workspace.cc:223
yaze::editor::ScratchWorkspace::Load
absl::Status Load(const std::filesystem::path &path)
Definition
scratch_workspace.cc:308
yaze::editor::ScratchWorkspace::Clear
void Clear()
Definition
scratch_workspace.cc:240
yaze::editor::ScratchWorkspace::Resize
absl::Status Resize(int width, int height)
Definition
scratch_workspace.cc:201
yaze::editor::ScratchWorkspace::state
const ScratchWorkspaceState & state() const
Definition
scratch_workspace.h:44
yaze::editor::ScratchWorkspace::Stamp
absl::Status Stamp(const TileBrush &brush, int x, int y)
Definition
scratch_workspace.cc:210
yaze::editor::ScratchWorkspace::DeletePage
absl::Status DeletePage()
Definition
scratch_workspace.cc:188
yaze::editor::ScratchWorkspace::state_
ScratchWorkspaceState state_
Definition
scratch_workspace.h:65
yaze::editor::ScratchWorkspace::saved_contents_
std::optional< std::string > saved_contents_
Definition
scratch_workspace.h:66
yaze::editor::ScratchWorkspace::kMaxPages
static constexpr size_t kMaxPages
Definition
scratch_workspace.h:42
yaze::editor::ScratchWorkspace::file_loaded_
bool file_loaded_
Definition
scratch_workspace.h:67
yaze::editor::ScratchWorkspace::Restore
void Restore(const ScratchWorkspaceState &state)
Definition
scratch_workspace.cc:138
yaze::editor::ScratchWorkspace::Parse
absl::Status Parse(absl::string_view contents)
Definition
scratch_workspace.cc:247
yaze::editor::ScratchWorkspace::current
ScratchPage & current()
Definition
scratch_workspace.cc:145
yaze::editor::ScratchWorkspace::Rename
absl::Status Rename(absl::string_view name)
Definition
scratch_workspace.cc:180
yaze::editor::ScratchWorkspace::AddPage
absl::Status AddPage(bool duplicate=false)
Definition
scratch_workspace.cc:167
yaze::editor::ScratchWorkspace::Save
absl::Status Save(const std::filesystem::path &path)
Definition
scratch_workspace.cc:325
yaze::editor::ScratchWorkspace::Serialize
std::string Serialize() const
Definition
scratch_workspace.cc:286
yaze::editor
Editors are the view controllers for the application.
Definition
patch_export_usage.cc:9
yaze::editor::InteractionMode::Select
@ Select
yaze::editor::ScratchPage
Definition
scratch_workspace.h:19
yaze::editor::ScratchPage::source_map
int source_map
Definition
scratch_workspace.h:25
yaze::editor::ScratchPage::AsBrush
TileBrush AsBrush() const
Definition
scratch_workspace.cc:121
yaze::editor::ScratchPage::in_use
bool in_use
Definition
scratch_workspace.h:24
yaze::editor::ScratchPage::tile_data
std::array< std::array< int, 32 >, 32 > tile_data
Definition
scratch_workspace.h:26
yaze::editor::ScratchPage::width
int width
Definition
scratch_workspace.h:22
yaze::editor::ScratchPage::name
std::string name
Definition
scratch_workspace.h:21
yaze::editor::ScratchPage::operator==
bool operator==(const ScratchPage &other) const
Definition
scratch_workspace.cc:115
yaze::editor::ScratchPage::height
int height
Definition
scratch_workspace.h:23
yaze::editor::ScratchWorkspaceState
Definition
scratch_workspace.h:32
yaze::editor::ScratchWorkspaceState::operator==
bool operator==(const ScratchWorkspaceState &other) const
Definition
scratch_workspace.cc:132
yaze::editor::ScratchWorkspaceState::next_id
uint64_t next_id
Definition
scratch_workspace.h:35
yaze::editor::ScratchWorkspaceState::pages
std::vector< ScratchPage > pages
Definition
scratch_workspace.h:33
yaze::editor::ScratchWorkspaceState::selected_id
uint64_t selected_id
Definition
scratch_workspace.h:34
yaze::editor::TileBrush
Definition
tile_brush.h:12
tile_brush.h
src
app
editor
overworld
scratch_workspace.h
Generated by
1.10.0