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

boy next door

Участник
Автор темы
263
24
Версия 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,145
414
если хочешь чтобы меняло размер окно из-за размер экрана - я посоветовал бы поменять масштаб.
и в таком случае сохраняешь практически все позиции элементов в окно
тык насчет масштабы

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

boy next door

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

boy next door

Участник
Автор темы
263
24
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