1#include "Item/CoinCollectWatcher.h"
2
3#include "Library/LiveActor/ActorInitUtil.h"
4#include "Library/Player/PlayerUtil.h"
5#include "Library/Scene/IUseSceneObjHolder.h"
6#include "Library/Se/SeFunction.h"
7
8#include "Layout/CoinCollectLayout.h"
9#include "Scene/SceneObjFactory.h"
10#include "System/GameDataFunction.h"
11
12CoinCollectWatcher::CoinCollectWatcher() : al::ISceneObj() {}
13
14void CoinCollectWatcher::initAfterPlacementSceneObj(const al::ActorInitInfo& initInfo) {
15 mCoinCollectLayout = new CoinCollectLayout(al::getLayoutInitInfo(initInfo));
16}
17
18void CoinCollectWatcher::registerCoin(bool isCountUpCoin) {
19 if (isCountUpCoin) {
20 mCoinUpCount++;
21 mRegisteredCoins++;
22 return;
23 }
24 mRegisteredCoins++;
25}
26
27void CoinCollectWatcher::countup(const al::LiveActor* actor) {
28 mCoinUpCount++;
29 s32 coinNumber = GameDataFunction::getCoinCollectGotNum(accessor: actor);
30 s32 countNumberMax = GameDataFunction::getCoinCollectNumMax(accessor: actor);
31
32 mCoinCollectLayout->appearCounter(maxCoins: countNumberMax, currentCoins: coinNumber + 1, coinActor: al::getPlayerActor(actor, 0));
33 if (countNumberMax == coinNumber + 1)
34 al::startSe(mCoinCollectLayout, "CountMax");
35}
36
37namespace rs {
38CoinCollectWatcher* createCoinCollectWatcher(const al::IUseSceneObjHolder* objHolder) {
39 return (CoinCollectWatcher*)al::createSceneObj(objHolder, type: SceneObjID_CoinCollectWatcher);
40}
41} // namespace rs
42