Формат описания FSM

Примеры

Состояние

{State "stand_bazooka_pick" ;имя состояния
    {from "stand"} ;из этого состояния можно перейти в описываемое
    {fromTagged "up"} ;в это состояние можно перейти из любого события, в котором прописан указанный тэг
    {transit "stand"} ;опциональное указание. не ждёт внешнего воздействия, а сразу автоматически, без запроса; переходит дальше как только есть возможность
    {to "stand"} ;из описываемого состояния можно перейти в это
    {tag "up"} ;тэг состояния
    {tag "bazooka-pick"} ;тэгов у состояния может быть несколько
    {condition "knock-down"} ;опциональное указание; в это состояние можно зайти только по указанному запросу 
    {split "walk_all" "linked"} ;опционально; нужно только в случаях когда объект состоит из 2-х полунезависимых частей; например, перезарядка стоя и перезарядка на бегу; в этом случае ноги могут действовать отдельно от рук и начать бег, не прерывая перезарядку
}

Запрос

{Request "move"
    {priority 30} ;приоритет - чем больше, тем главнее
    {interrupt} ;опционально - прерывает текущее состояние, не ждёт пока анимации доиграются до конца
    {duration 2} ;имеет смысл только для Job запросов - сколько квантов ждать до автоматической отмены 
    {exit "stop-move"} ;имеет смысл только для Job запросов - куда выходить после отмены запроса
}

Подмножество

{subset "with_item" ;подмножесто с именем
    from "default" ;опционально можно унаследоваться от существующего подмножества и внести в него коррективы
    {disable "down"} ;запрещены все состояния с указанным тэгом
    {disable "squat"}
    {disable "looking"}
    {disable "repair"}
    {disable "step-aside"}
    {enable "open-with-item"} ;разрешение все состояния с указанным тэгом
}

Last updated