MCPcopy Create free account
hub / github.com/DescentDevelopers/Descent3 / enum_controllers

Method enum_controllers

win32/WinController.cpp:1310–1400  ·  view source on GitHub ↗

enumerate all controllers on system

Source from the content-addressed store, hash-verified

1308
1309// enumerate all controllers on system
1310bool gameWinController::enum_controllers(char *remote_adr) {
1311 const float kNormalizerMouseX = 640.0f;
1312 const float kNormalizerMouseY = 480.0f;
1313 const float kNormalizerMouseZ = 100.0f;
1314
1315 int num_devs = 0, dev;
1316 int i;
1317
1318 for (i = 0; i < CT_MAX_CONTROLLERS; i++)
1319 m_ControlList[i].id = CTID_INVALID;
1320
1321 // Add keyboard controller
1322 m_ControlList[num_devs].id = CTID_KEYBOARD;
1323 m_ControlList[num_devs].buttons = 0;
1324 m_ControlList[num_devs].flags = 0;
1325 num_devs++;
1326
1327 // add mouse controller
1328 int left, top, right, bottom, zmin, zmax; // btns, axes,
1329 int nbtns, naxis, btnmask;
1330 ddio_MouseGetLimits(&left, &top, &right, &bottom, &zmin, &zmax);
1331 btnmask = ddio_MouseGetCaps(&nbtns, &naxis);
1332
1333 // we will try to support a mouse with 3 axis and N_MSEBTNS buttons.
1334 m_ControlList[num_devs].id = CTID_MOUSE;
1335 m_ControlList[num_devs].buttons = nbtns;
1336 m_ControlList[num_devs].flags = CTF_X_AXIS | CTF_Y_AXIS; // | (naxis>=3 ? CTF_Z_AXIS : 0);
1337 m_ControlList[num_devs].btnmask = btnmask;
1338 m_ControlList[num_devs].normalizer[0] = kNormalizerMouseX;
1339 m_ControlList[num_devs].normalizer[1] = kNormalizerMouseY;
1340 m_ControlList[num_devs].normalizer[2] = kNormalizerMouseZ;
1341 m_ControlList[num_devs].sens[0] = 1.0f;
1342 m_ControlList[num_devs].sens[1] = 1.0f;
1343 m_ControlList[num_devs].sens[2] = 1.0f;
1344 m_ControlList[num_devs].sensmod[0] = 1.0f;
1345 m_ControlList[num_devs].sensmod[1] = 1.0f;
1346 m_ControlList[num_devs].sensmod[2] = 1.0f;
1347 num_devs++;
1348
1349 // we should initialize multiple controls
1350 // before doing this, MAKE SURE REMOTE CONTROL SUPPORTS IT.
1351 for (dev = JOYSTICK_1; dev <= JOYSTICK_8; dev++) {
1352 tJoyInfo jc;
1353
1354 // check if device is plugged in.
1355 if (joy_IsValid(dev)) {
1356 // query the joystick's capabilites to see if joystick is truly valid
1357 joy_GetJoyInfo((tJoystick)dev, &jc);
1358
1359 m_ControlList[num_devs].id = dev;
1360 m_ControlList[num_devs].buttons = jc.num_btns;
1361 m_ControlList[num_devs].btnmask = 0;
1362 m_ControlList[num_devs].flags =
1363 CTF_X_AXIS | CTF_Y_AXIS | ((jc.axes_mask & JOYFLAG_ZVALID) ? CTF_Z_AXIS : 0) |
1364 ((jc.axes_mask & JOYFLAG_RVALID) ? CTF_R_AXIS : 0) | ((jc.axes_mask & JOYFLAG_UVALID) ? CTF_U_AXIS : 0) |
1365 ((jc.axes_mask & JOYFLAG_VVALID) ? CTF_V_AXIS : 0) | ((jc.axes_mask & JOYFLAG_POVVALID) ? CTF_POV : 0) |
1366 ((jc.axes_mask & JOYFLAG_POV2VALID) ? CTF_POV2 : 0) | ((jc.axes_mask & JOYFLAG_POV3VALID) ? CTF_POV3 : 0) |
1367 ((jc.axes_mask & JOYFLAG_POV4VALID) ? CTF_POV4 : 0);

Callers

nothing calls this directly

Calls 4

ddio_MouseGetLimitsFunction · 0.85
ddio_MouseGetCapsFunction · 0.85
joy_IsValidFunction · 0.85
joy_GetJoyInfoFunction · 0.85

Tested by

no test coverage detected