@@ -219,18 +219,38 @@ void PMD_DrawGraphs(float width);
219
219
220
220
DEFCVAR_FLOAT(fov, 90);
221
221
222
- void adjustEntityAboveGround(entity ent) {
223
- vector startPos, endPos;
222
+ void SentryPreviewStart() {
223
+ sentry_preview_offset = 0;
224
+ sentry_preview.angles_y = input_angles_y;
225
+ sentry_preview.drawmask = MASK_ENGINE;
226
+
227
+ local vector sphere_colormod = '1 1 1';
228
+ switch (team_no) {
229
+ case 1:
230
+ sphere_colormod = '0 0.4 1';
231
+ break;
232
+ case 2:
233
+ sphere_colormod = '1 0 0';
234
+ break;
235
+ case 3:
236
+ sphere_colormod = '1 1 0';
237
+ break;
238
+ case 4:
239
+ sphere_colormod = '0 1 0';
240
+ break;
241
+ }
224
242
225
- // Define start and end points for the trace downwards
226
- startPos = ent.origin + '0 0 100'; // Start 100 units above the entity's origin
227
- endPos = ent.origin - '0 0 1000'; // Trace downwards a sufficient distance
243
+ sentry_preview_range_sphere.colormod = sphere_colormod * 4;
244
+ sentry_preview_range_sphere.drawmask = MASK_ENGINE;
228
245
229
- // Perform the tracebox from startPos to endPos
230
- tracebox(startPos, ent.mins, ent.maxs, endPos, MOVE_NORMAL, ent);
246
+ previewing_sentry = TRUE;
247
+ prevent_firing = TRUE;
248
+ }
231
249
232
- // Move the entity up to be 1 unit above the ground
233
- ent.origin[2] = trace_endpos[2] + 1; // 1 unit above the ground
250
+ void SentryPreviewStop() {
251
+ previewing_sentry = FALSE;
252
+ sentry_preview.drawmask = 0;
253
+ sentry_preview_range_sphere.drawmask = 0;
234
254
}
235
255
236
256
noref void(float width, float height, float menushown) CSQC_UpdateView = {
@@ -256,6 +276,16 @@ noref void(float width, float height, float menushown) CSQC_UpdateView = {
256
276
PM_UpdateView();
257
277
258
278
if (previewing_sentry) {
279
+ if (game_state.is_alive) {
280
+ } else {
281
+ }
282
+ }
283
+
284
+ if (previewing_sentry) {
285
+ if (!game_state.is_alive) {
286
+ SentryPreviewStop();
287
+ } else {
288
+ }
259
289
makevectors(view_angles);
260
290
local vector v_forward_sentry;
261
291
v_forward_sentry.z = (normalize(v_forward) * 64).z;
@@ -265,7 +295,8 @@ noref void(float width, float height, float menushown) CSQC_UpdateView = {
265
295
v_forward_sentry.y = xy_pos.y;
266
296
267
297
sentry_preview.origin = PM_Org() + v_forward_sentry;
268
- /* adjustEntityAboveGround(sentry_preview); */
298
+ sentry_fits = PlaceSentry(sentry_preview, PM_Org());
299
+ sentry_preview.colormod = sentry_fits ? '1 1 1' : '0.5 0.2 0.2';
269
300
sentry_preview_range_sphere.origin = sentry_preview.origin;
270
301
sentry_preview.angles_y = anglemod(view_angles_y + sentry_preview_offset);
271
302
} else {
@@ -320,7 +351,7 @@ noref float(string cmd) CSQC_ConsoleCommand = {
320
351
} else {
321
352
localcmd("cmd sentry rotate 15\n");
322
353
}
323
- break;
354
+ break;
324
355
}
325
356
break;
326
357
case "specialdown":
@@ -331,7 +362,7 @@ noref float(string cmd) CSQC_ConsoleCommand = {
331
362
} else {
332
363
localcmd("cmd sentry rotate -15\n");
333
364
}
334
- break;
365
+ break;
335
366
}
336
367
break;
337
368
case "+slot":
@@ -718,40 +749,6 @@ void FO_ApplyCussInput() {
718
749
719
750
void PM_InputFrame();
720
751
721
- void SentryPreviewStart() {
722
- sentry_preview_offset = 0;
723
- sentry_preview.angles_y = input_angles_y;
724
- sentry_preview.drawmask = MASK_ENGINE;
725
-
726
- local vector sphere_colormod = '1 1 1';
727
- switch (team_no) {
728
- case 1:
729
- sphere_colormod = '0 0.4 1';
730
- break;
731
- case 2:
732
- sphere_colormod = '1 0 0';
733
- break;
734
- case 3:
735
- sphere_colormod = '1 1 0';
736
- break;
737
- case 4:
738
- sphere_colormod = '0 1 0';
739
- break;
740
- }
741
-
742
- sentry_preview_range_sphere.colormod = sphere_colormod * 4;
743
- sentry_preview_range_sphere.drawmask = MASK_ENGINE;
744
-
745
- previewing_sentry = TRUE;
746
- prevent_firing = TRUE;
747
- }
748
-
749
- void SentryPreviewStop() {
750
- previewing_sentry = FALSE;
751
- sentry_preview.drawmask = 0;
752
- sentry_preview_range_sphere.drawmask = 0;
753
- }
754
-
755
752
noref void CSQC_Input_Frame() {
756
753
local float changed_buttons = input_buttons ^ oldbuttons;
757
754
oldbuttons = input_buttons;
@@ -876,15 +873,6 @@ void _Sync_ServerCommandFrame() {
876
873
877
874
CsGrenTimer::UpdateSoundStack();
878
875
UpdateTeamColorCrosshair();
879
-
880
- if (previewing_sentry) {
881
- if (game_state.is_alive) {
882
- sentry_fits = CheckArea(sentry_preview, edict_num(player_localentnum));
883
- sentry_preview.colormod = sentry_fits ? '1 1 1' : '0.5 0.2 0.2';
884
- } else {
885
- SentryPreviewStop();
886
- }
887
- }
888
876
}
889
877
890
878
0 commit comments