refactor viewport

This commit is contained in:
2025-12-02 17:14:40 -05:00
parent d4f69278d9
commit 8e89f1bf70
2 changed files with 60 additions and 42 deletions

36
types.h
View File

@@ -60,11 +60,11 @@ enum ItemType {
ITEM_TYPE_COUNT
};
template <>
template<>
struct std::formatter<ItemType> : std::formatter<string_view> {
bool title_case = false;
constexpr auto parse(std::format_parse_context& ctx) {
constexpr auto parse(std::format_parse_context &ctx) {
auto it = ctx.begin();
if (it == ctx.end()) return it;
@@ -76,7 +76,7 @@ struct std::formatter<ItemType> : std::formatter<string_view> {
return it;
}
auto format(const ItemType& item_type, std::format_context& ctx) const {
auto format(const ItemType &item_type, std::format_context &ctx) const {
std::string_view item_type_str;
switch (item_type) {
case TEARS_UP:
@@ -122,3 +122,33 @@ struct Item {
assert(0 && "Unreachable.");
}
};
struct Viewport {
Viewport() = default;
Viewport(const float screen_width, const float screen_height)
: screen_width(screen_width),
screen_height(screen_height),
padding(50),
level_width(screen_width - padding * 2),
level_height(screen_height - padding * 2),
level_left(padding),
level_top(padding),
level_right(level_width + padding),
level_bottom(level_height + padding) {
}
Viewport& operator=(const Viewport &other) = default;
float screen_width;
float screen_height;
float padding;
float level_width;
float level_height;
float level_left;
float level_top;
float level_right;
float level_bottom;
};