Files
PalUIExtension/Api/Pal/PalUIStatusModel.hpp
2026-09-07 19:33:58 -04:00

155 lines
6.3 KiB
C++

#pragma once
#include <optional>
#include <Unreal/FText.hpp>
#include <Unreal/NameTypes.hpp>
#include <Api/UnrealWrapper.hpp>
#include "PalIndividual.hpp" // EPalElementType_
namespace PalUIExtension::Api::Pal
{
class PalUIStatusModel : public UnrealWrapper
{
public:
static auto ClassPath() -> const TCHAR* { return STR("/Script/Pal.PalUIStatusModel"); }
static auto DebugTag() -> const TCHAR* { return STR("PalUIStatusModel"); }
PalUIStatusModel() = default;
explicit PalUIStatusModel(UObject* Obj) : UnrealWrapper(Obj, ClassOf<PalUIStatusModel>(), DebugTag()) {}
// Count of pals currently loaded into the model -- "pal number".
auto GetDisplayPalNum() -> std::optional<uint8>
{
return CallForReturn<uint8>(STR("GetDisplayPalNum"));
}
auto GetDisplayPalHandle(uint8 Index) -> UObject*
{
struct P { uint8 Index; UObject* ReturnValue; } p{ Index, nullptr };
auto Result = CallForReturn(STR("GetDisplayPalHandle"), p, &P::ReturnValue);
return (Result && *Result) ? *Result : nullptr;
}
auto GetNowSelectedIndex() -> std::optional<uint8>
{
return CallForReturn<uint8>(STR("GetNowSelectedIndex"));
}
auto ChangeIndex(uint8 Index) -> bool
{
struct P { uint8 Index; } p{ Index };
return Call(STR("ChangeIndex"), p);
}
auto OnClickedPalIcon(int32 Index) -> bool
{
struct P { int32 Index; } p{ Index };
return Call(STR("OnClickedPalIcon"), p);
}
// ---- extended: mechanical Index -> stat getters ----------------
auto GetDisplayLevel(int32 Index) -> std::optional<int32>
{
struct P { int32 Index; int32 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplayLevel"), p, &P::ReturnValue);
}
auto GetDisplaySpeed(int32 Index) -> std::optional<int32>
{
struct P { int32 Index; int32 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplaySpeed"), p, &P::ReturnValue);
}
auto GetDisplayMeleeAttack(int32 Index) -> std::optional<int32>
{
struct P { int32 Index; int32 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplayMeleeAttack"), p, &P::ReturnValue);
}
auto GetDisplayShotAttack(int32 Index) -> std::optional<int32>
{
struct P { int32 Index; int32 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplayShotAttack"), p, &P::ReturnValue);
}
auto GetDisplayDefence(int32 Index) -> std::optional<int32>
{
struct P { int32 Index; int32 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplayDefence"), p, &P::ReturnValue);
}
auto GetDisplayEatingHabits(int32 Index) -> std::optional<int32>
{
struct P { int32 Index; int32 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplayEatingHabits"), p, &P::ReturnValue);
}
auto GetDisplayNowExp(int32 Index) -> std::optional<int32>
{
struct P { int32 Index; int32 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplayNowExp"), p, &P::ReturnValue);
}
auto GetDisplayNextExp(int32 Index) -> std::optional<int32>
{
struct P { int32 Index; int32 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplayNextExp"), p, &P::ReturnValue);
}
auto GetDisplayHunger(int32 Index) -> std::optional<float>
{
struct P { int32 Index; float ReturnValue; } p{ Index, 0.f };
return CallForReturn(STR("GetDisplayHunger"), p, &P::ReturnValue);
}
auto GetDisplayMaxHunger(int32 Index) -> std::optional<float>
{
struct P { int32 Index; float ReturnValue; } p{ Index, 0.f };
return CallForReturn(STR("GetDisplayMaxHunger"), p, &P::ReturnValue);
}
auto GetDisplayElementType1(int32 Index) -> std::optional<EPalElementType_>
{
struct P { int32 Index; EPalElementType_ ReturnValue; } p{ Index, EPalElementType_::None };
return CallForReturn(STR("GetDisplayElementType1"), p, &P::ReturnValue);
}
auto GetDisplayElementType2(int32 Index) -> std::optional<EPalElementType_>
{
struct P { int32 Index; EPalElementType_ ReturnValue; } p{ Index, EPalElementType_::None };
return CallForReturn(STR("GetDisplayElementType2"), p, &P::ReturnValue);
}
// Raw byte -- see class comment. Do not assume ordering/meaning.
auto GetDisplayPhysicalHealthTypeRaw(int32 Index) -> std::optional<uint8>
{
struct P { int32 Index; uint8 ReturnValue; } p{ Index, 0 };
return CallForReturn(STR("GetDisplayPhysicalHealthType"), p, &P::ReturnValue);
}
// ---- extended: FText / FString getters -------------------------
auto GetDisplayDefaultName(int32 Index) -> std::optional<FText>
{
struct P { int32 Index; FText ReturnValue; } p{ Index, {} };
return CallForReturn(STR("GetDisplayDefaultName"), p, &P::ReturnValue);
}
auto GetDisplayCoopActionName(int32 Index) -> std::optional<FText>
{
struct P { int32 Index; FText ReturnValue; } p{ Index, {} };
return CallForReturn(STR("GetDisplayCoopActionName"), p, &P::ReturnValue);
}
auto GetDisplayActiveSkillName(int32 Index, int32 SkillIndex) -> std::optional<FText>
{
struct P { int32 Index; int32 SkillIndex; FText ReturnValue; } p{ Index, SkillIndex, {} };
return CallForReturn(STR("GetDisplayActiveSkillName"), p, &P::ReturnValue);
}
auto GetDisplayNickName(int32 Index) -> std::optional<FString>
{
struct P { int32 Index; FString OutName; } p{ Index, {} };
if (!Call(STR("GetDisplayNickName"), p)) return std::nullopt;
return p.OutName;
}
auto ChangeNickname(int32 Index, const TCHAR* NewNickName) -> bool
{
struct P { int32 Index; FString NewNickName; } p{ Index, FString(NewNickName) };
return Call(STR("ChangeNickname"), p);
}
};
}