Esempio n. 1
0
void sprite_get_offset_wh_by_frame(int animation, int frame, DArray* meta_info, int *x_offset, int *y_offset, int* width, int* height) {
    *x_offset = 0;
    *y_offset = 0;
    int i = 0;
    int len = darray_length(meta_info);
    int row_offset = 0;
    int offset = 3;
    int num = 0;
    int index = 0;
    //printf("x offset: %i\n", *x_offset);
    for(i=0; i<len; i++) {
        //printf("%i == %i\n", i, row_offset);
        if(i == row_offset) {
            index = meta_info->items[row_offset];
            num = meta_info->items[row_offset + 1];
            *height = meta_info->items[row_offset+2];
            *y_offset = *y_offset + *height;
            //printf("index %i num %i\n", index, num);
            if(index == animation) { 
                //printf("find width and length\n");
                //find width and length
                int x = 0;
                for(x=offset; x<num+offset; x++) {
                    //get x offset
                    *x_offset = *x_offset + meta_info->items[row_offset+x];
                    //printf("x_off: %i\n", *x_offset);
                    //printf("x:%i == frame:%i\n", x, frame+offset); 
                    if(x == frame+offset) {
                        //printf("row_offset+x: %i\n", row_offset+x);
                        *width = meta_info->items[row_offset+x];
                        *x_offset = *x_offset - *width;
                        break;
                    }
                }
                *y_offset = *y_offset - *height;
                break;
            }
            row_offset = row_offset + num + offset;
        }
    } 
}
Esempio n. 2
0
int sprite_get_frames(int animation, DArray *meta_info) {
    //get # frames
    int frames = 0;
    int i = 0;
    int len = darray_length(meta_info);
    int row_offset = 0;
    int num = 0;
    int index = 0;
    int offset = 3;
    for(i=0; i<len; i++) {
        if(i == row_offset) {
            index = meta_info->items[row_offset];
            num = meta_info->items[row_offset + 1];
            row_offset = row_offset + num + offset;
            if(index == animation) {
                frames = num;
                break;
            }
        }
    }
    return frames;
}
static size_t linear_container_darray_length(LinearContainer* thiz)
{
    PrivInfo* priv = (PrivInfo*)thiz->priv;

    return darray_length(priv->darray);
}