Онлайн-справочник по самым часто задаваемым вопросам из темы "Как сделать?" на форуме QSP.su

10.1. Для чего нужен оператор `REFINT`, и как он работает?

В: Для чего нужен оператор `REFINT`, и как он работает?

О:

О том, для чего нужен оператор `REFINT`, и как он работает, прямо написано в справке:

`REFINT` — обновление интерфейса (а также смена цветов, шрифта, назначенных с помощью системных переменных `BCOLOR`, `FCOLOR`, `LCOLOR`, `FSIZE`, `$FNAME`).

И ещё:

Обновление настроек интерфейса происходит 2 раза в секунду (автоматически, по умолчанию), либо с помощью оператора `REFINT`. Также см. оператор `SETTIMER`.

Таким образом, оператор `REFINT` нужен для принудительного обновления настроек интерфейса.

Есть ещё комментарий от разработчика:

`REFINT` принудительно выводит на экран текст, который находится в буфере вывода

Это говорит о том, что перед тем, как вывести на экран текст, плеер помещает его в буфер, и только потом (после выполнения кода локации) выводит на экран. `REFINT` позволяет не только обновить настройки интерфейса, но и вывести часть текста, уже помещённую в буфер, на экран.

Чтобы лучше понять, что делает `REFINT`, напишите игру с таким кодом, и покликайте на действия:

showstat 0
showobjs 0
act "меняем настройки без refint":
    showstat 1
    bcolor=rgb(0,88,0)
    loop local i=0 while i<10000000 step i+=1:
        
! пустой цикл
    end
end
act "меняем настройки c refint":
    showobjs 1
    bcolor=rgb(0,88,88)
    refint
    loop local i=0 while i<10000000 step i+=1:
        
! пустой цикл
    end
end

Не удивляйтесь подвисанию игры при клике по действию — цикл из десяти миллионов итераций выполняется долго.