Опять цвета и как можно все испортить

Делаем новый чат и сейчас понадобились цвета, вообще история с чатом и цветами имеет самые долгие корни, но как выяснилось – увы, но это не то что надо.

Цвета – были ужасно похожими очень многие, а потому была составлена вручную палитра цветов (пока 50 штук), для героев.
Было сделана передача в клиент, цвета героя (определяется порядковым номером в лабиринте, тупо позицией в векторе m->creatures.

Передача осуществляется как и другие параметры, при запросе getinfo.
Чтобы углубить эффект от внедрения цвета было решено, посылать первый сигнал клиенту, не новый ход – первого героя, а фейковый (из-за особенностей кода, первый код не обрабатывался, и был нужен лишь для того, чтобы следующий сигнал был правильно обработан; иными словами сигнал с порядковым номером – 0 – шел лесом).

И на клиенте сразу увидели – «ходит игрок <font color=’undefined’>undefined</font>», причем это вывелось, само-собой не тем цветом.

Про не обработку html-тэгов сразу стало ясно, засылается исходный текст в .text, а у нужно в .htmlText.

И про два undefined стало понятно, на том этапе – клиент еще не знает про существ, те будут вставлены позднее – командой insertCreature с координатами и id, и клиент сразу подаст запрос на определения типа, имени и цвета данного существа.

Слишком медленно, подумал я и решил изменить, что при первом запросе init передается и также информация о существах.

И тут я все испортил, т.к. все перестало работать. Я всегда и каждый день сохраняю исходники с текущей датой, но в этот день сделал многое и так, потому откатываться было кощунством.

Стал искать проблему – во-первых выяснилось, что на клиенте при проигрывания события insertCreature, существа вставлялись всегда, вне зависимости от того, были они уже известны или нет, собственно это было и правильно – до определенного момента.

Затем, стало известно, что при выигрывание/проигрывании персонаж удалялся на сервере из вектора creatures, а стало быть при повторном запросе (например если в конце игры нажать F5) его порядковый номер уже будет другим – и он получит другой порядковый цвет.

Также решалось, что теперь игроки покидают лабиринт (в структуре TUser переменная mazeid становится равной 0, но в самом лабиринте существо помечается только как live = false, даже если оно вышло через телепорт или победило.

Написать пост у меня получилось за 10 минут, но реально я искал эти ошибки – более двух часов, это как занятный пример программирования.

Ну да зато теперь выводит имена существ/персонажей их цветами. Довольно интересно.