/* * Copyright (C) 2021 Christopher J. Howard * * This file is part of Antkeeper source code. * * Antkeeper source code is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Antkeeper source code is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Antkeeper source code. If not, see . */ #include "game/ant/morphogenesis.hpp" #include "render/material.hpp" namespace game { namespace ant { static render::model* generate_queen(const ant::breed& breed); static render::model* generate_worker(const ant::breed& breed); static render::model* generate_soldier(const ant::breed& breed); static render::model* generate_male(const ant::breed& breed); static render::material* build_material(const ant::breed& breed); static render::model* build_model ( render::material* material, render::model* antennae, render::model* eyes, render::model* forewings, render::model* gaster, render::model* head, render::model* hindwings, render::model* legs, render::model* mandibles, render::model* mesosoma, render::model* ocelli, render::model* sting, render::model* waist ); render::model* morphogenesis(const ant::breed& breed, ant::caste caste) { switch (caste) { case ant::caste::queen: return generate_queen(breed); case ant::caste::worker: return generate_worker(breed); case ant::caste::soldier: return generate_soldier(breed); case ant::caste::male: return generate_male(breed); } return nullptr; } render::model* generate_queen(const ant::breed& breed) { return nullptr; } render::model* generate_worker(const ant::breed& breed) { // Get material parameters // Build material render::material* material = build_material(breed); // Get worker body part models render::model* antennae_model = breed.antennae->model; render::model* eyes_model = breed.eyes->model; render::model* gaster_model = breed.gaster->model; render::model* head_model = breed.head->model; render::model* legs_model = breed.legs->model; render::model* mandibles_model = breed.mandibles->model; render::model* mesosoma_model = breed.mesosoma->model; render::model* sting_model = breed.sting->model; render::model* waist_model = breed.waist->model; // Build worker model render::model* model = build_model ( material, antennae_model, eyes_model, nullptr, gaster_model, head_model, nullptr, legs_model, mandibles_model, mesosoma_model, nullptr, sting_model, waist_model ); return model; } render::model* generate_soldier(const ant::breed& breed) { return nullptr; } render::model* generate_male(const ant::breed& breed) { return nullptr; } render::material* build_material(const ant::breed& breed) { return nullptr; } render::model* build_model ( render::material* material, render::model* antennae, render::model* eyes, render::model* forewings, render::model* gaster, render::model* head, render::model* hindwings, render::model* legs, render::model* mandibles, render::model* mesosoma, render::model* ocelli, render::model* sting, render::model* waist ) { return nullptr; } } // namespace ant } // namespace game