void fade_screen_draw(int tick) { float alpha; if (fade_screen_tick==-1) return; tick-=fade_screen_tick; if (tick>hud.fade.map_msec) { fade_screen_tick=-1; return; } // calculate fade alpha=1.0f-(float)tick/(float)hud.fade.map_msec; glColor4f(0.0f,0.0f,0.0f,alpha); // draw gl_2D_view_screen(); glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); glDisable(GL_ALPHA_TEST); glDisable(GL_DEPTH_TEST); glBegin(GL_QUADS); glVertex2i(0,0); glVertex2i(setup.screen.x_sz,0); glVertex2i(setup.screen.x_sz,setup.screen.y_sz); glVertex2i(0,setup.screen.y_sz); glEnd(); }
void draw_background(void) { int txt_id; float gx,gy; texture_type *texture; // is there a background? if (!map.background.on) return; if ((map.background.fill<0) || (map.background.fill>=max_map_texture)) return; // setup view gl_2D_view_screen(); // get scrolling gx=((float)(view.render->camera.pnt.x+view.render->camera.pnt.z))*(map.background.x_scroll_fact*0.001f); gy=((float)view.render->camera.pnt.y)*(map.background.y_scroll_fact*0.001f); // draw background texture=&map.textures[map.background.fill]; txt_id=texture->frames[texture->animate.current_frame].bitmap.gl_id; glDisable(GL_BLEND); glDisable(GL_ALPHA_TEST); glDisable(GL_DEPTH_TEST); gl_texture_simple_start(); gl_texture_simple_set(txt_id,FALSE,1,1,1,1); view_draw_next_vertex_object_2D_texture_screen(setup.screen.x_sz,setup.screen.y_sz,gx,gy); gl_texture_simple_end(); }
void view_pause_draw(void) { d3col col; gl_frame_start(NULL); gl_2D_view_screen(); col.r=col.g=col.b=1.0f; gl_text_start(hud.font.text_size_small); gl_text_draw(2,(setup.screen.y_sz-2),"[paused]",tx_left,FALSE,&col,1.0f); gl_text_draw((setup.screen.x_sz-2),(setup.screen.y_sz-2),"[click to resume]",tx_right,FALSE,&col,1.0f); gl_text_end(); gl_frame_end(); }
void view_draw_dim3rtl(void) { obj_type *obj,*camera_obj; weapon_type *weap; // get player object and held weapon obj=server.obj_list.objs[server.player_obj_idx]; weap=weapon_find_current(obj); // use the camera render view.render=&view_camera_render; // set view camera camera_view_draw_run(); camera_obj=server.obj_list.objs[camera.obj_idx]; memmove(&view.render->camera.pnt,&camera.cur_pos.pnt,sizeof(d3pnt)); memmove(&view.render->camera.ang,&camera.cur_pos.ang,sizeof(d3ang)); view.render->camera.fov=map.camera.plane.fov; view.render->camera.flip=FALSE; view.render->camera.under_liquid_idx=camera_check_liquid(obj,&view.render->camera.pnt); view.render->cull_idx=0; view.render->force_camera_obj=FALSE; // camera adjustments if (map.camera.camera_mode==cv_fpp) { view_calculate_scope(obj,camera_obj); view_calculate_recoil(obj); } view_calculate_shakes(obj); view_calculate_sways(obj); // build the scene view_draw_dim3rtl_scene_build(); // we setup the 2D elements before // rendering because we get the last // frame so we want to use the last // frames eye point label_draw_setup(); halo_draw_setup(); if ((obj!=NULL) && (weap!=NULL)) { crosshair_setup(obj,weap); zoom_setup(obj,weap); } // dim3rtl rendering view_dim3rtl_render(); // draw 2D opengl elements gl_2D_view_screen(); label_draw_render(); halo_draw_render(); if (!view.cinema.on) { if ((obj!=NULL) && (weap!=NULL)) { crosshair_draw(obj,weap); zoom_draw(obj,weap); } } // draw tints and fades view_draw_liquid_tint(view.render->camera.under_liquid_idx); view_draw_effect_tint(); view_fade_draw(); }
void fade_object_draw(int tick,obj_type *obj) { int i,x,y,sz,alpha_sz,r; float fsz; obj_fs_fade *fade; GLUquadricObj *quadric; fade=&obj->fs_effect.fade; // fades on? if (!fade->on) return; // get fade size tick-=fade->start_tick; if (tick>fade->life_tick) { fsz=fade->end_size; } else { fsz=fade->start_size+((fade->end_size-fade->start_size)*((float)tick/(float)fade->life_tick)); } sz=(int)(((float)setup.screen.x_sz)*fsz); // center point x=fade->center_x; y=fade->center_y; // draw fade gl_2D_view_screen(); glDisable(GL_BLEND); glDisable(GL_ALPHA_TEST); glDisable(GL_DEPTH_TEST); glMatrixMode(GL_MODELVIEW); glTranslatef((float)x,(float)y,0.0f); // faded disk alpha_sz=80; if (sz<80) alpha_sz=sz; for (i=0;i<alpha_sz;i+=2) { glColor4f(0.0f,0.0f,0.0f,(((float)i)*0.025f)); r=(sz+i); quadric=gluNewQuadric(); gluDisk(quadric,r,(r+2),24,24); gluDeleteQuadric(quadric); } // rest of black disk sz+=alpha_sz; if (sz<setup.screen.x_sz) { glColor4f(0.0f,0.0f,0.0f,1.0f); quadric=gluNewQuadric(); gluDisk(quadric,sz,setup.screen.x_sz,24,24); gluDeleteQuadric(quadric); } }