Пример #1
0
void send_actors_to_client(int connection){

    /** RESULT  : make this actor and other actors visible to this client

        RETURNS : void

        PURPOSE : used by add_char_to_map function
    **/

    int i;
    unsigned char packet[1024];
    int packet_length;

    int map_id=clients.client[connection].map_id;
    int map_tile=clients.client[connection].map_tile;
    int char_visual_range=get_char_visual_range(connection);

    for(i=0; i<MAX_CLIENTS; i++){

        //restrict to characters on the same map
        if(map_id==clients.client[i].map_id){

            //restrict to characters within visual range of this character
            if(get_proximity(map_tile, clients.client[i].map_tile, maps.map[map_id].map_axis)<=char_visual_range){

                //send actors within visual proximity to this char
                add_new_enhanced_actor_packet(i, packet, &packet_length);
                send(connection, packet, packet_length, 0);
            }
        }
    }
}
Пример #2
0
unsigned int
DtSR_SearchResultsEntry::relevance()
{
    if ((int)f_relevance != Inv_Relevance)
	return f_relevance;

    int prox;
    if ((prox = get_proximity(DtSR_SearchZones::uas_all)) >= 0) {
	return f_relevance = proximity2relevance(prox);
    }

    int nzones = 0;
    unsigned int relevance = 0;
    for (int i=0; i<DtSR_SearchZones::uas_all; i++) {
	if ((prox = get_proximity((DtSR_SearchZones::uas_zones) i)) >= 0) {
	    relevance += proximity2relevance(prox);
	    nzones++;
	}
    }
    assert( nzones > 0 );
    return f_relevance = relevance / nzones;
}