๊ฒ์๋ฉ์ด์ปค ์คํ๋์ค 2์์ ์ผ์์ ์ง UI๋ฅผ ๊ตฌํํ๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ฟ ์๋๋ฐ,
์ผ๋ฐ์ ์ผ๋ก ์ฐ์ด๋ ๋ฐฉ๋ฒ์ผ๋ก๋, ๋ชจ๋ ์ค๋ธ์ ํธ์ ์คํ๋ผ์ดํธ ๋นํ์ฑํ ํ, Draw GUI ์ด๋ฒคํธ๋ก UI๋ฅผ ๊ทธ๋ฆฌ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง, ์ด๋ฐ์ ๋ฐ ๋ถํธํ ์ ์ด ๋ง์
๊ทธ๋์ ๋๋ ์ผ์์ ์ง ๋, ํ์ฌ ํ๋ฉด์ ์บก์ณํ ํ,ย ๋ณ๋์ ์ผ์์ ์ง์ฉ ๋ฃธ์ผ๋ก ์ด๋ํ ํ์, ๋ฃธ ๋ฐฐ๊ฒฝ์ ์บก์ณํ ์ด๋ฏธ์ง๋ฅผ drawํ๋ ๋ฐฉ๋ฒ์ ์ด์ฉํ๊ณ ์์ด
๋ณ๋์ ๋ฃธ์, ์ค๋ธ์ ํธ ๊ธฐ๋ฐ์ UI๋ฅผ ๋ฐฐ์นํ๋ฉด ๋์, draw ๊ธฐ๋ฐ UI์ ๋นํด UI ๋ฐฐ์น๊ฐ ์๋์ ์ผ๋ก ์ฝ๊ณ ,
ํ๋ฒ ํจ์๋ฅผ ์ ์ง๋๋ฉด, ์ผ์์ ์ง๊ฐ ํ์ํ ์ฌ๋ฌ ๋ฃธ(์ค์ , ๊ฒ์ ์ค๋ช , ์ ์ ๋ฑ)์ 2๋ฒ ์์ ํ ํ์ ์์ด ์ฝ๊ฒ ๋ง๋ค ์ ์๋ค๋ ์ฅ์ ์ด ์๋ค.
์ค์ ์๋ํ๋ ๋ชจ์ต
์คํฌ๋ฆฝํธ
๊ฒ์ ์์ ์ ๋ช๊ฐ์ ๊ธ๋ก๋ฒ ๋ณ์๋ฅผ ๋ฏธ๋ฆฌ ์ ์ธํด์ค์ผ ํจ
global.roomBuffer => ์ผ์์ ์ง ๋๋๊ณ ๋์๊ฐ ์๋ ๋ฃธ์ id ์ ์ฅํ ๋ณ์
global.screenBuffer => ์บก์ณํ ๊ฒ์ ํ๋ฉด์ ๋ฒํผ ํํ๋ก ์ ์ฅํ ๋ณ์
ํต์ฌ ํจ์๋ ์ด 3๊ฐ๋ก, ๊ธฐ๋ฅ์ ๋ค์๊ณผ ๊ฐ๋ค
- sc_goto_pause_room(_room)
์ธ๊ฒ์ ๋ฃธ์ ๊ฒ์ ์ปจํธ๋กค ์ค๋ธ์ ํธ[๊ทธ๋ฌ๋๊น ๋งค๋์ ์ค๋ธ์ ํธ]์์, ์ผ์์ ์ง๊ฐ ํ์ํ ๋ ํธ์ถํ๋ ํจ์
๋งค๊ฐ๋ณ์์๋ ์ด๋ํ๊ณ ์ ํ ์ผ์์ ์ง์ฉ ๋ฃธ์ ์ ๋ ฅ
ํ์ฌ ๊ฒ์ ํ๋ฉด์ ์บก์ณํ ํย global.screenBuffer์ ๋ฒํผ ํํ๋ก ์ ์ฅ ํ, ๋งค๊ฐ๋ณ์๋ก ์ ๋ ฅ๋ ๋ฃธ์ผ๋ก ์ด๋ํ๋ ๊ธฐ๋ฅ
-ย sc_pause_room_control_create()
์ผ์์ ์ง์ฉ ๋ฃธ์ ์ปจํธ๋กค ์ค๋ธ์ ํธ์ create ์ด๋ฒคํธ์์ ํธ์ถํ๋ ํจ์
ํ์ํ ๋ณ์ ์ ์ธ์ฉ
- sc_pause_room_control_draw()
์ผ์์ ์ง์ฉ ๋ฃธ์ ์ปจํธ๋กค ์ค๋ธ์ ํธ์ draw ์ด๋ฒคํธ์์ ํธ์ถํ๋ ํจ์
global.screenBuffer ๋ฒํผ์์ ์ํผ์ค๋ฅผ ๋ฐ์์จ ํ, ํ๋ฉด์ drawํ๋ ๊ธฐ๋ฅ
์ฌ๊ธฐ์ ์บก์ณํ ํ๋ฉด์ ๋ฐ๋ก ๊ธ๋ก๋ฒ ๋ณ์์ ์ํผ์ค ํํ๋ก ์ ์ฅํ์ง ์๊ณ , ๋ฒํผ์ ์ ์ฅํ๋ ์ด์ ๋
์ฐฝ๋ชจ๋๋ฅผ ์ง์ํ๋ ๊ฒ์์์, ์ฐฝ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ์ํผ์ค๊ฐ ๋ ์๊ฐ๋ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ..
๋ญ, ์ ์ด๋ ๋ด๊ฐ ์ ์ฝ๋ ๋ง๋ค ๋ ๊ทธ๋ฌ์
์ผ์์ ์ง ๋ฃธ์์ ์๋ ๋ฃธ์ผ๋ก ๋์๊ฐ ๋ ๊ทธ๋ฅ
room_goto(global.roomBuffer) ์จ์ฃผ๋ฉด ๋๋ค.
์๋ ๋ฃธ์ ๋์๊ฐ ํ room_persistent = false ์์ง ๋ง๊ณ ๋ฃ๊ณ
์ดํ ๋ณต๋ถ์ฉ ํ ์คํธ
function sc_goto_pause_room(_room) //์ผ์์ ์ง๊ฐ ํ์ํ ๋ ํธ์ถํ ํจ์
{
room_persistent = true; //๋ฃธ ํ์ฌ ์ํ ์ ์ฅํ๋๋ก ๋ด์ฅ ๋ณ์ ์ค์
global.roomBuffer = room; //์ผ์์ ์ง ํด์ ๋ ๋์์ฌ ๋ฃธ์ ID๊ฐ ์ ์ฅ
var _cam_width = 1920; //์นด๋ฉ๋ผ ๋๋น
var _cam_height = 1080; //์นด๋ฉ๋ผ ๋์ด
if (buffer_exists(global.screenBuffer)) buffer_delete(global.screenBuffer); //์์ธ์ฒ๋ฆฌ, ์ด์ ๋ฒํผ๊ฐ ๋จ์์์ผ๋ฉด ๋ฒํผ ์ญ์
global.screenBuffer = buffer_create(_cam_width * _cam_height * 4, buffer_grow, 1); //๋ฒํผ ์์ฑ ๋ฐ ํฌ๊ธฐ ์ค์
var _surf = surface_create(_cam_width, _cam_height); //์ํผ์ค ์์ฑ
surface_copy(_surf,0,0,application_surface); //ํ์ฌ ํ๋ฉด์ ์ํผ์ค์ ๋ถ์ฌ๋ฃ๊ธฐ
buffer_get_surface(global.screenBuffer, _surf, 0); //๋ฒํผ์ ์ํผ์ค๋ฅผ ๋ถ์ฌ๋ฃ๊ธฐ
surface_free(_surf); //์์ ์ํผ์ค ์ ๊ฑฐ
room_goto(_room); //๋ฃธ ์ด๋
}
function sc_pause_room_control_create() //์ผ์์ ์ง์ฉ ๋ฃธ์ ์ปจํธ๋กค ์ค๋ธ์ ํธ create ์ด๋ฒคํธ์์ ํธ์ถ
{
surf = -1; //์ํผ์ค
}
function sc_pause_room_control_draw() //์ผ์์ ์ง์ฉ ๋ฃธ์ ์ปจํธ๋กค ์ค๋ธ์ ํธ draw ์ด๋ฒคํธ์์ ํธ์ถ
{
var _cam_width = 1920; //์นด๋ฉ๋ผ ๋๋น
var _cam_height = 1080; //์นด๋ฉ๋ผ ๋์ด
if (!surface_exists(surf)) //์ํผ์ค๊ฐ ์์ ๋
{
surf = surface_create(_cam_width, _cam_height); //์ํผ์ค ์์ฑ
buffer_set_surface(global.screenBuffer, surf, 0); //๋ฒํผ์ ์ ์ฅ๋ ๊ฐ์ ์ํผ์ค์ ๋ถ์ฌ๋ฃ๊ธฐ
}
draw_surface(surf, 0, 0); //์ํผ์ค ๊ทธ๋ฆฌ๊ธฐ, ๋ค์ 0, 0์ ์ขํ๋ก, ๊ฒ์์ด ๊ฐ๋ณ ํด์๋๋ผ๋ฉด ์์์ ์กฐ์ ํ๊ธฐ
}
์ฝ๋ ์ค์ผ ์์ง ์์ฅ ใทใท
์ฒ ์ฌ
์์ฐ ์ฝ๋๊น์ง ํด๊ทผํ๊ณ ์์ธํ ๋ด์ผ๊ฒ ๋ค
์ผ์์ ์ง์ฐฝ ์ค์ผ ๊น๋ฆฌํจ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ค์ค ์ด๊ฑฐ ๋๋ฐ์ด๋ค