mirror of
https://github.com/OpenRCT2/OpenRCT2
synced 2026-01-26 00:04:43 +01:00
* Use money64 for ride prices and shop items * Use money64 for park entrance fee * Use money64 for gGuestInitialCash * Use money64 for upkeep costs * Use money64 for ride value * Use money64 for marketing campaign cost * Use money64 for object prices * Use money64 for land prices * Use money64 for guest expenditure * Replace remaining occurrences of money32 with money64 * Update replays * Bump network version --------- Co-authored-by: duncanspumpkin <duncans_pumpkin@hotmail.co.uk>
107 lines
3.0 KiB
C++
107 lines
3.0 KiB
C++
/*****************************************************************************
|
|
* Copyright (c) 2014-2023 OpenRCT2 developers
|
|
*
|
|
* For a complete list of all authors, please refer to contributors.md
|
|
* Interested in contributing? Visit https://github.com/OpenRCT2/OpenRCT2
|
|
*
|
|
* OpenRCT2 is licensed under the GNU General Public License version 3.
|
|
*****************************************************************************/
|
|
|
|
#pragma once
|
|
#include "../common.h"
|
|
#include "../interface/Cursors.h"
|
|
#include "../world/Location.hpp"
|
|
#include "ObjectTypes.h"
|
|
|
|
struct LargeSceneryText;
|
|
|
|
struct LargeSceneryTile
|
|
{
|
|
int16_t x_offset;
|
|
int16_t y_offset;
|
|
int16_t z_offset;
|
|
uint8_t z_clearance;
|
|
// CCCC WWWW 0SS0 0000
|
|
uint16_t flags;
|
|
};
|
|
|
|
enum
|
|
{
|
|
LARGE_SCENERY_TILE_FLAG_NO_SUPPORTS = 0x20,
|
|
LARGE_SCENERY_TILE_FLAG_ALLOW_SUPPORTS_ABOVE = 0x40,
|
|
};
|
|
|
|
struct LargeSceneryTextGlyph
|
|
{
|
|
uint8_t image_offset;
|
|
uint8_t width;
|
|
uint8_t height;
|
|
uint8_t Pad3;
|
|
};
|
|
|
|
// // TODO: Remove not required
|
|
struct RCTLargeSceneryText
|
|
{
|
|
struct
|
|
{
|
|
int16_t x, y;
|
|
} offset[2]; // 0x0
|
|
uint16_t max_width; // 0x8
|
|
uint16_t PadA; // 0xA
|
|
uint8_t flags; // 0xC
|
|
uint8_t num_images; // 0xD
|
|
LargeSceneryTextGlyph glyphs[256]; // 0xE
|
|
};
|
|
|
|
enum LARGE_SCENERY_TEXT_FLAGS
|
|
{
|
|
LARGE_SCENERY_TEXT_FLAG_VERTICAL = (1 << 0), // 0x1
|
|
LARGE_SCENERY_TEXT_FLAG_TWO_LINE = (1 << 1), // 0x2
|
|
};
|
|
|
|
struct LargeSceneryEntry
|
|
{
|
|
static constexpr auto kObjectType = ObjectType::LargeScenery;
|
|
|
|
StringId name;
|
|
uint32_t image;
|
|
CursorID tool_id;
|
|
uint16_t flags;
|
|
money64 price;
|
|
money64 removal_price;
|
|
LargeSceneryTile* tiles;
|
|
ObjectEntryIndex scenery_tab_id;
|
|
uint8_t scrolling_mode;
|
|
LargeSceneryText* text;
|
|
uint32_t text_image;
|
|
};
|
|
|
|
enum LARGE_SCENERY_FLAGS
|
|
{
|
|
LARGE_SCENERY_FLAG_HAS_PRIMARY_COLOUR = (1 << 0), // 0x1
|
|
LARGE_SCENERY_FLAG_HAS_SECONDARY_COLOUR = (1 << 1), // 0x2
|
|
LARGE_SCENERY_FLAG_3D_TEXT = (1 << 2), // 0x4
|
|
LARGE_SCENERY_FLAG_ANIMATED = (1 << 3), // 0x8
|
|
LARGE_SCENERY_FLAG_PHOTOGENIC = (1 << 4), // 0x10
|
|
LARGE_SCENERY_FLAG_IS_TREE = (1 << 5), // 0x20
|
|
LARGE_SCENERY_FLAG_HAS_TERTIARY_COLOUR = (1 << 6), // 0x40
|
|
LARGE_SCENERY_FLAG_HIDE_PRIMARY_REMAP_BUTTON = (1 << 7), // 0x80
|
|
LARGE_SCENERY_FLAG_HIDE_SECONDARY_REMAP_BUTTON = (1 << 8), // 0x100
|
|
};
|
|
|
|
struct LargeSceneryText
|
|
{
|
|
CoordsXY offset[2];
|
|
uint16_t max_width;
|
|
uint8_t flags;
|
|
uint16_t num_images;
|
|
LargeSceneryTextGlyph glyphs[256];
|
|
|
|
LargeSceneryText() = default;
|
|
explicit LargeSceneryText(const RCTLargeSceneryText& original);
|
|
const LargeSceneryTextGlyph* GetGlyph(char32_t codepoint) const;
|
|
const LargeSceneryTextGlyph& GetGlyph(char32_t codepoint, char32_t defaultCodepoint) const;
|
|
int32_t MeasureWidth(std::string_view text) const;
|
|
int32_t MeasureHeight(std::string_view text) const;
|
|
};
|