/[maitretarot]/game_server/src/game.c
ViewVC logotype

Diff of /game_server/src/game.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by ymettier, Tue Jun 10 22:01:26 2003 UTC revision 1.9 by ymettier, Thu Jul 10 13:22:44 2003 UTC
# Line 129  send_ask_bids (int sock_id, player_t * p Line 129  send_ask_bids (int sock_id, player_t * p
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
# Line 219  game_start (game_t * game) Line 220  game_start (game_t * game)
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
# Line 241  send_ask_chien (int sock_id, player_t * Line 262  send_ask_chien (int sock_id, player_t *
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  }  }

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26