129 |
protocol_send_array (sock_id, |
protocol_send_array (sock_id, |
130 |
is_resume ? PROTOCOL_SAY_BIDS_RESUME : |
is_resume ? PROTOCOL_SAY_BIDS_RESUME : |
131 |
PROTOCOL_ASK_BIDS, msg); |
PROTOCOL_ASK_BIDS, msg); |
132 |
for(i=0; msg[i]; i++) g_free(msg[i]); |
for (i = 0; msg[i]; i++) |
133 |
|
g_free (msg[i]); |
134 |
} |
} |
135 |
|
|
136 |
void |
void |
220 |
*/ |
*/ |
221 |
} |
} |
222 |
|
|
223 |
|
int |
224 |
|
player_get_position (player_t * player) |
225 |
|
{ |
226 |
|
game_t *g; |
227 |
|
int i; |
228 |
|
player_t *p; |
229 |
|
g = player->game; |
230 |
|
for (i = 0; |
231 |
|
(p = |
232 |
|
g_tree_lookup (config->sock_id, |
233 |
|
GINT_TO_POINTER (g_array_index (g->players, int, i)))); |
234 |
|
i++) |
235 |
|
{ |
236 |
|
if (player == p) |
237 |
|
break; |
238 |
|
} |
239 |
|
return (p ? i : -1); |
240 |
|
} |
241 |
|
|
242 |
void |
void |
243 |
send_info_chien (int sock_id, player_t * p) |
send_info_chien (int sock_id, player_t * p) |
244 |
{ |
{ |
245 |
game_t *g = p->game; |
game_t *g = p->game; |
246 |
char **msg; |
char **msg; |
247 |
int i; |
int i; |
248 |
int nb_cards_in_chien = (g->nb_players_max==5)?3:6; |
int nb_cards_in_chien = (g->nb_players_max == 5) ? 3 : 6; |
249 |
msg = g_malloc (sizeof (char *) * (nb_cards_in_chien+2)); |
msg = g_malloc (sizeof (char *) * (nb_cards_in_chien + 2)); |
250 |
msg[0] = g_strdup_printf ("%d", nb_cards_in_chien); |
msg[0] = g_strdup_printf ("%d", nb_cards_in_chien); |
251 |
for(i=0; i<nb_cards_in_chien; i++) g_strdup_printf("%d", g->rules->chien[i]); |
for (i = 0; i < nb_cards_in_chien; i++) |
252 |
|
g_strdup_printf ("%d", g->rules->chien[i]); |
253 |
msg[nb_cards_in_chien + 1] = NULL; |
msg[nb_cards_in_chien + 1] = NULL; |
254 |
protocol_send_array (sock_id, |
protocol_send_array (sock_id, PROTOCOL_INFO_CHIEN, msg); |
255 |
PROTOCOL_INFO_CHIEN, msg); |
for (i = 0; msg[i]; i++) |
256 |
for(i=0; msg[i]; i++) g_free(msg[i]); |
g_free (msg[i]); |
257 |
} |
} |
258 |
|
|
259 |
void |
void |
262 |
char **msg; |
char **msg; |
263 |
msg = g_malloc (sizeof (char *) * (1)); |
msg = g_malloc (sizeof (char *) * (1)); |
264 |
msg[0] = NULL; |
msg[0] = NULL; |
265 |
protocol_send_array (sock_id, |
protocol_send_array (sock_id, PROTOCOL_ASK_CHIEN, msg); |
266 |
PROTOCOL_ASK_CHIEN, msg); |
g_free (msg[0]); |
267 |
g_free(msg[0]); |
} |
268 |
|
|
269 |
|
read_chient_e |
270 |
|
read_chien (char **aline, game_t * game) |
271 |
|
{ |
272 |
|
int chien[6]; |
273 |
|
int nb; |
274 |
|
int i; |
275 |
|
g_assert (aline != NULL); |
276 |
|
if (!aline[1]) |
277 |
|
return (READ_CHIEN_TOO_FEW_ARGUMENTS); |
278 |
|
nb = atoi (aline[1]); |
279 |
|
if ((game->nb_players_max == 3) && (nb != 6)) |
280 |
|
return (READ_CHIEN_BAD_ARGUMENT); |
281 |
|
if ((game->nb_players_max == 4) && (nb != 6)) |
282 |
|
return (READ_CHIEN_BAD_ARGUMENT); |
283 |
|
if ((game->nb_players_max == 5) && (nb != 3)) |
284 |
|
return (READ_CHIEN_BAD_ARGUMENT); |
285 |
|
for (i = 0; i < nb; i++) |
286 |
|
{ |
287 |
|
if (!aline[i + 2]) |
288 |
|
return (READ_CHIEN_TOO_FEW_ARGUMENTS); |
289 |
|
chien[i] = atoi (aline[i + 2]); |
290 |
|
if (game->rules->card_status[chien[i]] != game->rules->preneur) |
291 |
|
return (READ_CHIEN_WRONG_CHIEN); |
292 |
|
} |
293 |
|
for(i=0; i<nb; i++) { |
294 |
|
game->rules->card_status[chien[i]] = 10+game->rules->preneur; |
295 |
|
} |
296 |
|
|
297 |
|
return (READ_CHIEN_OK); |
298 |
} |
} |