about summary refs log tree commit diff
path: root/src/game/client/gc_render.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/client/gc_render.cpp')
-rw-r--r--src/game/client/gc_render.cpp257
1 files changed, 4 insertions, 253 deletions
diff --git a/src/game/client/gc_render.cpp b/src/game/client/gc_render.cpp
index 56e82c69..6dacc354 100644
--- a/src/game/client/gc_render.cpp
+++ b/src/game/client/gc_render.cpp
@@ -8,14 +8,14 @@
 #include <game/generated/gc_data.hpp>
 #include <game/generated/g_protocol.hpp>
 #include <game/layers.hpp>
+#include "animstate.hpp"
 #include "gc_render.hpp"
-#include "gc_anim.hpp"
 #include "gc_client.hpp"
 #include "gc_map_image.hpp"
 
 static float sprite_w_scale;
 static float sprite_h_scale;
-
+/*
 static void layershot_begin()
 {
 	if(!config.cl_layershot)
@@ -33,7 +33,7 @@ static void layershot_end()
 	str_format(buf, sizeof(buf), "screenshots/layers_%04d.png", config.cl_layershot);
 	gfx_screenshot_direct(buf);
 	config.cl_layershot++;
-}
+}*/
 
 void select_sprite(SPRITE *spr, int flags, int sx, int sy)
 {
@@ -83,8 +83,6 @@ void draw_sprite(float x, float y, float size)
 	gfx_quads_draw(x, y, size*sprite_w_scale, size*sprite_h_scale);
 }
 
-
-
 void draw_round_rect_ext(float x, float y, float w, float h, float r, int corners)
 {
 	int num = 8;
@@ -155,7 +153,7 @@ void ui_draw_rect(const RECT *r, vec4 color, int corners, float rounding)
 	gfx_quads_end();
 }
 
-void render_tee(ANIM_STATE *anim, TEE_RENDER_INFO *info, int emote, vec2 dir, vec2 pos)
+void render_tee(ANIMSTATE *anim, TEE_RENDER_INFO *info, int emote, vec2 dir, vec2 pos)
 {
 	vec2 direction = dir;
 	vec2 position = pos;
@@ -281,137 +279,6 @@ void mapscreen_to_world(float center_x, float center_y, float parallax_x, float
 	points[3] = offset_y+center_y+height/2;
 }
 
-static void mapscreen_to_group(float center_x, float center_y, MAPITEM_GROUP *group)
-{
-	float points[4];
-	mapscreen_to_world(center_x, center_y, group->parallax_x/100.0f, group->parallax_y/100.0f,
-		group->offset_x, group->offset_y, gfx_screenaspect(), 1.0f, points);
-	gfx_mapscreen(points[0], points[1], points[2], points[3]);
-}
-
-static void envelope_eval(float time_offset, int env, float *channels)
-{
-	channels[0] = 0;
-	channels[1] = 0;
-	channels[2] = 0;
-	channels[3] = 0;
-
-	ENVPOINT *points;
-
-	{
-		int start, num;
-		map_get_type(MAPITEMTYPE_ENVPOINTS, &start, &num);
-		if(num)
-			points = (ENVPOINT *)map_get_item(start, 0, 0);
-	}
-	
-	int start, num;
-	map_get_type(MAPITEMTYPE_ENVELOPE, &start, &num);
-	
-	if(env >= num)
-		return;
-	
-	MAPITEM_ENVELOPE *item = (MAPITEM_ENVELOPE *)map_get_item(start+env, 0, 0);
-	render_eval_envelope(points+item->start_point, item->num_points, 4, client_localtime()+time_offset, channels);
-}
-
-void render_layers(float center_x, float center_y, int pass)
-{
-	bool passed_gamelayer = false;
-	
-	for(int g = 0; g < layers_num_groups(); g++)
-	{
-		MAPITEM_GROUP *group = layers_get_group(g);
-		
-		if(group->version >= 2 && group->use_clipping)
-		{
-			// set clipping
-			float points[4];
-			mapscreen_to_group(center_x, center_y, layers_game_group());
-			gfx_getscreen(&points[0], &points[1], &points[2], &points[3]);
-			float x0 = (group->clip_x - points[0]) / (points[2]-points[0]);
-			float y0 = (group->clip_y - points[1]) / (points[3]-points[1]);
-			float x1 = ((group->clip_x+group->clip_w) - points[0]) / (points[2]-points[0]);
-			float y1 = ((group->clip_y+group->clip_h) - points[1]) / (points[3]-points[1]);
-			
-			gfx_clip_enable((int)(x0*gfx_screenwidth()), (int)(y0*gfx_screenheight()),
-				(int)((x1-x0)*gfx_screenwidth()), (int)((y1-y0)*gfx_screenheight()));
-		}		
-		
-		mapscreen_to_group(center_x, center_y, group);
-		
-		for(int l = 0; l < group->num_layers; l++)
-		{
-			MAPITEM_LAYER *layer = layers_get_layer(group->start_layer+l);
-			bool render = false;
-			bool is_game_layer = false;
-			
-			// skip rendering if detail layers if not wanted
-			if(layer->flags&LAYERFLAG_DETAIL && !config.gfx_high_detail)
-				continue;
-			
-			if(layer == (MAPITEM_LAYER*)layers_game_layer())
-			{
-				is_game_layer = true;
-				passed_gamelayer = 1;
-			}
-				
-			if(pass == -1)
-				render = true;
-			else if(pass == 0)
-			{
-				if(passed_gamelayer)
-					return;
-				render = true;
-			}
-			else
-			{
-				if(passed_gamelayer && !is_game_layer)
-					render = true;
-			}
-			
-			if(render && !is_game_layer)
-			{
-				layershot_begin();
-				
-				if(layer->type == LAYERTYPE_TILES)
-				{
-					MAPITEM_LAYER_TILEMAP *tmap = (MAPITEM_LAYER_TILEMAP *)layer;
-					if(tmap->image == -1)
-						gfx_texture_set(-1);
-					else
-						gfx_texture_set(img_get(tmap->image));
-						
-					TILE *tiles = (TILE *)map_get_data(tmap->data);
-					gfx_blend_none();
-					render_tilemap(tiles, tmap->width, tmap->height, 32.0f, vec4(1,1,1,1), TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_OPAQUE);
-					gfx_blend_normal();
-					render_tilemap(tiles, tmap->width, tmap->height, 32.0f, vec4(1,1,1,1), TILERENDERFLAG_EXTEND|LAYERRENDERFLAG_TRANSPARENT);
-				}
-				else if(layer->type == LAYERTYPE_QUADS)
-				{
-					MAPITEM_LAYER_QUADS *qlayer = (MAPITEM_LAYER_QUADS *)layer;
-					if(qlayer->image == -1)
-						gfx_texture_set(-1);
-					else
-						gfx_texture_set(img_get(qlayer->image));
-
-					QUAD *quads = (QUAD *)map_get_data_swapped(qlayer->data);
-					
-					gfx_blend_none();
-					render_quads(quads, qlayer->num_quads, envelope_eval, LAYERRENDERFLAG_OPAQUE);
-					gfx_blend_normal();
-					render_quads(quads, qlayer->num_quads, envelope_eval, LAYERRENDERFLAG_TRANSPARENT);
-				}
-				
-				layershot_end();	
-			}
-		}
-		
-		gfx_clip_disable();
-	}
-}
-
 void render_tilemap_generate_skip()
 {
 	for(int g = 0; g < layers_num_groups(); g++)
@@ -444,119 +311,3 @@ void render_tilemap_generate_skip()
 		}
 	}
 }
-
-static void render_items()
-{
-	int num = snap_num_items(SNAP_CURRENT);
-	for(int i = 0; i < num; i++)
-	{
-		SNAP_ITEM item;
-		const void *data = snap_get_item(SNAP_CURRENT, i, &item);
-
-		if(item.type == NETOBJTYPE_PROJECTILE)
-		{
-			render_projectile((const NETOBJ_PROJECTILE *)data, item.id);
-		}
-		else if(item.type == NETOBJTYPE_PICKUP)
-		{
-			const void *prev = snap_find_item(SNAP_PREV, item.type, item.id);
-			if(prev)
-				render_pickup((const NETOBJ_PICKUP *)prev, (const NETOBJ_PICKUP *)data);
-		}
-		else if(item.type == NETOBJTYPE_LASER)
-		{
-			render_laser((const NETOBJ_LASER *)data);
-		}
-		else if(item.type == NETOBJTYPE_FLAG)
-		{
-			const void *prev = snap_find_item(SNAP_PREV, item.type, item.id);
-			if (prev)
-				render_flag((const NETOBJ_FLAG *)prev, (const NETOBJ_FLAG *)data);
-		}
-	}
-
-	// render extra projectiles	
-	for(int i = 0; i < extraproj_num; i++)
-	{
-		if(extraproj_projectiles[i].start_tick < client_tick())
-		{
-			extraproj_projectiles[i] = extraproj_projectiles[extraproj_num-1];
-			extraproj_num--;
-		}
-		else
-			render_projectile(&extraproj_projectiles[i], 0);
-	}
-}
-
-
-static void render_players()
-{
-	int num = snap_num_items(SNAP_CURRENT);
-	for(int i = 0; i < num; i++)
-	{
-		SNAP_ITEM item;
-		const void *data = snap_get_item(SNAP_CURRENT, i, &item);
-
-		if(item.type == NETOBJTYPE_CHARACTER)
-		{
-			const void *prev = snap_find_item(SNAP_PREV, item.type, item.id);
-			const void *prev_info = snap_find_item(SNAP_PREV, NETOBJTYPE_PLAYER_INFO, item.id);
-			const void *info = snap_find_item(SNAP_CURRENT, NETOBJTYPE_PLAYER_INFO, item.id);
-
-			if(prev && prev_info && info)
-			{
-				render_player(
-						(const NETOBJ_CHARACTER *)prev,
-						(const NETOBJ_CHARACTER *)data,
-						(const NETOBJ_PLAYER_INFO *)prev_info,
-						(const NETOBJ_PLAYER_INFO *)info
-					);
-			}
-		}
-	}
-}
-
-// renders the complete game world
-void render_world(float center_x, float center_y, float zoom)
-{	
-	// render background layers
-	render_layers(center_x, center_y, 0);
-	gfx_clip_disable();
-	
-	// render trails
-	layershot_begin();
-	particle_render(PARTGROUP_PROJECTILE_TRAIL);
-	layershot_end();
-
-	// render items
-	layershot_begin();
-	render_items();
-	layershot_end();
-
-	// render players above all
-	layershot_begin();
-	render_players();
-	layershot_end();
-
-	// render particles
-	layershot_begin();
-	particle_render(PARTGROUP_EXPLOSIONS);
-	particle_render(PARTGROUP_GENERAL);
-	layershot_end();
-	
-	if(config.dbg_flow)
-		flow_dbg_render();
-
-	// render foreground layers
-	layershot_begin();
-	render_layers(center_x, center_y, 1);
-	layershot_end();
-	gfx_clip_disable();
-
-	// render damage indications
-	layershot_begin();
-	render_damage_indicators();
-	layershot_end();
-	
-	config.cl_layershot = 0;
-}