Added lots of security using asserts.
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2020-03-22 13:42:26 +01:00
parent 970ca8ddd5
commit 899e432271
35 changed files with 138 additions and 56 deletions

View File

@@ -1,11 +1,14 @@
#include "CreatureSpecies.hpp"
#include <Arbutils/Assert.hpp>
using namespace CreatureLib::Library;
CreatureSpecies::CreatureSpecies(uint16_t id, const ConstString& name, const SpeciesVariant* defaultVariant,
float genderRatio, const ConstString& growthRate, uint8_t captureRate)
: _name(name), _id(id), _genderRate(genderRatio), _growthRate(growthRate), _captureRate(captureRate),
_variants({{"default"_cnc, defaultVariant}}) {}
_variants({{"default"_cnc, defaultVariant}}) {
AssertNotNull(defaultVariant)
}
bool CreatureSpecies::HasVariant(const ConstString& name) const { return _variants.find(name) != _variants.end(); }

View File

@@ -1,6 +1,7 @@
#ifndef CREATURELIB_LEARNABLEATTACKS_HPP
#define CREATURELIB_LEARNABLEATTACKS_HPP
#include <Arbutils/Assert.hpp>
#include <unordered_map>
#include <vector>
#include "../Attacks/AttackData.hpp"
@@ -11,7 +12,12 @@ namespace CreatureLib::Library {
public:
LearnableAttacks(size_t levelAttackCapacity)
: _learnedByLevel(std::unordered_map<uint8_t, std::vector<const AttackData*>>(levelAttackCapacity)) {}
: _learnedByLevel(std::unordered_map<uint8_t, std::vector<const AttackData*>>(levelAttackCapacity)) {
for (auto kv : _learnedByLevel) {
for (auto attack : kv.second)
AssertNotNull(attack)
}
}
void AddLevelMove(uint8_t level, const AttackData* attack);

View File

@@ -37,7 +37,7 @@ const CreatureLib::Library::LearnableAttacks* CreatureLib::Library::SpeciesVaria
CreatureLib::Library::SpeciesVariant::SpeciesVariant(ConstString name, float height, float weight,
uint32_t baseExperience, std::vector<uint8_t> types,
CreatureLib::Library::StatisticSet<uint16_t> baseStats,
const CreatureLib::Library::StatisticSet<uint16_t>& baseStats,
std::vector<ConstString> talents,
std::vector<ConstString> secretTalents,
const LearnableAttacks* attacks)

View File

@@ -23,14 +23,14 @@ namespace CreatureLib::Library {
private:
std::vector<uint8_t> _types;
const Library::StatisticSet<uint16_t> _baseStatistics;
const Library::StatisticSet<uint16_t>& _baseStatistics;
std::vector<ConstString> _talents;
std::vector<ConstString> _secretTalents;
const LearnableAttacks* _attacks;
public:
SpeciesVariant(ConstString name, float height, float weight, uint32_t baseExperience,
std::vector<uint8_t> types, Library::StatisticSet<uint16_t> baseStats,
std::vector<uint8_t> types, const Library::StatisticSet<uint16_t>& baseStats,
std::vector<ConstString> talents, std::vector<ConstString> secretTalents,
const LearnableAttacks* attacks);