diff options
Diffstat (limited to 'src/game/build_system.hpp')
| -rw-r--r-- | src/game/build_system.hpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/src/game/build_system.hpp b/src/game/build_system.hpp new file mode 100644 index 0000000..0bf615d --- /dev/null +++ b/src/game/build_system.hpp @@ -0,0 +1,32 @@ +#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}; + } +} |
