#include "dude.h" #include "map.h" #include Dude::Dude(const Coord &_pos, Map *_map, int &_team) : m_pos(_pos), p_map(_map), m_team(_team), m_dead(false), m_success(true), m_inventory(EMPTY) { m_action.dir = NO_DIR; m_action.type = Action::WAIT; m_action.com_data = Com(); std::memset(&m_memory, 0, DUDE_MEMORY_SIZE); m_under = p_map->getPixel(m_pos).type; //if(PixelProperty::isResource(m_under)) // m_underResCount = p_map->getPixel(m_pos).data.nbRes; p_map->getPixel(m_pos).type = DUDE; p_map->getPixel(m_pos).data.dudePtr = this; } void Dude::move(Dir d) { p_map->getPixel(m_pos).type = m_under; //if(PixelProperty::isResource(m_under)) // p_map->getPixel(m_pos).data.nbRes = m_underResCount; p_map->getPixel(m_pos).data.dudePtr = NULL; m_pos += Coord(d); m_under = p_map->getPixel(m_pos).type; //if(PixelProperty::isResource(m_under)) // m_underResCount = p_map->getPixel(m_pos).data.nbRes; p_map->getPixel(m_pos).type = DUDE; p_map->getPixel(m_pos).data.dudePtr = this; p_map->toreillerLoop(m_pos); } void Dude::receiveComData(Dir dir, const char *data) { m_receivedComData = true; m_com_data.flag = dir; memcpy(m_com_data.data, data, COM_SIZE); } void Dude::update(BehaviorFunction func) { func(&m_action, m_memory, (Info*)this); m_receivedComData = false; } PixelType Dude::getNear(Dir d) const { return p_map->getPixel(Coord(d) + m_pos).type; } int Dude::getInfo(Dir d) const { return p_map->getPixel(Coord(d) + m_pos).data.nbRes; }