- 294
- 81
- Версия MoonLoader
- .026-beta
Доброго времени суток, уважаемые! Встал такой вопрос, как организовать переключение окон imgui? У меня есть 6 окон одинакого размера и содержания, но в некоторые в последующем буду добавлять доп информацию, функции, кнопки и т.п.
Вот главное окно. Мне нужно чтобы при переключении пунктов слева, переключались окна и окно оставалось таким же. Просто менялось содержимое правой части. Надеюсь обьяснил... Сам код
И да, на последок. Подскажите более правильное решение кода, чтобы в дальнейшем не "говнокодить"
Заранее благодарю за помощь/совет и прошу прощения возможно за глупый вопрос. Только начинаю изучать lua и imgui в целом
Вот главное окно. Мне нужно чтобы при переключении пунктов слева, переключались окна и окно оставалось таким же. Просто менялось содержимое правой части. Надеюсь обьяснил... Сам код
lua:
require 'lib.moonloader'
local imgui = require "imgui"
local encoding = require "encoding"
encoding.default = 'CP1251'
u8 = encoding.UTF8
local main_window = imgui.ImBool(false)
local second_window = imgui.ImBool(false)
local third_window = imgui.ImBool(false)
local fourth_window = imgui.ImBool(false)
local fifth_window = imgui.ImBool(false)
local sixth_window = imgui.ImBool(false)
local sw, sh = getScreenResolution()
local fa = require "fAwesome5"
local fa_font = nil
local fa_glyph_ranges = imgui.ImGlyphRanges({ fa.min_range, fa.max_range })
function imgui.BeforeDrawFrame()
if fa_font == nil then
local font_config = imgui.ImFontConfig() -- to use 'imgui.ImFontConfig.new()' on error
font_config.MergeMode = true
fa_font = imgui.GetIO().Fonts:AddFontFromFileTTF('moonloader/resource/fonts/fa-solid-900.ttf', 13.0, font_config, fa_glyph_ranges)
end
end
function main()
if not isSampLoaded() or not isSampfuncsLoaded() then return end
sampRegisterChatCommand('noob', noobs)
while not isSampAvailable() do wait(100) end
imgui.Process = false
while true do
wait(0)
if main_window.v == false then
imgui.Process = main_window.v or second_window.v or third_window.v or fourth_window.v or fifth_window.v or sixth_window.v
end
end
end
function noobs(arg)
main_window.v = not main_window.v
imgui.Process = main_window.v
end
function imgui.OnDrawFrame()
if main_window.v then
imgui.SetNextWindowSize(imgui.ImVec2(450,220))
imgui.SetNextWindowPos(imgui.ImVec2(sw/2,sh/2),imgui.Cond.FirstUseEver,imgui.ImVec2(0.5,0.5))
imgui.Begin("Helper", main_window, imgui.WindowFlags.NoResize)
imgui.BeginChild("One", imgui.ImVec2(120,180), true)
imgui.Selectable(fa.ICON_FA_HOME .. u8" Главная", false)
imgui.Selectable(fa.ICON_FA_MALE .. u8" Второе", false)
imgui.Selectable(fa.ICON_FA_CAR_SIDE .. u8" Третье", false)
imgui.Selectable(fa.ICON_FA_COMMENTS .. u8" Четвёртое", false)
imgui.Selectable(fa.ICON_FA_ADDRESS_BOOK .. u8" Пятое", false)
imgui.Selectable(fa.ICON_FA_COGS .. u8" Шестое", false)
imgui.EndChild()
imgui.End()
end
if second_window.v then
imgui.SetNextWindowSize(imgui.ImVec2(450,220))
imgui.SetNextWindowPos(imgui.ImVec2(sw/2,sh/2),imgui.Cond.FirstUseEver,imgui.ImVec2(0.5,0.5))
imgui.Begin("Helper", second_window, imgui.WindowFlags.NoResize)
imgui.BeginChild("Two", imgui.ImVec2(120,180), true)
imgui.Selectable(fa.ICON_FA_HOME .. u8" Главная", false)
imgui.Selectable(fa.ICON_FA_MALE .. u8" Второе", false)
imgui.Selectable(fa.ICON_FA_CAR_SIDE .. u8" Третье", false)
imgui.Selectable(fa.ICON_FA_COMMENTS .. u8" Четвёртое", false)
imgui.Selectable(fa.ICON_FA_ADDRESS_BOOK .. u8" Пятое", false)
imgui.Selectable(fa.ICON_FA_COGS .. u8" Шестое", false)
imgui.EndChild()
imgui.SameLine()
imgui.BeginChild("Two", imgui.ImVec2(305,180), true)
imgui.Text(u8"Тут что то обязательно будет")
imgui.EndChild()
imgui.End()
end
if third_window.v then
imgui.SetNextWindowSize(imgui.ImVec2(450,220))
imgui.SetNextWindowPos(imgui.ImVec2(sw/2,sh/2),imgui.Cond.FirstUseEver,imgui.ImVec2(0.5,0.5))
imgui.Begin("Helper", third_window, imgui.WindowFlags.NoResize)
imgui.BeginChild("Three", imgui.ImVec2(120,180), true)
imgui.Selectable(fa.ICON_FA_HOME .. u8" Главная", false)
imgui.Selectable(fa.ICON_FA_MALE .. u8" Второе", false)
imgui.Selectable(fa.ICON_FA_CAR_SIDE .. u8" Третье", false)
imgui.Selectable(fa.ICON_FA_COMMENTS .. u8" Четвёртое", false)
imgui.Selectable(fa.ICON_FA_ADDRESS_BOOK .. u8" Пятое", false)
imgui.Selectable(fa.ICON_FA_COGS .. u8" Шестое", false)
imgui.EndChild()
imgui.SameLine()
imgui.BeginChild("Three", imgui.ImVec2(305,180), true)
imgui.Text(u8"Тут что то обязательно будет 2")
imgui.EndChild()
imgui.End()
end
if fourth_window.v then
imgui.SetNextWindowSize(imgui.ImVec2(450,220))
imgui.SetNextWindowPos(imgui.ImVec2(sw/2,sh/2),imgui.Cond.FirstUseEver,imgui.ImVec2(0.5,0.5))
imgui.Begin("Helper", fourth_window, imgui.WindowFlags.NoResize)
imgui.BeginChild("Four", imgui.ImVec2(120,180), true)
imgui.Selectable(fa.ICON_FA_HOME .. u8" Главная", false)
imgui.Selectable(fa.ICON_FA_MALE .. u8" Второе", false)
imgui.Selectable(fa.ICON_FA_CAR_SIDE .. u8" Третье", false)
imgui.Selectable(fa.ICON_FA_COMMENTS .. u8" Четвёртое", false)
imgui.Selectable(fa.ICON_FA_ADDRESS_BOOK .. u8" Пятое", false)
imgui.Selectable(fa.ICON_FA_COGS .. u8" Шестое", false)
imgui.EndChild()
imgui.SameLine()
imgui.BeginChild("Four", imgui.ImVec2(305,180), true)
imgui.Text(u8"Тут что то обязательно будет 3")
imgui.EndChild()
imgui.End()
end
if fifth_window.v then
imgui.SetNextWindowSize(imgui.ImVec2(450,220))
imgui.SetNextWindowPos(imgui.ImVec2(sw/2,sh/2),imgui.Cond.FirstUseEver,imgui.ImVec2(0.5,0.5))
imgui.Begin("Helper", fifth_window, imgui.WindowFlags.NoResize)
imgui.BeginChild("Five", imgui.ImVec2(120,180), true)
imgui.Selectable(fa.ICON_FA_HOME .. u8" Главная", false)
imgui.Selectable(fa.ICON_FA_MALE .. u8" Второе", false)
imgui.Selectable(fa.ICON_FA_CAR_SIDE .. u8" Третье", false)
imgui.Selectable(fa.ICON_FA_COMMENTS .. u8" Четвёртое", false)
imgui.Selectable(fa.ICON_FA_ADDRESS_BOOK .. u8" Пятое", false)
imgui.Selectable(fa.ICON_FA_COGS .. u8" Шестое", false)
imgui.EndChild()
imgui.SameLine()
imgui.BeginChild("Five", imgui.ImVec2(305,180), true)
imgui.Text(u8"Тут что то обязательно будет 4")
imgui.EndChild()
imgui.End()
end
if sixth_window.v then
imgui.SetNextWindowSize(imgui.ImVec2(450,220))
imgui.SetNextWindowPos(imgui.ImVec2(sw/2,sh/2),imgui.Cond.FirstUseEver,imgui.ImVec2(0.5,0.5))
imgui.Begin("Helper", sixth_window, imgui.WindowFlags.NoResize)
imgui.BeginChild("Five", imgui.ImVec2(120,180), true)
imgui.Selectable(fa.ICON_FA_HOME .. u8" Главная", false)
imgui.Selectable(fa.ICON_FA_MALE .. u8" Второе", false)
imgui.Selectable(fa.ICON_FA_CAR_SIDE .. u8" Третье", false)
imgui.Selectable(fa.ICON_FA_COMMENTS .. u8" Четвёртое", false)
imgui.Selectable(fa.ICON_FA_ADDRESS_BOOK .. u8" Пятое", false)
imgui.Selectable(fa.ICON_FA_COGS .. u8" Шестое", false)
imgui.EndChild()
imgui.SameLine()
imgui.BeginChild("Five", imgui.ImVec2(305,180), true)
imgui.Text(u8"Тут что то обязательно будет 4")
imgui.EndChild()
imgui.End()
end
end
Заранее благодарю за помощь/совет и прошу прощения возможно за глупый вопрос. Только начинаю изучать lua и imgui в целом