| 1 | #pragma once |
| 2 | |
| 3 | #include <prim/seadSafeString.h> |
| 4 | |
| 5 | namespace al { |
| 6 | class Resource; |
| 7 | class ByamlIter; |
| 8 | class CameraTicketId; |
| 9 | class PlacementId; |
| 10 | |
| 11 | class CameraResourceHolder { |
| 12 | public: |
| 13 | struct Entry { |
| 14 | ByamlIter* cameraParam = nullptr; |
| 15 | ByamlIter* interpoleParam = nullptr; |
| 16 | sead::FixedSafeString<128> stageName = {"" }; |
| 17 | }; |
| 18 | |
| 19 | enum ParamType : s32 { |
| 20 | DefaultTickets = 0, |
| 21 | StartTickets = 2, |
| 22 | Tickets // any other value |
| 23 | }; |
| 24 | |
| 25 | CameraResourceHolder(const char* stageName, s32 maxResources); |
| 26 | |
| 27 | bool tryInitCameraResource(const Resource* resource, s32 unused); |
| 28 | bool tryFindParamResource(ByamlIter* ticket, const CameraTicketId* ticketId, |
| 29 | s32 paramType) const; |
| 30 | bool tryFindCameraParamList(ByamlIter* paramList, const PlacementId* placementId, |
| 31 | const char* paramName) const; |
| 32 | s32 calcEntranceCameraParamNum() const; |
| 33 | bool tryFindCameraParamList(ByamlIter* paramList, const char* stageName, |
| 34 | const char* paramName) const; |
| 35 | void getEntranceCameraParamResource(ByamlIter* ticket, s32 index) const; |
| 36 | Entry* findCameraResource(const char* stageName) const; |
| 37 | Entry* tryFindCameraResource(const char* stageName) const; |
| 38 | Entry* tryFindCameraResource(const PlacementId* placementId) const; |
| 39 | |
| 40 | private: |
| 41 | const char* mStageName; |
| 42 | s32 mMaxEntries; |
| 43 | s32 mNumEntries = 0; |
| 44 | Entry** mEntries; |
| 45 | }; |
| 46 | |
| 47 | } // namespace al |
| 48 | |