Добавлен Raised,
опубликован
cJass
Содержание:
7.1 Перечисления
Как известно, перечисления - это тип который может содержать значения указанные программистом. Целочисленные именованные константы могут быть определены как члены перечисления. Например,
enum { RED, GREEN, BLUE }
определяет три целочисленные константы и присваивает им значения. По умолчанию, значения присваиваются по порядку начиная с нуля, т.е. приведенное перечисление аналогично следующим макросам:
define {
RED = 0
GREEN = 1
BLUE = 2
}
Перечисление также может быть именованным:
enum (color) { RED, GREEN, BLUE }
Именуемые перечисления имеют собственные счетчики — в каждом из них значения элементов будут начинаться с нуля. При использовании же нескольких безымянных перечислений, значения их элементов будут продолжать друг друга:
enum { FOOTMAN, MAGE } // FOOTMAN == 0, MAGE == 1
enum (color) { RED, GREEN, BLUE } // RED == 0, GREEN == 1, BLUE == 2
enum { WARDEN, ARCHER} // WARDEN == 2, ARCHER == 3
Перечисления поддерживают JASS2-подобный синтаксис записи:
enum (color)
RED
GREEN
BLUE
endenum
Перечисления могут быть использованы в условиях при условной компиляции:
library SomeLib {
enum (LIB_SPACE) { STD_SPACE, ALT_SPACE, DEBUG_SPACE }
// choose your namespace !
define private SOMELIB_SPACE = STD_SPACE // what space to use
#if SOMELIB_SPACE == STD_SPACE
void SomeFunc(int a) {
// base
}
#elseif SOMELIB_SPACE == ALT_SPACE
void SomeFunc(int a) {
// alt
}
#elseif SOMELIB_SPACE == DEBUG_SPACE
void SomeFunc(int a) {
// debug
}
#endif
}
Или вместо именованных констант как маркеры для выполнения некоторых действий:
enum (moves) { MOVING_ANIM_STATE_WALK, MOVING_ANIM_STATE_WALKBACK, MOVING_ANIM_STATE_STOP }
void MovingAnimationControl (unit u, integer state) {
if (state == MOVING_ANIM_STATE_WALK) {
SetUnitTimeScale(u, 1)
SetUnitAnimationByIndex(u, "Walk" )
} elseif (state == MOVING_ANIM_STATE_WALKBACK) {
SetUnitTimeScale(u, -1)
SetUnitAnimationByIndex(u, "Walk" )
} elseif (state == MOVING_ANIM_STATE_STOP) {
SetUnitAnimation(u,"Stand")
SetUnitTimeScale(u, 1)
}
}
Содержание
`
ОЖИДАНИЕ РЕКЛАМЫ...
1
PT153
6 лет назад
1
А как enum переносится в JASS2?
1
Hate
6 лет назад
1
PT153:
0 1 2 3 4 5 и так далее
Чтобы оставить комментарий, пожалуйста, войдите на сайт.