KlassischeKeplerKriege/game/state/planet.hpp

47 lines
1.4 KiB
C++

#pragma once
#include "object.hpp"
#include <cstdlib>
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
};
}