int homeland_plant_cmd(sprite_t* p, uint8_t* body, int len) { CHECK_VALID_ID(p->id); CHECK_BODY_LEN(len, 16); if (!p->tiles || !IS_JY_MAP(p->tiles->id)) ERROR_RETURN(("not in JY\t[uid=%u]", p->id), -1); uint32_t tmp_buf[4]={0};; int j = 0; UNPKG_UINT32(body, tmp_buf[0], j); // background id UNPKG_UINT32(body, tmp_buf[1], j); // itemid UNPKG_UINT32(body, tmp_buf[2], j); // x grid UNPKG_UINT32(body, tmp_buf[3], j); // y grid if (!is_grid_valid(tmp_buf[0], tmp_buf[2], tmp_buf[3])) { ERROR_RETURN(("error grid\t[uid=%u bg=%u itmid=%u x=%u y=%u]", p->id, tmp_buf[0], tmp_buf[1], tmp_buf[2], tmp_buf[3]), -1); } uint32_t msgbuff[2] = {p->id, 1}; msglog(statistic_logfile, 0x0405BEA2, get_now_tv()->tv_sec, msgbuff, sizeof(msgbuff)); DEBUG_LOG("PLANT SEED\t[uid=%u bakgrid=%u itemid=%u x=%u y=%u]", p->id, tmp_buf[0], tmp_buf[1], tmp_buf[2], tmp_buf[3]); return db_homeland_plant(p, &tmp_buf[1]); }
/* Affichage de la solution de la grille @params p_widget Elément ayant déclencher la fonction @params user_data Données transmis au callback */ void cb_resolve(GtkWidget *p_widget, gpointer user_data){ int i,row,col; //On récupère la grille int grid[9][9] = {{0}}; get_grid(grid); int grid_fixes[9][9] = {{0}}; get_fixed_grid(grid_fixes); //On vérifit si grid_fixes est vide int emptyGridFixes = 1; for(i=0;i<=80;i++){ row = floor(i/9); col = i%9; if(grid_fixes[col][row] != 0){emptyGridFixes = 0;break;} } if(!emptyGridFixes){ //On récupère la base de la grille for(i=0;i<=80;i++){ row = floor(i/9); col = i%9; if(grid_fixes[col][row] == 0){grid[col][row] = 0;} } } else{ //On remplit grid_fixes(grille saisi par user) for(i=0;i<=80;i++){ row = floor(i/9); col = i%9; if(grid[col][row] != 0){grid_fixes[col][row] = 1;} } } //On résout et on affiche if(is_grid_valid(grid)){ resolve(grid, 0, 0); fill_grid(grid, grid_fixes); } (void)p_widget; (void)user_data; }