Skip to content

File Data.hpp

File List > core > Data.hpp

Go to the documentation of this file



#pragma once

#include <map>
#include <memory>
#include <set>
#include <string>
#include <vector>

namespace cse491 {

struct CellType {
  std::string name;  
  std::string desc;  
  char symbol;       
  std::set<std::string> properties{};  

  CellType& SetProperty(const std::string& property) {
    properties.insert(property);
    return *this;
  }

  CellType& RemoveProperty(const std::string& property) {
    properties.erase(property);
    return *this;
  }

  bool HasProperty(const std::string& property) const { return properties.count(property); }

  constexpr static char CELL_WALL[] = "wall";
  constexpr static char CELL_WATER[] = "water";
};

using type_options_t = std::vector<CellType>;

class ItemBase;
using item_map_t = std::map<size_t, std::unique_ptr<ItemBase>>;

class AgentBase;
using agent_map_t = std::map<size_t, std::unique_ptr<AgentBase>>;

enum class PropertyType { t_double, t_int, t_char, t_string, t_position, t_bool, t_other };

enum class WorldType { w_maze, w_second, w_generative, w_manual };

}  // namespace cse491