From 6352e8e3196f78388b6c771073f9e03eaa612673 Mon Sep 17 00:00:00 2001 From: Kae <80987908+Novaenia@users.noreply.github.com> Date: Tue, 20 Jun 2023 14:33:09 +1000 Subject: everything everywhere all at once --- .../scripting/StarStatusControllerLuaBindings.cpp | 271 +++++++++++++++++++++ 1 file changed, 271 insertions(+) create mode 100644 source/game/scripting/StarStatusControllerLuaBindings.cpp (limited to 'source/game/scripting/StarStatusControllerLuaBindings.cpp') diff --git a/source/game/scripting/StarStatusControllerLuaBindings.cpp b/source/game/scripting/StarStatusControllerLuaBindings.cpp new file mode 100644 index 0000000..819c517 --- /dev/null +++ b/source/game/scripting/StarStatusControllerLuaBindings.cpp @@ -0,0 +1,271 @@ +#include "StarStatusControllerLuaBindings.hpp" +#include "StarStatusController.hpp" +#include "StarJsonExtra.hpp" +#include "StarLuaGameConverters.hpp" + +namespace Star { + +LuaCallbacks LuaBindings::makeStatusControllerCallbacks(StatusController* statController) { + LuaCallbacks callbacks; + + callbacks.registerCallbackWithSignature( + "statusProperty", bind(StatusControllerCallbacks::statusProperty, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "setStatusProperty", bind(StatusControllerCallbacks::setStatusProperty, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "stat", bind(StatusControllerCallbacks::stat, statController, _1)); + callbacks.registerCallbackWithSignature( + "statPositive", bind(StatusControllerCallbacks::statPositive, statController, _1)); + callbacks.registerCallbackWithSignature( + "resourceNames", bind(StatusControllerCallbacks::resourceNames, statController)); + callbacks.registerCallbackWithSignature( + "isResource", bind(StatusControllerCallbacks::isResource, statController, _1)); + callbacks.registerCallbackWithSignature( + "resource", bind(StatusControllerCallbacks::resource, statController, _1)); + callbacks.registerCallbackWithSignature( + "resourcePositive", bind(StatusControllerCallbacks::resourcePositive, statController, _1)); + callbacks.registerCallbackWithSignature( + "setResource", bind(StatusControllerCallbacks::setResource, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "modifyResource", bind(StatusControllerCallbacks::modifyResource, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "giveResource", bind(StatusControllerCallbacks::giveResource, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "consumeResource", bind(StatusControllerCallbacks::consumeResource, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "overConsumeResource", bind(StatusControllerCallbacks::overConsumeResource, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "resourceLocked", bind(StatusControllerCallbacks::resourceLocked, statController, _1)); + callbacks.registerCallbackWithSignature( + "setResourceLocked", bind(StatusControllerCallbacks::setResourceLocked, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "resetResource", bind(StatusControllerCallbacks::resetResource, statController, _1)); + callbacks.registerCallbackWithSignature( + "resetAllResources", bind(StatusControllerCallbacks::resetAllResources, statController)); + callbacks.registerCallbackWithSignature, String>( + "resourceMax", bind(StatusControllerCallbacks::resourceMax, statController, _1)); + callbacks.registerCallbackWithSignature, String>( + "resourcePercentage", bind(StatusControllerCallbacks::resourcePercentage, statController, _1)); + callbacks.registerCallbackWithSignature( + "setResourcePercentage", bind(StatusControllerCallbacks::setResourcePercentage, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "modifyResourcePercentage", bind(StatusControllerCallbacks::modifyResourcePercentage, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "getPersistentEffects", bind(StatusControllerCallbacks::getPersistentEffects, statController, _1)); + callbacks.registerCallbackWithSignature( + "addPersistentEffect", bind(StatusControllerCallbacks::addPersistentEffect, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "addPersistentEffects", bind(StatusControllerCallbacks::addPersistentEffects, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "setPersistentEffects", bind(StatusControllerCallbacks::setPersistentEffects, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "clearPersistentEffects", bind(StatusControllerCallbacks::clearPersistentEffects, statController, _1)); + callbacks.registerCallbackWithSignature( + "clearAllPersistentEffects", bind(StatusControllerCallbacks::clearAllPersistentEffects, statController)); + callbacks.registerCallbackWithSignature, Maybe>( + "addEphemeralEffect", bind(StatusControllerCallbacks::addEphemeralEffect, statController, _1, _2, _3)); + callbacks.registerCallbackWithSignature>( + "addEphemeralEffects", bind(StatusControllerCallbacks::addEphemeralEffects, statController, _1, _2)); + callbacks.registerCallbackWithSignature( + "removeEphemeralEffect", bind(StatusControllerCallbacks::removeEphemeralEffect, statController, _1)); + callbacks.registerCallbackWithSignature( + "clearEphemeralEffects", bind(StatusControllerCallbacks::clearEphemeralEffects, statController)); + callbacks.registerCallbackWithSignature, uint64_t>, Maybe>( + "damageTakenSince", bind(StatusControllerCallbacks::damageTakenSince, statController, _1)); + callbacks.registerCallbackWithSignature, uint64_t>, Maybe>( + "inflictedHitsSince", bind(StatusControllerCallbacks::inflictedHitsSince, statController, _1)); + callbacks.registerCallbackWithSignature, uint64_t>, Maybe>( + "inflictedDamageSince", bind(StatusControllerCallbacks::inflictedDamageSince, statController, _1)); + callbacks.registerCallbackWithSignature>("activeUniqueStatusEffectSummary", + bind(&StatusControllerCallbacks::activeUniqueStatusEffectSummary, statController)); + callbacks.registerCallbackWithSignature("uniqueStatusEffectActive", + bind(&StatusControllerCallbacks::uniqueStatusEffectActive, statController, _1)); + + callbacks.registerCallbackWithSignature("primaryDirectives", bind(&StatusController::primaryDirectives, statController)); + callbacks.registerCallback("setPrimaryDirectives", [statController](Maybe const& directives) { statController->setPrimaryDirectives(directives.value()); }); + + callbacks.registerCallbackWithSignature("applySelfDamageRequest", bind(&StatusController::applySelfDamageRequest, statController, _1)); + + return callbacks; +} + +Json LuaBindings::StatusControllerCallbacks::statusProperty( + StatusController* statController, String const& arg1, Json const& arg2) { + return statController->statusProperty(arg1, arg2); +} + +void LuaBindings::StatusControllerCallbacks::setStatusProperty( + StatusController* statController, String const& arg1, Json const& arg2) { + statController->setStatusProperty(arg1, arg2); +} + +float LuaBindings::StatusControllerCallbacks::stat(StatusController* statController, String const& arg1) { + return statController->stat(arg1); +} + +bool LuaBindings::StatusControllerCallbacks::statPositive(StatusController* statController, String const& arg1) { + return statController->statPositive(arg1); +} + +StringList LuaBindings::StatusControllerCallbacks::resourceNames(StatusController* statController) { + return statController->resourceNames(); +} + +bool LuaBindings::StatusControllerCallbacks::isResource(StatusController* statController, String const& arg1) { + return statController->isResource(arg1); +} + +float LuaBindings::StatusControllerCallbacks::resource(StatusController* statController, String const& arg1) { + return statController->resource(arg1); +} + +bool LuaBindings::StatusControllerCallbacks::resourcePositive(StatusController* statController, String const& arg1) { + return statController->resourcePositive(arg1); +} + +void LuaBindings::StatusControllerCallbacks::setResource( + StatusController* statController, String const& arg1, float arg2) { + statController->setResource(arg1, arg2); +} + +void LuaBindings::StatusControllerCallbacks::modifyResource( + StatusController* statController, String const& arg1, float arg2) { + statController->modifyResource(arg1, arg2); +} + +float LuaBindings::StatusControllerCallbacks::giveResource( + StatusController* statController, String const& resourceName, float amount) { + return statController->giveResource(resourceName, amount); +} + +bool LuaBindings::StatusControllerCallbacks::consumeResource( + StatusController* statController, String const& arg1, float arg2) { + return statController->consumeResource(arg1, arg2); +} + +bool LuaBindings::StatusControllerCallbacks::overConsumeResource( + StatusController* statController, String const& arg1, float arg2) { + return statController->overConsumeResource(arg1, arg2); +} + +bool LuaBindings::StatusControllerCallbacks::resourceLocked(StatusController* statController, String const& arg1) { + return statController->resourceLocked(arg1); +} + +void LuaBindings::StatusControllerCallbacks::setResourceLocked( + StatusController* statController, String const& arg1, bool arg2) { + statController->setResourceLocked(arg1, arg2); +} + +void LuaBindings::StatusControllerCallbacks::resetResource(StatusController* statController, String const& arg1) { + statController->resetResource(arg1); +} + +void LuaBindings::StatusControllerCallbacks::resetAllResources(StatusController* statController) { + statController->resetAllResources(); +} + +Maybe LuaBindings::StatusControllerCallbacks::resourceMax(StatusController* statController, String const& arg1) { + return statController->resourceMax(arg1); +} + +Maybe LuaBindings::StatusControllerCallbacks::resourcePercentage( + StatusController* statController, String const& arg1) { + return statController->resourcePercentage(arg1); +} + +float LuaBindings::StatusControllerCallbacks::setResourcePercentage( + StatusController* statController, String const& arg1, float arg2) { + return statController->setResourcePercentage(arg1, arg2); +} + +float LuaBindings::StatusControllerCallbacks::modifyResourcePercentage( + StatusController* statController, String const& arg1, float arg2) { + return statController->modifyResourcePercentage(arg1, arg2); +} + +JsonArray LuaBindings::StatusControllerCallbacks::getPersistentEffects( + StatusController* statController, String const& arg1) { + return statController->getPersistentEffects(arg1).transformed(jsonFromPersistentStatusEffect); +} + +void LuaBindings::StatusControllerCallbacks::addPersistentEffect( + StatusController* statController, String const& arg1, Json const& arg2) { + addPersistentEffects(statController, arg1, JsonArray{arg2}); +} + +void LuaBindings::StatusControllerCallbacks::addPersistentEffects( + StatusController* statController, String const& arg1, JsonArray const& arg2) { + statController->addPersistentEffects(arg1, arg2.transformed(jsonToPersistentStatusEffect)); +} + +void LuaBindings::StatusControllerCallbacks::setPersistentEffects( + StatusController* statController, String const& arg1, JsonArray const& arg2) { + statController->setPersistentEffects(arg1, arg2.transformed(jsonToPersistentStatusEffect)); +} + +void LuaBindings::StatusControllerCallbacks::clearPersistentEffects( + StatusController* statController, String const& arg1) { + statController->clearPersistentEffects(arg1); +} + +void LuaBindings::StatusControllerCallbacks::clearAllPersistentEffects(StatusController* statController) { + statController->clearAllPersistentEffects(); +} + +void LuaBindings::StatusControllerCallbacks::addEphemeralEffect( + StatusController* statController, String const& arg1, Maybe arg2, Maybe sourceEntityId) { + statController->addEphemeralEffect(EphemeralStatusEffect{UniqueStatusEffect{arg1}, arg2}, sourceEntityId); +} + +void LuaBindings::StatusControllerCallbacks::addEphemeralEffects( + StatusController* statController, JsonArray const& arg1, Maybe sourceEntityId) { + statController->addEphemeralEffects(arg1.transformed(jsonToEphemeralStatusEffect), sourceEntityId); +} + +void LuaBindings::StatusControllerCallbacks::removeEphemeralEffect( + StatusController* statController, String const& arg1) { + statController->removeEphemeralEffect(UniqueStatusEffect{arg1}); +} + +void LuaBindings::StatusControllerCallbacks::clearEphemeralEffects(StatusController* statController) { + statController->clearEphemeralEffects(); +} + +LuaTupleReturn, uint64_t> LuaBindings::StatusControllerCallbacks::damageTakenSince( + StatusController* statController, Maybe timestep) { + auto pair = statController->damageTakenSince(timestep.value()); + return luaTupleReturn(pair.first.transformed(mem_fn(&DamageNotification::toJson)), pair.second); +} + +LuaTupleReturn, uint64_t> LuaBindings::StatusControllerCallbacks::inflictedHitsSince( + StatusController* statController, Maybe timestep) { + auto pair = statController->inflictedHitsSince(timestep.value()); + return luaTupleReturn( + pair.first.transformed([](auto const& p) { return p.second.toJson().set("targetEntityId", p.first); }), + pair.second); +} + +LuaTupleReturn, uint64_t> LuaBindings::StatusControllerCallbacks::inflictedDamageSince( + StatusController* statController, Maybe timestep) { + auto pair = statController->inflictedDamageSince(timestep.value()); + return luaTupleReturn(pair.first.transformed(mem_fn(&DamageNotification::toJson)), pair.second); +} + +List LuaBindings::StatusControllerCallbacks::activeUniqueStatusEffectSummary( + StatusController* statController) { + auto summary = statController->activeUniqueStatusEffectSummary(); + return summary.transformed([](pair> effect) { + JsonArray effectJson = {effect.first}; + if (effect.second) + effectJson.append(*effect.second); + return effectJson; + }); +} + +bool LuaBindings::StatusControllerCallbacks::uniqueStatusEffectActive( + StatusController* statController, String const& effectName) { + return statController->uniqueStatusEffectActive(effectName); +} + +} -- cgit v1.2.3