#pragma once // Material types for building. enum class Material : int { Wood = 0, Background = 1, Rope = 2, COUNT = 3, }; struct MaterialInfo { const char* name; float half_w, half_h; // half-size of placed piece float metal_cost; float energy_cost; float r, g, b; // color float alpha; // 1.0 = opaque, 0.4 = semi-transparent bool blocks_projectiles; }; inline MaterialInfo material_info(Material m) { switch (m) { case Material::Wood: return {"Wood", 1.0f, 0.4f, 10.0f, 5.0f, 0.55f, 0.35f, 0.15f, 1.0f, true}; case Material::Background: return {"BgBrace", 1.0f, 0.4f, 5.0f, 3.0f, 0.45f, 0.40f, 0.30f, 0.4f, false}; case Material::Rope: return {"Rope", 0.0f, 0.0f, 3.0f, 2.0f, 0.15f, 0.12f, 0.10f, 1.0f, false}; default: return {"???", 1.0f, 0.4f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f, true}; } }