void players_in_received_handler(DictionaryIterator *iter) { Tuple *tuple = dict_find(iter, APP_KEY_METHOD); if (!tuple) return; free_safe(error); switch (tuple->value->uint8) { case KEY_METHOD_ERROR: { tuple = dict_find(iter, APP_KEY_STATUS); error = malloc(tuple->length); strncpy(error, tuple->value->cstring, tuple->length); players_reload_data_and_mark_dirty(); break; } case KEY_METHOD_SIZE: free_safe(players); num_players = dict_find(iter, APP_KEY_INDEX)->value->uint8; players = malloc(sizeof(Player) * num_players); if (players == NULL) num_players = 0; break; case KEY_METHOD_DATA: { if (!players_count()) break; uint8_t index = dict_find(iter, APP_KEY_INDEX)->value->uint8; Player *player = players_get(index); player->index = index; player->mediaplayer = dict_find(iter, APP_KEY_PLAYER)->value->uint8; strncpy(player->title, dict_find(iter, APP_KEY_TITLE)->value->cstring, sizeof(player->title) - 1); LOG("player: %d '%s' '%s'", player->index, player->title, player_to_str(player->mediaplayer)); players_reload_data_and_mark_dirty(); if (index == current_player) win_players_push_player(); break; } } }
int main(void) { physics_init(LCD_WIDTH, LCD_HEIGHT); input_init(); display_init(); segment_init(); players_init(); playerA = players_get(0); playerB = players_get(1); ball = physics_create(LCD_WIDTH / 2, LCD_HEIGHT / 2, BALL_RADIUS, BALL_MASS); for (;;) { input_update(); players_update(0.01f); physics_update(0.01f); game_update(); game_draw(); } return 0; }