Разностороняя текстур изголятельство по полной.

И так..урок на сайте довольно вскользь затрагивает некоторые темы.

Возникла надобность сделать блок у которого переданная и западная часть имеет одинаковые текстуры, а боковые совсем другие. Но из
Код:
public Icon getIcon(int side, int meta)
    {
        return side == 1 ? this.top : (side == 0 ? this.bottom : (meta == 2 && side == 2 ? this.front : (meta == 3 && side == 5 ? this.front : (meta == 0 && side == 3 ? this.front : (meta == 1 && side == 4 ? this.front : this.side)))));
    }

немного понятно. Видел я конечно что этот знак "?" что то вроде укороченного вариант "если то" . Но не смог понять как оперировать переменной. Так же непонятно как выглядит код если у блока все стороны разные.
 
что не понятно? side ==1 это условие ка в if this.top это то что будет если условие верно : это как else, тоесть если side не равен 1 то идет следующее действие, в данном случае это проверка равен ли side 0 и тд и тп
[merge_posts_bbcode]Добавлено: 02.11.2014 22:28:55[/merge_posts_bbcode]

смотри ? обозначает что будет если условие верно, если не верное то : обозначает что будет при неверном условии.
 
raspad realt написал(а):
И так..урок на сайте довольно вскользь затрагивает некоторые темы.

Возникла надобность сделать блок у которого переданная и западная часть имеет одинаковые текстуры, а боковые совсем другие. Но из
Код:
public Icon getIcon(int side, int meta)
    {
        return side == 1 ? this.top : (side == 0 ? this.bottom : (meta == 2 && side == 2 ? this.front : (meta == 3 && side == 5 ? this.front : (meta == 0 && side == 3 ? this.front : (meta == 1 && side == 4 ? this.front : this.side)))));
    }

немного понятно. Видел я конечно что этот знак "?" что то вроде укороченного вариант "если то" . Но не смог понять как оперировать переменной. Так же непонятно как выглядит код если у блока все стороны разные.
Ты прав, заменить можно простым if'ом, иногда можно switch и case.
Сам сначала не понял, что за фигня, когда декомпилировал свой же мод.
Теперь объясняю это: side == 1 ? this.top
равноценно этому if (side == 1) this.top;
[merge_posts_bbcode]Добавлено: 03.11.2014 05:21:40[/merge_posts_bbcode]

Switch не всегда хороший вариант. Хотя смотря где.
Можно как-то так:
Код:
Switch(side){
case 1 :
this.top;
break;
case 2 :
this.button;
break;
}
Как-то так.
 
Еще есть крутая вариация метода getIcon, где тебе дадут мир, корды блока и сторону. Я с этим волшебным методом достаю иконку блока из тайла. Хе-хе.
 
Назад
Сверху