enumerate all controllers on system
| 851 | |
| 852 | // enumerate all controllers on system |
| 853 | bool lnxgameController::enum_controllers() { |
| 854 | int num_devs = 0, dev; |
| 855 | int i; |
| 856 | |
| 857 | for (i = 0; i < CT_MAX_CONTROLLERS; i++) |
| 858 | m_ControlList[i].id = CTID_INVALID; |
| 859 | |
| 860 | // Add keyboard controller |
| 861 | m_ControlList[num_devs].id = CTID_KEYBOARD; |
| 862 | m_ControlList[num_devs].buttons = 0; |
| 863 | m_ControlList[num_devs].flags = 0; |
| 864 | num_devs++; |
| 865 | |
| 866 | // add mouse controller |
| 867 | |
| 868 | int left, top, right, bottom, zmin, zmax; // btns, axes, |
| 869 | int nbtns, naxis, btnmask; |
| 870 | ddio_MouseGetLimits(&left, &top, &right, &bottom, &zmin, &zmax); |
| 871 | btnmask = ddio_MouseGetCaps(&nbtns, &naxis); |
| 872 | |
| 873 | // we will try to support a mouse with 3 axis and N_MSEBTNS buttons. |
| 874 | m_ControlList[num_devs].id = CTID_MOUSE; |
| 875 | m_ControlList[num_devs].buttons = nbtns; |
| 876 | m_ControlList[num_devs].flags = CTF_X_AXIS | CTF_Y_AXIS; // | (naxis>=3 ? CTF_Z_AXIS : 0); |
| 877 | m_ControlList[num_devs].btnmask = btnmask; |
| 878 | m_ControlList[num_devs].normalizer[0] = 320.0f; |
| 879 | m_ControlList[num_devs].normalizer[1] = 240.0f; |
| 880 | m_ControlList[num_devs].normalizer[2] = 100.0f; |
| 881 | m_ControlList[num_devs].sens[0] = 1.0f; |
| 882 | m_ControlList[num_devs].sens[1] = 1.0f; |
| 883 | m_ControlList[num_devs].sens[2] = 1.0f; |
| 884 | m_ControlList[num_devs].sensmod[0] = 1.0f; |
| 885 | m_ControlList[num_devs].sensmod[1] = 1.0f; |
| 886 | m_ControlList[num_devs].sensmod[2] = 1.0f; |
| 887 | num_devs++; |
| 888 | |
| 889 | // we should initialize multiple controls |
| 890 | // before doing this, MAKE SURE REMOTE CONTROL SUPPORTS IT. |
| 891 | for (dev = JOYSTICK_1; dev <= JOYSTICK_8; dev++) { |
| 892 | tJoyInfo jc; |
| 893 | |
| 894 | // check if device is plugged in. |
| 895 | if (joy_IsValid(dev)) { |
| 896 | // query the joystick's capabilites to see if joystick is truly valid |
| 897 | joy_GetJoyInfo((tJoystick)dev, &jc); |
| 898 | |
| 899 | m_ControlList[num_devs].id = dev; |
| 900 | m_ControlList[num_devs].buttons = jc.num_btns; |
| 901 | m_ControlList[num_devs].btnmask = 0; |
| 902 | m_ControlList[num_devs].flags = |
| 903 | CTF_X_AXIS | CTF_Y_AXIS | ((jc.axes_mask & JOYFLAG_ZVALID) ? CTF_Z_AXIS : 0) | |
| 904 | ((jc.axes_mask & JOYFLAG_RVALID) ? CTF_R_AXIS : 0) | ((jc.axes_mask & JOYFLAG_UVALID) ? CTF_U_AXIS : 0) | |
| 905 | ((jc.axes_mask & JOYFLAG_VVALID) ? CTF_V_AXIS : 0) | ((jc.axes_mask & JOYFLAG_POVVALID) ? CTF_POV : 0) | |
| 906 | ((jc.axes_mask & JOYFLAG_POV2VALID) ? CTF_POV2 : 0) | ((jc.axes_mask & JOYFLAG_POV3VALID) ? CTF_POV3 : 0) | |
| 907 | ((jc.axes_mask & JOYFLAG_POV4VALID) ? CTF_POV4 : 0); |
| 908 | m_ControlList[num_devs].normalizer[0] = (jc.maxx - jc.minx) / 2.0f; |
| 909 | m_ControlList[num_devs].normalizer[1] = (jc.maxy - jc.miny) / 2.0f; |
| 910 | m_ControlList[num_devs].normalizer[2] = (jc.maxz - jc.minz) / 2.0f; |
nothing calls this directly
no test coverage detected