Program Listing for File EfficientHost.h

Return to documentation for file (source/efficient_mode/EfficientHost.h)

#ifndef EFFHOST_H
#define EFFHOST_H

#include "../default_mode/Host.h"
#include "EfficientWorld.h"

class EfficientHost: public Host {
protected:

  double efficiency;

  emp::Ptr<EfficientWorld> my_world = NULL;
public:
  EfficientHost(emp::Ptr<emp::Random> _random, emp::Ptr<EfficientWorld> _world, emp::Ptr<SymConfigBase> _config,
  double _intval =0.0, emp::vector<emp::Ptr<Organism>> _syms = {},
  emp::vector<emp::Ptr<Organism>> _repro_syms = {},
  double _points = 0.0, double _efficient = 0.1) :
  Host(_random, _world, _config, _intval, _syms, _repro_syms, _points) {
    efficiency = _efficient;
    my_world = _world;
  }


  EfficientHost(const EfficientHost &) = default;


  EfficientHost(EfficientHost &&) = default;


  EfficientHost() = default;

  std::string const GetName() {
    return  "EfficientHost";
  }

  void SetEfficiency(double _in) {
    if(_in > 1 || _in < 0) throw "Invalid efficiency chance. Must be between 0 and 1 (inclusive)";
    efficiency = _in;
  }

  double GetEfficiency() {return efficiency;}

  emp::Ptr<Organism> MakeNew(){
    emp::Ptr<EfficientHost> host_baby = emp::NewPtr<EfficientHost>(random, my_world, my_config, GetIntVal());
    host_baby->SetEfficiency(GetEfficiency());
    return host_baby;
  }
};
#endif