Dollar (20 May 2013 - 02:34) писал:
Это актуальный код?
Кажется, нет.
Но всё же объясните это:
Как я понял, вводится новый тон кожи, переводится в численный тип, round (не понял что за функция), потом проверка на граничные значения, а потом ПОЧЕМУ-ТО вычитается из 35.
Объясняю хардкорно два возникших вопроса.
Говорили, что баг появился после введения цвета кожи для ксеносов.
Следовательно:
Если код актуальный, то каким хером это работало тогда?
В обратном случае, где посмотреть актуальный код, и не имеется ли там такой же херни?
Если я действительно нашёл ошибку, то ЧСВ моё будет увеличиваться в геометрической прогрессии, а потом напишу покровосрывающий пост в багрепорты.
Минус перед s_tone выглядит странно. Кажется, я понимаю логику, которая за этим стоит, и она ущербная.
Суть в том, что у new_tone значение 1 отвечает за светлую кожу, 220 - за черную. С точки зрения RGB это чушь, чем больше число, тем светлее должна быть кожа. Какой из этого можно сделать вывод? Такой, что new_tone в вычислении цвета кожи используется со знаком минус. Что мы, собственно, и наблюдаем. Создается переменная s_tone, которая содержит число, которое нужно вычесть из цвета. То есть код определения составляющих цвета наверняка выглядит как-то вроде:
r = 220 + s_tone
g = 210 + s_tone
b = 150 + s_tone
Ну и коэффициенты какие-нибудь, чтобы за 1..255 не выйти.