[mimgui] использование combo для изменения шрифта renderCreateFont

sat0ry

Известный
Автор темы
1,089
290
Версия MoonLoader
.026-beta
Хай, при взаимодействии с imgui.Combo не изменяется шрифт в renderCreateFont. Помогите. Код:
mimgui:
shrift = new.int(0)

local fonts_list = {'Arial', 'Book Antiqua', 'Courier New', 'Georgia', 'Tahoma', 'Times New Roman', 'Trebuchet MS', 'Verdana'}
local ImFonts = imgui.new['const char*'][#fonts_list](fonts_list)

local rendertext = renderCreateFont(fonts_list[shrift[0] + 1], 12, 12)

--onFrame
imgui.Combo(u8'Шрифты', combo.shrift, ImFonts, #fonts_list)
Мой способ не фурычит, кто шарит - помогите.

up
 
Последнее редактирование:
Решение
какая кодировка? для англиского текста не нужна кодировка utf8,так в моем случае темболее)


сударь, можно пример? Я просто не очень дохуя шарю. Примерно так?

Lua:
if combo_shrift[0] == 1 then
    local font = renderCreateFont(TrebuchetMS, 15, 15)
    --code
end
Lua:
shrift = new.int(0)

local fonts_list = {'Arial', 'Book Antiqua', 'Courier New', 'Georgia', 'Tahoma', 'Times New Roman', 'Trebuchet MS', 'Verdana'}
local ImFonts = imgui.new['const char*'][#fonts_list](fonts_list)

local rendertext = renderCreateFont(fonts_list[shrift[0] + 1], 12, 12)

--onFrame
if imgui.Combo(u8'Шрифты', combo.shrift, ImFonts, #fonts_list) then
    rendertext = renderCreateFont(fonts_list[shrift[0] + 1], 12, 12) -- без...

sat0ry

Известный
Автор темы
1,089
290
Ты переменную rendertext даже нигде не задействовал

И заметил что не указал кодировку
какая кодировка? для англиского текста не нужна кодировка utf8,так в моем случае темболее)

ну так ясен хуй, прост при смене значения в комбо еще раз вызывай renderCreateFont
сударь, можно пример? Я просто не очень дохуя шарю. Примерно так?

Lua:
if combo_shrift[0] == 1 then
    local font = renderCreateFont(TrebuchetMS, 15, 15)
    --code
end
 
Последнее редактирование:

chapo

🫡 В армии с 17.10.2023. В ЛС НЕ ОТВЕЧАЮ
Друг
8,775
11,218
какая кодировка? для англиского текста не нужна кодировка utf8,так в моем случае темболее)


сударь, можно пример? Я просто не очень дохуя шарю. Примерно так?

Lua:
if combo_shrift[0] == 1 then
    local font = renderCreateFont(TrebuchetMS, 15, 15)
    --code
end
Lua:
shrift = new.int(0)

local fonts_list = {'Arial', 'Book Antiqua', 'Courier New', 'Georgia', 'Tahoma', 'Times New Roman', 'Trebuchet MS', 'Verdana'}
local ImFonts = imgui.new['const char*'][#fonts_list](fonts_list)

local rendertext = renderCreateFont(fonts_list[shrift[0] + 1], 12, 12)

--onFrame
if imgui.Combo(u8'Шрифты', combo.shrift, ImFonts, #fonts_list) then
    rendertext = renderCreateFont(fonts_list[shrift[0] + 1], 12, 12) -- без local!
end
если будет крашить, то попробуй так:
Lua:
shrift = new.int(0)

local fonts_list = {'Arial', 'Book Antiqua', 'Courier New', 'Georgia', 'Tahoma', 'Times New Roman', 'Trebuchet MS', 'Verdana'}
local ImFonts = imgui.new['const char*'][#fonts_list](fonts_list)

local rendertext = renderCreateFont(fonts_list[shrift[0] + 1], 12, 12)

--onFrame
if imgui.Combo(u8'Шрифты', combo.shrift, ImFonts, #fonts_list) then
    if rendertext ~= nil then renderReleaseFont(rendertext) end
    rendertext = renderCreateFont(fonts_list[shrift[0] + 1], 12, 12) -- без local!
end
 
  • Нравится
Реакции: KenzieReeves