1#pragma once
2
3#include "controller/seadController.h"
4#include "heap/seadDisposer.h"
5#include "prim/seadRuntimeTypeInfo.h"
6
7namespace sead
8{
9class Controller;
10
11class ControllerWrapperBase : public ControllerBase, public IDisposer
12{
13 SEAD_RTTI_OVERRIDE(ControllerWrapperBase, ControllerBase)
14
15public:
16 ControllerWrapperBase();
17 virtual ~ControllerWrapperBase();
18
19 virtual void calc(u32 prev_hold, bool prev_pointer_on) = 0;
20 virtual void setIdle();
21
22protected:
23 virtual bool isIdle_();
24
25public:
26 void registerWith(Controller* controller, bool copy_repeat_setting);
27 void unregister();
28 void copyRepeatSetting(const Controller* controller);
29 void setEnable(bool enable);
30 void setEnableOtherWrappers(bool enable) const;
31
32protected:
33 Controller* mController;
34 bool mIsEnable;
35 ListNode mListNode;
36 u8 mPadConfig[cPadIdx_MaxBase];
37
38 friend class Controller;
39};
40#ifdef cafe
41static_assert(sizeof(ControllerWrapperBase) == 0x174, "sead::ControllerWrapperBase size mismatch");
42#endif // cafe
43
44} // namespace sead
45