mapcreator git · master
SDL3 2.5D game and engine using assets, with map editor
C++ 99.3%git clone https://git.christianimmanuel.de/sdl-graphics/mapcreator.gitwget https://git.christianimmanuel.de/sdl-graphics/mapcreator/archive/mapcreator.tar.gzsrc/building/building.hpp raw
#pragma once
#include <SDL3/SDL.h>
#include <map>
#include <variant>
#include <optional>
#include "defaults/input.hpp"
#include "map/tile.hpp"
#include "objects/object.hpp"
#include "building/building_data.hpp"
#include "inventory/inventory.hpp"
enum class BuildingStatus : uint32_t {
CONSTRUCTING,
CONSTRUCTED,
DECONSTRUCT
};
enum class CharacterMenuType;
class Building : public Object {
public:
std::unordered_map<ResourceType, int> cost_fulfilled;
std::unordered_map<ResourceType, float> fractional_buffer;
static BuildingType selected_building_type;
static int draw_menu_curser_grid;
static int draw_menu_curser_grid_active;
float building_time = 0;
BuildingStatus building_status = BuildingStatus::CONSTRUCTING;
BuildingType building_type;
BuildingData_s* data;
Building( // OBJECT
ObjectType ot,
ObjectCategory oc,
TileType tt,
size_t ts_id,
size_t tso_id,
SDL_Point wtp,
SDL_Point d,
int zi,
// BUILDING
BuildingType bt
)
: Object(ot, oc, tt, ts_id, tso_id, wtp, d, zi), building_type(bt) {
data = BuildingData::get_BuildingDataByType(bt);
building_time = data->building_duration;
}
static BuildingStatus construction_mode;
static Building*
get_BuildingById(size_t id);
void
Draw(SDL_Renderer* renderer, SDL_FPoint position, bool is_transparent = false, int transparency = false) override;
bool
Build(Inventory*);
bool
Deconstruct(Inventory*);
bool
has_Menu();
CharacterMenuType
open_Menu(Character* player);
void
close_Menu();
};