From: Rudolf Polzer Date: Wed, 19 Jan 2011 06:43:22 +0000 (+0100) Subject: Merge commit '961fd2402928e52177ae5f9d6bc8a6d097ec918f' X-Git-Tag: xonotic-v0.5.0~318^2~5 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=64ff98c516fe190184f4dbccc3ec2ab1ab4d5587;hp=f19d3def9a072767b51e82045898226da82a405a Merge commit '961fd2402928e52177ae5f9d6bc8a6d097ec918f' --- diff --git a/defaultXonotic.cfg b/defaultXonotic.cfg index eaf8aa27af..d2e91235e6 100644 --- a/defaultXonotic.cfg +++ b/defaultXonotic.cfg @@ -1428,7 +1428,7 @@ seta hud_showbinds_limit 2 "maximum number of bound keys to show for a command. seta hud_colorflash_alpha 0.5 "starting alpha of the color flash" -seta hud_damage 0.55 "an improved version of gl_polyblend, draw an image instead when hurt" +seta hud_damage 0.55 "an improved version of gl_polyblend for damage, draw an image instead when hurt" seta hud_damage_gentle_alpha_multiplier 0.10 "how much to multiply alpha of flash when using the cl_gentle version, it's much more opaque than the non-gentle version" seta hud_damage_gentle_color "1 0.7 1" "color of flash for cl_gentle version" seta hud_damage_color "1 0 0" "color of flash" @@ -1441,6 +1441,17 @@ seta hud_damage_pain_threshold_lower_health 50 "at which health we start lowerin seta hud_damage_pain_threshold_pulsating_min 0.6 "minimum value when calculating the pulse: max(pulsating_min, fabs(sin(PI * time / period))" seta hud_damage_pain_threshold_pulsating_period 0.8 "one pulse every X seconds" +seta hud_contents 1 "an improved version of gl_polyblend for liquids such as water/lava/slime, draw a filler when inside the liquid" +seta hud_contents_factor 1 "factor at which to multiply the current faded value." +seta hud_contents_fadeintime 0.02 "factor of time it takes for the alpha level to reach normal value when entering the liquid" +seta hud_contents_fadeouttime 0.1 "factor of time it takes for the alpha level to reach normal value when leaving the liquid" +seta hud_contents_lava_alpha 0.7 "alpha of the lava color blend when inside it" +seta hud_contents_lava_color "0.8 0.1 0" +seta hud_contents_slime_alpha 0.7 "alpha of the slime color blend when inside it" +seta hud_contents_slime_color "0 0.4 0.1" +seta hud_contents_water_alpha 0.5 "alpha of the water color blend when inside it" +seta hud_contents_water_color "0.4 0.3 0.3" + // scoreboard seta scoreboard_columns default seta scoreboard_border_thickness 1 "scoreboard border thickness" diff --git a/qcsrc/client/View.qc b/qcsrc/client/View.qc index 1cb624de6b..d3bbf79cb7 100644 --- a/qcsrc/client/View.qc +++ b/qcsrc/client/View.qc @@ -360,6 +360,9 @@ float myhealth_flash; vector myhealth_gentlergb; +float contentavgalpha, liquidalpha_prev; +vector liquidcolor_prev; + void CSQC_UpdateView(float w, float h) { entity e; @@ -669,8 +672,57 @@ void CSQC_UpdateView(float w, float h) drawpic(reticle_pos, "gfx/reticle_nex", reticle_size, '1 1 1', f * autocvar_cl_reticle_item_nex, DRAWFLAG_NORMAL); } + // improved polyblend vector rgb; + if(autocvar_hud_contents) + { + float contentalpha_temp, incontent, liquidalpha, contentfadetime; + vector liquidcolor; + + switch(pointcontents(view_origin)) + { + case CONTENT_WATER: + liquidalpha = autocvar_hud_contents_water_alpha; + liquidcolor = stov(autocvar_hud_contents_water_color); + incontent = 1; + break; + + case CONTENT_LAVA: + liquidalpha = autocvar_hud_contents_lava_alpha; + liquidcolor = stov(autocvar_hud_contents_lava_color); + incontent = 1; + break; + + case CONTENT_SLIME: + liquidalpha = autocvar_hud_contents_slime_alpha; + liquidcolor = stov(autocvar_hud_contents_slime_color); + incontent = 1; + break; + + default: + liquidalpha = 0; + liquidcolor = '0 0 0'; + incontent = 0; + break; + } + + if(incontent) // fade in/out at different speeds so you can do e.g. instant fade when entering water and slow when leaving it. + { // also lets delcare previous values for blending properties, this way it isn't reset until after you have entered a different content + contentfadetime = autocvar_hud_contents_fadeintime; + liquidalpha_prev = liquidalpha; + liquidcolor_prev = liquidcolor; + } + else + contentfadetime = autocvar_hud_contents_fadeouttime; + + contentalpha_temp = bound(0, drawframetime / max(0.0001, contentfadetime), 1); + contentavgalpha = contentavgalpha * (1 - contentalpha_temp) + incontent * contentalpha_temp; + + if(contentavgalpha) + drawfill('0 0 0', eX * vid_conwidth + eY * vid_conheight, liquidcolor_prev, contentavgalpha * liquidalpha_prev, DRAWFLAG_NORMAL); + } + if(autocvar_hud_damage) { float myhealth_flash_temp; diff --git a/qcsrc/client/autocvars.qh b/qcsrc/client/autocvars.qh index 08ad7b9022..153fc71605 100644 --- a/qcsrc/client/autocvars.qh +++ b/qcsrc/client/autocvars.qh @@ -145,6 +145,16 @@ float autocvar_hud_configure_grid_alpha; float autocvar_hud_configure_grid_xsize; float autocvar_hud_configure_grid_ysize; float autocvar_hud_configure_teamcolorforced; +float autocvar_hud_contents; +float autocvar_hud_contents_factor; +float autocvar_hud_contents_fadeintime; +float autocvar_hud_contents_fadeouttime; +float autocvar_hud_contents_lava_alpha; +string autocvar_hud_contents_lava_color; +float autocvar_hud_contents_slime_alpha; +string autocvar_hud_contents_slime_color; +float autocvar_hud_contents_water_alpha; +string autocvar_hud_contents_water_color; float autocvar_hud_damage; string autocvar_hud_damage_color; float autocvar_hud_damage_factor;