139 lines
3.2 KiB
C++
139 lines
3.2 KiB
C++
#include "equipment.h"
|
|
#include "macros.h"
|
|
#include "tabtargeting/actor_body.h"
|
|
|
|
DamageEvent::DamageEvent(int damage, ActorBody *source)
|
|
: compound_damage{damage}
|
|
, initial_damage{damage}
|
|
, source{source}
|
|
{}
|
|
|
|
void DamageStats::_bind_methods() {
|
|
BIND_PROPERTY(Variant::INT, damage_add);
|
|
BIND_PROPERTY(Variant::INT, damage_mul);
|
|
BIND_PROPERTY(Variant::INT, defend_add);
|
|
BIND_PROPERTY(Variant::INT, defend_mul);
|
|
}
|
|
|
|
DamageEvent DamageStats::apply(DamageEvent event, ActorBody *owner) {
|
|
if(owner == event.get_source()) {
|
|
event.compound_damage *= this->damage_mul;
|
|
event.compound_damage += this->damage_add;
|
|
} else {
|
|
event.compound_damage *= this->defend_mul;
|
|
event.compound_damage += this->defend_add;
|
|
}
|
|
return event;
|
|
}
|
|
|
|
void DamageStats::set_damage_add(int val) {
|
|
this->damage_add = val;
|
|
}
|
|
int DamageStats::get_damage_add() const {
|
|
return this->damage_add;
|
|
}
|
|
void DamageStats::set_damage_mul(float val) {
|
|
this->damage_mul = val;
|
|
}
|
|
float DamageStats::get_damage_mul() const {
|
|
return this->damage_mul;
|
|
}
|
|
void DamageStats::set_defend_add(int val) {
|
|
this->defend_add = val;
|
|
}
|
|
int DamageStats::get_defend_add() const {
|
|
return this->defend_add;
|
|
}
|
|
void DamageStats::set_defend_mul(float val) {
|
|
this->defend_mul = val;
|
|
}
|
|
float DamageStats::get_defend_mul() const {
|
|
return this->defend_mul;
|
|
}
|
|
|
|
void EquipItem::_bind_methods() {
|
|
BIND_HPROPERTY(Variant::OBJECT, stats, PROPERTY_HINT_RESOURCE_TYPE, "DamageStats");
|
|
}
|
|
|
|
DamageEvent EquipItem::apply(DamageEvent event, ActorBody *owner) {
|
|
return this->stats->apply(event, owner);
|
|
}
|
|
|
|
void EquipItem::set_stats(Ref<DamageStats> stats) {
|
|
this->stats = stats;
|
|
}
|
|
|
|
Ref<DamageStats> EquipItem::get_stats() const {
|
|
return this->stats;
|
|
}
|
|
|
|
void Weapon::_bind_methods() {
|
|
BIND_PROPERTY(Variant::INT, base_damage);
|
|
}
|
|
|
|
void Weapon::set_base_damage(int amount) {
|
|
this->base_damage = amount;
|
|
}
|
|
|
|
int Weapon::get_base_damage() const {
|
|
return this->base_damage;
|
|
}
|
|
|
|
DamageEvent Weapon::create_base_damage_event(ActorBody *source) {
|
|
return DamageEvent(this->base_damage, source);
|
|
}
|
|
|
|
void Armor::_bind_methods() {
|
|
BIND_HPROPERTY(Variant::INT, armor_type, PROPERTY_HINT_ENUM, "Helmet, Chest, Legs");
|
|
}
|
|
void Armor::set_armor_type(int type) {
|
|
this->type = ArmorType(type);
|
|
}
|
|
int Armor::get_armor_type() const {
|
|
return this->type;
|
|
}
|
|
|
|
void Equipment::_bind_methods() {
|
|
BIND_HPROPERTY(Variant::OBJECT, weapon, PROPERTY_HINT_RESOURCE_TYPE, "Weapon");
|
|
BIND_HPROPERTY(Variant::OBJECT, helmet, PROPERTY_HINT_RESOURCE_TYPE, "Armor");
|
|
BIND_HPROPERTY(Variant::OBJECT, chest, PROPERTY_HINT_RESOURCE_TYPE, "Armor");
|
|
BIND_HPROPERTY(Variant::OBJECT, legs, PROPERTY_HINT_RESOURCE_TYPE, "Armor");
|
|
}
|
|
|
|
DamageEvent Equipment::apply(DamageEvent event, ActorBody *target) {
|
|
|
|
}
|
|
|
|
void Equipment::set_weapon(Ref<Weapon> weapon) {
|
|
this->weapon = weapon;
|
|
}
|
|
|
|
Ref<Weapon> Equipment::get_weapon() const {
|
|
return this->weapon;
|
|
}
|
|
|
|
void Equipment::set_helmet(Ref<Armor> helmet) {
|
|
this->helmet = helmet;
|
|
}
|
|
|
|
Ref<Armor> Equipment::get_helmet() const {
|
|
return this->helmet;
|
|
}
|
|
|
|
void Equipment::set_chest(Ref<Armor> chest) {
|
|
this->chest = chest;
|
|
}
|
|
|
|
Ref<Armor> Equipment::get_chest() const {
|
|
return this->chest;
|
|
}
|
|
|
|
void Equipment::set_legs(Ref<Armor> legs) {
|
|
this->legs = legs;
|
|
}
|
|
|
|
Ref<Armor> Equipment::get_legs() const {
|
|
return this->legs;
|
|
}
|
|
|