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