mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
ModeBalloon: Implement TimeBalloonStateShowResult (#994)
This commit is contained in:
parent
0119348015
commit
3528e9e104
|
|
@ -99080,50 +99080,50 @@ ModeBalloon/TimeBalloonStateShowResult.o:
|
|||
label:
|
||||
- _ZN26TimeBalloonStateShowResultC1EP26StageSceneStateTimeBalloonPN2al25SimpleLayoutAppearWaitEndEPK31IBalloonFindMyAchievementHolderRKNS2_14LayoutInitInfoE
|
||||
- _ZN26TimeBalloonStateShowResultC2EP26StageSceneStateTimeBalloonPN2al25SimpleLayoutAppearWaitEndEPK31IBalloonFindMyAchievementHolderRKNS2_14LayoutInitInfoE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x37756c
|
||||
size: 16
|
||||
label: _ZN26TimeBalloonStateShowResult4initEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x37757c
|
||||
size: 16
|
||||
label: _ZN26TimeBalloonStateShowResult6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x37758c
|
||||
size: 104
|
||||
label: _ZN26TimeBalloonStateShowResult9exeAppearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3775f4
|
||||
size: 84
|
||||
label: _ZN26TimeBalloonStateShowResult7exeWaitEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x377648
|
||||
size: 80
|
||||
label: _ZN26TimeBalloonStateShowResult6exeEndEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x377698
|
||||
size: 12
|
||||
label: _ZN26TimeBalloonStateShowResult12setNerveWaitEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3776a4
|
||||
size: 36
|
||||
label: _ZN26TimeBalloonStateShowResultD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x3776c8
|
||||
size: 108
|
||||
label: _ZNK12_GLOBAL__N_135TimeBalloonStateShowResultNrvAppear7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x377734
|
||||
size: 84
|
||||
label: _ZNK12_GLOBAL__N_133TimeBalloonStateShowResultNrvWait7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
- offset: 0x377788
|
||||
size: 84
|
||||
label: _ZNK12_GLOBAL__N_132TimeBalloonStateShowResultNrvEnd7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
guess: true
|
||||
ModeBalloon/TimeBalloonStateWatchFindBalloon.o:
|
||||
'.text':
|
||||
|
|
|
|||
25
src/ModeBalloon/TimeBalloonAchievementLayout.h
Normal file
25
src/ModeBalloon/TimeBalloonAchievementLayout.h
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
#include "Library/Play/Layout/SimpleLayoutAppearWaitEnd.h"
|
||||
|
||||
class IBalloonFindMyAchievementHolder;
|
||||
|
||||
namespace al {
|
||||
class LayoutInitInfo;
|
||||
} // namespace al
|
||||
|
||||
class TimeBalloonAchievementLayout : public al::SimpleLayoutAppearWaitEnd {
|
||||
public:
|
||||
TimeBalloonAchievementLayout(const al::LayoutInitInfo& info);
|
||||
|
||||
void appear() override;
|
||||
void update();
|
||||
void setAchievement(const IBalloonFindMyAchievementHolder* holder);
|
||||
|
||||
private:
|
||||
u8 _130[0x288 - 0x130];
|
||||
};
|
||||
|
||||
static_assert(sizeof(TimeBalloonAchievementLayout) == 0x288);
|
||||
72
src/ModeBalloon/TimeBalloonData.h
Normal file
72
src/ModeBalloon/TimeBalloonData.h
Normal file
|
|
@ -0,0 +1,72 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
#include <math/seadVector.h>
|
||||
|
||||
class FriendsProfileDataHolder;
|
||||
|
||||
namespace al {
|
||||
class FriendsProfileData;
|
||||
} // namespace al
|
||||
|
||||
namespace nn::nex {
|
||||
template <typename K, typename V>
|
||||
class qMap;
|
||||
template <typename T>
|
||||
class qVector;
|
||||
class qBuffer;
|
||||
struct DataStoreRatingInfo;
|
||||
struct DataStoreSearchBalloonResult;
|
||||
} // namespace nn::nex
|
||||
|
||||
namespace TimeBalloon {
|
||||
class BalloonDataServer {
|
||||
public:
|
||||
BalloonDataServer();
|
||||
virtual ~BalloonDataServer();
|
||||
};
|
||||
|
||||
class BalloonData {
|
||||
public:
|
||||
void setRatingInfo(const nn::nex::qMap<s8, nn::nex::DataStoreRatingInfo>& ratingInfoMap);
|
||||
void setGotIdList(const nn::nex::qVector<nn::nex::qBuffer>& gotIdList);
|
||||
void setPlayedIdList(const nn::nex::qVector<nn::nex::qBuffer>& playedIdList);
|
||||
const nn::nex::qVector<nn::nex::qBuffer>& getGotIdList() const;
|
||||
const nn::nex::qVector<nn::nex::qBuffer>& getPlayedIdList() const;
|
||||
};
|
||||
|
||||
struct BalloonDataMetaBinary;
|
||||
|
||||
class RankAchievement {
|
||||
public:
|
||||
void end();
|
||||
};
|
||||
|
||||
void initBalloonDataServer(BalloonDataServer* server);
|
||||
|
||||
bool isGotBalloon(const BalloonData& balloonData);
|
||||
s32 getPlayerRank(const BalloonData& balloonData);
|
||||
s64 getPlayedNum(const BalloonData& balloonData);
|
||||
s32 calcGotCoin(const BalloonData& balloonData);
|
||||
s32 calcProtectNum(const BalloonData& balloonData);
|
||||
s64 calcProtectCoin(const BalloonData& balloonData);
|
||||
s64 calcProtectCoin(s32 protectNum);
|
||||
al::FriendsProfileData* tryGetProfileData(const BalloonData& balloonData);
|
||||
void tryGetNickName(const char** outNickName, const BalloonData& balloonData);
|
||||
const char* tryGetNickName(const BalloonData& balloonData);
|
||||
void getBalloonPos(sead::Vector3f* outBalloonPos, const BalloonData& balloonData);
|
||||
|
||||
void setRatingInfo(BalloonData* balloonData,
|
||||
const nn::nex::qMap<s8, nn::nex::DataStoreRatingInfo>& ratingInfoMap);
|
||||
void createBalloonData(BalloonData* balloonData,
|
||||
const nn::nex::DataStoreSearchBalloonResult& searchBalloonResult,
|
||||
FriendsProfileDataHolder* profileDataHolder, bool isGotBalloon);
|
||||
void createBalloonData(BalloonData* balloonData, u64 dataId, u64 ownerId, u16 playerRank,
|
||||
const nn::nex::qMap<s8, nn::nex::DataStoreRatingInfo>& ratingInfoMap,
|
||||
const BalloonDataMetaBinary* metaBinary,
|
||||
FriendsProfileDataHolder* profileDataHolder, bool isGotBalloon);
|
||||
|
||||
s32 getBalloonGotSlotId();
|
||||
s32 getBalloonPlayedSlotId();
|
||||
|
||||
} // namespace TimeBalloon
|
||||
59
src/ModeBalloon/TimeBalloonStateShowResult.cpp
Normal file
59
src/ModeBalloon/TimeBalloonStateShowResult.cpp
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
#include "ModeBalloon/TimeBalloonStateShowResult.h"
|
||||
|
||||
#include "Library/Nerve/NerveSetupUtil.h"
|
||||
#include "Library/Nerve/NerveUtil.h"
|
||||
|
||||
#include "ModeBalloon/TimeBalloonAchievementLayout.h"
|
||||
#include "Util/StageInputFunction.h"
|
||||
|
||||
namespace {
|
||||
NERVE_IMPL(TimeBalloonStateShowResult, Appear)
|
||||
NERVE_IMPL(TimeBalloonStateShowResult, Wait)
|
||||
NERVE_IMPL(TimeBalloonStateShowResult, End)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(TimeBalloonStateShowResult, Appear, Wait, End)
|
||||
} // namespace
|
||||
|
||||
TimeBalloonStateShowResult::TimeBalloonStateShowResult(
|
||||
StageSceneStateTimeBalloon* timeBalloon, al::SimpleLayoutAppearWaitEnd* layout,
|
||||
const IBalloonFindMyAchievementHolder* achievementHolder, const al::LayoutInitInfo& info)
|
||||
: al::HostStateBase<StageSceneStateTimeBalloon>("結果を見る(風船割りゲーム)", timeBalloon),
|
||||
mAchievementHolder(achievementHolder) {
|
||||
mAchievementLayout = new TimeBalloonAchievementLayout(info);
|
||||
}
|
||||
|
||||
void TimeBalloonStateShowResult::init() {
|
||||
initNerve(&Appear, 0);
|
||||
}
|
||||
|
||||
void TimeBalloonStateShowResult::appear() {
|
||||
al::NerveStateBase::appear();
|
||||
al::setNerve(this, &Appear);
|
||||
}
|
||||
|
||||
void TimeBalloonStateShowResult::exeAppear() {
|
||||
if (al::isFirstStep(this)) {
|
||||
mAchievementLayout->setAchievement(mAchievementHolder);
|
||||
mAchievementLayout->appear();
|
||||
}
|
||||
mAchievementLayout->update();
|
||||
if (mAchievementLayout->isWait())
|
||||
al::setNerve(this, &Wait);
|
||||
}
|
||||
|
||||
void TimeBalloonStateShowResult::exeWait() {
|
||||
mAchievementLayout->update();
|
||||
if (rs::isTriggerUiCancel(mAchievementLayout))
|
||||
al::setNerve(this, &End);
|
||||
}
|
||||
|
||||
void TimeBalloonStateShowResult::exeEnd() {
|
||||
if (al::isFirstStep(this))
|
||||
mAchievementLayout->end();
|
||||
if (!mAchievementLayout->isAlive())
|
||||
kill();
|
||||
}
|
||||
|
||||
void TimeBalloonStateShowResult::setNerveWait() {
|
||||
al::setNerve(this, &Wait);
|
||||
}
|
||||
35
src/ModeBalloon/TimeBalloonStateShowResult.h
Normal file
35
src/ModeBalloon/TimeBalloonStateShowResult.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#pragma once
|
||||
|
||||
#include "Library/Nerve/NerveStateBase.h"
|
||||
|
||||
namespace al {
|
||||
class LayoutInitInfo;
|
||||
class SimpleLayoutAppearWaitEnd;
|
||||
} // namespace al
|
||||
|
||||
class IBalloonFindMyAchievementHolder;
|
||||
class StageSceneStateTimeBalloon;
|
||||
class TimeBalloonAchievementLayout;
|
||||
|
||||
class TimeBalloonStateShowResult : public al::HostStateBase<StageSceneStateTimeBalloon> {
|
||||
public:
|
||||
TimeBalloonStateShowResult(StageSceneStateTimeBalloon* timeBalloon,
|
||||
al::SimpleLayoutAppearWaitEnd* layout,
|
||||
const IBalloonFindMyAchievementHolder* achievementHolder,
|
||||
const al::LayoutInitInfo& info);
|
||||
|
||||
void init() override;
|
||||
void appear() override;
|
||||
|
||||
void exeAppear();
|
||||
void exeWait();
|
||||
void exeEnd();
|
||||
|
||||
void setNerveWait();
|
||||
|
||||
private:
|
||||
const IBalloonFindMyAchievementHolder* mAchievementHolder = nullptr;
|
||||
TimeBalloonAchievementLayout* mAchievementLayout = nullptr;
|
||||
};
|
||||
|
||||
static_assert(sizeof(TimeBalloonStateShowResult) == 0x30);
|
||||
Loading…
Reference in a new issue