combo и выбор смены размера окна мимгуи

альтушка

Активный
Автор темы
326
29
Версия MoonLoader
.026-beta
Здарова. У меня есть комбо с двумя значениями
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local new = imgui.new
local sizelistwindow = new.bool(false)
local comboSizeList = {'PC', 'Mobile'}
local comboSizeListBuffer = new.int()
local comboSizeListNumber = imgui.new['const char*'][#comboSizeList](comboSizeList)
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)
local newFrame = imgui.OnFrame(
    function() return sizelistwindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 300, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        imgui.Begin('Main Window', sizelistwindow)
        imgui.Combo(u8'Выберите тип окна',comboSizeListBuffer,comboSizeListNumber, #comboSizeList)   
        imgui.End()
    end
)
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('sz', function()
        sizelistwindow[0] = not sizelistwindow[0]
    end)
    while true do
        wait(0)
        
    end
end
Как сделать так, чтобы при выборе значения пк, окно становилось с размерами sizeX = 500, sizeY = 500
А если мобайл, то sizeX = 1000, sizeY = 500
Помогите пожалуйста
 
Последнее редактирование:
Решение
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local new = imgui.new
local sizelistwindow = new.bool(false)
local comboSizeList = {'PC', 'Mobile'}
local comboSizeListBuffer = new.int()
local comboSizeListNumber = imgui.new['const char*'][#comboSizeList](comboSizeList)
local windowSize = {width = 500, height = 500}
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)
local newFrame = imgui.OnFrame(
    function() return sizelistwindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        if comboSizeListBuffer[0] == 0 then
            windowSize.width, windowSize.height = 685, 415
        elseif comboSizeListBuffer[0]...

kyrtion

Известный
1,359
523
если хочешь чтобы меняло размер окно из-за размер экрана - я посоветовал бы поменять масштаб.
и в таком случае сохраняешь практически все позиции элементов в окно
тык насчет масштабы

условная проверка - нужно разбить на 2000 размером в экран телфа, если окажется свыше 1.0, то масштаб обновить один раз.
проверить желательно после инитализации (загрузки) сампа
 

альтушка

Активный
Автор темы
326
29
если хочешь чтобы меняло размер окно из-за размер экрана - я посоветовал бы поменять масштаб.
и в таком случае сохраняешь практически все позиции элементов в окно.
тык насчет масштабы
Просто на пк окно в 2 раза меньше чем на мобайл монетлоадер
 

альтушка

Активный
Автор темы
326
29
Lua:
local imgui = require 'mimgui'
local encoding = require 'encoding'
encoding.default = 'CP1251'
u8 = encoding.UTF8
local new = imgui.new
local sizelistwindow = new.bool(false)
local comboSizeList = {'PC', 'Mobile'}
local comboSizeListBuffer = new.int()
local comboSizeListNumber = imgui.new['const char*'][#comboSizeList](comboSizeList)
local windowSize = {width = 500, height = 500}
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)
local newFrame = imgui.OnFrame(
    function() return sizelistwindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        if comboSizeListBuffer[0] == 0 then
            windowSize.width, windowSize.height = 685, 415
        elseif comboSizeListBuffer[0] == 1 then
            windowSize.width, windowSize.height = 1370, 510
        end
        imgui.SetNextWindowSize(imgui.ImVec2(windowSize.width, windowSize.height), imgui.Cond.Always)
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.Begin('Main Window', sizelistwindow)
        if imgui.Combo(u8'Выберите размер окна', comboSizeListBuffer, comboSizeListNumber, #comboSizeList) then
            imgui.SetNextWindowSize(imgui.ImVec2(windowSize.width, windowSize.height))
        end
        imgui.End()
    end
)
function main()
    while not isSampAvailable() do wait(0) end
    sampRegisterChatCommand('sz', function()
        sizelistwindow[0] = not sizelistwindow[0]
    end)
    while true do
        wait(0)
    end
end