#pragma once #include "defaults/defaults.hpp" #include #include #include #include enum class WeaponType { KNIFE, LONGSWORD, SWORD, SPEER, HAMMER, BOW, SHIELD, }; enum class WeaponMaterial { WOOD, BONE }; struct WeaponTileSet { SDL_Texture* texture; SDL_Point size; WeaponMaterial material; }; struct WeaponSet { size_t weapon_tileset_id; SDL_FRect tileset_position; WeaponType type; float demage; float speed; }; extern std::vector weapon_sets; extern std::vector weapons; class Weapon { size_t weapon_index = (size_t)-1; static void AddWeaponFromTileset(size_t tileset_id, WeaponType type, float demage, float speed, float x, float y, float w, float h); public: WeaponType type = WeaponType::SWORD; WeaponMaterial material = WeaponMaterial::WOOD; SDL_FPoint dimension = {30.0f, 16.0f}; bool flip = false; Weapon(WeaponType type, WeaponMaterial material); static void Init(SDL_Renderer* renderer); void Draw(SDL_Renderer* renderer, float x, float y); };