about summary refs log tree commit diff
path: root/src/game/client
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2008-07-06 11:21:21 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2008-07-06 11:21:21 +0000
commit9d632dd826c8a312095de0f56df66b2580d336cb (patch)
tree3fdde543c94323d6c698d278a58bf18e3c385776 /src/game/client
parent3705064b109580103a3d13f44693503da9927281 (diff)
downloadzcatch-9d632dd826c8a312095de0f56df66b2580d336cb.tar.gz
zcatch-9d632dd826c8a312095de0f56df66b2580d336cb.zip
major update. server clean up and much added documentation
Diffstat (limited to 'src/game/client')
-rw-r--r--src/game/client/gc_client.cpp7
-rw-r--r--src/game/client/gc_client.hpp12
-rw-r--r--src/game/client/gc_hooks.cpp71
-rw-r--r--src/game/client/gc_menu.cpp2
-rw-r--r--src/game/client/gc_render.cpp8
-rw-r--r--src/game/client/gc_render.hpp2
-rw-r--r--src/game/client/gc_render_obj.cpp21
7 files changed, 65 insertions, 58 deletions
diff --git a/src/game/client/gc_client.cpp b/src/game/client/gc_client.cpp
index c42c354e..f0195a47 100644
--- a/src/game/client/gc_client.cpp
+++ b/src/game/client/gc_client.cpp
@@ -880,7 +880,7 @@ void render_game()
 			// don't use predicted
 		}
 		else
-			local_character_pos = mix(predicted_prev_player.pos, predicted_player.pos, client_predintratick());
+			local_character_pos = mix(predicted_prev_char.pos, predicted_char.pos, client_predintratick());
 	}
 	else if(netobjects.local_character && netobjects.local_prev_character)
 	{
@@ -1663,3 +1663,8 @@ void render_game()
 	
 }
 
+
+extern "C" const char *modc_getitemname(int type)
+{
+	return netobj_get_name(type);
+}
diff --git a/src/game/client/gc_client.hpp b/src/game/client/gc_client.hpp
index 750154b3..f19766bf 100644
--- a/src/game/client/gc_client.hpp
+++ b/src/game/client/gc_client.hpp
@@ -1,5 +1,5 @@
 #include <game/g_vmath.hpp>
-#include <game/g_protocol.hpp>
+#include <game/generated/g_protocol.hpp>
 #include <game/g_game.hpp>
 
 #include <game/client/gc_render.hpp>
@@ -22,8 +22,8 @@ extern vec2 local_target_pos;
 // snap pointers
 struct SNAPSTATE
 {
-	const NETOBJ_PLAYER_CHARACTER *local_character;
-	const NETOBJ_PLAYER_CHARACTER *local_prev_character;
+	const NETOBJ_CHARACTER *local_character;
+	const NETOBJ_CHARACTER *local_prev_character;
 	const NETOBJ_PLAYER_INFO *local_info;
 	const NETOBJ_FLAG *flags[2];
 	const NETOBJ_GAME *gameobj;
@@ -46,8 +46,8 @@ extern const NETOBJ_GAME *gameobj;
 extern TUNING_PARAMS tuning;
 
 // predicted players
-extern PLAYER_CORE predicted_prev_player;
-extern PLAYER_CORE predicted_player;
+extern CHARACTER_CORE predicted_prev_char;
+extern CHARACTER_CORE predicted_char;
 
 // input
 extern NETOBJ_PLAYER_INPUT input_data;
@@ -148,7 +148,7 @@ struct CLIENT_DATA
 	int team;
 	int emoticon;
 	int emoticon_start;
-	PLAYER_CORE predicted;
+	CHARACTER_CORE predicted;
 	
 	TEE_RENDER_INFO skin_info; // this is what the server reports
 	TEE_RENDER_INFO render_info; // this is what we use
diff --git a/src/game/client/gc_hooks.cpp b/src/game/client/gc_hooks.cpp
index 2aaca900..5d9570fb 100644
--- a/src/game/client/gc_hooks.cpp
+++ b/src/game/client/gc_hooks.cpp
@@ -56,6 +56,9 @@ static void load_sounds_thread(void *do_render)
 
 extern "C" void modc_init()
 {
+	for(int i = 0; i < NUM_NETOBJTYPES; i++)
+		snap_set_staticsize(i, netobj_get_size(i));
+	
 	static FONT_SET default_font;
 	int64 start = time_get();
 	
@@ -128,17 +131,17 @@ extern "C" void modc_shutdown()
 }
 
 
-PLAYER_CORE predicted_prev_player;
-PLAYER_CORE predicted_player;
+CHARACTER_CORE predicted_prev_char;
+CHARACTER_CORE predicted_char;
 static int predicted_tick = 0;
 static int last_new_predicted_tick = -1;
 
 extern "C" void modc_predict()
 {
-	PLAYER_CORE before_prev_player = predicted_prev_player;
-	PLAYER_CORE before_player = predicted_player;
+	CHARACTER_CORE before_prev_char = predicted_prev_char;
+	CHARACTER_CORE before_char = predicted_char;
 
-	// repredict player
+	// repredict character
 	WORLD_CORE world;
 	world.tuning = tuning;
 	int local_cid = -1;
@@ -150,11 +153,11 @@ extern "C" void modc_predict()
 		const void *data = snap_get_item(SNAP_CURRENT, i, &item);
 		int client_id = item.id;
 
-		if(item.type == NETOBJTYPE_PLAYER_CHARACTER)
+		if(item.type == NETOBJTYPE_CHARACTER)
 		{
-			const NETOBJ_PLAYER_CHARACTER *character = (const NETOBJ_PLAYER_CHARACTER *)data;
+			const NETOBJ_CHARACTER *character = (const NETOBJ_CHARACTER *)data;
 			client_datas[client_id].predicted.world = &world;
-			world.players[client_id] = &client_datas[client_id].predicted;
+			world.characters[client_id] = &client_datas[client_id].predicted;
 
 			client_datas[client_id].predicted.read(character);
 		}
@@ -174,45 +177,45 @@ extern "C" void modc_predict()
 	for(int tick = client_tick()+1; tick <= client_predtick(); tick++)
 	{
 		// fetch the local
-		if(tick == client_predtick() && world.players[local_cid])
-			predicted_prev_player = *world.players[local_cid];
+		if(tick == client_predtick() && world.characters[local_cid])
+			predicted_prev_char = *world.characters[local_cid];
 		
 		// first calculate where everyone should move
 		for(int c = 0; c < MAX_CLIENTS; c++)
 		{
-			if(!world.players[c])
+			if(!world.characters[c])
 				continue;
 
-			mem_zero(&world.players[c]->input, sizeof(world.players[c]->input));
+			mem_zero(&world.characters[c]->input, sizeof(world.characters[c]->input));
 			if(local_cid == c)
 			{
 				// apply player input
 				int *input = client_get_input(tick);
 				if(input)
-					world.players[c]->input = *((NETOBJ_PLAYER_INPUT*)input);
+					world.characters[c]->input = *((NETOBJ_PLAYER_INPUT*)input);
 			}
 
-			world.players[c]->tick();
+			world.characters[c]->tick();
 		}
 
 		// move all players and quantize their data
 		for(int c = 0; c < MAX_CLIENTS; c++)
 		{
-			if(!world.players[c])
+			if(!world.characters[c])
 				continue;
 
-			world.players[c]->move();
-			world.players[c]->quantize();
+			world.characters[c]->move();
+			world.characters[c]->quantize();
 		}
 		
 		if(tick > last_new_predicted_tick)
 		{
 			last_new_predicted_tick = tick;
 			
-			if(local_cid != -1 && world.players[local_cid])
+			if(local_cid != -1 && world.characters[local_cid])
 			{
-				vec2 pos = world.players[local_cid]->pos;
-				int events = world.players[local_cid]->triggered_events;
+				vec2 pos = world.characters[local_cid]->pos;
+				int events = world.characters[local_cid]->triggered_events;
 				if(events&COREEVENT_GROUND_JUMP) snd_play_random(CHN_WORLD, SOUND_PLAYER_JUMP, 1.0f, pos);
 				if(events&COREEVENT_AIR_JUMP)
 				{
@@ -232,26 +235,26 @@ extern "C" void modc_predict()
 				(int)world.players[c]->vel.x, (int)world.players[c]->vel.y);*/
 		}
 		
-		if(tick == client_predtick() && world.players[local_cid])
-			predicted_player = *world.players[local_cid];
+		if(tick == client_predtick() && world.characters[local_cid])
+			predicted_char = *world.characters[local_cid];
 	}
 	
 	if(config.debug && predicted_tick == client_predtick())
 	{
-		if(predicted_player.pos.x != before_player.pos.x ||
-			predicted_player.pos.y != before_player.pos.y)
+		if(predicted_char.pos.x != before_char.pos.x ||
+			predicted_char.pos.y != before_char.pos.y)
 		{
 			dbg_msg("client", "prediction error, (%d %d) (%d %d)", 
-				(int)before_player.pos.x, (int)before_player.pos.y,
-				(int)predicted_player.pos.x, (int)predicted_player.pos.y);
+				(int)before_char.pos.x, (int)before_char.pos.y,
+				(int)predicted_char.pos.x, (int)predicted_char.pos.y);
 		}
 
-		if(predicted_prev_player.pos.x != before_prev_player.pos.x ||
-			predicted_prev_player.pos.y != before_prev_player.pos.y)
+		if(predicted_prev_char.pos.x != before_prev_char.pos.x ||
+			predicted_prev_char.pos.y != before_prev_char.pos.y)
 		{
 			dbg_msg("client", "prediction error, prev (%d %d) (%d %d)", 
-				(int)before_prev_player.pos.x, (int)before_prev_player.pos.y,
-				(int)predicted_prev_player.pos.x, (int)predicted_prev_player.pos.y);
+				(int)before_prev_char.pos.x, (int)before_prev_char.pos.y,
+				(int)predicted_prev_char.pos.x, (int)predicted_prev_char.pos.y);
 		}
 	}
 	
@@ -316,15 +319,15 @@ extern "C" void modc_newsnapshot()
 				if(info->local)
 				{
 					netobjects.local_info = info;
-					const void *data = snap_find_item(SNAP_CURRENT, NETOBJTYPE_PLAYER_CHARACTER, item.id);
+					const void *data = snap_find_item(SNAP_CURRENT, NETOBJTYPE_CHARACTER, item.id);
 					if(data)
 					{
-						netobjects.local_character = (const NETOBJ_PLAYER_CHARACTER *)data;
+						netobjects.local_character = (const NETOBJ_CHARACTER *)data;
 						local_character_pos = vec2(netobjects.local_character->x, netobjects.local_character->y);
 
-						const void *p = snap_find_item(SNAP_PREV, NETOBJTYPE_PLAYER_CHARACTER, item.id);
+						const void *p = snap_find_item(SNAP_PREV, NETOBJTYPE_CHARACTER, item.id);
 						if(p)
-							netobjects.local_prev_character = (NETOBJ_PLAYER_CHARACTER *)p;
+							netobjects.local_prev_character = (NETOBJ_CHARACTER *)p;
 					}
 				}
 			}
diff --git a/src/game/client/gc_menu.cpp b/src/game/client/gc_menu.cpp
index cb8324a7..3a1e9cee 100644
--- a/src/game/client/gc_menu.cpp
+++ b/src/game/client/gc_menu.cpp
@@ -15,7 +15,7 @@ extern "C" {
 }
 
 #include "../g_version.hpp"
-#include "../g_protocol.hpp"
+#include <game/generated/g_protocol.hpp>
 
 #include "../generated/gc_data.hpp"
 #include "gc_render.hpp"
diff --git a/src/game/client/gc_render.cpp b/src/game/client/gc_render.cpp
index 2e5a3d50..afb827fb 100644
--- a/src/game/client/gc_render.cpp
+++ b/src/game/client/gc_render.cpp
@@ -3,7 +3,7 @@
 #include <engine/e_client_interface.h>
 #include <engine/e_config.h>
 #include <game/generated/gc_data.hpp>
-#include <game/g_protocol.hpp>
+#include <game/generated/g_protocol.hpp>
 #include <game/g_math.hpp>
 #include <game/g_layers.hpp>
 #include "gc_render.hpp"
@@ -473,7 +473,7 @@ static void render_players()
 		SNAP_ITEM item;
 		const void *data = snap_get_item(SNAP_CURRENT, i, &item);
 
-		if(item.type == NETOBJTYPE_PLAYER_CHARACTER)
+		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);
@@ -482,8 +482,8 @@ static void render_players()
 			if(prev && prev_info && info)
 			{
 				render_player(
-						(const NETOBJ_PLAYER_CHARACTER *)prev,
-						(const NETOBJ_PLAYER_CHARACTER *)data,
+						(const NETOBJ_CHARACTER *)prev,
+						(const NETOBJ_CHARACTER *)data,
 						(const NETOBJ_PLAYER_INFO *)prev_info,
 						(const NETOBJ_PLAYER_INFO *)info
 					);
diff --git a/src/game/client/gc_render.hpp b/src/game/client/gc_render.hpp
index 02bc224d..d819c194 100644
--- a/src/game/client/gc_render.hpp
+++ b/src/game/client/gc_render.hpp
@@ -66,7 +66,7 @@ void render_pickup(const struct NETOBJ_PICKUP *prev, const struct NETOBJ_PICKUP
 void render_projectile(const struct NETOBJ_PROJECTILE *current, int itemid);
 void render_laser(const struct NETOBJ_LASER *current);
 void render_player(
-	const struct NETOBJ_PLAYER_CHARACTER *prev_char, const struct NETOBJ_PLAYER_CHARACTER *player_char,
+	const struct NETOBJ_CHARACTER *prev_char, const struct NETOBJ_CHARACTER *player_char,
 	const struct NETOBJ_PLAYER_INFO *prev_info, const struct NETOBJ_PLAYER_INFO *player_info);
 	
 // map render methods (gc_render_map.cpp)
diff --git a/src/game/client/gc_render_obj.cpp b/src/game/client/gc_render_obj.cpp
index 119db4d6..daba5ceb 100644
--- a/src/game/client/gc_render_obj.cpp
+++ b/src/game/client/gc_render_obj.cpp
@@ -3,8 +3,8 @@
 #include <stdio.h>
 #include <engine/e_client_interface.h>
 #include <engine/e_config.h>
-#include "../generated/gc_data.hpp"
-#include "../g_protocol.hpp"
+#include <game/generated/gc_data.hpp>
+#include <game/generated/g_protocol.hpp>
 #include "../g_math.hpp"
 #include "gc_render.hpp"
 #include "gc_anim.hpp"
@@ -265,14 +265,14 @@ static void render_hand(TEE_RENDER_INFO *info, vec2 center_pos, vec2 dir, float
 }
 
 void render_player(
-	const NETOBJ_PLAYER_CHARACTER *prev_char,
-	const NETOBJ_PLAYER_CHARACTER *player_char,
+	const NETOBJ_CHARACTER *prev_char,
+	const NETOBJ_CHARACTER *player_char,
 	const NETOBJ_PLAYER_INFO *prev_info,
 	const NETOBJ_PLAYER_INFO *player_info
 	)
 {
-	NETOBJ_PLAYER_CHARACTER prev;
-	NETOBJ_PLAYER_CHARACTER player;
+	NETOBJ_CHARACTER prev;
+	NETOBJ_CHARACTER player;
 	prev = *prev_char;
 	player = *player_char;
 
@@ -330,8 +330,8 @@ void render_player(
 		else
 		{
 			// apply predicted results
-			predicted_player.write(&player);
-			predicted_prev_player.write(&prev);
+			predicted_char.write(&player);
+			predicted_prev_char.write(&prev);
 			intratick = client_predintratick();
 		}
 	}
@@ -403,8 +403,8 @@ void render_player(
 		{
 			if(netobjects.local_info && player_char->hooked_player == netobjects.local_info->cid)
 			{
-				hook_pos = mix(vec2(predicted_prev_player.pos.x, predicted_prev_player.pos.y),
-					vec2(predicted_player.pos.x, predicted_player.pos.y), client_predintratick());
+				hook_pos = mix(vec2(predicted_prev_char.pos.x, predicted_prev_char.pos.y),
+					vec2(predicted_char.pos.x, predicted_char.pos.y), client_predintratick());
 			}
 			else
 				hook_pos = mix(vec2(prev_char->hook_x, prev_char->hook_y), vec2(player_char->hook_x, player_char->hook_y), client_intratick());
@@ -541,7 +541,6 @@ void render_player(
 					vec2 diry(-dir.y,dir.x);
 					vec2 muzzlepos = p + dir * data->weapons.id[iw].muzzleoffsetx + diry * offsety;
 
-					dbg_msg("", "%d", data->weapons.id[iw].num_sprite_muzzles);
 					draw_sprite(muzzlepos.x, muzzlepos.y, data->weapons.id[iw].visual_size);
 				}
 			}