X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fclient%2FView.qc;h=ac2f12cb52a9eba1196579b8616b4a6631d6d53a;hb=d53800a81ad1253e6ee6eca8b9971bbf275df7ee;hp=ac976db67bdd76f3c12c2fc75bdd00b4a00cf0d8;hpb=89eff022dd8653e6b5965d35dd9fb9caa54fe72c;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index ac976db67..ac2f12cb5 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -78,30 +78,6 @@ void Porto_Draw() } } -/** - * Checks whether the server initiated a map restart (stat_game_starttime changed) - * - * TODO: Use a better solution where a common shared entitiy is used that contains - * timelimit, fraglimit and game_starttime! Requires engine changes (remove STAT_TIMELIMIT - * and STAT_FRAGLIMIT to be auto-sent) - */ -void CheckForGamestartChange() { - float startTime; - startTime = getstatf(STAT_GAMESTARTTIME); - if (previous_game_starttime != startTime) { - if ((time + 5.0) < startTime) { - //if connecting to server while restart was active don't always play prepareforbattle - sound(world, CH_INFO, strcat("announcer/", autocvar_cl_announcer, "/prepareforbattle.wav"), VOL_BASEVOICE, ATTN_NONE); - } - if (time < startTime) { - restartAnnouncer = spawn(); - restartAnnouncer.think = restartAnnouncer_Think; - restartAnnouncer.nextthink = startTime - floor(startTime - time); //synchronize nextthink to startTime - } - } - previous_game_starttime = startTime; -} - void Porto_Init() { porto = spawn(); @@ -351,6 +327,8 @@ void PostInit(void); void CSQC_Demo_Camera(); float HUD_WouldDrawScoreboard(); float camera_mode; +float CAMERA_FREE = 1; +float CAMERA_CHASE = 2; float reticle_type; string NextFrameCommand; void CSQC_SPIDER_HUD(); @@ -383,6 +361,8 @@ vector damage_blurpostprocess, content_blurpostprocess; float checkfail[16]; +#define BUTTON_3 4 +#define BUTTON_4 8 void CSQC_UpdateView(float w, float h) { entity e; @@ -391,8 +371,14 @@ void CSQC_UpdateView(float w, float h) vector v; vector vf_size, vf_min; float a; + hud = getstati(STAT_HUD); + if(checkextension("DP_CSQC_MINFPS_QUALITY")) + view_quality = getproperty(VF_MINFPS_QUALITY); + else + view_quality = 1; + button_attack2 = (input_buttons & BUTTON_3); button_zoom = (input_buttons & BUTTON_4); @@ -410,9 +396,10 @@ void CSQC_UpdateView(float w, float h) CHECKFAIL_ASSERT(3, cvar, "\{114}\{95}\{115}\{104}\{111}\{119}\{111}\{118}\{101}\{114}\{100}\{114}\{97}\{119}", 0); CHECKFAIL_ASSERT(4, cvar, "\{114}\{95}\{115}\{104}\{111}\{119}\{108}\{105}\{103}\{104}\{116}", 0); CHECKFAIL_ASSERT(5, cvar, "\{114}\{95}\{115}\{104}\{111}\{119}\{115}\{104}\{97}\{100}\{111}\{119}\{118}\{111}\{108}\{117}\{109}\{101}\{115}", 0); + CHECKFAIL_ASSERT(6, cvar, "\{114}\{95}\{115}\{104}\{111}\{119}\{111}\{118}\{101}\{114}\{100}\{114}\{97}\{119}", 0); - vf_size = R_SetView3fv(VF_SIZE); - vf_min = R_SetView3fv(VF_MIN); + vf_size = getpropertyvec(VF_SIZE); + vf_min = getpropertyvec(VF_MIN); vid_width = vf_size_x; vid_height = vf_size_y; @@ -421,9 +408,13 @@ void CSQC_UpdateView(float w, float h) WaypointSprite_Load(); + CSQCPlayer_SetCamera(); + +#ifdef COMPAT_XON050_ENGINE if(spectatee_status) myteam = GetPlayerColor(spectatee_status - 1); else +#endif myteam = GetPlayerColor(player_localentnum - 1); ticrate = getstatf(STAT_MOVEVARS_TICRATE) * getstatf(STAT_MOVEVARS_TIMESCALE); @@ -434,10 +425,10 @@ void CSQC_UpdateView(float w, float h) if(spectatee_status >= 0 && (autocvar_cl_eventchase_death && getstati(STAT_HEALTH) <= 0 && !intermission) || intermission) { // make special vector since we can't use view_origin (It is one frame old as of this code, it gets set later with the results this code makes.) - vector current_view_origin = R_SetView3fv(VF_ORIGIN); + vector current_view_origin = getpropertyvec(VF_ORIGIN); // We must enable chase_active to get a third person view (weapon viewmodel hidden and own player model showing). - // Ideally, there should be another way to enable third person cameras, such as through R_SetView() + // Ideally, there should be another way to enable third person cameras, such as through setproperty() if(!autocvar_chase_active) cvar_set("chase_active", "-1"); // -1 enables chase_active while marking it as set by this code, and not by the user (which would be 1) @@ -457,8 +448,8 @@ void CSQC_UpdateView(float w, float h) eventchase_target_origin = current_view_origin - v_forward * eventchase_current_distance * (trace_fraction - 0.1); WarpZone_TraceLine(current_view_origin, eventchase_target_origin, MOVE_WORLDONLY, self); - R_SetView(VF_ORIGIN, trace_endpos); - R_SetView(VF_ANGLES, WarpZone_TransformVAngles(WarpZone_trace_transform, view_angles)); + setproperty(VF_ORIGIN, trace_endpos); + setproperty(VF_ANGLES, WarpZone_TransformVAngles(WarpZone_trace_transform, view_angles)); } else if(autocvar_chase_active < 0) // time to disable chase_active if it was set by this code { @@ -470,21 +461,21 @@ void CSQC_UpdateView(float w, float h) // do lockview after event chase camera so that it still applies whenever necessary. if(autocvar_cl_lockview || (autocvar__hud_configure && spectatee_status <= 0) || intermission > 1) { - R_SetView(VF_ORIGIN, freeze_org); - R_SetView(VF_ANGLES, freeze_ang); + setproperty(VF_ORIGIN, freeze_org); + setproperty(VF_ANGLES, freeze_ang); } else { - freeze_org = R_SetView3fv(VF_ORIGIN); - freeze_ang = R_SetView3fv(VF_ANGLES); + freeze_org = getpropertyvec(VF_ORIGIN); + freeze_ang = getpropertyvec(VF_ANGLES); } WarpZone_FixView(); //WarpZone_FixPMove(); // Render the Scene - view_origin = R_SetView3fv(VF_ORIGIN); - view_angles = R_SetView3fv(VF_ANGLES); + view_origin = getpropertyvec(VF_ORIGIN); + view_angles = getpropertyvec(VF_ANGLES); makevectors(view_angles); view_forward = v_forward; view_right = v_right; @@ -525,16 +516,15 @@ void CSQC_UpdateView(float w, float h) PostInit(); if(intermission && !isdemo() && !(calledhooks & HOOK_END)) + { if(calledhooks & HOOK_START) { localcmd("\ncl_hook_gameend\n"); calledhooks |= HOOK_END; } - - CheckForGamestartChange(); - serverAnnouncer(); - maptimeAnnouncer(); - carrierAnnouncer(); + } + + Announcer(); fov = autocvar_fov; if(fov <= 59.5) @@ -587,31 +577,31 @@ void CSQC_UpdateView(float w, float h) } // ALWAYS Clear Current Scene First - R_ClearScene(); + clearscene(); #ifdef WORKAROUND_XON010 if(checkextension("DP_CSQC_ROTATEMOVES")) { #endif - R_SetView(VF_ORIGIN, view_origin); - R_SetView(VF_ANGLES, view_angles); + setproperty(VF_ORIGIN, view_origin); + setproperty(VF_ANGLES, view_angles); #ifdef WORKAROUND_XON010 } #endif // FIXME engine bug? VF_SIZE and VF_MIN are not restored to sensible values by this - R_SetView(VF_SIZE, vf_size); - R_SetView(VF_MIN, vf_min); + setproperty(VF_SIZE, vf_size); + setproperty(VF_MIN, vf_min); // Assign Standard Viewflags // Draw the World (and sky) - R_SetView(VF_DRAWWORLD, 1); + setproperty(VF_DRAWWORLD, 1); // Set the console size vars vid_conwidth = autocvar_vid_conwidth; vid_conheight = autocvar_vid_conheight; vid_pixelheight = autocvar_vid_pixelheight; - R_SetView(VF_FOV, GetCurrentFov(fov)); + setproperty(VF_FOV, GetCurrentFov(fov)); // Camera for demo playback if(camera_active) @@ -640,10 +630,10 @@ void CSQC_UpdateView(float w, float h) } // Draw the Crosshair - R_SetView(VF_DRAWCROSSHAIR, 0); //Make sure engine crosshairs are always hidden + setproperty(VF_DRAWCROSSHAIR, 0); //Make sure engine crosshairs are always hidden // Draw the Engine Status Bar (the default Quake HUD) - R_SetView(VF_DRAWENGINEHUD, 0); + setproperty(VF_DRAWENGINESBAR, 0); // Update the mouse position /* @@ -658,8 +648,8 @@ void CSQC_UpdateView(float w, float h) self.draw(); self = e; - R_AddEntities(MASK_NORMAL | MASK_ENGINE | MASK_ENGINEVIEWMODELS); - R_RenderScene(); + addentities(MASK_NORMAL | MASK_ENGINE | MASK_ENGINEVIEWMODELS); + renderscene(); // now switch to 2D drawing mode by calling a 2D drawing function // then polygon drawing will draw as 2D stuff, and NOT get queued until the @@ -670,7 +660,11 @@ void CSQC_UpdateView(float w, float h) if not(serverflags & SERVERFLAG_ALLOW_FULLBRIGHT) { // apply night vision effect - vector rgb, tc_00, tc_01, tc_10, tc_11; + vector tc_00, tc_01, tc_10, tc_11; + vector rgb; + rgb_x = 0; // fteqcc sucks + rgb_y = 0; // fteqcc sucks + rgb_z = 0; // fteqcc sucks if(!nightvision_noise) { @@ -1235,7 +1229,7 @@ void CSQC_UpdateView(float w, float h) wcross_scale *= 1 - autocvar__menu_alpha; wcross_alpha *= 1 - autocvar__menu_alpha; - wcross_size = drawgetimagesize(wcross_name) * wcross_scale; + wcross_size = draw_getimagesize(wcross_name) * wcross_scale; if(wcross_scale >= 0.001 && wcross_alpha >= 0.001) { @@ -1352,7 +1346,7 @@ void CSQC_UpdateView(float w, float h) if(time < wcross_name_changedonetime && wcross_name != wcross_name_goal_prev_prev && wcross_name_goal_prev_prev) { f = (wcross_name_changedonetime - time) / (wcross_name_changedonetime - wcross_name_changestarttime); - wcross_size = drawgetimagesize(wcross_name_goal_prev_prev) * wcross_scale; + wcross_size = draw_getimagesize(wcross_name_goal_prev_prev) * wcross_scale; CROSSHAIR_DRAW(wcross_resolution_goal_prev_prev, wcross_name_goal_prev_prev, wcross_alpha * f * wcross_name_alpha_goal_prev_prev); f = 1 - f; } @@ -1362,7 +1356,7 @@ void CSQC_UpdateView(float w, float h) } wcross_name_alpha_goal_prev = f; - wcross_size = drawgetimagesize(wcross_name) * wcross_scale; + wcross_size = draw_getimagesize(wcross_name) * wcross_scale; CROSSHAIR_DRAW(wcross_resolution, wcross_name, wcross_alpha * f); if(autocvar_crosshair_dot) @@ -1411,11 +1405,11 @@ void CSQC_UpdateView(float w, float h) string w0, h0; w0 = ftos(autocvar_vid_conwidth); h0 = ftos(autocvar_vid_conheight); - //R_SetView(VF_VIEWPORT, '0 0 0', '640 480 0'); - //R_SetView(VF_FOV, '90 90 0'); - R_SetView(VF_ORIGIN, '0 0 0'); - R_SetView(VF_ANGLES, '0 0 0'); - R_SetView(VF_PERSPECTIVE, 1); + //setproperty(VF_VIEWPORT, '0 0 0', '640 480 0'); + //setproperty(VF_FOV, '90 90 0'); + setproperty(VF_ORIGIN, '0 0 0'); + setproperty(VF_ANGLES, '0 0 0'); + setproperty(VF_PERSPECTIVE, 1); makevectors('0 0 0'); vector v1, v2; cvar_set("vid_conwidth", "800"); @@ -1447,8 +1441,8 @@ void CSQC_UpdateView(float w, float h) CSQC_BUMBLE_HUD(); } // let's reset the view back to normal for the end - R_SetView(VF_MIN, '0 0 0'); - R_SetView(VF_SIZE, '1 0 0' * w + '0 1 0' * h); + setproperty(VF_MIN, '0 0 0'); + setproperty(VF_SIZE, '1 0 0' * w + '0 1 0' * h); } @@ -1645,6 +1639,6 @@ void CSQC_Demo_Camera() current_position = current_origin + current_camera_offset; } - R_SetView(VF_ANGLES, current_angles); - R_SetView(VF_ORIGIN, current_position); + setproperty(VF_ANGLES, current_angles); + setproperty(VF_ORIGIN, current_position); }