Antkeeper  0.0.1
phenome.cpp
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2023 Christopher J. Howard
3  *
4  * This file is part of Antkeeper source code.
5  *
6  * Antkeeper source code is free software: you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation, either version 3 of the License, or
9  * (at your option) any later version.
10  *
11  * Antkeeper source code is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with Antkeeper source code. If not, see <http://www.gnu.org/licenses/>.
18  */
19 
20 #include "game/ant/phenome.hpp"
21 
22 namespace ant {
23 
25  phenome()
26 {
27  if (genome.antennae)
28  if (auto it = genome.antennae->phenes.find(caste); it != genome.antennae->phenes.end())
29  antennae = &it->second;
30  if (genome.body_size)
31  if (auto it = genome.body_size->phenes.find(caste); it != genome.body_size->phenes.end())
32  body_size = &it->second;
33  if (genome.cocoon)
35  if (genome.diet)
36  diet = &genome.diet->phene;
37  if (genome.egg)
38  egg = &genome.egg->phene;
39  if (genome.eyes)
40  if (auto it = genome.eyes->phenes.find(caste); it != genome.eyes->phenes.end())
41  eyes = &it->second;
46  if (genome.gaster)
47  if (auto it = genome.gaster->phenes.find(caste); it != genome.gaster->phenes.end())
48  gaster = &it->second;
49  if (genome.head)
50  if (auto it = genome.head->phenes.find(caste); it != genome.head->phenes.end())
51  head = &it->second;
52  if (genome.larva)
53  larva = &genome.larva->phene;
54  if (genome.legs)
55  if (auto it = genome.legs->phenes.find(caste); it != genome.legs->phenes.end())
56  legs = &it->second;
57  if (genome.mandibles)
58  if (auto it = genome.mandibles->phenes.find(caste); it != genome.mandibles->phenes.end())
59  mandibles = &it->second;
60  if (genome.mesosoma)
61  if (auto it = genome.mesosoma->phenes.find(caste); it != genome.mesosoma->phenes.end())
62  mesosoma = &it->second;
63  if (genome.nest_site)
65  if (genome.ocelli)
66  if (auto it = genome.ocelli->phenes.find(caste); it != genome.ocelli->phenes.end())
67  ocelli = &it->second;
68  if (genome.pigmentation)
69  if (auto it = genome.pigmentation->phenes.find(caste); it != genome.pigmentation->phenes.end())
70  pigmentation = &it->second;
71  if (genome.pilosity)
72  if (auto it = genome.pilosity->phenes.find(caste); it != genome.pilosity->phenes.end())
73  pilosity = &it->second;
74  if (genome.sculpturing)
75  if (auto it = genome.sculpturing->phenes.find(caste); it != genome.sculpturing->phenes.end())
76  sculpturing = &it->second;
77  if (genome.sting)
78  if (auto it = genome.sting->phenes.find(caste); it != genome.sting->phenes.end())
79  sting = &it->second;
80  if (genome.waist)
81  if (auto it = genome.waist->phenes.find(caste); it != genome.waist->phenes.end())
82  waist = &it->second;
83  if (genome.wings)
84  if (auto it = genome.wings->phenes.find(caste); it != genome.wings->phenes.end())
85  wings = &it->second;
86 }
87 
89  antennae(nullptr),
90  body_size(nullptr),
91  cocoon(nullptr),
92  diet(nullptr),
93  egg(nullptr),
94  eyes(nullptr),
95  foraging_time(nullptr),
96  founding_mode(nullptr),
97  gaster(nullptr),
98  head(nullptr),
99  larva(nullptr),
100  legs(nullptr),
101  mandibles(nullptr),
102  mesosoma(nullptr),
103  nest_site(nullptr),
104  ocelli(nullptr),
105  pigmentation(nullptr),
106  pilosity(nullptr),
107  sculpturing(nullptr),
108  sting(nullptr),
109  waist(nullptr),
110  wings(nullptr)
111 {}
112 
113 } // namespace ant
polyphenic_gene< phene::pigmentation > pigmentation
Polyphenic pigmentation gene.
polyphenic_gene< phene::head > head
Polyphenic head gene.
Definition: gene/head.hpp:30
polyphenic_gene< phene::mandibles > mandibles
Polyphenic mandibles gene.
polyphenic_gene< phene::gaster > gaster
Polyphenic gaster gene.
Definition: gene/gaster.hpp:30
monophenic_gene< phene::diet > diet
Monophenic diet gene.
Definition: gene/diet.hpp:30
polyphenic_gene< phene::wings > wings
Polyphenic wings gene.
Definition: gene/wings.hpp:30
polyphenic_gene< phene::ocelli > ocelli
Polyphenic ocelli gene.
Definition: gene/ocelli.hpp:30
polyphenic_gene< phene::eyes > eyes
Polyphenic eyes gene.
Definition: gene/eyes.hpp:30
polyphenic_gene< phene::pilosity > pilosity
Polyphenic pilosity gene.
polyphenic_gene< phene::mesosoma > mesosoma
Polyphenic mesosoma gene.
polyphenic_gene< phene::sting > sting
Polyphenic sting gene.
Definition: gene/sting.hpp:30
monophenic_gene< phene::egg > egg
Monophenic egg gene.
Definition: gene/egg.hpp:30
polyphenic_gene< phene::legs > legs
Polyphenic legs gene.
Definition: gene/legs.hpp:30
polyphenic_gene< phene::body_size > body_size
Polyphenic body size gene.
polyphenic_gene< phene::sculpturing > sculpturing
Polyphenic sculpturing gene.
monophenic_gene< phene::cocoon > cocoon
Monophenic cocoon gene.
Definition: gene/cocoon.hpp:30
monophenic_gene< phene::larva > larva
Monophenic larva gene.
Definition: gene/larva.hpp:30
polyphenic_gene< phene::antennae > antennae
Polyphenic antennae gene.
monophenic_gene< phene::foraging_time > foraging_time
Monophenic foraging time gene.
polyphenic_gene< phene::waist > waist
Polyphenic waist gene.
Definition: gene/waist.hpp:30
nest_site
Colony nest site phene.
founding_mode
Colony founding mode phene.
Definition: caste.hpp:25
caste
Ant caste enumerations.
Definition: caste.hpp:33
std::unordered_map< caste, T > phenes
Caste-specific phene definitions.
Complete set of ant genes.
Definition: genome.hpp:52
const gene::nest_site * nest_site
Definition: genome.hpp:70
const gene::egg * egg
Definition: genome.hpp:60
const gene::founding_mode * founding_mode
Definition: genome.hpp:63
const gene::sculpturing * sculpturing
Definition: genome.hpp:74
const gene::gaster * gaster
Definition: genome.hpp:64
const gene::legs * legs
Definition: genome.hpp:67
const gene::larva * larva
Definition: genome.hpp:66
const gene::sting * sting
Definition: genome.hpp:75
const gene::head * head
Definition: genome.hpp:65
const gene::body_size * body_size
Definition: genome.hpp:57
const gene::ocelli * ocelli
Definition: genome.hpp:71
const gene::mesosoma * mesosoma
Definition: genome.hpp:69
const gene::cocoon * cocoon
Definition: genome.hpp:58
const gene::diet * diet
Definition: genome.hpp:59
const gene::eyes * eyes
Definition: genome.hpp:61
const gene::waist * waist
Definition: genome.hpp:76
const gene::pigmentation * pigmentation
Definition: genome.hpp:72
const gene::mandibles * mandibles
Definition: genome.hpp:68
const gene::pilosity * pilosity
Definition: genome.hpp:73
const gene::antennae * antennae
Definition: genome.hpp:56
const gene::wings * wings
Definition: genome.hpp:77
const gene::foraging_time * foraging_time
Definition: genome.hpp:62
Complete set of ant phenes.
Definition: phenome.hpp:54
phenome()
Constructs an empty phenome.
Definition: phenome.cpp:88
const phene::legs * legs
Definition: phenome.hpp:77
const phene::egg * egg
Definition: phenome.hpp:70
const phene::mandibles * mandibles
Definition: phenome.hpp:78
const phene::pigmentation * pigmentation
Definition: phenome.hpp:82
const phene::body_size * body_size
Definition: phenome.hpp:67
const phene::founding_mode * founding_mode
Definition: phenome.hpp:73
const phene::pilosity * pilosity
Definition: phenome.hpp:83
const phene::sting * sting
Definition: phenome.hpp:85
const phene::foraging_time * foraging_time
Definition: phenome.hpp:72
const phene::eyes * eyes
Definition: phenome.hpp:71
const phene::mesosoma * mesosoma
Definition: phenome.hpp:79
const phene::diet * diet
Definition: phenome.hpp:69
const phene::cocoon * cocoon
Definition: phenome.hpp:68
const phene::antennae * antennae
Definition: phenome.hpp:66
const phene::nest_site * nest_site
Definition: phenome.hpp:80
const phene::head * head
Definition: phenome.hpp:75
const phene::ocelli * ocelli
Definition: phenome.hpp:81
const phene::sculpturing * sculpturing
Definition: phenome.hpp:84
const phene::waist * waist
Definition: phenome.hpp:86
const phene::gaster * gaster
Definition: phenome.hpp:74
const phene::larva * larva
Definition: phenome.hpp:76
const phene::wings * wings
Definition: phenome.hpp:87