|
@@ -1,663 +0,0 @@
|
|
-#include "server.h"
|
|
|
|
-
|
|
|
|
-int turn_number(void)
|
|
|
|
-{
|
|
|
|
- return gl_config->nb_turns;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int turn_counter(void)
|
|
|
|
-{
|
|
|
|
- return gl_config->turn_num;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static gboolean is_visible(int team_id, float x, float y)
|
|
|
|
-{
|
|
|
|
- return (get_pulse_total(x, y, team_id) >= gl_config->see_power);
|
|
|
|
- /* AVANT MODIF MATHIAS return (get_pulse_team(x, y, team_id) >= gl_config->see_power); */
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static gboolean is_obj_visible(int team_id, int id)
|
|
|
|
-{
|
|
|
|
- if (gl_objects[id].obj.team_id == team_id)
|
|
|
|
- return TRUE;
|
|
|
|
- return is_visible(team_id, gl_objects[id].obj.x, gl_objects[id].obj.y);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void set_default_action_r4d2(int r4d2_id)
|
|
|
|
-{
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.type = act_r4d2_move;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.move.x =
|
|
|
|
- gl_objects[r4d2_id].r4d2.x;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.move.y =
|
|
|
|
- gl_objects[r4d2_id].r4d2.y;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void set_default_action_akx(int akx_id)
|
|
|
|
-{
|
|
|
|
- gl_objects[akx_id].akx.action.type = act_akx_move;
|
|
|
|
- gl_objects[akx_id].akx.action.act.move.x =
|
|
|
|
- gl_objects[akx_id].akx.x;
|
|
|
|
- gl_objects[akx_id].akx.action.act.move.y =
|
|
|
|
- gl_objects[akx_id].akx.y;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int time_get_left()
|
|
|
|
-{
|
|
|
|
- return time_left();
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int error_get()
|
|
|
|
-{
|
|
|
|
- int foo;
|
|
|
|
-
|
|
|
|
- foo = gl_player->error;
|
|
|
|
- gl_player->error = NONE;
|
|
|
|
- return foo;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int score_get()
|
|
|
|
-{
|
|
|
|
- return gl_player->score;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static gboolean validate_object(int obj_id, obj_type_t type)
|
|
|
|
-{
|
|
|
|
- if ((obj_id >= gl_config->nb_objects) || (obj_id < 0))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return FALSE;
|
|
|
|
- }
|
|
|
|
- if (!is_obj_visible(gl_player->team_id, obj_id))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NOT_VISIBLE;
|
|
|
|
- return FALSE;
|
|
|
|
- }
|
|
|
|
- if (gl_objects[obj_id].obj.type != type)
|
|
|
|
- {
|
|
|
|
- gl_player->error = TYPE_ERROR;
|
|
|
|
- return FALSE;
|
|
|
|
- }
|
|
|
|
- return TRUE;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static gboolean validate_object_nosee(int obj_id, obj_type_t type)
|
|
|
|
-{
|
|
|
|
- if ((obj_id >= gl_config->nb_objects) || (obj_id < 0))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return FALSE;
|
|
|
|
- }
|
|
|
|
- if (gl_objects[obj_id].obj.type != type)
|
|
|
|
- {
|
|
|
|
- gl_player->error = TYPE_ERROR;
|
|
|
|
- return FALSE;
|
|
|
|
- }
|
|
|
|
- return TRUE;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static gboolean validate_object_owner(int obj_id, obj_type_t type)
|
|
|
|
-{
|
|
|
|
- if ((obj_id >= gl_config->nb_objects) || (obj_id < 0))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return FALSE;
|
|
|
|
- }
|
|
|
|
- if (gl_objects[obj_id].obj.team_id != gl_player->team_id)
|
|
|
|
- {
|
|
|
|
- if ((gl_objects[obj_id].obj.team_id == 0) && (type == obj_r4d2))
|
|
|
|
- gl_player->error = DESTROYED;
|
|
|
|
- else
|
|
|
|
- gl_player->error = NOT_YOURS;
|
|
|
|
- return FALSE;
|
|
|
|
- }
|
|
|
|
- if (gl_objects[obj_id].obj.type != type)
|
|
|
|
- {
|
|
|
|
- gl_player->error = TYPE_ERROR;
|
|
|
|
- return FALSE;
|
|
|
|
- }
|
|
|
|
- return TRUE;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_get_team(int r4d2_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(r4d2_id, obj_r4d2))
|
|
|
|
- return -1;
|
|
|
|
- if (gl_objects[r4d2_id].obj.team_id == 0)
|
|
|
|
- {
|
|
|
|
- gl_player->error = DESTROYED;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return gl_objects[r4d2_id].obj.team_id;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float r4d2_get_pos_x(int r4d2_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(r4d2_id, obj_r4d2))
|
|
|
|
- return -1;
|
|
|
|
- return gl_objects[r4d2_id].obj.x;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float r4d2_get_pos_y(int r4d2_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(r4d2_id, obj_r4d2))
|
|
|
|
- return -1;
|
|
|
|
- return gl_objects[r4d2_id].obj.y;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_get_status(int r4d2_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(r4d2_id, obj_r4d2))
|
|
|
|
- return -1;
|
|
|
|
- return gl_objects[r4d2_id].r4d2.action.type;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float r4d2_get_speed()
|
|
|
|
-{
|
|
|
|
- return gl_config->r4d2_speed;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float r4d2_get_destroy_speed()
|
|
|
|
-{
|
|
|
|
- return gl_config->destroy_speed;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_turn_take_r4d2()
|
|
|
|
-{
|
|
|
|
- return gl_config->turn_take_r4d2;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_turn_untake_r4d2()
|
|
|
|
-{
|
|
|
|
- return gl_config->turn_untake_r4d2;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_turn_take_akx()
|
|
|
|
-{
|
|
|
|
- return gl_config->turn_take_akx;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_turn_untake_akx()
|
|
|
|
-{
|
|
|
|
- return gl_config->turn_untake_akx;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_move(int r4d2_id, float x, float y)
|
|
|
|
-{
|
|
|
|
- if (!finitef(x) || !finitef(y))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if (!validate_object_owner(r4d2_id, obj_r4d2))
|
|
|
|
- return -1;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.type = act_r4d2_move;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.move.x = x;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.move.y = y;
|
|
|
|
-
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_take_akx(int r4d2_id, int target_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object_owner(r4d2_id, obj_r4d2))
|
|
|
|
- return -1;
|
|
|
|
- if (!validate_object_nosee(target_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- if (dist(gl_objects[r4d2_id].r4d2.x,
|
|
|
|
- gl_objects[r4d2_id].r4d2.y,
|
|
|
|
- gl_objects[target_id].akx.x,
|
|
|
|
- gl_objects[target_id].akx.y) > DIST_MIN_TAKE)
|
|
|
|
- {
|
|
|
|
- set_default_action_r4d2(r4d2_id);
|
|
|
|
- gl_player->error = POS_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if (gl_objects[r4d2_id].r4d2.action.type == act_r4d2_take_akx)
|
|
|
|
- return 0;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.type = act_r4d2_take_akx;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.take_akx.target_id = target_id;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.take_akx.turn_need =
|
|
|
|
- gl_config->turn_take_akx;
|
|
|
|
- if (gl_objects[target_id].akx.team_id != 0)
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.take_akx.turn_need +=
|
|
|
|
- gl_config->turn_untake_akx;
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int r4d2_take_r4d2(int r4d2_id, int target_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object_owner(r4d2_id, obj_r4d2))
|
|
|
|
- return -1;
|
|
|
|
- if (!validate_object_nosee(target_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- if (target_id == r4d2_id)
|
|
|
|
- {
|
|
|
|
- gl_player->error = INVALID_TARGET;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if ((gl_objects[target_id].obj.team_id == 0) ||
|
|
|
|
- (gl_objects[target_id].obj.team_id > gl_config->nb_players))
|
|
|
|
- {
|
|
|
|
- gl_player->error = DESTROYED;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if (dist(gl_objects[r4d2_id].r4d2.x,
|
|
|
|
- gl_objects[r4d2_id].r4d2.y,
|
|
|
|
- gl_objects[target_id].r4d2.x,
|
|
|
|
- gl_objects[target_id].r4d2.y) > DIST_MIN_TAKE)
|
|
|
|
- {
|
|
|
|
- set_default_action_r4d2(r4d2_id);
|
|
|
|
- gl_player->error = POS_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if (gl_objects[r4d2_id].r4d2.action.type == act_r4d2_take_r4d2)
|
|
|
|
- return 0;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.type = act_r4d2_take_r4d2;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.take_r4d2.target_id = target_id;
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.take_r4d2.turn_need =
|
|
|
|
- gl_config->turn_take_r4d2;
|
|
|
|
- if (gl_objects[target_id].r4d2.team_id != 0)
|
|
|
|
- gl_objects[r4d2_id].r4d2.action.act.take_r4d2.turn_need +=
|
|
|
|
- gl_config->turn_untake_r4d2;
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static int get_nearest_not(float x, float y, int id, int team_id,
|
|
|
|
- obj_type_t target_type)
|
|
|
|
-{
|
|
|
|
- int nearest = id;
|
|
|
|
- float dist_nearest = MAXFLOAT;
|
|
|
|
- int cpt;
|
|
|
|
- float dist_temp;
|
|
|
|
-
|
|
|
|
- for (cpt = 0; cpt < gl_config->nb_objects; cpt++)
|
|
|
|
- {
|
|
|
|
- if ((cpt != id) &&
|
|
|
|
- (gl_objects[cpt].obj.team_id != team_id) &&
|
|
|
|
- (gl_objects[cpt].obj.type == target_type))
|
|
|
|
- {
|
|
|
|
- if ((target_type != obj_r4d2) || (gl_objects[cpt].obj.team_id != 0))
|
|
|
|
- if (is_obj_visible(gl_player->team_id, cpt))
|
|
|
|
- {
|
|
|
|
- dist_temp = dist(x, y,
|
|
|
|
- gl_objects[cpt].obj.x,
|
|
|
|
- gl_objects[cpt].obj.y);
|
|
|
|
- if (dist_temp < dist_nearest)
|
|
|
|
- {
|
|
|
|
- nearest = cpt;
|
|
|
|
- dist_nearest = dist_temp;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return nearest;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static int get_nearest_plot(float x, float y, int id, int team_id,
|
|
|
|
- obj_type_t target_type)
|
|
|
|
-{
|
|
|
|
- int nearest = id;
|
|
|
|
- float dist_nearest = MAXFLOAT;
|
|
|
|
- int cpt;
|
|
|
|
- float dist_temp;
|
|
|
|
-
|
|
|
|
- if (team_id < 0)
|
|
|
|
- nearest = get_nearest_not(x, y, id, -team_id, target_type);
|
|
|
|
- else
|
|
|
|
- for (cpt = 0; cpt < gl_config->nb_objects; cpt++)
|
|
|
|
- {
|
|
|
|
- if ((cpt != id) &&
|
|
|
|
- (gl_objects[cpt].obj.team_id == team_id) &&
|
|
|
|
- (gl_objects[cpt].obj.type == target_type))
|
|
|
|
- {
|
|
|
|
- if ((target_type != obj_r4d2) || (gl_objects[cpt].obj.team_id > 0))
|
|
|
|
- if (is_obj_visible(gl_player->team_id, cpt))
|
|
|
|
- {
|
|
|
|
- dist_temp = dist(x, y,
|
|
|
|
- gl_objects[cpt].obj.x,
|
|
|
|
- gl_objects[cpt].obj.y);
|
|
|
|
- if (dist_temp < dist_nearest)
|
|
|
|
- {
|
|
|
|
- nearest = cpt;
|
|
|
|
- dist_nearest = dist_temp;
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- return nearest;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int get_nearest(int id, int team_id, obj_type_t target_type)
|
|
|
|
-{
|
|
|
|
- return get_nearest_plot(gl_objects[id].obj.x,
|
|
|
|
- gl_objects[id].obj.y,
|
|
|
|
- id, team_id, target_type);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int akx_get_team(int akx_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- return gl_objects[akx_id].obj.team_id;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_get_pos_x(int akx_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- return gl_objects[akx_id].obj.x;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_get_pos_y(int akx_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- return gl_objects[akx_id].obj.y;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int akx_get_status(int akx_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- return gl_objects[akx_id].akx.action.type;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-float akx_get_speed()
|
|
|
|
-{
|
|
|
|
- return gl_config->akx_speed;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_get_power()
|
|
|
|
-{
|
|
|
|
- return gl_config->pulse_power;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_get_see_power()
|
|
|
|
-{
|
|
|
|
- return gl_config->see_power;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_see_power()
|
|
|
|
-{
|
|
|
|
- return gl_config->see_power;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_get_pulse_coef()
|
|
|
|
-{
|
|
|
|
- return gl_config->pulse_coef;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int akx_move(int akx_id, float x, float y)
|
|
|
|
-{
|
|
|
|
- if (!finitef(x) || !finitef(y))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if (!validate_object_owner(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- gl_objects[akx_id].akx.action.type = act_akx_move;
|
|
|
|
- gl_objects[akx_id].akx.action.act.move.x = x;
|
|
|
|
- gl_objects[akx_id].akx.action.act.move.y = y;
|
|
|
|
- gl_objects[akx_id].akx.change = TRUE;
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int akx_pulse(int akx_id, float x, float y, float angle)
|
|
|
|
-{
|
|
|
|
- if (!finitef(x) || !finitef(y) || !finitef(angle))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if (!validate_object_owner(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- if (gl_objects[akx_id].akx.action.type != act_akx_pulse)
|
|
|
|
- {
|
|
|
|
- gl_objects[akx_id].akx.action.act.pulse.x = gl_objects[akx_id].obj.x;
|
|
|
|
- gl_objects[akx_id].akx.action.act.pulse.y = gl_objects[akx_id].obj.y;
|
|
|
|
- gl_objects[akx_id].akx.energy = 0;
|
|
|
|
- }
|
|
|
|
- gl_objects[akx_id].akx.action.type = act_akx_pulse;
|
|
|
|
- gl_objects[akx_id].akx.action.act.pulse.new_x = x;
|
|
|
|
- gl_objects[akx_id].akx.action.act.pulse.new_y = y;
|
|
|
|
- gl_objects[akx_id].akx.action.act.pulse.new_angle =
|
|
|
|
- CLAMP(angle, MIN_ANGLE, MAX_ANGLE);
|
|
|
|
- gl_objects[akx_id].akx.change = TRUE;
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_pulse_angle(int akx_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- if (gl_objects[akx_id].akx.action.type != act_akx_pulse)
|
|
|
|
- {
|
|
|
|
- gl_player->error = INVALID_TARGET;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return gl_objects[akx_id].akx.action.act.pulse.angle;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_pulse_destx(int akx_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- if (gl_objects[akx_id].akx.action.type != act_akx_pulse)
|
|
|
|
- {
|
|
|
|
- gl_player->error = INVALID_TARGET;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return gl_objects[akx_id].akx.action.act.pulse.x;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float akx_pulse_desty(int akx_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- if (gl_objects[akx_id].akx.action.type != act_akx_pulse)
|
|
|
|
- {
|
|
|
|
- gl_player->error = INVALID_TARGET;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return gl_objects[akx_id].akx.action.act.pulse.y;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int akx_link(int akx_id, int target_id)
|
|
|
|
-{
|
|
|
|
- if (!validate_object_owner(akx_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- if (!validate_object_owner(target_id, obj_akx))
|
|
|
|
- return -1;
|
|
|
|
- if (target_id == akx_id)
|
|
|
|
- {
|
|
|
|
- gl_player->error = INVALID_TARGET;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- gl_objects[akx_id].akx.change = TRUE;
|
|
|
|
- set_default_action_akx(akx_id);
|
|
|
|
- gl_objects[akx_id].akx.action.type = act_akx_link;
|
|
|
|
- gl_objects[akx_id].akx.action.act.link.target_id = target_id;
|
|
|
|
- return 0;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int map_get_nearest_akx(int id, int team_id)
|
|
|
|
-{
|
|
|
|
- int nearest;
|
|
|
|
-
|
|
|
|
- if (id >= gl_config->nb_objects)
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- nearest = get_nearest(id, team_id, obj_akx);
|
|
|
|
- if (nearest == id)
|
|
|
|
- {
|
|
|
|
- gl_player->error = NOT_VISIBLE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return nearest;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int map_get_nearest_akx_plot(float x, float y, int team_id)
|
|
|
|
-{
|
|
|
|
- int nearest;
|
|
|
|
-
|
|
|
|
- if (!finitef(x) || !finitef(y))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- nearest = get_nearest_plot(x, y, -1, team_id, obj_akx);
|
|
|
|
- if (nearest == -1)
|
|
|
|
- {
|
|
|
|
- gl_player->error = NOT_VISIBLE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return nearest;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int map_get_nearest_r4d2_plot(float x, float y, int team_id)
|
|
|
|
-{
|
|
|
|
- int nearest;
|
|
|
|
-
|
|
|
|
- if (!finitef(x) || !finitef(y))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- nearest = get_nearest_plot(x, y , -1, team_id, obj_r4d2);
|
|
|
|
- if (nearest == -1)
|
|
|
|
- {
|
|
|
|
- gl_player->error = NOT_VISIBLE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return nearest;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int map_get_nearest_r4d2(int id, int team_id)
|
|
|
|
-{
|
|
|
|
- int nearest;
|
|
|
|
-
|
|
|
|
- if (id >= gl_config->nb_objects)
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- nearest = get_nearest(id, team_id, obj_r4d2);
|
|
|
|
- if (nearest == id)
|
|
|
|
- {
|
|
|
|
- gl_player->error = NOT_VISIBLE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return nearest;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int map_count_akx()
|
|
|
|
-{
|
|
|
|
- return gl_config->nb_akx;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int map_count_r4d2()
|
|
|
|
-{
|
|
|
|
- return gl_config->nb_r4d2;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int count_unit(int team_id, int obj_type)
|
|
|
|
-{
|
|
|
|
- int cpt = 0, i;
|
|
|
|
-
|
|
|
|
- for (i = 0; i < gl_config->nb_objects; i++)
|
|
|
|
- {
|
|
|
|
- if ((gl_objects[i].obj.team_id == team_id) &&
|
|
|
|
- (gl_objects[i].obj.type == obj_type))
|
|
|
|
- cpt++;
|
|
|
|
- }
|
|
|
|
- return cpt;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int count_akx(int team_id)
|
|
|
|
-{
|
|
|
|
- return count_unit(team_id, obj_akx);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int map_count_my_akx()
|
|
|
|
-{
|
|
|
|
- return count_akx(gl_player->team_id);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int count_r4d2(int team_id)
|
|
|
|
-{
|
|
|
|
- return count_unit(team_id, obj_r4d2);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float map_get_size_x()
|
|
|
|
-{
|
|
|
|
- return gl_config->size_x;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float map_get_size_y()
|
|
|
|
-{
|
|
|
|
- return gl_config->size_y;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-int map_count_my_r4d2()
|
|
|
|
-{
|
|
|
|
- return count_r4d2(gl_player->team_id);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float map_get_pulse(int team_id, float x, float y)
|
|
|
|
-{
|
|
|
|
- if (!finitef(x) || !finitef(y))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if (!is_visible(gl_player->team_id, x, y))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NOT_VISIBLE;
|
|
|
|
- return -1.0;
|
|
|
|
- }
|
|
|
|
- return get_pulse_team(x, y, team_id);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-float map_get_pulse_id(int akx_id, float x, float y)
|
|
|
|
-{
|
|
|
|
- if (!finitef(x) || !finitef(y))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if ((akx_id >= gl_config->nb_objects) || (akx_id < 0))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NBR_OUT_OF_RANGE;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- if (!is_visible(gl_player->team_id, x, y))
|
|
|
|
- {
|
|
|
|
- gl_player->error = NOT_VISIBLE;
|
|
|
|
- return -1.0;
|
|
|
|
- }
|
|
|
|
- if (gl_objects[akx_id].obj.type != obj_akx)
|
|
|
|
- {
|
|
|
|
- gl_player->error = TYPE_ERROR;
|
|
|
|
- return -1;
|
|
|
|
- }
|
|
|
|
- return get_pulse_id(x, y, akx_id);
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-static float __map_random_seed = 0.23;
|
|
|
|
-
|
|
|
|
-float map_random()
|
|
|
|
-{
|
|
|
|
- __map_random_seed = 4 * __map_random_seed * (1 - __map_random_seed);
|
|
|
|
- return __map_random_seed;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-void map_set_seed(float value)
|
|
|
|
-{
|
|
|
|
- if (value < 0 || value > 1)
|
|
|
|
- return;
|
|
|
|
- __map_random_seed = value;
|
|
|
|
-}
|
|
|