2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-11 06:27:52 +00:00

CFlyingPirate: First draft almost done

This commit is contained in:
2020-03-13 04:11:17 -04:00
parent 11ea9d3aa6
commit 13d8c3fdd1
9 changed files with 1049 additions and 135 deletions

View File

@@ -71,31 +71,35 @@ template <class T>
class TSubAnimTypeToken : public TLockedToken<CAllFormatsAnimSource> {};
template <>
class TSubAnimTypeToken<CAnimSource> : public TLockedToken<CAllFormatsAnimSource> {
class TSubAnimTypeToken<CAnimSource> : public TLockedToken<CAnimSource> {
public:
TSubAnimTypeToken<CAnimSource>(const TLockedToken<CAllFormatsAnimSource>& token)
: TLockedToken<CAllFormatsAnimSource>(token) {}
TSubAnimTypeToken<CAnimSource>(const TLockedToken<CAllFormatsAnimSource>& token) : TLockedToken<CAnimSource>(token) {}
const CAnimSource* GetObj() const {
const CAllFormatsAnimSource* source = TLockedToken<CAllFormatsAnimSource>::GetObj();
CAnimSource* GetObj() {
CAllFormatsAnimSource* source = reinterpret_cast<CAllFormatsAnimSource*>(TLockedToken<CAnimSource>::GetObj());
return &source->GetAsCAnimSource();
}
const CAnimSource* operator->() const { return GetObj(); }
const CAnimSource& operator*() const { return *GetObj(); }
const CAnimSource* GetObj() const {
return const_cast<TSubAnimTypeToken<CAnimSource>*>(this)->GetObj();
}
};
template <>
class TSubAnimTypeToken<CFBStreamedCompression> : public TLockedToken<CAllFormatsAnimSource> {
class TSubAnimTypeToken<CFBStreamedCompression> : public TLockedToken<CFBStreamedCompression> {
public:
TSubAnimTypeToken<CFBStreamedCompression>(const TLockedToken<CAllFormatsAnimSource>& token)
: TLockedToken<CAllFormatsAnimSource>(token) {}
: TLockedToken<CFBStreamedCompression>(token) {}
const CFBStreamedCompression* GetObj() const {
const CAllFormatsAnimSource* source = TLockedToken<CAllFormatsAnimSource>::GetObj();
CFBStreamedCompression* GetObj() {
CAllFormatsAnimSource* source =
reinterpret_cast<CAllFormatsAnimSource*>(TLockedToken<CFBStreamedCompression>::GetObj());
return &source->GetAsCFBStreamedCompression();
}
const CFBStreamedCompression* operator->() const { return GetObj(); }
const CFBStreamedCompression& operator*() const { return *GetObj(); }
const CFBStreamedCompression* GetObj() const {
return const_cast<TSubAnimTypeToken<CFBStreamedCompression>*>(this)->GetObj();
}
};
class IAnimReader {