OpenBarnyard
 
Loading...
Searching...
No Matches
TInputDeviceController.cpp
Go to the documentation of this file.
1#include "ToshiPCH.h"
3
4//-----------------------------------------------------------------------------
5// Enables memory debugging.
6// Note: Should be the last include!
7//-----------------------------------------------------------------------------
9
11
13
14// $Barnyard: FUNCTION 006c48d0
16{
17 m_CurrentState = new TBOOL[ NUM_BUTTONS ];
18 m_OldState = new TBOOL[ NUM_BUTTONS ];
19 TUtil::MemClear( m_CurrentState, sizeof( *m_CurrentState ) * NUM_BUTTONS );
20 TUtil::MemClear( m_OldState, sizeof( *m_OldState ) * NUM_BUTTONS );
21}
22
23// $Barnyard: FUNCTION 006c4ea0
27
28// $Barnyard: FUNCTION 006c4990
30{
31 if ( a_iDoodad < 0x10000 || 0x1001b < a_iDoodad )
32 {
33 return TFALSE;
34 }
35
36 if ( a_iDoodad != 0x10019 && a_iDoodad != 0x1001a && a_iDoodad != 0x1001b )
37 {
38 a_rProperties.m_iUnk = 0;
39 a_rProperties.m_bFlag = TFALSE;
40 return TTRUE;
41 }
42
43 a_rProperties.m_iUnk = 2;
44 a_rProperties.m_bFlag = TTRUE;
45 return TTRUE;
46}
47
48// $Barnyard: FUNCTION 006c4d30
50{
51 // TODO: Create constants for doodads
52
53 switch ( a_iDoodad )
54 {
55 case 0x10001:
56 return "BUTTON_DPAD_UP";
57 case 0x10002:
58 return "BUTTON_DPAD_RIGHT";
59 case 0x10003:
60 return "BUTTON_DPAD_DOWN";
61 case 0x10004:
62 return "BUTTON_DPAD_LEFT";
63 case 0x10005:
64 return "BUTTON_SELECT";
65 case 0x10006:
66 return "BUTTON_START";
67 case 0x10007:
68 return "BUTTON_STICK_LEFT";
69 case 0x10008:
70 return "BUTTON_STICK_RIGHT";
71 case 0x10009:
72 return "BUTTON_CONTEXT_1";
73 case 0x1000a:
74 return "BUTTON_CONTEXT_2";
75 case 0x1000b:
76 return "BUTTON_CONTEXT_3";
77 case 0x1000c:
78 return "BUTTON_CONTEXT_4";
79 case 0x1000d:
80 return "BUTTON_SHOULDER_LEFT_1";
81 case 0x1000e:
82 return "BUTTON_SHOULDER_LEFT_2";
83 case 0x1000f:
84 return "BUTTON_SHOULDER_RIGHT_1";
85 case 0x10010:
86 return "BUTTON_SHOULDER_RIGHT_2";
87 case 0x10011:
88 return "VIRTBTN_STICK_LEFT_UP";
89 case 0x10012:
90 return "VIRTBTN_STICK_LEFT_RIGHT";
91 case 0x10013:
92 return "VIRTBTN_STICK_LEFT_DOWN";
93 case 0x10014:
94 return "VIRTBTN_STICK_LEFT_LEFT";
95 case 0x10015:
96 return "VIRTBTN_STICK_RIGHT_UP";
97 case 0x10016:
98 return "VIRTBTN_STICK_RIGHT_RIGHT";
99 case 0x10017:
100 return "VIRTBTN_STICK_RIGHT_DOWN";
101 case 0x10018:
102 return "VIRTBTN_STICK_RIGHT_LEFT";
103 case 0x10019:
104 return "STICK_LEFT";
105 case 0x1001a:
106 return "STICK_RIGHT";
107 case 0x1001b:
108 return "VIRTSTK_DPAD";
109 default:
110 return "UNKNOWN";
111 }
112}
113
114// $Barnyard: FUNCTION 006c49f0
116{
117 switch ( a_iDoodad )
118 {
119 case 0x10011:
120 return m_CurrentState[ 0 ];
121 case 0x10012:
122 return m_CurrentState[ 1 ];
123 case 0x10013:
124 return m_CurrentState[ 2 ];
125 case 0x10014:
126 return m_CurrentState[ 3 ];
127 case 0x10015:
128 return m_CurrentState[ 4 ];
129 case 0x10016:
130 return m_CurrentState[ 5 ];
131 case 0x10017:
132 return m_CurrentState[ 6 ];
133 case 0x10018:
134 return m_CurrentState[ 7 ];
135 default:
136 return TFALSE;
137 }
138}
139
141{
142}
143
144// $Barnyard: FUNCTION 006c4a80
146{
147 switch ( a_iDoodad )
148 {
149 case 0x10011:
150 return m_OldState[ 0 ];
151 case 0x10012:
152 return m_OldState[ 1 ];
153 case 0x10013:
154 return m_OldState[ 2 ];
155 case 0x10014:
156 return m_OldState[ 3 ];
157 case 0x10015:
158 return m_OldState[ 4 ];
159 case 0x10016:
160 return m_OldState[ 5 ];
161 case 0x10017:
162 return m_OldState[ 6 ];
163 case 0x10018:
164 return m_OldState[ 7 ];
165 default:
166 return TFALSE;
167 }
168}
169
174
175// $Barnyard: FUNCTION 006c4ee0
177{
178 TINT iNumProcessed = 0;
179
180 for ( TINT i = 0; i < NUM_BUTTONS; i++ )
181 {
182 if ( m_CurrentState[ i ] != m_OldState[ i ] )
183 {
184 a_rEmitter.Throw(
186 this,
187 0x10011 + i,
188 m_CurrentState[ i ] == TTRUE ?
191 )
192 );
193
194 iNumProcessed += 1;
195 }
196 }
197
198 a_rEmitter.Throw(
200 this,
201 0x1001B,
203 m_fMag1,
204 m_fMag2
205 )
206 );
207
208 return iNumProcessed + 1;
209}
210
Controller input device interface for the Toshi engine.
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
#define TDEFINE_CLASS_NORUNTIME(...)
Definition TObject.h:138
char TCHAR
Definition Typedefs.h:20
float TFLOAT
Definition Typedefs.h:4
int TINT
Definition Typedefs.h:7
#define TFALSE
Definition Typedefs.h:24
#define TTRUE
Definition Typedefs.h:25
bool TBOOL
Definition Typedefs.h:6
virtual void SetVibration(VIBRATION_ACTUATOR a_eActuator, TFLOAT a_fValue)
virtual const TCHAR * GetButtonFromDoodad(Doodad a_iDoodad) const override
virtual TINT ProcessVirtualButtons(EventEmitter &a_rEmitter, float a_fDeltaTime)
virtual TBOOL WasDown(Doodad a_iDoodad) const
virtual TBOOL GetDoodadProperties(Doodad a_iDoodad, DoodadProperties &a_rProperties) const override
static constexpr TUINT NUM_BUTTONS
virtual TBOOL IsDown(Doodad a_iDoodad) const override
TInputInterface::EventEmitter EventEmitter
void Throw(Data *pData)
Definition TEvent.h:56
static void MemClear(void *ptr, TSIZE size)
Definition TUtil.h:91