1#pragma once
2
3#include "container/seadListImpl.h"
4#include "controller/seadControllerDefine.h"
5#include "prim/seadRuntimeTypeInfo.h"
6
7namespace sead
8{
9class Controller;
10
11class ControllerAddon
12{
13 SEAD_RTTI_BASE(ControllerAddon)
14
15public:
16 explicit ControllerAddon(Controller* controller)
17 : mId(ControllerDefine::cAddon_Null), mController(controller)
18 {
19 }
20
21 virtual ~ControllerAddon() = default;
22
23 virtual bool calc() = 0;
24
25protected:
26 ListNode mListNode;
27 ControllerDefine::AddonId mId;
28 Controller* mController;
29
30 friend class Controller;
31};
32#ifdef cafe
33static_assert(sizeof(ControllerAddon) == 0x14, "sead::ControllerAddon size mismatch");
34#endif // cafe
35
36} // namespace sead
37