@@ -194,6 +194,7 @@ noref void(float apiver, string enginename, float enginever) CSQC_Init = {
194
194
precache_model("progs/turrpreview.mdl");
195
195
sentry_preview = spawn();
196
196
setmodel(sentry_preview, "progs/turrpreview.mdl");
197
+ setsize(sentry_preview, '-16 -16 0', '16 16 48');
197
198
sentry_preview.alpha = 0.25;
198
199
199
200
precache_model("progs/sphere.mdl");
@@ -223,6 +224,40 @@ void PMD_DrawGraphs(float width);
223
224
224
225
DEFCVAR_FLOAT(fov, 90);
225
226
227
+ void SentryPreviewStart() {
228
+ sentry_preview_offset = 0;
229
+ sentry_preview.angles_y = input_angles_y;
230
+ sentry_preview.drawmask = MASK_ENGINE;
231
+
232
+ local vector sphere_colormod = '1 1 1';
233
+ switch (team_no) {
234
+ case 1:
235
+ sphere_colormod = '0 0.4 1';
236
+ break;
237
+ case 2:
238
+ sphere_colormod = '1 0 0';
239
+ break;
240
+ case 3:
241
+ sphere_colormod = '1 1 0';
242
+ break;
243
+ case 4:
244
+ sphere_colormod = '0 1 0';
245
+ break;
246
+ }
247
+
248
+ sentry_preview_range_sphere.colormod = sphere_colormod * 4;
249
+ sentry_preview_range_sphere.drawmask = MASK_ENGINE;
250
+
251
+ previewing_sentry = TRUE;
252
+ prevent_firing = TRUE;
253
+ }
254
+
255
+ void SentryPreviewStop() {
256
+ previewing_sentry = FALSE;
257
+ sentry_preview.drawmask = 0;
258
+ sentry_preview_range_sphere.drawmask = 0;
259
+ }
260
+
226
261
noref void(float width, float height, float menushown) CSQC_UpdateView = {
227
262
float fts = perf_start_sample(&frame_timing);
228
263
clearscene();
@@ -246,6 +281,16 @@ noref void(float width, float height, float menushown) CSQC_UpdateView = {
246
281
PM_UpdateView();
247
282
248
283
if (previewing_sentry) {
284
+ if (game_state.is_alive) {
285
+ } else {
286
+ }
287
+ }
288
+
289
+ if (previewing_sentry) {
290
+ if (!game_state.is_alive) {
291
+ SentryPreviewStop();
292
+ } else {
293
+ }
249
294
makevectors(view_angles);
250
295
local vector v_forward_sentry;
251
296
v_forward_sentry.z = (normalize(v_forward) * 64).z;
@@ -255,6 +300,8 @@ noref void(float width, float height, float menushown) CSQC_UpdateView = {
255
300
v_forward_sentry.y = xy_pos.y;
256
301
257
302
sentry_preview.origin = PM_Org() + v_forward_sentry;
303
+ sentry_fits = PlaceSentry(sentry_preview, PM_Org());
304
+ sentry_preview.colormod = sentry_fits ? '1 1 1' : '0.5 0.2 0.2';
258
305
sentry_preview_range_sphere.origin = sentry_preview.origin;
259
306
sentry_preview.angles_y = anglemod(view_angles_y + sentry_preview_offset);
260
307
} else {
@@ -734,40 +781,6 @@ void FO_ApplyCussInput() {
734
781
735
782
void PM_InputFrame();
736
783
737
- void SentryPreviewStart() {
738
- sentry_preview_offset = 0;
739
- sentry_preview.angles_y = input_angles_y;
740
- sentry_preview.drawmask = MASK_ENGINE;
741
-
742
- local vector sphere_colormod = '1 1 1';
743
- switch (team_no) {
744
- case 1:
745
- sphere_colormod = '0 0.4 1';
746
- break;
747
- case 2:
748
- sphere_colormod = '1 0 0';
749
- break;
750
- case 3:
751
- sphere_colormod = '1 1 0';
752
- break;
753
- case 4:
754
- sphere_colormod = '0 1 0';
755
- break;
756
- }
757
-
758
- sentry_preview_range_sphere.colormod = sphere_colormod * 4;
759
- sentry_preview_range_sphere.drawmask = MASK_ENGINE;
760
-
761
- previewing_sentry = TRUE;
762
- prevent_firing = TRUE;
763
- }
764
-
765
- void SentryPreviewStop() {
766
- previewing_sentry = FALSE;
767
- sentry_preview.drawmask = 0;
768
- sentry_preview_range_sphere.drawmask = 0;
769
- }
770
-
771
784
noref void CSQC_Input_Frame() {
772
785
local float changed_buttons = input_buttons ^ oldbuttons;
773
786
oldbuttons = input_buttons;
@@ -894,15 +907,6 @@ void _Sync_ServerCommandFrame() {
894
907
895
908
CsGrenTimer::UpdateSoundStack();
896
909
UpdateTeamColorCrosshair();
897
-
898
- if (previewing_sentry) {
899
- if (game_state.is_alive) {
900
- sentry_fits = CheckArea(sentry_preview, player_localentnum);
901
- sentry_preview.colormod = sentry_fits ? '1 1 1' : '0.5 0.2 0.2';
902
- } else {
903
- SentryPreviewStop();
904
- }
905
- }
906
910
}
907
911
908
912
0 commit comments