๊ฒŒ์ž„๋ฉ”์ด์ปค ์ŠคํŠœ๋””์˜ค 2์—์„œ ์ผ์‹œ์ •์ง€ UI๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์—ฌ๋Ÿฟ ์žˆ๋Š”๋ฐ,

์ผ๋ฐ˜์ ์œผ๋กœ ์“ฐ์ด๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ๋Š”, ๋ชจ๋“  ์˜ค๋ธŒ์ ํŠธ์™€ ์Šคํ”„๋ผ์ดํŠธ ๋น„ํ™œ์„ฑํ™” ํ›„, Draw GUI ์ด๋ฒคํŠธ๋กœ UI๋ฅผ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์ง€๋งŒ, ์ด๋Ÿฐ์ €๋Ÿฐ ๋ถˆํŽธํ•œ ์ ์ด ๋งŽ์•„



a1400caa0e2eb4669b331155565ae7e582116ec398499e06ed6e1afd989a0bd06c33934b7a5ec3

๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ผ์‹œ์ •์ง€ ๋•Œ, ํ˜„์žฌ ํ™”๋ฉด์„ ์บก์ณํ•œ ํ›„,ย ๋ณ„๋„์˜ ์ผ์‹œ์ •์ง€์šฉ ๋ฃธ์œผ๋กœ ์ด๋™ํ•œ ํ›„์—, ๋ฃธ ๋ฐฐ๊ฒฝ์— ์บก์ณํ•œ ์ด๋ฏธ์ง€๋ฅผ drawํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜๊ณ  ์žˆ์–ด


๋ณ„๋„์˜ ๋ฃธ์—, ์˜ค๋ธŒ์ ํŠธ ๊ธฐ๋ฐ˜์˜ UI๋ฅผ ๋ฐฐ์น˜ํ•˜๋ฉด ๋˜์„œ, draw ๊ธฐ๋ฐ˜ UI์— ๋น„ํ•ด UI ๋ฐฐ์น˜๊ฐ€ ์••๋„์ ์œผ๋กœ ์‰ฝ๊ณ ,

ํ•œ๋ฒˆ ํ•จ์ˆ˜๋ฅผ ์ž˜ ์งœ๋‘๋ฉด, ์ผ์‹œ์ •์ง€๊ฐ€ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ๋ฃธ(์„ค์ •, ๊ฒŒ์ž„ ์„ค๋ช…, ์—…์  ๋“ฑ)์„ 2๋ฒˆ ์ž‘์—…ํ•  ํ•„์š” ์—†์ด ์‰ฝ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค.




a14008ac373eb4588af1c6bb11f11a3928428c491b42815f08

์‹ค์ œ ์ž‘๋™ํ•˜๋Š” ๋ชจ์Šต





a1400caa0e2eb4669b331155565ae7e58c8dba0534a46a4bc3404b89f5c65e

์Šคํฌ๋ฆฝํŠธ

๊ฒŒ์ž„ ์‹œ์ž‘ ์‹œ ๋ช‡๊ฐœ์˜ ๊ธ€๋กœ๋ฒŒ ๋ณ€์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์„ ์–ธํ•ด์ค˜์•ผ ํ•จ

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์€ ์ขŒํ‘œ๋กœ, ๊ฒŒ์ž„์ด ๊ฐ€๋ณ€ ํ•ด์ƒ๋„๋ผ๋ฉด ์•Œ์•„์„œ ์กฐ์ •ํ•˜๊ธฐ

}