mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
ModeBalloon: Implement TimeBalloonDataAccessorState
This commit is contained in:
parent
b6f947c559
commit
f3b1181af7
|
|
@ -95563,274 +95563,274 @@ ModeBalloon/TimeBalloonDataAccessorState.o:
|
|||
label:
|
||||
- _ZN20TimeBalloonDataState40TimeBalloonDataAccessorExecutorStateBaseC1EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
- _ZN20TimeBalloonDataState40TimeBalloonDataAccessorExecutorStateBaseC2EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365c7c
|
||||
size: 12
|
||||
label: _ZN20TimeBalloonDataState40TimeBalloonDataAccessorExecutorStateBase6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365c88
|
||||
size: 20
|
||||
label: _ZN20TimeBalloonDataState40TimeBalloonDataAccessorExecutorStateBase12errorAndKillEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365c9c
|
||||
size: 20
|
||||
label: _ZN20TimeBalloonDataState40TimeBalloonDataAccessorExecutorStateBase22errorConnectionAndKillEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365cb0
|
||||
size: 104
|
||||
label:
|
||||
- _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5StateC1EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
- _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5StateC2EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365d18
|
||||
size: 20
|
||||
label: _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5State6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365d2c
|
||||
size: 8
|
||||
label: _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5State11setAccessorEPN2al9LiveActorE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365d34
|
||||
size: 12
|
||||
label: _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5State7settingEPN11TimeBalloon17BalloonDataServerEmm
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365d40
|
||||
size: 212
|
||||
label: _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5State15exeDeleteNoticeEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365e14
|
||||
size: 196
|
||||
label: _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5State15exeCreateNoticeEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365ed8
|
||||
size: 92
|
||||
label: _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5State16exeCreateBalloonEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365f34
|
||||
size: 100
|
||||
label:
|
||||
- _ZN20TimeBalloonDataState25DownloadAllBalloonDataOwn5StateC1EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
- _ZN20TimeBalloonDataState25DownloadAllBalloonDataOwn5StateC2EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365f98
|
||||
size: 20
|
||||
label: _ZN20TimeBalloonDataState25DownloadAllBalloonDataOwn5State6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x365fac
|
||||
size: 136
|
||||
label: _ZN20TimeBalloonDataState25DownloadAllBalloonDataOwn5State12exeSearchAllEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366034
|
||||
size: 92
|
||||
label: _ZN20TimeBalloonDataState25DownloadAllBalloonDataOwn5State25exeDownloadBufferQueueAllEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366090
|
||||
size: 96
|
||||
label:
|
||||
- _ZN20TimeBalloonDataState19DownloadFindBalloon5StateC1EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
- _ZN20TimeBalloonDataState19DownloadFindBalloon5StateC2EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3660f0
|
||||
size: 20
|
||||
label: _ZN20TimeBalloonDataState19DownloadFindBalloon5State6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366104
|
||||
size: 116
|
||||
label: _ZN20TimeBalloonDataState19DownloadFindBalloon5State16exeSearchBalloonEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366178
|
||||
size: 92
|
||||
label: _ZN20TimeBalloonDataState19DownloadFindBalloon5State25exeDownloadAchievementAllEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3661d4
|
||||
size: 108
|
||||
label:
|
||||
- _ZN20TimeBalloonDataState13RateUpBalloon5StateC1EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
- _ZN20TimeBalloonDataState13RateUpBalloon5StateC2EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366240
|
||||
size: 16
|
||||
label: _ZN20TimeBalloonDataState13RateUpBalloon5State6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366250
|
||||
size: 20
|
||||
label: _ZN20TimeBalloonDataState13RateUpBalloon5State7settingEmmmb
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366264
|
||||
size: 128
|
||||
label: _ZN20TimeBalloonDataState13RateUpBalloon5State15exeUpdateRatingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3662e4
|
||||
size: 96
|
||||
label: _ZN20TimeBalloonDataState13RateUpBalloon5State26exeUpdateBufferQueuePlayedEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366344
|
||||
size: 104
|
||||
label:
|
||||
- _ZN20TimeBalloonDataState16UpdateGetBalloon5StateC1EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
- _ZN20TimeBalloonDataState16UpdateGetBalloon5StateC2EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3663ac
|
||||
size: 16
|
||||
label: _ZN20TimeBalloonDataState16UpdateGetBalloon5State6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3663bc
|
||||
size: 16
|
||||
label: _ZN20TimeBalloonDataState16UpdateGetBalloon5State7settingEmmmii
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3663cc
|
||||
size: 140
|
||||
label: _ZN20TimeBalloonDataState16UpdateGetBalloon5State15exeUpdateRatingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366458
|
||||
size: 108
|
||||
label: _ZN20TimeBalloonDataState16UpdateGetBalloon5State15exeUpdateNoticeEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3664c4
|
||||
size: 96
|
||||
label:
|
||||
- _ZN20TimeBalloonDataState24UpdateGetBalloonTutorial5StateC1EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
- _ZN20TimeBalloonDataState24UpdateGetBalloonTutorial5StateC2EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366524
|
||||
size: 16
|
||||
label: _ZN20TimeBalloonDataState24UpdateGetBalloonTutorial5State6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366534
|
||||
size: 92
|
||||
label: _ZN20TimeBalloonDataState24UpdateGetBalloonTutorial5State15exeUpdateRatingEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366590
|
||||
size: 100
|
||||
label:
|
||||
- _ZN20TimeBalloonDataState24TryCreateAchievementData5StateC1EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
- _ZN20TimeBalloonDataState24TryCreateAchievementData5StateC2EP31TimeBalloonDataAccessorExecutorP23TimeBalloonDataAccessor
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3665f4
|
||||
size: 16
|
||||
label: _ZN20TimeBalloonDataState24TryCreateAchievementData5State6appearEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366604
|
||||
size: 8
|
||||
label: _ZN20TimeBalloonDataState24TryCreateAchievementData5State11setAccessorEPN2al9LiveActorE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x36660c
|
||||
size: 152
|
||||
label: _ZN20TimeBalloonDataState24TryCreateAchievementData5State12exeGetDataIdEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x3666a4
|
||||
size: 92
|
||||
label: _ZN20TimeBalloonDataState24TryCreateAchievementData5State9exeCreateEv
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0x366700
|
||||
size: 36
|
||||
label: _ZN20TimeBalloonDataState40TimeBalloonDataAccessorExecutorStateBaseD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366724
|
||||
size: 36
|
||||
label: _ZN20TimeBalloonDataState19UpdatePutBalloonOwn5StateD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366748
|
||||
size: 36
|
||||
label: _ZN20TimeBalloonDataState25DownloadAllBalloonDataOwn5StateD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x36676c
|
||||
size: 36
|
||||
label: _ZN20TimeBalloonDataState19DownloadFindBalloon5StateD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366790
|
||||
size: 36
|
||||
label: _ZN20TimeBalloonDataState13RateUpBalloon5StateD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x3667b4
|
||||
size: 36
|
||||
label: _ZN20TimeBalloonDataState16UpdateGetBalloon5StateD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x3667d8
|
||||
size: 36
|
||||
label: _ZN20TimeBalloonDataState24UpdateGetBalloonTutorial5StateD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x3667fc
|
||||
size: 36
|
||||
label: _ZN20TimeBalloonDataState24TryCreateAchievementData5StateD0Ev
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366820
|
||||
size: 8
|
||||
label: _ZNK20TimeBalloonDataState19UpdatePutBalloonOwn20StateNrvDeleteNotice7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366828
|
||||
size: 8
|
||||
label: _ZNK20TimeBalloonDataState19UpdatePutBalloonOwn20StateNrvCreateNotice7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366830
|
||||
size: 96
|
||||
label: _ZNK20TimeBalloonDataState19UpdatePutBalloonOwn21StateNrvCreateBalloon7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366890
|
||||
size: 140
|
||||
label: _ZNK20TimeBalloonDataState25DownloadAllBalloonDataOwn17StateNrvSearchAll7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x36691c
|
||||
size: 96
|
||||
label: _ZNK20TimeBalloonDataState25DownloadAllBalloonDataOwn30StateNrvDownloadBufferQueueAll7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x36697c
|
||||
size: 120
|
||||
label: _ZNK20TimeBalloonDataState19DownloadFindBalloon21StateNrvSearchBalloon7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x3669f4
|
||||
size: 96
|
||||
label: _ZNK20TimeBalloonDataState19DownloadFindBalloon30StateNrvDownloadAchievementAll7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366a54
|
||||
size: 132
|
||||
label: _ZNK20TimeBalloonDataState13RateUpBalloon20StateNrvUpdateRating7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366ad8
|
||||
size: 100
|
||||
label: _ZNK20TimeBalloonDataState13RateUpBalloon31StateNrvUpdateBufferQueuePlayed7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366b3c
|
||||
size: 140
|
||||
label: _ZNK20TimeBalloonDataState16UpdateGetBalloon20StateNrvUpdateRating7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366bc8
|
||||
size: 108
|
||||
label: _ZNK20TimeBalloonDataState16UpdateGetBalloon20StateNrvUpdateNotice7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366c34
|
||||
size: 96
|
||||
label: _ZNK20TimeBalloonDataState24UpdateGetBalloonTutorial20StateNrvUpdateRating7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366c94
|
||||
size: 8
|
||||
label: _ZNK20TimeBalloonDataState24TryCreateAchievementData17StateNrvGetDataId7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
- offset: 0x366c9c
|
||||
size: 96
|
||||
label: _ZNK20TimeBalloonDataState24TryCreateAchievementData14StateNrvCreate7executeEPN2al11NerveKeeperE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
lazy: true
|
||||
ModeBalloon/TimeBalloonDataAccessorStateAchievement.o:
|
||||
'.text':
|
||||
|
|
|
|||
12
src/ModeBalloon/TimeBalloonBalloonDataHolder.h
Normal file
12
src/ModeBalloon/TimeBalloonBalloonDataHolder.h
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
class TimeBalloonBalloonDataHolder {
|
||||
public:
|
||||
s32 getCurrentCount() const { return mCurrentCount; }
|
||||
|
||||
private:
|
||||
u8 _0[0x10];
|
||||
s32 mCurrentCount = 0;
|
||||
};
|
||||
|
|
@ -24,8 +24,27 @@ class BalloonDataServer {
|
|||
public:
|
||||
BalloonDataServer();
|
||||
virtual ~BalloonDataServer();
|
||||
|
||||
void setNoticeDataId(u64 noticeDataId) { mNoticeDataId = noticeDataId; }
|
||||
|
||||
private:
|
||||
s32 mDataTypeCurrentWorldId = 0;
|
||||
bool mIsInvalid = false;
|
||||
u8 _d[3] = {};
|
||||
s32 mArg10 = 0;
|
||||
sead::Vector3f mBalloonPos = sead::Vector3f::zero;
|
||||
u64 mNoticeDataId = 0;
|
||||
u64 _28 = 0;
|
||||
u64 _30 = 0;
|
||||
u64 _38 = 0;
|
||||
u64 _40 = 0;
|
||||
u64 _48 = 0;
|
||||
void* _50 = nullptr;
|
||||
void* _58 = nullptr;
|
||||
};
|
||||
|
||||
static_assert(sizeof(BalloonDataServer) == 0x60);
|
||||
|
||||
class BalloonData {
|
||||
public:
|
||||
void setRatingInfo(const nn::nex::qMap<s8, nn::nex::DataStoreRatingInfo>& ratingInfoMap);
|
||||
|
|
|
|||
43
src/ModeBalloon/TimeBalloonDataAccessor.h
Normal file
43
src/ModeBalloon/TimeBalloonDataAccessor.h
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
#include "ModeBalloon/TimeBalloonBalloonDataHolder.h"
|
||||
|
||||
namespace TimeBalloon {
|
||||
class BalloonDataServer;
|
||||
}
|
||||
|
||||
class TimeBalloonDataAccessor {
|
||||
public:
|
||||
bool tryDeleteNoticeDataOne(u64 noticeDataId);
|
||||
bool isEnd() const;
|
||||
void deleteNotice(s32 worldId);
|
||||
bool tryCreateNoticeDataOne();
|
||||
u64 getCreateNoticeDataOneLast() const;
|
||||
void registerNewNotice(u64 noticeDataId, s32 worldId);
|
||||
bool tryCreateBalloonDataOne(const TimeBalloon::BalloonDataServer* balloonDataServer);
|
||||
u64 getBalloonDataIdLast() const;
|
||||
bool trySearchOwnAll();
|
||||
bool tryDownloadBalloonDataOwnAllBufferQueue();
|
||||
bool trySearchBalloon();
|
||||
bool tryDownloadAchievementOther();
|
||||
bool tryRateUpBalloonRating(u64 dataId, u64 ownerId, bool isInvalidRating);
|
||||
bool tryUpdateBalloonPlayed(u64 dataId);
|
||||
bool tryGotBalloon(u64 dataId, u64 ownerId, s32 arg4, s32 arg5);
|
||||
bool tryUpdateNoticeGot(u64 noticeDataId);
|
||||
bool tryGotBalloonTutorial();
|
||||
bool tryGetAndSaveAchievementIfExist();
|
||||
bool isExistAchievementData() const;
|
||||
bool tryCreateAndSaveAchievement();
|
||||
|
||||
s32 getOwnBalloonCount() const { return mBalloonDataHolder->getCurrentCount(); }
|
||||
|
||||
u16 getAchievementDataId() const { return mAchievementDataId; }
|
||||
|
||||
private:
|
||||
u8 _00[0x60];
|
||||
TimeBalloonBalloonDataHolder* mBalloonDataHolder = nullptr;
|
||||
u8 _68[0x10];
|
||||
u16 mAchievementDataId = 0;
|
||||
};
|
||||
398
src/ModeBalloon/TimeBalloonDataAccessorState.cpp
Normal file
398
src/ModeBalloon/TimeBalloonDataAccessorState.cpp
Normal file
|
|
@ -0,0 +1,398 @@
|
|||
#include "ModeBalloon/TimeBalloonDataAccessorState.h"
|
||||
|
||||
#include "Library/Nerve/NerveSetupUtil.h"
|
||||
#include "Library/Nerve/NerveUtil.h"
|
||||
|
||||
#include "ModeBalloon/TimeBalloonData.h"
|
||||
#include "ModeBalloon/TimeBalloonDataAccessor.h"
|
||||
#include "System/GameDataFunction.h"
|
||||
#include "System/GameDataHolderAccessor.h"
|
||||
|
||||
namespace TimeBalloonDataState {
|
||||
|
||||
TimeBalloonDataAccessorExecutorStateBase::TimeBalloonDataAccessorExecutorStateBase(
|
||||
TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor)
|
||||
: al::NerveStateBase(""), mExecutor(executor), mAccessor(accessor) {}
|
||||
|
||||
void TimeBalloonDataAccessorExecutorStateBase::appear() {
|
||||
al::NerveStateBase::appear();
|
||||
mIsError = false;
|
||||
}
|
||||
|
||||
void TimeBalloonDataAccessorExecutorStateBase::errorAndKill() {
|
||||
mIsError = true;
|
||||
kill();
|
||||
}
|
||||
|
||||
void TimeBalloonDataAccessorExecutorStateBase::errorConnectionAndKill() {
|
||||
mIsError = true;
|
||||
kill();
|
||||
}
|
||||
|
||||
namespace UpdatePutBalloonOwn {
|
||||
|
||||
NERVE_IMPL(State, DeleteNotice)
|
||||
NERVE_IMPL(State, CreateNotice)
|
||||
NERVE_IMPL(State, CreateBalloon)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(State, DeleteNotice, CreateNotice, CreateBalloon)
|
||||
|
||||
State::State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor)
|
||||
: TimeBalloonDataAccessorExecutorStateBase(executor, accessor) {
|
||||
initNerve(&DeleteNotice, 0);
|
||||
}
|
||||
|
||||
void State::appear() {
|
||||
TimeBalloonDataAccessorExecutorStateBase::appear();
|
||||
al::setNerve(this, &DeleteNotice);
|
||||
}
|
||||
|
||||
void State::setAccessor(al::LiveActor* accessor) {
|
||||
mAccessorActor = accessor;
|
||||
}
|
||||
|
||||
void State::setting(TimeBalloon::BalloonDataServer* balloonDataServer, u64 previousDataId,
|
||||
u64 noticeDataId) {
|
||||
mBalloonDataServer = balloonDataServer;
|
||||
mPreviousDataId = previousDataId;
|
||||
mNoticeDataId = noticeDataId;
|
||||
}
|
||||
|
||||
void State::exeDeleteNotice() {
|
||||
if (mNoticeDataId == 0) {
|
||||
al::setNerve(this, &CreateBalloon);
|
||||
return;
|
||||
}
|
||||
|
||||
if (al::isFirstStep(this) && !mAccessor->tryDeleteNoticeDataOne(mNoticeDataId)) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd()) {
|
||||
TimeBalloonDataAccessor* accessor = mAccessor;
|
||||
GameDataHolderAccessor holderAccessor(mAccessorActor);
|
||||
accessor->deleteNotice(GameDataFunction::getCurrentWorldId(holderAccessor) & 0xFFFF);
|
||||
al::setNerve(this, &CreateNotice);
|
||||
}
|
||||
}
|
||||
|
||||
void State::exeCreateNotice() {
|
||||
if (al::isFirstStep(this) && !mAccessor->tryCreateNoticeDataOne()) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd()) {
|
||||
mNoticeDataId = mAccessor->getCreateNoticeDataOneLast();
|
||||
mBalloonDataServer->setNoticeDataId(mNoticeDataId);
|
||||
|
||||
TimeBalloonDataAccessor* accessor = mAccessor;
|
||||
u64 noticeDataId = mNoticeDataId;
|
||||
GameDataHolderAccessor holderAccessor(mAccessorActor);
|
||||
|
||||
accessor->registerNewNotice(noticeDataId,
|
||||
GameDataFunction::getCurrentWorldId(holderAccessor) & 0xFFFF);
|
||||
al::setNerve(this, &CreateBalloon);
|
||||
}
|
||||
}
|
||||
|
||||
void State::exeCreateBalloon() {
|
||||
if (al::isFirstStep(this))
|
||||
mAccessor->tryCreateBalloonDataOne(mBalloonDataServer);
|
||||
|
||||
if (mAccessor->isEnd()) {
|
||||
mAccessor->getBalloonDataIdLast();
|
||||
kill();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace UpdatePutBalloonOwn
|
||||
|
||||
namespace DownloadAllBalloonDataOwn {
|
||||
|
||||
NERVE_IMPL(State, SearchAll)
|
||||
NERVE_IMPL(State, DownloadBufferQueueAll)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(State, SearchAll, DownloadBufferQueueAll)
|
||||
|
||||
State::State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor)
|
||||
: TimeBalloonDataAccessorExecutorStateBase(executor, accessor), mSearchAccessor(accessor) {
|
||||
initNerve(&SearchAll, 0);
|
||||
}
|
||||
|
||||
void State::appear() {
|
||||
TimeBalloonDataAccessorExecutorStateBase::appear();
|
||||
al::setNerve(this, &SearchAll);
|
||||
}
|
||||
|
||||
void State::exeSearchAll() {
|
||||
if (al::isFirstStep(this) && !mSearchAccessor->trySearchOwnAll()) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mSearchAccessor->isEnd()) {
|
||||
if (mSearchAccessor->getOwnBalloonCount() >= 1)
|
||||
al::setNerve(this, &DownloadBufferQueueAll);
|
||||
else
|
||||
kill();
|
||||
}
|
||||
}
|
||||
|
||||
void State::exeDownloadBufferQueueAll() {
|
||||
if (al::isFirstStep(this) && !mSearchAccessor->tryDownloadBalloonDataOwnAllBufferQueue()) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mSearchAccessor->isEnd())
|
||||
kill();
|
||||
}
|
||||
|
||||
} // namespace DownloadAllBalloonDataOwn
|
||||
|
||||
namespace DownloadFindBalloon {
|
||||
|
||||
NERVE_IMPL(State, SearchBalloon)
|
||||
NERVE_IMPL(State, DownloadAchievementAll)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(State, SearchBalloon, DownloadAchievementAll)
|
||||
|
||||
State::State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor)
|
||||
: TimeBalloonDataAccessorExecutorStateBase(executor, accessor) {
|
||||
initNerve(&SearchBalloon, 0);
|
||||
}
|
||||
|
||||
void State::appear() {
|
||||
TimeBalloonDataAccessorExecutorStateBase::appear();
|
||||
al::setNerve(this, &SearchBalloon);
|
||||
}
|
||||
|
||||
void State::exeSearchBalloon() {
|
||||
if (al::isFirstStep(this) && !mAccessor->trySearchBalloon()) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd())
|
||||
al::setNerve(this, &DownloadAchievementAll);
|
||||
}
|
||||
|
||||
void State::exeDownloadAchievementAll() {
|
||||
if (al::isFirstStep(this) && !mAccessor->tryDownloadAchievementOther()) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd())
|
||||
kill();
|
||||
}
|
||||
|
||||
} // namespace DownloadFindBalloon
|
||||
|
||||
namespace RateUpBalloon {
|
||||
|
||||
NERVE_IMPL(State, UpdateRating)
|
||||
NERVE_IMPL(State, UpdateBufferQueuePlayed)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(State, UpdateRating, UpdateBufferQueuePlayed)
|
||||
|
||||
State::State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor)
|
||||
: TimeBalloonDataAccessorExecutorStateBase(executor, accessor) {
|
||||
initNerve(&UpdateRating, 0);
|
||||
}
|
||||
|
||||
void State::appear() {
|
||||
al::NerveStateBase::appear();
|
||||
al::setNerve(this, &UpdateRating);
|
||||
}
|
||||
|
||||
void State::setting(u64 dataId, u64 unused, u64 ownerId, bool isInvalidRating) {
|
||||
mDataId = dataId;
|
||||
_38 = unused;
|
||||
mOwnerId = ownerId;
|
||||
_48 = isInvalidRating;
|
||||
}
|
||||
|
||||
void State::exeUpdateRating() {
|
||||
if (al::isFirstStep(this) && !mAccessor->tryRateUpBalloonRating(mDataId, mOwnerId, false)) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd())
|
||||
al::setNerve(this, &UpdateBufferQueuePlayed);
|
||||
}
|
||||
|
||||
void State::exeUpdateBufferQueuePlayed() {
|
||||
if (al::isFirstStep(this) && !mAccessor->tryUpdateBalloonPlayed(mDataId)) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd())
|
||||
kill();
|
||||
}
|
||||
|
||||
} // namespace RateUpBalloon
|
||||
|
||||
namespace UpdateGetBalloon {
|
||||
|
||||
NERVE_IMPL(State, UpdateRating)
|
||||
NERVE_IMPL(State, UpdateNotice)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(State, UpdateRating, UpdateNotice)
|
||||
|
||||
State::State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor)
|
||||
: TimeBalloonDataAccessorExecutorStateBase(executor, accessor) {
|
||||
initNerve(&UpdateRating, 0);
|
||||
}
|
||||
|
||||
void State::appear() {
|
||||
al::NerveStateBase::appear();
|
||||
al::setNerve(this, &UpdateRating);
|
||||
}
|
||||
|
||||
void State::setting(u64 dataId, u64 noticeDataId, u64 ownerId, s32 arg4, s32 arg5) {
|
||||
mDataId = dataId;
|
||||
mNoticeDataId = noticeDataId;
|
||||
mOwnerId = ownerId;
|
||||
mArg4 = arg4;
|
||||
mArg5 = arg5;
|
||||
}
|
||||
|
||||
void State::exeUpdateRating() {
|
||||
if (mDataId != 0) {
|
||||
if (!al::isFirstStep(this) || mAccessor->tryGotBalloon(mDataId, mOwnerId, mArg4, mArg5)) {
|
||||
if (mAccessor->isEnd())
|
||||
al::setNerve(this, &UpdateNotice);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
mIsError = true;
|
||||
kill();
|
||||
}
|
||||
|
||||
void State::exeUpdateNotice() {
|
||||
if (mNoticeDataId == 0) {
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (al::isFirstStep(this) && !mAccessor->tryUpdateNoticeGot(mNoticeDataId)) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd())
|
||||
kill();
|
||||
}
|
||||
|
||||
} // namespace UpdateGetBalloon
|
||||
|
||||
namespace UpdateGetBalloonTutorial {
|
||||
|
||||
NERVE_IMPL(State, UpdateRating)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(State, UpdateRating)
|
||||
|
||||
State::State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor)
|
||||
: TimeBalloonDataAccessorExecutorStateBase(executor, accessor) {
|
||||
initNerve(&UpdateRating, 0);
|
||||
}
|
||||
|
||||
void State::appear() {
|
||||
al::NerveStateBase::appear();
|
||||
al::setNerve(this, &UpdateRating);
|
||||
}
|
||||
|
||||
void State::exeUpdateRating() {
|
||||
if (al::isFirstStep(this) && !mAccessor->tryGotBalloonTutorial()) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd())
|
||||
kill();
|
||||
}
|
||||
|
||||
} // namespace UpdateGetBalloonTutorial
|
||||
|
||||
namespace TryCreateAchievementData {
|
||||
|
||||
NERVE_IMPL(State, GetDataId)
|
||||
NERVE_IMPL(State, Create)
|
||||
|
||||
NERVES_MAKE_NOSTRUCT(State, GetDataId, Create)
|
||||
|
||||
State::State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor)
|
||||
: TimeBalloonDataAccessorExecutorStateBase(executor, accessor) {
|
||||
initNerve(&GetDataId, 0);
|
||||
}
|
||||
|
||||
void State::appear() {
|
||||
al::NerveStateBase::appear();
|
||||
al::setNerve(this, &GetDataId);
|
||||
}
|
||||
|
||||
void State::setAccessor(al::LiveActor* accessor) {
|
||||
mAccessorActor = accessor;
|
||||
}
|
||||
|
||||
void State::exeGetDataId() {
|
||||
if (al::isFirstStep(this) && !mAccessor->tryGetAndSaveAchievementIfExist()) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd()) {
|
||||
if (mAccessor->isExistAchievementData()) {
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
u32 achievementDataId = mAccessor->getAchievementDataId();
|
||||
u8 lowByte = achievementDataId;
|
||||
|
||||
if (lowByte == 0) {
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(achievementDataId < 0x100u)) {
|
||||
al::setNerve(this, &Create);
|
||||
return;
|
||||
}
|
||||
|
||||
mIsError = true;
|
||||
kill();
|
||||
}
|
||||
}
|
||||
|
||||
void State::exeCreate() {
|
||||
if (al::isFirstStep(this) && !mAccessor->tryCreateAndSaveAchievement()) {
|
||||
mIsError = true;
|
||||
kill();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mAccessor->isEnd())
|
||||
kill();
|
||||
}
|
||||
|
||||
} // namespace TryCreateAchievementData
|
||||
|
||||
} // namespace TimeBalloonDataState
|
||||
157
src/ModeBalloon/TimeBalloonDataAccessorState.h
Normal file
157
src/ModeBalloon/TimeBalloonDataAccessorState.h
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
#include "Library/Nerve/NerveStateBase.h"
|
||||
|
||||
namespace al {
|
||||
class LiveActor;
|
||||
}
|
||||
|
||||
namespace TimeBalloon {
|
||||
class BalloonDataServer;
|
||||
}
|
||||
|
||||
class TimeBalloonDataAccessor;
|
||||
class TimeBalloonDataAccessorExecutor;
|
||||
|
||||
namespace TimeBalloonDataState {
|
||||
|
||||
class TimeBalloonDataAccessorExecutorStateBase : public al::NerveStateBase {
|
||||
public:
|
||||
TimeBalloonDataAccessorExecutorStateBase(TimeBalloonDataAccessorExecutor* executor,
|
||||
TimeBalloonDataAccessor* accessor);
|
||||
|
||||
void appear() override;
|
||||
void errorAndKill();
|
||||
void errorConnectionAndKill();
|
||||
|
||||
protected:
|
||||
TimeBalloonDataAccessorExecutor* mExecutor;
|
||||
TimeBalloonDataAccessor* mAccessor;
|
||||
bool mIsError = false;
|
||||
};
|
||||
|
||||
static_assert(sizeof(TimeBalloonDataAccessorExecutorStateBase) == 0x30);
|
||||
|
||||
namespace UpdatePutBalloonOwn {
|
||||
class State : public TimeBalloonDataAccessorExecutorStateBase {
|
||||
public:
|
||||
State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor);
|
||||
|
||||
void appear() override;
|
||||
void setAccessor(al::LiveActor* accessor);
|
||||
void setting(TimeBalloon::BalloonDataServer* balloonDataServer, u64 previousDataId,
|
||||
u64 noticeDataId);
|
||||
void exeDeleteNotice();
|
||||
void exeCreateNotice();
|
||||
void exeCreateBalloon();
|
||||
|
||||
private:
|
||||
al::LiveActor* mAccessorActor = nullptr;
|
||||
TimeBalloon::BalloonDataServer* mBalloonDataServer = nullptr;
|
||||
u64 mPreviousDataId = 0;
|
||||
u64 mNoticeDataId = 0;
|
||||
};
|
||||
|
||||
static_assert(sizeof(State) == 0x50);
|
||||
} // namespace UpdatePutBalloonOwn
|
||||
|
||||
namespace DownloadAllBalloonDataOwn {
|
||||
class State : public TimeBalloonDataAccessorExecutorStateBase {
|
||||
public:
|
||||
State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor);
|
||||
|
||||
void appear() override;
|
||||
void exeSearchAll();
|
||||
void exeDownloadBufferQueueAll();
|
||||
|
||||
private:
|
||||
TimeBalloonDataAccessor* mSearchAccessor = nullptr;
|
||||
};
|
||||
|
||||
static_assert(sizeof(State) == 0x38);
|
||||
} // namespace DownloadAllBalloonDataOwn
|
||||
|
||||
namespace DownloadFindBalloon {
|
||||
class State : public TimeBalloonDataAccessorExecutorStateBase {
|
||||
public:
|
||||
State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor);
|
||||
|
||||
void appear() override;
|
||||
void exeSearchBalloon();
|
||||
void exeDownloadAchievementAll();
|
||||
};
|
||||
|
||||
static_assert(sizeof(State) == 0x30);
|
||||
} // namespace DownloadFindBalloon
|
||||
|
||||
namespace RateUpBalloon {
|
||||
class State : public TimeBalloonDataAccessorExecutorStateBase {
|
||||
public:
|
||||
State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor);
|
||||
|
||||
void appear() override;
|
||||
void setting(u64 dataId, u64 unused, u64 ownerId, bool isInvalidRating);
|
||||
void exeUpdateRating();
|
||||
void exeUpdateBufferQueuePlayed();
|
||||
|
||||
private:
|
||||
u64 mDataId = 0;
|
||||
u64 _38 = 0;
|
||||
u64 mOwnerId = 0;
|
||||
bool _48 = false;
|
||||
};
|
||||
|
||||
static_assert(sizeof(State) == 0x50);
|
||||
} // namespace RateUpBalloon
|
||||
|
||||
namespace UpdateGetBalloon {
|
||||
class State : public TimeBalloonDataAccessorExecutorStateBase {
|
||||
public:
|
||||
State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor);
|
||||
|
||||
void appear() override;
|
||||
void setting(u64 dataId, u64 noticeDataId, u64 ownerId, s32 arg4, s32 arg5);
|
||||
void exeUpdateRating();
|
||||
void exeUpdateNotice();
|
||||
|
||||
u64 mDataId = 0;
|
||||
u64 mNoticeDataId = 0;
|
||||
u64 mOwnerId = 0;
|
||||
s32 mArg4 = 0;
|
||||
s32 mArg5 = 0;
|
||||
};
|
||||
|
||||
static_assert(sizeof(State) == 0x50);
|
||||
} // namespace UpdateGetBalloon
|
||||
|
||||
namespace UpdateGetBalloonTutorial {
|
||||
class State : public TimeBalloonDataAccessorExecutorStateBase {
|
||||
public:
|
||||
State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor);
|
||||
|
||||
void appear() override;
|
||||
void exeUpdateRating();
|
||||
};
|
||||
|
||||
static_assert(sizeof(State) == 0x30);
|
||||
} // namespace UpdateGetBalloonTutorial
|
||||
|
||||
namespace TryCreateAchievementData {
|
||||
class State : public TimeBalloonDataAccessorExecutorStateBase {
|
||||
public:
|
||||
State(TimeBalloonDataAccessorExecutor* executor, TimeBalloonDataAccessor* accessor);
|
||||
|
||||
void appear() override;
|
||||
void setAccessor(al::LiveActor* accessor);
|
||||
void exeGetDataId();
|
||||
void exeCreate();
|
||||
|
||||
al::LiveActor* mAccessorActor = nullptr;
|
||||
};
|
||||
|
||||
static_assert(sizeof(State) == 0x38);
|
||||
} // namespace TryCreateAchievementData
|
||||
|
||||
} // namespace TimeBalloonDataState
|
||||
Loading…
Reference in a new issue