63 lines
1.6 KiB
C++
63 lines
1.6 KiB
C++
#include "dude.h"
|
|
#include "map.h"
|
|
#include <cstring>
|
|
|
|
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;
|
|
}
|