Update to latest CreatureLib
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2022-05-14 16:50:20 +02:00
parent 50c58a9fd3
commit cf34563a56
22 changed files with 58 additions and 54 deletions

View File

@@ -6,18 +6,18 @@ bool PkmnLib::Battling::Battle::SetWeather(const ArbUt::StringView& name) {
if (blockWeather) {
return false;
}
if (_weatherScript != nullptr) {
_weatherScript->OnRemove();
if (_weatherScript.HasValue()) {
_weatherScript.GetValue()->OnRemove();
}
_weatherScript = std::unique_ptr<CreatureLib::Battling::BattleScript>(
_library->LoadScript(this, static_cast<ScriptCategory>(PkmnScriptCategory::Weather), name));
_weatherScript =
_library->LoadScript(this, static_cast<ScriptCategory>(PkmnScriptCategory::Weather), name).TakeOwnership();
_eventHook.Trigger<WeatherChangeEvent>(name);
return true;
}
void PkmnLib::Battling::Battle::ClearWeather() {
if (_weatherScript == nullptr)
if (!_weatherScript.HasValue())
return;
_weatherScript->OnRemove();
_weatherScript.GetValue()->OnRemove();
_weatherScript = nullptr;
_eventHook.Trigger<WeatherChangeEvent>(""_cnc);
}
@@ -65,8 +65,8 @@ PkmnLib::Battling::Battle* PkmnLib::Battling::Battle::Clone() const {
battle->_battleResult = _battleResult;
battle->_currentTurn = _currentTurn;
_volatile.Clone(battle, battle->_volatile);
if (_weatherScript != nullptr) {
battle->_weatherScript = std::unique_ptr<CreatureLib::Battling::BattleScript>(_weatherScript->Clone(battle));
if (_weatherScript.HasValue()) {
battle->_weatherScript = _weatherScript.GetValue()->Clone(battle);
}
return battle;

View File

@@ -10,7 +10,7 @@
namespace PkmnLib::Battling {
class Battle : public CreatureLib::Battling::Battle {
private:
std::unique_ptr<CreatureLib::Battling::BattleScript> _weatherScript = nullptr;
ArbUt::OptionalUniquePtr<CreatureLib::Battling::BattleScript> _weatherScript = nullptr;
public:
Battle(const BattleLibrary* non_null library,
@@ -26,20 +26,21 @@ namespace PkmnLib::Battling {
bool SetWeather(const ArbUt::StringView& name);
void ClearWeather();
void SuppressWeather() {
if (_weatherScript != nullptr) {
_weatherScript->Suppress();
if (_weatherScript.HasValue()) {
_weatherScript.GetValue()->Suppress();
}
}
void UnsuppressWeather() {
if (_weatherScript != nullptr) {
_weatherScript->Unsuppress();
if (_weatherScript.HasValue()) {
_weatherScript.GetValue()->Unsuppress();
}
}
const ArbUt::StringView& GetWeatherName() noexcept {
if (_weatherScript == nullptr)
if (!_weatherScript.HasValue()) {
return ArbUt::StringView::EmptyString();
return _weatherScript->GetName();
}
return _weatherScript.GetValue()->GetName();
}
size_t ScriptCount() const override { return CreatureLib::Battling::Battle::ScriptCount() + 1; }

View File

@@ -11,8 +11,8 @@ namespace PkmnLib::Battling {
auto rate = pokemon->GetSpecies()->GetCaptureRate();
u8 bonusBall = 1;
auto* itemScript =
dynamic_cast<PkmnItemUseScript*>(pokemon->GetLibrary()->GetScriptResolver()->LoadItemScript(catchItem));
auto* itemScript = dynamic_cast<PkmnItemUseScript*>(
pokemon->GetLibrary()->GetScriptResolver()->LoadItemScript(catchItem).GetValue());
itemScript->ModifyPokeballCatchBonus(pokemon, &bonusBall);
u8 bonusStatus = 1;

View File

@@ -53,13 +53,13 @@ CreatureLib::Battling::Creature* PkmnLib::Battling::Pokemon::Clone() const {
c->_battleData.Side = _battleData.Side;
c->_battleData.OnBattleField = _battleData.OnBattleField;
c->_battleData.Index = _battleData.Index;
if (_activeTalent != nullptr) {
c->_activeTalent = std::unique_ptr<PkmnScript::BattleScript>(_activeTalent->Clone(c));
if (_activeTalent.HasValue()) {
c->_activeTalent = _activeTalent.GetValue()->Clone(c);
}
c->_hasOverridenTalent = _hasOverridenTalent;
c->_overridenTalent = _overridenTalent;
if (_status != nullptr) {
c->_status = std::unique_ptr<PkmnScript::BattleScript>(_status->Clone(c));
if (_status.HasValue()) {
c->_status = _status.GetValue()->Clone(c);
}
_volatile.Clone(c, c->_volatile);
c->_types = std::vector<u8>(_types);