diff options
Diffstat (limited to 'src/player.c')
| -rw-r--r-- | src/player.c | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/player.c b/src/player.c index 3e03729..b264922 100644 --- a/src/player.c +++ b/src/player.c @@ -1,9 +1,12 @@ #include "player.h" #include <stdlib.h> +#include <assert.h> -pnoc_t* get_pnoc_from_playerid(player_list* pl, const uint8_t pid) +player_list_entry_t *get_player_list_entry_by_player_id(player_list_t *pl, const player_id_t pid) { - for(int i=0; i<pl->count; i++) + assert(pl != NULL); + + for(int i = 0; i < pl->count; i++) { if(pl->players[i].player_id != pid) continue; @@ -13,3 +16,17 @@ pnoc_t* get_pnoc_from_playerid(player_list* pl, const uint8_t pid) return NULL; } +static int ple_comparator(const void *a, const void *b) +{ + player_list_entry_t ple1 = *(player_list_entry_t *)a; + player_list_entry_t ple2 = *(player_list_entry_t *)b; + + return ple1.open_card - ple2.open_card; +} + +void player_list_sort_by_open_card(player_list_t *pl, const uint8_t num_entries) +{ + assert(pl != NULL); + + qsort(pl, num_entries, sizeof(player_list_entry_t), ple_comparator); +} |
