X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fclient%2Fview.qc;h=95a437e926dac488d40dfe96b8e879c5df7bcaf7;hp=e4f38b24c2d145e917765d4ee725f171feff083b;hb=e6a33700efe08f426d28269b0764fbb38f6cf286;hpb=ae277921268b84c7b7ee5ab901ce7f0088c07605 diff --git a/qcsrc/client/view.qc b/qcsrc/client/view.qc index e4f38b24c2..95a437e926 100644 --- a/qcsrc/client/view.qc +++ b/qcsrc/client/view.qc @@ -12,6 +12,7 @@ #include "mutators/events.qh" #include +#include #include #include #include @@ -30,6 +31,7 @@ #include #include #include +#include #include #include @@ -910,7 +912,8 @@ vector crosshair_getcolor(entity this, float health_stat) case 2: // crosshair_color_by_health { - float hp = health_stat; + vector v = healtharmor_maxdamage(health_stat, STAT(ARMOR), armorblockpercent, DEATH_WEAPON.m_id); + float hp = floor(v.x + 1); //x = red //y = green @@ -1477,6 +1480,19 @@ void HUD_Draw(entity this) HitSound(); } +void ViewLocation_Mouse() +{ + if(spectatee_status) + return; // don't draw it as spectator! + + viewloc_mousepos += getmousepos() * autocvar_menu_mouse_speed; + viewloc_mousepos.x = bound(0, viewloc_mousepos.x, vid_conwidth); + viewloc_mousepos.y = bound(0, viewloc_mousepos.y, vid_conheight); + + float cursor_alpha = 1 - autocvar__menu_alpha; + draw_cursor(viewloc_mousepos, '0.5 0.5 0', "/cursor_move", '1 1 1', cursor_alpha); +} + bool ov_enabled; float oldr_nearclip; float oldr_farclip_base; @@ -1574,6 +1590,11 @@ void CSQC_UpdateView(entity this, float w, float h) button_zoom = false; } + // abused multiple places below + entity local_player = ((csqcplayer) ? csqcplayer : CSQCModel_server2csqc(player_localentnum - 1)); + if(!local_player) + local_player = this; // fall back! + // event chase camera if(autocvar_chase_active <= 0) // greater than 0 means it's enabled manually, and this code is skipped { @@ -1625,10 +1646,6 @@ void CSQC_UpdateView(entity this, float w, float h) } eventchase_running = true; - entity local_player = ((csqcplayer) ? csqcplayer : CSQCModel_server2csqc(player_localentnum - 1)); - if(!local_player) - local_player = this; // fall back! - // 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 = (csqcplayer ? csqcplayer.origin : pmove_org); if (custom_eventchase) @@ -1782,7 +1799,7 @@ void CSQC_UpdateView(entity this, float w, float h) ov_enabled = true; #if 0 - LOG_INFOF("OrthoView: org = %s, angles = %s, distance = %f, nearest = %f, furthest = %f\n", + LOG_INFOF("OrthoView: org = %s, angles = %s, distance = %f, nearest = %f, furthest = %f", vtos(ov_org), vtos(getpropertyvec(VF_ANGLES)), ov_distance, @@ -2060,7 +2077,7 @@ void CSQC_UpdateView(entity this, float w, float h) // reticle_type is changed to the item we are zooming / aiming with, to decide which reticle to use // It must be a persisted float for fading out to work properly (you let go of the zoom button for // the view to go back to normal, so reticle_type would become 0 as we fade out) - if(spectatee_status || is_dead || hud != HUD_NORMAL) + if(spectatee_status || is_dead || hud != HUD_NORMAL || local_player.viewloc) { // no zoom reticle while dead reticle_type = 0; @@ -2373,6 +2390,8 @@ void CSQC_UpdateView(entity this, float w, float h) HUD_Minigame_Mouse(); else if(QuickMenu_IsOpened()) QuickMenu_Mouse(); + else if(local_player.viewloc && (local_player.viewloc.spawnflags & VIEWLOC_FREEAIM)) + ViewLocation_Mouse(); // NOTE: doesn't use cursormode else HUD_Radar_Mouse();