Add nullability to large parts of the codebase
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
@@ -36,7 +36,7 @@ namespace CreatureLib::Battling {
|
||||
|
||||
virtual ~BattleScript() = default;
|
||||
|
||||
virtual BattleScript* Clone(const ArbUt::OptionalBorrowedPtr<void>& owner) = 0;
|
||||
virtual BattleScript* non_null Clone(const ArbUt::OptionalBorrowedPtr<void>& owner) = 0;
|
||||
|
||||
virtual void Stack(){};
|
||||
virtual void OnRemove(){};
|
||||
@@ -45,82 +45,89 @@ namespace CreatureLib::Battling {
|
||||
|
||||
#define _par_ [[maybe_unused]]
|
||||
|
||||
virtual void OnInitialize(_par_ const BattleLibrary*,
|
||||
virtual void OnInitialize(_par_ const BattleLibrary* non_null,
|
||||
_par_ const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters){};
|
||||
virtual void OnBeforeTurn(_par_ const BaseTurnChoice* choice){};
|
||||
virtual void OnBeforeTurn(_par_ const BaseTurnChoice* non_null choice){};
|
||||
|
||||
virtual void ChangeSpeed(_par_ BaseTurnChoice* choice, _par_ u32* speed){};
|
||||
virtual void ChangePriority(_par_ AttackTurnChoice* choice, _par_ i8* priority){};
|
||||
virtual void ChangeAttack(_par_ AttackTurnChoice* choice, _par_ ArbUt::StringView* outAttack){};
|
||||
virtual void ModifyNumberOfHits(_par_ AttackTurnChoice* choice, _par_ u8* numberOfHits){};
|
||||
virtual void PreventAttack(_par_ ExecutingAttack* attack, _par_ bool* outResult){};
|
||||
virtual void FailAttack(_par_ ExecutingAttack* attack, _par_ bool* outFailed){};
|
||||
virtual void StopBeforeAttack(_par_ ExecutingAttack* attack, _par_ bool* outResult){};
|
||||
virtual void OnBeforeAttack(_par_ ExecutingAttack* attack){};
|
||||
virtual void ChangeSpeed(_par_ BaseTurnChoice* non_null choice, _par_ u32* non_null speed){};
|
||||
virtual void ChangePriority(_par_ AttackTurnChoice* non_null choice, _par_ i8* non_null priority){};
|
||||
virtual void ChangeAttack(_par_ AttackTurnChoice* non_null choice,
|
||||
_par_ ArbUt::StringView* non_null outAttack){};
|
||||
virtual void ModifyNumberOfHits(_par_ AttackTurnChoice* non_null choice, _par_ u8* non_null numberOfHits){};
|
||||
virtual void PreventAttack(_par_ ExecutingAttack* non_null attack, _par_ bool* non_null outResult){};
|
||||
virtual void FailAttack(_par_ ExecutingAttack* non_null attack, _par_ bool* non_null outFailed){};
|
||||
virtual void StopBeforeAttack(_par_ ExecutingAttack* non_null attack, _par_ bool* non_null outResult){};
|
||||
virtual void OnBeforeAttack(_par_ ExecutingAttack* non_null attack){};
|
||||
|
||||
virtual void FailIncomingAttack(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ bool* outResult){};
|
||||
virtual void IsInvulnerable(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ bool* outResult){};
|
||||
virtual void OnAttackMiss(_par_ ExecutingAttack* attack, _par_ Creature* target){};
|
||||
virtual void ChangeAttackType(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitNumber,
|
||||
_par_ u8* outType){};
|
||||
virtual void ChangeEffectiveness(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitNumber,
|
||||
_par_ float* effectiveness){};
|
||||
virtual void BlockCritical(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitNumber,
|
||||
_par_ bool* blockCritical){};
|
||||
virtual void FailIncomingAttack(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ bool* non_null outResult){};
|
||||
virtual void IsInvulnerable(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ bool* non_null outResult){};
|
||||
virtual void OnAttackMiss(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target){};
|
||||
virtual void ChangeAttackType(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitNumber, _par_ u8* non_null outType){};
|
||||
virtual void ChangeEffectiveness(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitNumber, _par_ float* non_null effectiveness){};
|
||||
virtual void BlockCritical(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitNumber, _par_ bool* non_null blockCritical){};
|
||||
|
||||
virtual void OverrideBasePower(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitIndex,
|
||||
_par_ u8* basePower){};
|
||||
virtual void ChangeDamageStatsUser(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitIndex,
|
||||
_par_ Creature** statsUser){};
|
||||
virtual void OverrideBasePower(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitIndex, _par_ u8* non_null basePower){};
|
||||
virtual void ChangeDamageStatsUser(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitIndex, _par_ Creature* non_null* non_null statsUser){};
|
||||
|
||||
virtual void BypassDefensiveStat(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitIndex,
|
||||
_par_ bool* bypass){};
|
||||
virtual void BypassOffensiveStat(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitIndex,
|
||||
_par_ bool* bypass){};
|
||||
virtual void ModifyStatModifier(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitIndex,
|
||||
_par_ float* modifier){};
|
||||
virtual void ModifyDamageModifier(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitIndex,
|
||||
_par_ float* modifier){};
|
||||
virtual void OverrideDamage(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitIndex,
|
||||
_par_ u32* damage){};
|
||||
virtual void OverrideIncomingDamage(_par_ ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitIndex,
|
||||
_par_ u32* damage){};
|
||||
virtual void BypassDefensiveStat(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitIndex, _par_ bool* non_null bypass){};
|
||||
virtual void BypassOffensiveStat(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitIndex, _par_ bool* non_null bypass){};
|
||||
virtual void ModifyStatModifier(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitIndex, _par_ float* non_null modifier){};
|
||||
virtual void ModifyDamageModifier(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitIndex, _par_ float* non_null modifier){};
|
||||
virtual void OverrideDamage(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitIndex, _par_ u32* non_null damage){};
|
||||
virtual void OverrideIncomingDamage(_par_ ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitIndex, _par_ u32* non_null damage){};
|
||||
|
||||
virtual void OnIncomingHit(_par_ const ExecutingAttack* attack, _par_ Creature* target, _par_ u8 hitNumber){};
|
||||
virtual void OnFaintingOpponent(_par_ const ExecutingAttack* attack, _par_ Creature* target,
|
||||
virtual void OnIncomingHit(_par_ const ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitNumber){};
|
||||
virtual void OnFaintingOpponent(_par_ const ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitNumber){};
|
||||
|
||||
virtual void PreventStatBoostChange(_par_ Creature* target, _par_ Library::Statistic stat, _par_ i8 diffAmount,
|
||||
_par_ bool selfInflicted, _par_ bool* prevent){};
|
||||
virtual void ModifyStatBoostChange(_par_ Creature* target, _par_ Library::Statistic stat,
|
||||
_par_ i8* diffAmount){};
|
||||
virtual void PreventSecondaryEffects(_par_ const ExecutingAttack* attack, _par_ Creature* target,
|
||||
_par_ u8 hitNumber, _par_ bool* outResult){};
|
||||
virtual void OnSecondaryEffect(_par_ const ExecutingAttack* attack, _par_ Creature* target,
|
||||
virtual void PreventStatBoostChange(_par_ Creature* non_null target, _par_ Library::Statistic stat,
|
||||
_par_ i8 diffAmount, _par_ bool selfInflicted,
|
||||
_par_ bool* non_null prevent){};
|
||||
virtual void ModifyStatBoostChange(_par_ Creature* non_null target, _par_ Library::Statistic stat,
|
||||
_par_ i8* non_null diffAmount){};
|
||||
virtual void PreventSecondaryEffects(_par_ const ExecutingAttack* non_null attack,
|
||||
_par_ Creature* non_null target, _par_ u8 hitNumber,
|
||||
_par_ bool* non_null outResult){};
|
||||
virtual void OnSecondaryEffect(_par_ const ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ u8 hitNumber){};
|
||||
|
||||
virtual void OnAfterHits(_par_ const ExecutingAttack* attack, _par_ Creature* target){};
|
||||
virtual void OnAfterHits(_par_ const ExecutingAttack* non_null attack, _par_ Creature* non_null target){};
|
||||
|
||||
virtual void PreventSelfSwitch(_par_ const SwitchTurnChoice* choice, _par_ bool* outResult){};
|
||||
virtual void PreventOpponentSwitch(_par_ const SwitchTurnChoice* choice, _par_ bool* outResult){};
|
||||
virtual void PreventSelfSwitch(_par_ const SwitchTurnChoice* non_null choice, _par_ bool* non_null outResult){};
|
||||
virtual void PreventOpponentSwitch(_par_ const SwitchTurnChoice* non_null choice,
|
||||
_par_ bool* non_null outResult){};
|
||||
|
||||
virtual void ModifyEffectChance(_par_ const ExecutingAttack* attack, _par_ Creature* target,
|
||||
_par_ float* chance){};
|
||||
virtual void ModifyIncomingEffectChance(_par_ const ExecutingAttack* attack, _par_ Creature* target,
|
||||
_par_ float* chance){};
|
||||
virtual void ModifyEffectChance(_par_ const ExecutingAttack* non_null attack, _par_ Creature* non_null target,
|
||||
_par_ float* non_null chance){};
|
||||
virtual void ModifyIncomingEffectChance(_par_ const ExecutingAttack* non_null attack,
|
||||
_par_ Creature* non_null target, _par_ float* non_null chance){};
|
||||
|
||||
virtual void OnFail(_par_ Creature* target){};
|
||||
virtual void OnOpponentFail(_par_ Creature* target){};
|
||||
virtual void OnFail(_par_ Creature* non_null target){};
|
||||
virtual void OnOpponentFail(_par_ Creature* non_null target){};
|
||||
|
||||
virtual void PreventRunAway(_par_ const FleeTurnChoice* choice, _par_ bool* result){};
|
||||
virtual void PreventOpponentRunAway(_par_ const FleeTurnChoice* choice, _par_ bool* result){};
|
||||
virtual void PreventRunAway(_par_ const FleeTurnChoice* non_null choice, _par_ bool* non_null result){};
|
||||
virtual void PreventOpponentRunAway(_par_ const FleeTurnChoice* non_null choice, _par_ bool* non_null result){};
|
||||
|
||||
virtual void OnEndTurn(){};
|
||||
virtual void OnDamage(Creature*, DamageSource, _par_ u32 oldHealth, _par_ u32 newHealth){};
|
||||
virtual void OnFaint(Creature*, DamageSource){};
|
||||
virtual void OnSwitchIn(Creature*){};
|
||||
virtual void OnDamage(Creature* non_null, DamageSource, _par_ u32 oldHealth, _par_ u32 newHealth){};
|
||||
virtual void OnFaint(Creature* non_null, DamageSource){};
|
||||
virtual void OnSwitchIn(Creature* non_null){};
|
||||
|
||||
virtual void OnAfterHeldItemConsume(Creature*, const Library::Item*){};
|
||||
virtual void OnAfterHeldItemConsume(Creature* non_null, const Library::Item* non_null){};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -11,20 +11,23 @@ namespace CreatureLib::Battling {
|
||||
public:
|
||||
virtual ~ItemUseScript() = default;
|
||||
|
||||
virtual void
|
||||
OnInitialize([[maybe_unused]] const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters){};
|
||||
virtual void OnInitialize(
|
||||
[[maybe_unused]] const ArbUt::List<CreatureLib::Library::EffectParameter * non_null>& parameters){};
|
||||
/// @brief Is the item an item we are able to use?
|
||||
[[nodiscard]] virtual bool IsItemUsable() const { return false; }
|
||||
/// @brief Do we need to use the item on a creature?
|
||||
[[nodiscard]] virtual bool IsCreatureUseItem() const { return false; }
|
||||
/// @brief Can the item be used on the given creature.
|
||||
[[nodiscard]] virtual bool IsUseValidForCreature([[maybe_unused]] Creature* creature) const { return false; }
|
||||
[[nodiscard]] virtual bool IsUseValidForCreature([[maybe_unused]] Creature* non_null creature) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// @brief Can the item be held?
|
||||
[[nodiscard]] virtual bool IsHoldable() const { return false; }
|
||||
|
||||
virtual void OnUse([[maybe_unused]] Battle* battle) const {}
|
||||
virtual void OnCreatureUse([[maybe_unused]] Creature* creature, [[maybe_unused]] bool isBattle) const {}
|
||||
virtual void OnUse([[maybe_unused]] Battle* non_null battle) const {}
|
||||
virtual void OnCreatureUse([[maybe_unused]] Creature* non_null creature, [[maybe_unused]] bool isBattle) const {
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -17,14 +17,15 @@ namespace CreatureLib::Battling {
|
||||
|
||||
virtual ~ScriptResolver() = default;
|
||||
|
||||
virtual void Initialize([[maybe_unused]] BattleLibrary* library){};
|
||||
virtual BattleScript* LoadScript([[maybe_unused]] const ArbUt::OptionalBorrowedPtr<void>& owner,
|
||||
[[maybe_unused]] ScriptCategory category,
|
||||
[[maybe_unused]] const ArbUt::StringView& scriptName) {
|
||||
virtual void Initialize([[maybe_unused]] BattleLibrary* non_null library){};
|
||||
virtual BattleScript* nullable LoadScript([[maybe_unused]] const ArbUt::OptionalBorrowedPtr<void>& owner,
|
||||
[[maybe_unused]] ScriptCategory category,
|
||||
[[maybe_unused]] const ArbUt::StringView& scriptName) {
|
||||
return nullptr;
|
||||
};
|
||||
|
||||
virtual ItemUseScript* LoadItemScript([[maybe_unused]] const CreatureLib::Library::Item* item) {
|
||||
virtual ItemUseScript* nullable
|
||||
LoadItemScript([[maybe_unused]] const CreatureLib::Library::Item* non_null item) {
|
||||
return nullptr;
|
||||
};
|
||||
};
|
||||
|
||||
@@ -22,7 +22,7 @@ namespace CreatureLib::Battling {
|
||||
}
|
||||
}
|
||||
|
||||
BattleScript* Add(BattleScript* script) {
|
||||
BattleScript* non_null Add(BattleScript* non_null script) {
|
||||
auto v = _lookup.TryGet(script->GetName());
|
||||
if (v.has_value()) {
|
||||
_scripts[v.value()]->Stack();
|
||||
|
||||
@@ -9,21 +9,23 @@ namespace CreatureLib::Battling {
|
||||
bool _isSet;
|
||||
|
||||
union {
|
||||
std::unique_ptr<BattleScript> const* _script;
|
||||
const ScriptSet* _scriptSet;
|
||||
std::unique_ptr<BattleScript> const* nullable _script;
|
||||
const ScriptSet* nullable _scriptSet;
|
||||
};
|
||||
|
||||
ScriptWrapper(std::unique_ptr<BattleScript>* s, bool isSet) : _isSet(isSet), _script(s){};
|
||||
ScriptWrapper(ScriptSet* s, bool isSet) : _isSet(isSet), _scriptSet(s){};
|
||||
ScriptWrapper(std::unique_ptr<BattleScript>* nullable s, bool isSet) : _isSet(isSet), _script(s){};
|
||||
ScriptWrapper(ScriptSet* nullable s, bool isSet) : _isSet(isSet), _scriptSet(s){};
|
||||
|
||||
public:
|
||||
static inline ScriptWrapper FromScript(std::unique_ptr<BattleScript>* s) { return ScriptWrapper(s, false); }
|
||||
static inline ScriptWrapper FromSet(ScriptSet* s) { return ScriptWrapper(s, true); }
|
||||
static inline ScriptWrapper FromScript(std::unique_ptr<BattleScript>* nullable s) {
|
||||
return ScriptWrapper(s, false);
|
||||
}
|
||||
static inline ScriptWrapper FromSet(ScriptSet* nullable s) { return ScriptWrapper(s, true); }
|
||||
|
||||
inline bool IsSet() const noexcept { return _isSet; }
|
||||
|
||||
inline const std::unique_ptr<BattleScript>* GetScript() const noexcept { return _script; }
|
||||
inline const ScriptSet* GetScriptSet() const noexcept { return _scriptSet; }
|
||||
inline const std::unique_ptr<BattleScript>* nullable GetScript() const noexcept { return _script; }
|
||||
inline const ScriptSet* nullable GetScriptSet() const noexcept { return _scriptSet; }
|
||||
|
||||
inline bool HasValue() const noexcept {
|
||||
if (_isSet)
|
||||
|
||||
Reference in New Issue
Block a user