X-Git-Url: https://ruin.nu/git/?a=blobdiff_plain;f=src%2Fmodel.cpp;h=f801f12d6ec2f8dcc90288df63d5397a820a3a5a;hb=HEAD;hp=715d7c2f1a9f5a5ee068d88ca74e95726ad29ebc;hpb=d7c119fefaf9cce07974afbefb4b6a017689a961;p=germs.git diff --git a/src/model.cpp b/src/model.cpp index 715d7c2..f801f12 100644 --- a/src/model.cpp +++ b/src/model.cpp @@ -21,6 +21,8 @@ #include "model.h" #include "models.h" +#include + Model::Model(Models::ModelImpl* model): _impl(model){ } @@ -35,3 +37,20 @@ const char* Model::name() const{ bool operator<(const Model& lh,const Model& rh){ return &lh < &rh; } + +Model Model::modelFactory(const std::string& name){ + if (name == "X"){ + return Model(new Models::X()); + }else if(name == "Whirl"){ + return Model(new Models::Whirl()); + }else if(name == "Standard"){ + return Model(new Models::ModelImpl()); + }else if(name == "Zipper"){ + return Model(new Models::Zipper()); + }else if(name == "FatX"){ + return Model(new Models::FatX()); + }else if(name == "Cloud"){ + return Model(new Models::Cloud()); + } + throw std::invalid_argument(name + " is not a valid model"); +}