1#pragma once
2
3#include "Library/Factory/Factory.h"
4
5namespace al {
6class AreaObj;
7
8using AreaCreatorFunction = AreaObj* (*)(const char* areaName);
9
10struct AreaGroupInfo {
11 const char* name;
12 s32 size;
13};
14
15class AreaObjFactory : public Factory<AreaCreatorFunction> {
16public:
17 AreaObjFactory(const char* factoryName);
18
19 s32 tryFindAddBufferSize(const char* bufferName) const;
20
21 s32 getAreaGroupCount() const { return mAreaGroupInfoCount; }
22
23 const AreaGroupInfo* getAreaGroupInfo() const { return mAreaGroupInfos; }
24
25 template <s32 N>
26 inline void setAreaGroupInfos(const AreaGroupInfo (&areaInfos)[N]) {
27 mAreaGroupInfos = areaInfos;
28 mAreaGroupInfoCount = N;
29 }
30
31private:
32 const AreaGroupInfo* mAreaGroupInfos = nullptr;
33 s32 mAreaGroupInfoCount = 0;
34};
35} // namespace al
36