mirror of
https://github.com/PodeCaradox/GalaxyQuest-SteamFrame.git
synced 2026-10-18 16:01:14 +02:00
The sources of Petari (https://github.com/SMGCommunity/Petari), the Super Mario Galaxy decompilation by the SMGCommunity, at commit 0a5c6608dc3b4c44a9aa68c2535d1793dc565f02, unchanged but for LF line endings: LICENSE (as LICENSE-Petari.txt; CC0 1.0), include/, libs/ and src/. Left out: the game data Petari keeps from the original executable, the error message archive (include/Game/System/ ErrorArchive.hpp) and two tables (src/Game/System/GalaxyID.bcsv and StoryEvent.bcsv); GalaxyQuest's converter takes them from the player's own disc. The port's changes follow in the next commit, so `git diff petari-base -- decomp` shows them. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
47 lines
1.2 KiB
C++
47 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "Inline.hpp"
|
|
#include <JSystem/JKernel/JKRHeap.hpp>
|
|
|
|
class TalkMessageFuncBase {
|
|
public:
|
|
virtual bool operator()(u32) const = 0;
|
|
virtual TalkMessageFuncBase* clone() const = 0;
|
|
virtual TalkMessageFuncBase* clone(JKRHeap*) const = 0;
|
|
};
|
|
|
|
template < typename T, typename U >
|
|
class TalkMessageFuncM : public TalkMessageFuncBase {
|
|
public:
|
|
inline TalkMessageFuncM(T call, U callee) : mCaller(call), mCallee(callee) {
|
|
}
|
|
|
|
inline TalkMessageFuncM() {
|
|
}
|
|
|
|
virtual bool operator()(u32 arg) const {
|
|
return (mCaller->*mCallee)(arg);
|
|
}
|
|
|
|
virtual TalkMessageFuncM* clone() const {
|
|
return new TalkMessageFuncM(*this);
|
|
}
|
|
|
|
virtual TalkMessageFuncM* clone(JKRHeap* pHeap) const {
|
|
return new (pHeap, 0) TalkMessageFuncM(*this);
|
|
};
|
|
|
|
T mCaller;
|
|
U mCallee;
|
|
};
|
|
|
|
template < class T >
|
|
static TalkMessageFuncM< T*, bool (T::*)(u32) > TalkMessageFunc(T* a1, bool (T::*a2)(u32)) NO_INLINE {
|
|
return TalkMessageFuncM< T*, bool (T::*)(u32) >(a1, a2);
|
|
}
|
|
|
|
template < class T >
|
|
static inline TalkMessageFuncM< T*, bool (T::*)(u32) > TalkMessageFunc_Inline(T* a1, bool (T::*a2)(u32)) {
|
|
return TalkMessageFuncM< T*, bool (T::*)(u32) >(a1, a2);
|
|
}
|