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

Method get_controller_value

win32/WinController.cpp:510–680  ·  view source on GitHub ↗

returns the value of a requested controller type.

Source from the content-addressed store, hash-verified

508
509// returns the value of a requested controller type.
510ct_config_data gameWinController::get_controller_value(ct_type type_req) {
511 // will return the current value of a requested control type.
512 ct_config_data val = MAKE_CONFIG_DATA(INVALID_CONTROLLER_INFO, NULL_BINDING);
513 int i, j;
514
515 switch (type_req) {
516 int pov_n;
517
518 case ctKey:
519 val = makeword(0, ddio_KeyInKey());
520 break;
521
522 case ctButton:
523 for (i = 2; i < m_NumControls; i++) {
524 for (j = 0; j < m_ControlList[i].buttons; j++) {
525 if (m_ExtCtlStates[m_ControlList[i].id].btnpresses[j] &&
526 !(m_ExtCtlStates[m_ControlList[i].id].buttons & (1 << j))) {
527 val = MAKE_CONFIG_DATA(CONTROLLER_CTL_INFO(i, NULL_CONTROLLER), CONTROLLER_CTL_VALUE(j + 1, NULL_BINDING));
528 return val;
529 }
530 }
531 }
532 break;
533
534 case ctMouseButton:
535 for (j = 0; j < CT_MAX_BUTTONS; j++) {
536 if (ddio_MouseBtnUpCount(j)) {
537 // mprintf(0, "MseBtn %d down\n", j);
538 val = MAKE_CONFIG_DATA(CONTROLLER_CTL_INFO(1, NULL_CONTROLLER), CONTROLLER_CTL_VALUE(j + 1, NULL_BINDING));
539 return val;
540 }
541 }
542 break;
543
544 case ctAxis:
545 for (i = 2; i < m_NumControls; i++) {
546 float pos;
547 float limit;
548 unsigned ctl = CONTROLLER_CTL_INFO(i, NULL_CONTROLLER);
549
550 if (m_ControlList[i].flags & CTF_V_AXIS) {
551 limit = (m_ControlList[i].sens[CT_V_AXIS - 1] > 1.5f) ? 0.95f
552 : (m_ControlList[i].sens[CT_V_AXIS - 1] > 1.0f) ? 0.80f
553 : (m_ControlList[i].sens[CT_V_AXIS - 1] / 2);
554 pos = get_axis_value(i, CT_V_AXIS, ctAnalog);
555 mprintf(0, "pos=%.2f\n", pos);
556 if (fabs(pos) > limit)
557 val = MAKE_CONFIG_DATA(ctl, CONTROLLER_CTL_VALUE(CT_V_AXIS, NULL_BINDING));
558 }
559 if (m_ControlList[i].flags & CTF_U_AXIS) {
560 limit = (m_ControlList[i].sens[CT_U_AXIS - 1] > 1.5f) ? 0.95f
561 : (m_ControlList[i].sens[CT_U_AXIS - 1] > 1.0f) ? 0.80f
562 : (m_ControlList[i].sens[CT_U_AXIS - 1] / 2);
563 pos = get_axis_value(i, CT_U_AXIS, ctAnalog);
564 if (fabs(pos) > limit)
565 val = MAKE_CONFIG_DATA(ctl, CONTROLLER_CTL_VALUE(CT_U_AXIS, NULL_BINDING));
566 }
567 if (m_ControlList[i].flags & CTF_R_AXIS) {

Callers

nothing calls this directly

Calls 2

ddio_KeyInKeyFunction · 0.85
ddio_MouseBtnUpCountFunction · 0.85

Tested by

no test coverage detected