#pragma once #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace PalUIExtension::Api::Pal; namespace PalUIExtension::Api::Mod { class PalDetail_PalNumberWidget : public UserWidget { public: static auto ClassPath() -> const TCHAR* { return STR("/Game/Mods/PalUIExtension/PalDetail_PalNumber.PalDetail_PalNumber_C"); } static auto WidgetTreePath() -> const TCHAR* { return STR("/Game/Mods/PalUIExtension/PalDetail_PalNumber.PalDetail_PalNumber_C:WidgetTree"); } static auto DebugTag() -> const TCHAR* { return STR("PalDetail_PalNumber"); } PalDetail_PalNumberWidget() = default; explicit PalDetail_PalNumberWidget(UObject* Obj) : UserWidget(Obj, ClassOf(), DebugTag()) { } auto GetBindedHandle() -> UObject* { struct P { UObject* returnValue; } p{ nullptr }; if (!CallForReturn(STR("GetBindedHandle"), p, &P::returnValue)) return nullptr; return p.returnValue; } auto GetBindedName() -> std::optional { struct P { FName returnValue; } p{ FName{} }; if (!CallForReturn(STR("GetBindedName"), p, &P::returnValue)) return std::nullopt; return p.returnValue; } auto CurrentHandle() -> PalIndividualCharacterHandle { UObject* H = GetBindedHandle(); return H ? PalIndividualCharacterHandle{ H } : PalIndividualCharacterHandle{}; } auto HasBinding() -> bool { return CallForReturn(STR("GetHasBinding")).value_or(false); } // ---- calls --------------------------------------------------- struct SetPalNumberTextFrame { FString text; }; auto SetPalNumberText(const FString& text) -> bool { SetPalNumberTextFrame p{text}; if (!Call(STR("SetPalNumberText"), p)) return false; return true; } auto SetPalBinding(FPalInstanceID _target) -> std::optional{ struct P { FPalInstanceID TargetInstanceId; FName ResolvedName; UObject* GetIndivCharacterParamReturnVal; bool IsValid; FName GetCharacterIdReturnVal; } p{ _target, FName{} }; if (!CallForReturn(STR("SetPalBinding"), p, &P::ResolvedName)) return std::nullopt; return p.ResolvedName; } protected: PalDetail_PalNumberWidget(UObject* Obj, UClass* Expected, const TCHAR* Tag) : UserWidget(Obj, Expected, Tag) { } }; }