#pragma once #include "object.hpp" #include namespace game { class Planet : public Object { public: /** * Planets are build out of one material. * TODO: support mixture or multiple material per planet. */ enum class Material { Rock, Metal, Sand, Gas, Ice, Water, Sun }; Planet(const glm::vec2 &pos, int id, float r) : Planet(pos, id, r, Material::Rock) {} Planet(const glm::vec2 &pos, int id, float r, Material mat) : Object(pos, r), id(id), material(mat), seed(rand()) {} glm::vec3 getColor() const { switch (material) { case Material::Rock: return {x : 0.19, y : 0.19, z : 0.19}; case Material::Metal: return {x : 0.19, y : 0.19, z : 0.19}; case Material::Sand: return {x : 0.19, y : 0.19, z : 0.19}; case Material::Gas: return {x : 0.19, y : 0.19, z : 0.19}; case Material::Ice: return {x : 0.19, y : 0.19, z : 0.19}; case Material::Water: return {x : 0.19, y : 0.40, z : 0.72}; case Material::Sun: return {x : 0.64, y : 0.67, z : 0.19}; } return {x : 0.1, y : 0.1, z : 0.1}; } int id; Material material; // for rendering and physics (can fly through sun and // outer gas planets) int seed; // just for rendering variation }; }