Beispiel #1
0
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]);
}
Beispiel #2
0
/*
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;
}