Vessel interaction update
This commit is contained in:
parent
e24554a0a0
commit
4a3951938a
2 changed files with 27 additions and 2 deletions
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
entity_id vessel_entity::__global_id = 0;
|
entity_id vessel_entity::__global_id = 0;
|
||||||
|
|
||||||
vessel_entity::vessel_entity(entity_id harbor_id, unsigned int capacity) : _harbor_id(harbor_id), _capacity(capacity) {
|
vessel_entity::vessel_entity(entity_id skipper_id, entity_id harbor_id, unsigned int capacity) : _skipper_id(skipper_id), _harbor_id(harbor_id), _capacity(capacity) {
|
||||||
this->_id = ++vessel_entity::__global_id;
|
this->_id = ++vessel_entity::__global_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -23,6 +23,27 @@ const QVector<cargo_entity> vessel_entity::cargo() {
|
||||||
return this->_cargo;
|
return this->_cargo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void vessel_entity::add_cargo(cargo_entity object, bool &success) {
|
||||||
|
success = ((int)this->_capacity - (int)object.volume()) > 0;
|
||||||
|
if (success) {
|
||||||
|
this->_cargo.push_back(object);
|
||||||
|
this->_capacity -= object.volume();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void vessel_entity::withdraw_cargo(entity_id oid, bool &success) {
|
||||||
|
success = false;
|
||||||
|
auto vit = this->_cargo.begin();
|
||||||
|
for (; vit != this->_cargo.end(); vit++) {
|
||||||
|
if ((*vit).id() == oid) {
|
||||||
|
this->_capacity += (*vit).volume();
|
||||||
|
this->_cargo.erase(vit);
|
||||||
|
success = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void vessel_entity::serialize(QDataStream &output) {
|
void vessel_entity::serialize(QDataStream &output) {
|
||||||
output << this->_id << this->_harbor_id;
|
output << this->_id << this->_harbor_id;
|
||||||
output << this->_capacity << this->_cargo.size();
|
output << this->_capacity << this->_cargo.size();
|
||||||
|
|
|
||||||
|
|
@ -11,19 +11,23 @@ private:
|
||||||
static entity_id __global_id;
|
static entity_id __global_id;
|
||||||
|
|
||||||
entity_id _id;
|
entity_id _id;
|
||||||
|
entity_id _skipper_id;
|
||||||
entity_id _harbor_id;
|
entity_id _harbor_id;
|
||||||
unsigned int _capacity;
|
unsigned int _capacity;
|
||||||
QVector<cargo_entity> _cargo;
|
QVector<cargo_entity> _cargo;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
vessel_entity() = default;
|
vessel_entity() = default;
|
||||||
vessel_entity(entity_id harbor_id, unsigned int capacity);
|
vessel_entity(entity_id skipper_id, entity_id harbor_id, unsigned int capacity);
|
||||||
|
|
||||||
entity_id id() const;
|
entity_id id() const;
|
||||||
entity_id harbor() const;
|
entity_id harbor() const;
|
||||||
unsigned int capacity() const;
|
unsigned int capacity() const;
|
||||||
const QVector<cargo_entity> cargo();
|
const QVector<cargo_entity> cargo();
|
||||||
|
|
||||||
|
void add_cargo(cargo_entity object, bool &success);
|
||||||
|
void withdraw_cargo(entity_id oid, bool &success);
|
||||||
|
|
||||||
void serialize(QDataStream &output);
|
void serialize(QDataStream &output);
|
||||||
void deserialize(QDataStream &input);
|
void deserialize(QDataStream &input);
|
||||||
static void preloadGlobalId(entity_id gid);
|
static void preloadGlobalId(entity_id gid);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue