| 885 | // controller element stataes. |
| 886 | |
| 887 | void DoControllerMovement(game_controls *controls) { |
| 888 | ct_packet ctl_x, ctl_y, ctl_z, ctl_p, ctl_b, ctl_h; |
| 889 | ct_packet ctl_povl, ctl_povr, ctl_povu, ctl_povd, ctl_fb, ctl_rb; |
| 890 | ct_packet ctl_afterburn; |
| 891 | ct_packet ctl_pub, ctl_pdb, ctl_hlb, ctl_hrb, ctl_blb, ctl_brb; |
| 892 | |
| 893 | // read controls |
| 894 | Controller->get_packet(ctfFORWARD_THRUSTAXIS, &ctl_z); |
| 895 | Controller->get_packet(ctfUP_THRUSTAXIS, &ctl_y); |
| 896 | Controller->get_packet(ctfRIGHT_THRUSTAXIS, &ctl_x); |
| 897 | Controller->get_packet(ctfPITCH_DOWNAXIS, &ctl_p); |
| 898 | Controller->get_packet(ctfBANK_RIGHTAXIS, &ctl_b); |
| 899 | Controller->get_packet(ctfHEADING_RIGHTAXIS, &ctl_h); |
| 900 | Controller->get_packet(ctfUP_BUTTON, &ctl_povu); |
| 901 | Controller->get_packet(ctfDOWN_BUTTON, &ctl_povd); |
| 902 | Controller->get_packet(ctfRIGHT_BUTTON, &ctl_povr); |
| 903 | Controller->get_packet(ctfLEFT_BUTTON, &ctl_povl); |
| 904 | Controller->get_packet(ctfFORWARD_BUTTON, &ctl_fb); |
| 905 | Controller->get_packet(ctfREVERSE_BUTTON, &ctl_rb); |
| 906 | Controller->get_packet(ctfAFTERBURN_BUTTON, &ctl_afterburn); |
| 907 | Controller->get_packet(ctfHEADING_LEFTBUTTON, &ctl_hlb); |
| 908 | Controller->get_packet(ctfHEADING_RIGHTBUTTON, &ctl_hrb); |
| 909 | Controller->get_packet(ctfPITCH_UPBUTTON, &ctl_pub); |
| 910 | Controller->get_packet(ctfPITCH_DOWNBUTTON, &ctl_pdb); |
| 911 | Controller->get_packet(ctfBANK_LEFTBUTTON, &ctl_blb); |
| 912 | Controller->get_packet(ctfBANK_RIGHTBUTTON, &ctl_brb); |
| 913 | |
| 914 | // check for joystick movement |
| 915 | // mprintf(0, "p:%f h:%f b:%f\n", ctl_p.value, ctl_h.value, ctl_b.value); |
| 916 | // mprintf(0, "u:%d d:%d l:%d r:%d\n", (int)ctl_povu.value, (int)ctl_povd.value, (int)ctl_povl.value, (int)ctl_povr.value); |
| 917 | |
| 918 | // do x and y thrust |
| 919 | controls->sideways_thrust += ctl_x.value; |
| 920 | controls->vertical_thrust += -ctl_y.value; |
| 921 | |
| 922 | // invert throttle alue for real flight model controls |
| 923 | controls->forward_thrust += -ctl_z.value; |
| 924 | |
| 925 | // do banking |
| 926 | if (controls->toggle_bank) { |
| 927 | controls->bank_thrust += -ctl_h.value; |
| 928 | } else { |
| 929 | controls->bank_thrust += -ctl_b.value; |
| 930 | } |
| 931 | |
| 932 | // do slide if toggled |
| 933 | if (controls->toggle_slide) { |
| 934 | controls->sideways_thrust += ctl_h.value; |
| 935 | if ((ctl_p.flags & CTPK_MOUSE) && !FindArg("-invertmouseslide")) { |
| 936 | controls->vertical_thrust += (-ctl_p.value); |
| 937 | } else { |
| 938 | controls->vertical_thrust += ctl_p.value; |
| 939 | } |
| 940 | } |
| 941 | |
| 942 | // do standard pitch and heading. |
| 943 | if (!controls->toggle_slide && !controls->toggle_bank) { |
| 944 | controls->pitch_thrust += -ctl_p.value; |
no test coverage detected