Вводим действия

Для того, чтобы определять изменилось ли что-то в лабиринте необходимо сделать
(отслеживать) - что произошло за это время - а именно сделать некую историю последовательность
действий (action).

vector<THistoryAction> historyAction, где THistoryAction - некая абстрактная структура, предположим:
typedef struct
{
int action;
int data[5];
} THistoryAction;

Допустим игровой клиент запрашивает таймер, а с таймером ему приходит еще и количество записанных действий (lastAction=histroyAction.size()).
Он проверяет в своей структуре со своей переменной lastAction и если они различаются запрашивает сервер, какие события произошли и сохраняет новое значение lastAction.

События, которые уже явно должны быть.

  • 1. Переход хода (принудительный или по таймеру).
  • 2. Перемещение существа(например игрока).

    Скажем для перехода хода, сделаем ACT_NEW_TURN, а в data[0] - ид персонажа, который получил ход.
    Для реализации добавим в nextTurn строку вызова createNewAction(m,ACT_NEW_TURN,m->currentId);

    Сама функция createNewAction - примитив:void createNewAction(TMazeMap *m,int what,int a,int b,int c,int d,int e)
    {
    THistoryAction h;

    h.action = what;
    h.data[0] = a;
    h.data[1] = b;
    h.data[2] = c;
    h.data[3] = d;
    h.data[4] = e;

    m->historyAction.push_back(h);
    }

    Теперь нужно добавить в клиента - кнопку "Пропуск хода" - чтобы наблюдать сие чудо :)

    P.S.
    to-do лист писать больше не буду - уж больно он меня дискридитирует - я вовсе не лентяй, мне просто некогда :)