/*****************************************************************************
 * Copyright (c) 2014-2025 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 "../core/Money.hpp"
#include "../localisation/StringIdType.h"
#include "ObjectTypes.h"

enum class CursorID : uint8_t;

enum class PathAdditionDrawType : uint8_t
{
    Light,
    Bin,
    Bench,
    JumpingFountain,
};

enum
{
    PATH_ADDITION_FLAG_IS_BIN = 1 << 0,
    PATH_ADDITION_FLAG_IS_BENCH = 1 << 1,
    PATH_ADDITION_FLAG_BREAKABLE = 1 << 2,
    PATH_ADDITION_FLAG_LAMP = 1 << 3,
    PATH_ADDITION_FLAG_JUMPING_FOUNTAIN_WATER = 1 << 4,
    PATH_ADDITION_FLAG_JUMPING_FOUNTAIN_SNOW = 1 << 5,
    PATH_ADDITION_FLAG_DONT_ALLOW_ON_QUEUE = 1 << 6,
    PATH_ADDITION_FLAG_DONT_ALLOW_ON_SLOPE = 1 << 7,
    PATH_ADDITION_FLAG_IS_QUEUE_SCREEN = 1 << 8
};

struct PathAdditionEntry
{
    static constexpr auto kObjectType = ObjectType::pathAdditions;

    StringId name;
    uint32_t image;
    uint16_t flags;
    PathAdditionDrawType draw_type;
    CursorID tool_id;
    money64 price;
    ObjectEntryIndex scenery_tab_id;
};
