Game Maker - создание игр | HellRoom Games

Game Maker | GameMaker: Studio [Game-Maker.ru] => Scripts [GML] => Тема начата: PitManKeks от Сентябрь 07, 2020, 10:52:21



Название: Расширенное рисование фона и изменение разрешения игры
Отправлено: PitManKeks от Сентябрь 07, 2020, 10:52:21
Многие знают, что в ОС Windows есть возможность установки режима отображения для фона рабочего стола... Почему бы не сделать такое же в игре? Особенно это пригодится если игра должна подстраиваться под разрешение монитора.

Для этого я написал сей небольшой скрипт, который необходимо вызвать в событии Draw :gm131: объекта, который занимается отрисовкой:
Цитата: Скрипт
//argument0 - имя фона
//argument1 - режим (заполнение, растягивание, в центре, замощение/плитка)

if(argument1 = "filling")
{
    if(background_get_width(argument0) / room_width > background_get_height(argument0) / room_height)
    {
        size = room_height / background_get_height(argument0)    
    }
    else
    {
        size = room_width / background_get_width(argument0)
    }
    draw_background_ext(argument0,
    (room_width - background_get_width(argument0) * size) / 2,
    (room_height - background_get_height(argument0) * size) / 2,
    size, size, 0, c_white, 1)
}
else if(argument1 = "stretching")
{
    horizontal_size = room_width / background_get_width(argument0)
    vertical_size = room_height / background_get_height(argument0)
    draw_background_ext(argument0, 0, 0, horizontal_size, vertical_size, 0, c_white, 1)
}
else if(argument1 = "center")
{
    draw_background_ext(argument0,
    (room_width - background_get_width(argument0)) / 2,
    (room_height - background_get_height(argument0)) / 2,
    1, 1, 0, c_white, 1)
}
else if(argument1 = "pave")
{
    horizontal_count = ceil(room_width / background_get_width(argument0))
    vertical_count = ceil(room_height / background_get_height(argument0))
    for(i = 0; i < horizontal_count; i += 1)
    {
        for(j = 0; j < vertical_count; j += 1)
        {
            draw_background_ext(argument0, i * background_get_width(argument0),
            j * background_get_height(argument0), 1, 1, 0, c_white, 1)
        }
    }
}

Так же добавлю сюда то что позволяет менять разрешение игры (вернее подгонит размер комнаты под разрешение монитора, для работы с видами нужно немного изменить код)
Создаём комнату загрузки, в ней должен быть объект, в Create :gm123: которого вызовем скрипт:
Цитата: Скрипт
//argument0 - имя комнаты для самого игрового процесса. Если этих комнат несколько и они меняются - надо вызвать скрипт для каждой

room_set_width(argument0, display_get_width())       //set resolution
room_set_height(argument0, display_get_height())    //width x height

После чего преходим в нужную комнату командой room_goto(имя_комнаты) или room_goto_next().


Название: Re: Расширенное рисование фона и изменение разрешения игры
Отправлено: Fur от Сентябрь 11, 2020, 11:37:21
Сколько ты потратил, чтоб сделать код нечитабельным на тёмной теме?


Название: Re: Расширенное рисование фона и изменение разрешения игры
Отправлено: SilentPhil от Сентябрь 11, 2020, 11:50:00
http://forum.hellroom.ru/index.php?topic=24899.0


Название: Re: Расширенное рисование фона и изменение разрешения игры
Отправлено: PitManKeks от Сентябрь 11, 2020, 18:17:59
Проверил... В тёмной теме действительно выглядит вырвиглазненько. В своё оправдание могу сказать только то что малая часть пользователей используют тёмную тему (Да и мне самому она не особо нравится. На всех сайтах юзаю тёмную тему если это возможно, ну а здесь... не вкатывает почему-то, мне с ней неудобно).

SilentPhil, спасибо! Честно, спасибо, поставлю как только будет возможность. Сейчас возможности нет, потому что сижу на Oper'е и не могу в ней найти возможность подключения JS скриптов.

Fur, много времени убил...