Первое действие представляет собой состояние «ничегонеделанья» или ожидания. Код для его обработки выглядит следующим образом:
ptrUnit->m_iCurStillFrame++;
if(ptrUnit->m_iCurStillFrame >=
ptrUnit->m_Animation->m_iNumStillFrames)
{
ptrUnit->m_iCurStillFrame = 0;
}
ptrUnit->m_iCurAnimFrame =
ptrUnit->m_Animation->m_iStartStillFrames +
(ptrUnit->m_iCurStillFrame * (UNITMANAGER_MAXOWNERS + 1));
Сперва в коде увеличивается номер текущего кадра ожидания. Это продвигает анимационную последовательность ожидания.
Следом идет проверка, которая должна гарантировать что полученный номер кадра не превышает количество доступных кадров в анимационной последовательности ожидания. Вы же наверняка не хотите, чтобы изображение подразделения, на которое ссылается указатель на кадр анимации оказалось отсутствующим!
И наконец я устанавливаю текущий кадр анимации для чего беру номер начального кадра анимации ожидания и прибавляю к нему текущее значение счетчика кадров ожидания, умноженное на количество поддерживаемых цветов владельца плюс единица. Гмм! Поскольку все данные анимационной графики подразделений хранятся в одном большом массиве, эти вычисления необходимы, чтобы получить требуемый кадр последовательности.