returns the value of a requested controller type.
| 508 | |
| 509 | // returns the value of a requested controller type. |
| 510 | ct_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) { |
nothing calls this directly
no test coverage detected