Здраствуйте, помогите пожалуйста разобраться
вот есть такая процедура для контроля анимации в игре:
int frame_count[99999];
void ControlAnimate(int index,//индекс каждого объекта
int *frame,//номер текущего кадра
int frame_delta,//шаг между кадрами
int frame_start,//стартовый кадр
int frame_finish,//финальный кадр
int delay,
bool frame_cikl)//задержка между кадрами
{
if ((now-frame_count[index])>delay or now<frame_count[index])
{
frame_count[index]=SDL_GetTicks();
*frame=*frame+frame_delta;
}
if (*frame>=frame_finish or*frame<frame_start)
{
if (frame_cikl==true) {*frame=frame_start;}//возвращаемся на старый кадр
}
}
хотелось бы ее применять для разных
массивов
например для массива объектов[obj_max] j-го элемента:
ControlAnimate(j,
&obj_frame[j],
1,
1,7,
50,
true);
и для игрока:
ControlAnimate(obj_max+1,//1-ый номер забит за игроком
&p_frame,//номер текущего кадра
1,//шаг между кадрами
p_frame_start,//стартовый кадр
p_frame_start+3,//финальный кадр-разница между началом и концом анимации 3 кадра
100,
true);
меня смущает то что для обсчета задержки между кадрами надо использовать счетчик каждого элемента, т.е .сколько элементов в массиве столько и должно быть счетчиков?
правильно делать для объектов j (1..obj_max)
a для игрока obj_max+1?
может быть можно использовать какиенибудь указатели на безразмерный массив?
как переделать процедуру так чтобы не надо было загонять индекс для счетчика (1-ый аргумент)?