2
2
3
3
import java .util .List ;
4
4
5
+ import com .onewhohears .dscombat .Config ;
5
6
import com .onewhohears .dscombat .DSCombatMod ;
6
- import com .onewhohears .dscombat .client .input .KeyInit ;
7
+ import com .onewhohears .dscombat .client .input .DSCKeys ;
7
8
import com .onewhohears .dscombat .common .network .PacketHandler ;
8
9
import com .onewhohears .dscombat .common .network .toserver .ToServerFlightControl ;
9
10
import com .onewhohears .dscombat .common .network .toserver .ToServerShootTurret ;
10
11
import com .onewhohears .dscombat .common .network .toserver .ToServerSwitchSeat ;
11
12
import com .onewhohears .dscombat .data .radar .RadarData .RadarPing ;
12
13
import com .onewhohears .dscombat .data .radar .RadarSystem ;
13
14
import com .onewhohears .dscombat .entity .aircraft .EntityAircraft ;
15
+ import com .onewhohears .dscombat .entity .parts .EntitySeat ;
14
16
import com .onewhohears .dscombat .entity .parts .EntityTurret ;
15
17
import com .onewhohears .dscombat .util .math .UtilGeometry ;
16
18
21
23
import net .minecraft .world .phys .HitResult .Type ;
22
24
import net .minecraftforge .api .distmarker .Dist ;
23
25
import net .minecraftforge .client .event .InputEvent ;
26
+ import net .minecraftforge .client .event .MovementInputUpdateEvent ;
24
27
import net .minecraftforge .event .TickEvent ;
25
28
import net .minecraftforge .event .TickEvent .Phase ;
26
29
import net .minecraftforge .eventbus .api .EventPriority ;
@@ -34,65 +37,64 @@ public final class ClientInputEvents {
34
37
private static double mouseCenterX = 0 ;
35
38
private static double mouseCenterY = 0 ;
36
39
37
- // TODO make client config for deadZone and max
38
- private static final double deadZone = 150 ;
39
- private static final double max = 1000 ;
40
-
41
40
private static final double tan1 = Math .tan (Math .toRadians (1 ));
42
41
43
42
private static int hoverIndex = -1 ;
44
43
45
- @ SubscribeEvent
44
+ @ SubscribeEvent ( priority = EventPriority . HIGHEST )
46
45
public static void clientTickPilotControl (TickEvent .ClientTickEvent event ) {
47
46
if (event .phase != Phase .END ) return ;
48
47
Minecraft m = Minecraft .getInstance ();
49
48
final var player = m .player ;
50
49
if (player == null ) return ;
51
- boolean select = KeyInit .weaponSelectKey .consumeClick ();
52
- boolean openMenu = KeyInit .planeMenuKey .consumeClick ();
53
- boolean mouseMode = KeyInit .mouseModeKey .consumeClick ();
54
- boolean gear = KeyInit .landingGear .consumeClick ();
55
- boolean radarMode = KeyInit .radarModeKey .consumeClick ();
50
+ boolean select = DSCKeys .weaponSelectKey .consumeClick ();
51
+ boolean openMenu = DSCKeys .planeMenuKey .consumeClick ();
52
+ boolean mouseMode = DSCKeys .mouseModeKey .consumeClick ();
53
+ boolean gear = DSCKeys .landingGear .consumeClick ();
54
+ boolean radarMode = DSCKeys .radarModeKey .consumeClick ();
56
55
if (!player .isPassenger ()) return ;
57
56
if (!(player .getRootVehicle () instanceof EntityAircraft plane )) return ;
58
57
Entity controller = plane .getControllingPassenger ();
59
58
if (controller == null || !controller .equals (player )) return ;
60
- if (KeyInit .resetMouseKey .isDown ()) centerMouse ();
59
+ if (DSCKeys .resetMouseKey .isDown ()) centerMouse ();
61
60
else if (m .screen != null ) centerMouse ();
62
61
double mouseX = m .mouseHandler .xpos () - mouseCenterX ;
63
62
double mouseY = -(m .mouseHandler .ypos () - mouseCenterY );
64
- boolean flare = KeyInit .flareKey .isDown ();
65
- boolean shoot = KeyInit .shootKey .isDown ();
66
- boolean flip = KeyInit .flipControlsKey .isDown ();
67
- boolean special = KeyInit .specialKey .isDown ();
63
+ boolean flare = DSCKeys .flareKey .isDown ();
64
+ boolean shoot = DSCKeys .shootKey .isDown ();
65
+ boolean flip = DSCKeys .flipControlsKey .isDown ();
66
+ boolean special = DSCKeys .specialKey .isDown ();
67
+ boolean special2 = DSCKeys .special2Key .isDown ();
68
68
float pitch = 0 , roll = 0 , yaw = 0 , throttle = 0 ;
69
69
boolean pitchUp , pitchDown , yawLeft , yawRight ;
70
70
boolean rollLeft , rollRight , throttleUp , throttleDown ;
71
71
if (!plane .isFreeLook ()) flip = !flip ;
72
72
if (flip ) {
73
- pitchUp = KeyInit .throttleUpKey .isDown ();
74
- pitchDown = KeyInit .throttleDownKey .isDown ();
75
- yawLeft = KeyInit .rollLeftKey .isDown ();
76
- yawRight = KeyInit .rollRightKey .isDown ();
77
- rollLeft = KeyInit .yawLeftKey .isDown ();
78
- rollRight = KeyInit .yawRightKey .isDown ();
79
- throttleUp = KeyInit .pitchUpKey .isDown ();
80
- throttleDown = KeyInit .pitchDownKey .isDown ();
73
+ pitchUp = DSCKeys .throttleUpKey .isDown ();
74
+ pitchDown = DSCKeys .throttleDownKey .isDown ();
75
+ yawLeft = DSCKeys .rollLeftKey .isDown ();
76
+ yawRight = DSCKeys .rollRightKey .isDown ();
77
+ rollLeft = DSCKeys .yawLeftKey .isDown ();
78
+ rollRight = DSCKeys .yawRightKey .isDown ();
79
+ throttleUp = DSCKeys .pitchUpKey .isDown ();
80
+ throttleDown = DSCKeys .pitchDownKey .isDown ();
81
81
} else {
82
- yawLeft = KeyInit .yawLeftKey .isDown ();
83
- yawRight = KeyInit .yawRightKey .isDown ();
84
- pitchUp = KeyInit .pitchUpKey .isDown ();
85
- pitchDown = KeyInit .pitchDownKey .isDown ();
86
- rollLeft = KeyInit .rollLeftKey .isDown ();
87
- rollRight = KeyInit .rollRightKey .isDown ();
88
- throttleUp = KeyInit .throttleUpKey .isDown ();
89
- throttleDown = KeyInit .throttleDownKey .isDown ();
82
+ yawLeft = DSCKeys .yawLeftKey .isDown ();
83
+ yawRight = DSCKeys .yawRightKey .isDown ();
84
+ pitchUp = DSCKeys .pitchUpKey .isDown ();
85
+ pitchDown = DSCKeys .pitchDownKey .isDown ();
86
+ rollLeft = DSCKeys .rollLeftKey .isDown ();
87
+ rollRight = DSCKeys .rollRightKey .isDown ();
88
+ throttleUp = DSCKeys .throttleUpKey .isDown ();
89
+ throttleDown = DSCKeys .throttleDownKey .isDown ();
90
90
}
91
91
if (!plane .isFreeLook ()) {
92
92
double ya = Math .abs (mouseY );
93
93
double xa = Math .abs (mouseX );
94
94
float ys = (float ) Math .signum (mouseY );
95
95
float xs = (float ) Math .signum (mouseX );
96
+ double deadZone = Config .CLIENT .mouseStickDeadzoneRadius .get ();
97
+ double max = Config .CLIENT .mouseModeMaxRadius .get ();
96
98
double md = max -deadZone ;
97
99
if (ya > max ) {
98
100
pitch = ys ;
@@ -114,26 +116,26 @@ public static void clientTickPilotControl(TickEvent.ClientTickEvent event) {
114
116
if (throttleUp ) throttle += 1 ;
115
117
if (throttleDown ) throttle -= 1 ;
116
118
PacketHandler .INSTANCE .sendToServer (new ToServerFlightControl (
117
- throttle , pitch , roll , yaw ,
118
- mouseMode , flare , shoot , select , openMenu , gear ,
119
- special , radarMode , rollLeft && rollRight ));
120
- plane .updateControls (throttle , pitch , roll , yaw ,
119
+ throttle , pitch , roll , yaw , mouseMode ,
120
+ flare , shoot , select , openMenu , gear ,
121
+ special , special2 , radarMode ,
122
+ rollLeft && rollRight ));
123
+ plane .updateControls (throttle , pitch , roll , yaw ,
121
124
mouseMode , flare , shoot , select , openMenu ,
122
- special , radarMode , rollLeft && rollRight );
125
+ special , special2 , radarMode ,
126
+ rollLeft && rollRight );
123
127
if (mouseMode && !plane .isFreeLook ()) centerMouse ();
124
128
}
125
129
126
- @ SubscribeEvent
130
+ @ SubscribeEvent ( priority = EventPriority . HIGH )
127
131
public static void clientTickPassengerControl (TickEvent .ClientTickEvent event ) {
128
132
if (event .phase != Phase .END ) return ;
129
133
Minecraft m = Minecraft .getInstance ();
130
134
final var player = m .player ;
131
135
if (player == null || !player .isPassenger ()) return ;
132
136
if (!(player .getRootVehicle () instanceof EntityAircraft plane )) return ;
133
- // DISMOUNT
134
-
135
137
// SWITCH SEAT
136
- if (KeyInit .changeSeat .consumeClick ()) {
138
+ if (DSCKeys .changeSeat .consumeClick ()) {
137
139
PacketHandler .INSTANCE .sendToServer (new ToServerSwitchSeat (plane .getId ()));
138
140
}
139
141
// SELECT RADAR PING
@@ -151,10 +153,20 @@ public static void clientTickPassengerControl(TickEvent.ClientTickEvent event) {
151
153
}
152
154
if (!hovering ) resetHoverIndex ();
153
155
// TURRET SHOOT
154
- boolean shoot = KeyInit .shootKey .isDown ();
156
+ boolean shoot = DSCKeys .shootKey .isDown ();
155
157
if (shoot && player .getVehicle () instanceof EntityTurret turret ) {
156
158
PacketHandler .INSTANCE .sendToServer (new ToServerShootTurret (turret ));
157
159
}
160
+
161
+ }
162
+
163
+ @ SubscribeEvent (priority = EventPriority .NORMAL )
164
+ public static void clientMoveInput (MovementInputUpdateEvent event ) {
165
+ Player player = event .getEntity ();
166
+ if (!(player .getVehicle () instanceof EntitySeat plane )) return ;
167
+ if (Config .CLIENT .customDismount .get ()) {
168
+ event .getInput ().shiftKeyDown = DSCKeys .dismount .isDown ();
169
+ }
158
170
}
159
171
160
172
public static void centerMouse () {
0 commit comments