Example #1
0
void CHARACTER::snap(int snapping_client)
{
	if(networkclipped(snapping_client) || (snapping_client != player->client_id && player->invisible==true))
		return;
	
	NETOBJ_CHARACTER *character = (NETOBJ_CHARACTER *)snap_new_item(NETOBJTYPE_CHARACTER, player->client_id, sizeof(NETOBJ_CHARACTER));
	
	// write down the core
	if(game.world.paused)
	{
		// no dead reckoning when paused because the client doesn't know
		// how far to perform the reckoning
		character->tick = 0;
		core.write(character);
	}
	else
	{
		character->tick = reckoning_tick;
		sendcore.write(character);
	}

	if(do_splash)
		character->jumped = 3;

	// set emote
	if (emote_stop < server_tick())
	{
		emote_type = EMOTE_NORMAL;
		emote_stop = -1;
	}

	character->emote = emote_type;

	character->ammocount = 0;
	character->health = 0;
	character->armor = 0;
	
	character->weapon = active_weapon;
	character->attacktick = attack_tick;

	character->direction = input.direction;

	if(player->client_id == snapping_client)
	{
		character->health = health;
		character->armor = armor;
		if(weapons[active_weapon].ammo > 0)
			character->ammocount = weapons[active_weapon].ammo;
	}

	if (character->emote == EMOTE_NORMAL)
	{
		if(250 - ((server_tick() - last_action)%(250)) < 5)
			character->emote = EMOTE_BLINK;
	}

	character->player_state = player_state;
}
void PROJECTILE::snap(int snapping_client)
{
	float ct = (server_tick()-start_tick)/(float)server_tickspeed();
	
	if(networkclipped(snapping_client, get_pos(ct)))
		return;

	NETOBJ_PROJECTILE *proj = (NETOBJ_PROJECTILE *)snap_new_item(NETOBJTYPE_PROJECTILE, id, sizeof(NETOBJ_PROJECTILE));
	fill_info(proj);
}
Example #3
0
void CRATE::snap(int snapping_client)
{
	if(networkclipped(snapping_client))
		return;
	
	NETOBJ_CRATE *flag = (NETOBJ_CRATE *)snap_new_item(NETOBJTYPE_CRATE, id, sizeof(NETOBJ_CRATE));
	flag->x = (int)pos.x;
	flag->y = (int)pos.y;
	flag->type = type;
	flag->grounded = grounded;
}
void PLASMA::snap(int snapping_client)
{	
	if(networkclipped(snapping_client))
		return;

	NETOBJ_LASER *obj = (NETOBJ_LASER *)snap_new_item(NETOBJTYPE_LASER, id, sizeof(NETOBJ_LASER));
	obj->x = (int)pos.x;
	obj->y = (int)pos.y;
	obj->from_x = (int)pos.x;
	obj->from_y = (int)pos.y;
	obj->start_tick = eval_tick;
}
Example #5
0
void BUILDING::snap(int snapping_client)
{
	if(networkclipped(snapping_client) || (!game.players[snapping_client]->get_character() && game.players[snapping_client]->selectspawn && (type != B_SPAWN || team != game.players[snapping_client]->team)))
		return;
	
	NETOBJ_BUILDING *building = (NETOBJ_BUILDING *)snap_new_item(NETOBJTYPE_BUILDING, id, sizeof(NETOBJ_BUILDING));

	building->x = (int)pos.x;
	building->y = (int)pos.y;
	
	if(!game.players[snapping_client]->get_character() && game.players[snapping_client]->selectspawn)
		building->health = 0;
	else
		building->health = 80*health/maxhealth;

	building->team = team;
	building->anim = anim & 0xF;
	building->anim2 = anim >> 4;
	building->type = type;
	building->power = power;
	building->angle = (int)((angle+pi/2)/(2*pi)*MAX_INT);
	building->alive = alive;
}