1 #ifndef BODYARCH_H 2 #define BODYARCH_H 3 4 #include "../../utils/randgen.h" 5 #include "../../utils/parser.h" 6 #include "../../utils/settings.h" 7 #include "../../utils/color.h" 8 #include "archbodypart.h" 9 #include "archconstraint.h" 10 #include "archmouth.h" 11 #include <vector> 12 #include <iostream> 13 #include <sstream> 14 15 using namespace std; 16 17 class BodyArch 18 { 19 public: 20 BodyArch(); 21 ~BodyArch(); 22 23 // load save architecture (serialize) 24 void buildArch(); 25 void setArch(string* content); 26 string* getArch(); 27 void copyFrom(const BodyArch* otherBody); 28 void mutate(unsigned int runs); 29 30 vector<archBodypart> archBodyparts; 31 vector<archConstraint> archConstraints; 32 vector<archMouth> archMouths; 33 Color color; 34 unsigned int retinasize; 35 36 float totalWeight; 37 38 int findBodypart(unsigned int id); 39 int findMouth( unsigned int id ); 40 private: 41 Parser *parseH; 42 RandGen *randgen; 43 Settings *settings; 44 45 float bodypartspacer; 46 void repositiontoConstraints( archBodypart* bp ); 47 void repositiontoConstraints( archMouth* bp ); 48 // mutation helpers 49 void addRandomMouth(); 50 void addRandomBodypart(); 51 void addRandomConstraint(unsigned int connID1, unsigned int connID2, bool isMouth); 52 void removeBodypart(unsigned int id); 53 void removeMouth(unsigned int id); 54 void randomConstraintPosition(archConstraint* co, unsigned int OneOrTwo, unsigned int connID); 55 56 unsigned int getUniqueBodypartID(); 57 unsigned int getUniqueConstraintID(); 58 59 string archBuffer; 60 }; 61 #endif 62