Неделя 2 (октябрь 1): Интерфейсы, ролевой параметр.
Из интерфейса магазина довольно просто получились интерфейсы персонажа и построек. Но была одна особенность. Закладки, которые следует показывать при открытии интерфейса постройки зависят от ее типа.
В целом для механизма интерфейсов вообще ничего не изменилось: по стейту закрываются все лишние интерфейсы и открывается нужный. Но надо было ограничить набор нужных. Плюс к тому у построек разные интерфейсы могут открываться по-умолчанию. У кого-то крафт, у кого-то информация.
***
В Hastle Castle у построек есть то, что я называл ролевой характеристикой. При установке персонажа в постройку в нее передается значение одного их ролевых параметров этого персонажа. Таким образом персонаж в постройке «работает». Какой именно ролевой параметр передается записано в конфиге постройки. Соответственно при установке персонажа в постройку и при снятии, должен происходить пересчет ролевого параметра.
Расчет я сделал, но ответить на вопрос: «нафига» — не смог. Получилась еще одна фича, на которую я на долгое время положил болт. Думал пригодится при разработке механизма рецептов, но ему и без ролевого параметра хорошо и сложно. В общем я так и не придумал какую роль этот параметр должен выполнять в игре.
Так или иначе, для работы механизма ролевого параметра постройки нужны ролевые параметры персонажа. А так как в постройке ролевые параметры назначаются через enum, то и в персонаже решил их делать не отдельными полями, а списком. Считаю это гениальных ходом, поэтому отдельно им хвастаюсь.
Суть заключается в том, что если описывать параметр персонажа просто как переменную, в постройке как enum, то нужно будет строить сложное и длинное условие. А учитывая что я пока еще не знаю сколько у меня будет параметров, при каждом изменении этого списка пришлось бы менять и сложное и длинное условие.
Если же перечислять параметры персонажа, как список маленьких пар (типа параметра и значения параметра), то можно использовать встроенную в c# функцию Find. Быстро, удобно, занимает мало места и не надо править.
Pingback: Неделя 21 (март 1): Ролевые параметры и снова рецепты. – gloomy games