Program Listing for File base_block_pickup.hpp
↰ Return to documentation for file (cosm/controller/operations/base_block_pickup.hpp)
#pragma once
/*******************************************************************************
 * Includes
 ******************************************************************************/
#include "rcppsw/types/type_uuid.hpp"
#include "rcppsw/types/timestep.hpp"
#include "rcppsw/er/client.hpp"
#include "cosm/controller/block_carrying_controller.hpp"
/*******************************************************************************
 * Namespaces
 ******************************************************************************/
namespace cosm::controller::operations {
/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class base_block_pickup : public rer::client<base_block_pickup> {
 public:
  base_block_pickup(crepr::base_block3D* block,
                    const rtypes::type_uuid& robot_id,
                    const rtypes::timestep& t);
  virtual ~base_block_pickup(void) = default;
  /* not copy constructible/assignable by default */
  base_block_pickup(const base_block_pickup&) = delete;
  base_block_pickup& operator=(const base_block_pickup&) = delete;
  void visit(controller::block_carrying_controller& controller);
  crepr::base_block3D* block(void) const { return m_block; }
  const rtypes::type_uuid& robot_id(void) const { return mc_robot_id; }
 private:
  /* clang-format off */
  const rtypes::timestep  mc_timestep;
  const rtypes::type_uuid mc_robot_id;
  crepr::base_block3D*    m_block;
  /* clang-format on */
};
} /* namespace cosm::controller::operations */