2014-12-16 13:12:56 +00:00
|
|
|
#include "unit.h"
|
|
|
|
|
2014-12-16 13:12:58 +00:00
|
|
|
// Unit types
|
2014-12-16 13:12:56 +00:00
|
|
|
#include "unitv.h"
|
|
|
|
|
2014-12-16 13:13:00 +00:00
|
|
|
namespace
|
|
|
|
{
|
|
|
|
// Helper function for generating unique unit ids during static init
|
|
|
|
unit_id_t get_unique_unit_id()
|
|
|
|
{
|
|
|
|
static unit_id_t p = 0;
|
|
|
|
return p++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
CUnit::CUnit()
|
|
|
|
: unit_id ( get_unique_unit_id() )
|
|
|
|
, team_id ( team_id_invalid )
|
|
|
|
, player_id ( player_id_invalid )
|
|
|
|
, unit_vis ( unitVis_invalid )
|
|
|
|
{
|
|
|
|
|
|
|
|
};
|
|
|
|
|
2014-12-16 13:12:56 +00:00
|
|
|
std::unique_ptr<CUnit> CUnit::getUnitFromVis( unitVis_c vis )
|
|
|
|
{
|
|
|
|
switch( vis )
|
|
|
|
{
|
2014-12-16 13:12:58 +00:00
|
|
|
// Match with any image for a V
|
2014-12-16 13:12:56 +00:00
|
|
|
case '^':
|
|
|
|
case '>':
|
|
|
|
case 'v':
|
|
|
|
case '<':
|
|
|
|
{
|
2014-12-16 13:12:58 +00:00
|
|
|
// Create a V
|
2014-12-16 13:12:56 +00:00
|
|
|
std::unique_ptr<CUnit> p = std::unique_ptr<CUnit>(new CUnitV);
|
|
|
|
if( (bool)p && p->setFromVisual(vis) )
|
|
|
|
{
|
|
|
|
return std::move(p);
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2014-12-16 13:12:58 +00:00
|
|
|
// No unit found, return nullptr
|
2014-12-16 13:12:56 +00:00
|
|
|
return std::move(std::unique_ptr<CUnit>(nullptr));
|
|
|
|
}
|