์ด์ ๊น์ง๋ UI ํํ ๊ณ์ธต์ ๊ท๊ฒฉํํ๋ ์์ ์ด ์ค์ฌ์ด์๋ค.
HUDRoot = ์์น
Panel = ๊ตฌ์กฐ
Widget = ํํ
์ด ๊ธฐ์ค์ ์ธ์ฐ๋ฉด์
TopBar, SelectionPanel, CommandPanel, MenuPanel ๊ฐ์ ๊ฐ ํจ๋์ ์ญํ ๊ณผ
ํํ ๊ท์น์ ์ ๋ฆฌํ๋ ๋ฐ ์ง์คํ๋ค.
์ฆ ์ด์ ์ ํต์ฌ์
โ๋์ํ๋ UI๋ฅผ ์ ์ง ๊ฐ๋ฅํ UI๋ก ๋ฐ๊พธ๋ ๊ฒโ์ด์๋ค.
๊ทธ๋ฐ๋ฐ ์ค๋ ์์ ์ผ๋ก ๋์ด์ค๋ฉด์ ๋ฌธ์ ๊ฐ ๋ฌ๋ผ์ก๋ค.
์ด์ ๋ ํํ ๊ณ์ธต์ด ์๋๋ผ
์ค์ ์ ํ ์ํ์ ๋ช
๋ น ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๊ณ ๊ฑด๋ฌผ ์์ฐ ์ํ๋ฅผ
UI์ ์ฐ๊ฒฐํ๋ ๊ณผ์ ์์ ๊ตฌ์กฐ์ ์ธ ์ถฉ๋์ด ๋๋ฌ๋ฌ๋ค.
ํนํ ์ค๋์ ๋ค์ ๋ ๊ฐ์ง๊ฐ ํต์ฌ ๋ฌธ์ ์๋ค.
1. ์ ํ ๋์ ๊ธฐ์ค ์ปค๋งจ๋ ์ปจํ
์คํธ ์๋ณ
2. Selection Panel์์ ๊ฑด๋ฌผ ์์ฐ ์ํ ํํ
| ๊ตฌ๋ถ | ๋ฌธ์ |
|---|---|
| ์ปค๋งจ๋ ํด์ | PlayerController๊ฐ ๋ชจ๋ ๋ช ๋ น์ ์ง์ ํด์ํ๋ฉด ํ๋์ฝ๋ฉ์ด ๋ค์ ๋์ด๋จ |
| ์ ํ ๋์ ์ฒ๋ฆฌ | ์ ๋๊ณผ ๊ฑด๋ฌผ์ด ์๋ก ๋ค๋ฅธ ์ปค๋งจ๋ ์งํฉ์ ๊ฐ์ง๋๋ฐ ์ด๋ฅผ ์ด๋์ ํ๋ณํ ์ง ๊ธฐ์ค์ด ๋ชจํธํ์ |
| ์ปจํ ์คํธ ์ ํ | ์ ํ๋ ๋์์ ๋ฐ๋ผ Build, Train, Move, Attack ๊ฐ์ ์ปค๋งจ๋ ๋ฌถ์์ด ๋ฌ๋ผ์ ธ์ผ ํ์ |
| ์์ฐ UI | CommandPanel ์ซ์ ๋ฐฐ์ง๋ง์ผ๋ก๋ ์ํ๋ โ์์ฐ ํโ ๋๋์ ๋ง๋ค๊ธฐ ์ด๋ ค์ ์ |
| Selection Panel | ๊ธฐ์กด์๋ ์ด๋ฆ/ํ์ /HP๊น์ง๋ง ํ์ํ๊ณ ์์ฐ ์ํ๋ฅผ ํํํ ๊ตฌ์กฐ๊ฐ ์์์ |
| ๋ฐ์ดํฐ ํ๋ฆ | QueueCount, ์งํ๋ฅ , ํ ์์ด์ฝ ๋ฐ์ดํฐ๋ฅผ ์ด๋์ ์กฐ๋ฆฝํด UI๋ก ๋๊ธธ์ง ๊ธฐ์ค์ด ๋ถ๋ช ํํ์ |
์ฒ์์๋ PlayerController ์ชฝ์์ ์ ๋ ฅ๊ณผ ๋ช ๋ น ํด์์ ๋ง์ด ๋ค๊ณ ๊ฐ๋ ๋ฐฉํฅ์ผ๋ก ์ ๋ฆฌ๋์ด ์์๋ค.
๋๋ต ํ๋ฆ์ ์ด๋ฐ ๋๋์ด์๋ค.
์
๋ ฅ ์์ง
-> PlayerController
-> CommandId ๊ฒฐ์
-> ์คํ
์ด ๊ตฌ์กฐ๋ ๋จ์ํ ์ ๋ ๋ช
๋ น์๋ ๊ด์ฐฎ์์ง๋ง,
์ ํ ๋์์ด ๋ฐ๋ ๋๋ง๋ค ํด์ ๊ธฐ์ค์ด ๋ฌ๋ผ์ง๋ ๊ตฌ์กฐ์๋ ์ ๋ง์ง ์์๋ค.
์๋ฅผ ๋ค์ด:
์ ํ ๋์์ด ์ ๋์ด๋ฉด
-> Move / Attack / Hold
์ ํ ๋์์ด ๊ฑด๋ฌผ์ด๋ฉด
-> TrainFootman / TrainArcher / BuildSubMenu
์ด๋ ๊ฒ ์ปจํ
์คํธ๊ฐ ๋ฌ๋ผ์ง๋๋ฐ๋
PlayerController๊ฐ ์ด๋ฅผ ์ง์ ๋ค ํ๊ณ ์์ผ๋ฉด
๊ฒฐ๊ตญ ์ ํ ๋์๋ณ ๋ถ๊ธฐ์ ์์ธ ์ฒ๋ฆฌ๊ฐ ๊ณ์ ๋์ด๋๊ฒ ๋๋ค.
์ฆ ๊ธฐ์กด ๊ตฌ์กฐ๋
โ์
๋ ฅ์ ๋ฐ์ง๋ง, ์ ํ ๋์์ ๋ฐ๋ผ ๋ฐ๋๋ ๋ช
๋ น ๋ฌธ๋งฅ์ ์์ฐ์ค๋ฝ๊ฒ ํก์ํ์ง ๋ชปํ๋ ์ํโ์๋ค.
์ค๋ ํต์ฌ์ ์ด๊ฑฐ์๋ค.
์
๋ ฅ ์ง์
์ ๊ณผ ์ปค๋งจ๋ ์๋ฏธ ํด์์ ๋ถ๋ฆฌํด์ผ ํ๋ค
์ค์ํ๋ ๊ฑด
โ์ด๋ค ํค๋ฅผ ์ด๋ป๊ฒ ๋ฐ๋๋โ๋ณด๋ค
โํ์ฌ ์ ํ๋ ๋์์ด ์ด๋ค ์ปค๋งจ๋ ์ปจํ
์คํธ๋ฅผ ๊ฐ์ง๋๊ฐโ์๋ค.
์ฆ ์ค๋ ์ ๋ฆฌํด์ผ ํ๋ ๊ตฌ์กฐ๋
์
๋ ฅ ๊ธฐ์ ๋ฐฉ์ ์์ฒด๊ฐ ์๋๋ผ
์ ํ ์ํ์ ๋ฐ๋ผ ์ปค๋งจ๋ ๋ฌธ๋งฅ์ ์๋ณํ๊ณ
๊ทธ ๋ฌธ๋งฅ ๊ธฐ์ค์ผ๋ก ๋ฐ์ธ๋ฉ๊ณผ ํ์๋ฅผ ๋ง์ถ๋ ํ๋ฆ์ด์๋ค.
์ญํ ์ ๋ค์ ์ ๋ฆฌํ๋ฉด ์ด๋ ๊ฒ ๋๋ค.
PlayerController
-> ํ์ฌ ์ ํ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ช
๋ น ๋ผ์ฐํ
์ง์
์ ๋ด๋น
Selected Unit / Selected Building
-> ์์ ์ด ๊ฐ์ง ์ปค๋งจ๋ ์ปจํ
์คํธ ์ ๊ณต
UIBridge / Provider / Coordinator
-> ํ์ฌ ์ปจํ
์คํธ์ ์ํ๋ฅผ UI์ ๋ง๋ ViewModel๋ก ์กฐ๋ฆฝ
์ฆ ์ค๋์ ํต์ฌ ํ๋จ์ ๋ค์์ด์๋ค.
๋ช
๋ น ์คํ ์ง์
์ PlayerController
์ปค๋งจ๋ ์ปจํ
์คํธ ์๋ณ์ ์ ํ ๋์ ๊ธฐ์ค
UI ๋ฐ์์ Bridge / Provider / Coordinator
์ด๋ ๊ฒ ๋๋ ์ผ
PlayerController๊ฐ ๋ค์ ๋น๋ํด์ง๋ ๊ฑธ ๋ง์ ์ ์๊ณ ,
์ ํ ๋์๋ณ ์ปค๋งจ๋ ๋ฌธ๋งฅ๋ ์์ฐ์ค๋ฝ๊ฒ ์ ์งํ ์ ์๋ค.
์ด์ ๋ ํํ ๊ท์น์ ์ ๋ฆฌํ๋ค๋ฉด,
์ค๋์ ๊ทธ ํํ ๊ตฌ์กฐ ์์
์ค์ ์ ํ ์ํ์ ๋ช
๋ น ๋ฌธ๋งฅ, ์์ฐ ์ํ๋ฅผ ์น๋ ์์
์ด์๋ค.
ํ๋ฆ์ผ๋ก ๋ณด๋ฉด ์ด๋ ๊ฒ ์ด์ด์ง๋ค.
์ด์
๋์ํ๋ UI
-> ๊ท๊ฒฉํ๋ UI
์ค๋
๊ท๊ฒฉํ๋ UI
-> ์ค์ ์ ํ ์ํ์ ์ปค๋งจ๋ ๋ฌธ๋งฅ์ด ๋ฐ์๋๋ UI
์ฆ ์ด์ ์ ์์
์ด
ํจ๋, ์์ ฏ, ์คํ์ผ์ ๋ผ๋๋ฅผ ์ธ์ฐ๋ ๋จ๊ณ์๋ค๋ฉด,
์ค๋์ ๊ทธ ๋ผ๋ ์์
์ ํ ๋์๋ณ ์ํ์ ์์ฐ ํ ๊ฐ์ ์ค์ ๋ฐ์ดํฐ๋ฅผ ํ๋ ค ๋ฃ๋ ๋จ๊ณ์๋ค.
๊ฐ์ฅ ๋จผ์ ์ ๋ฆฌํ ๊ฑด
๋ช
๋ น์ ๋๊ฐ ํด์ํ ๊ฒ์ธ๊ฐ์๋ค.
์ค๋ ๊ธฐ์ค์ผ๋ก ์ ์งํด์ผ ํ๋ ํ๋ฆ์ ์ด๊ฑฐ๋ค.
ํ์ฌ ์ ํ ๋์ ์๋ณ
-> ์ ํ ๋์์ด ๊ฐ์ง ์ปค๋งจ๋ ์ปจํ
์คํธ ์กฐํ
-> ๊ทธ ์ปจํ
์คํธ ๊ธฐ์ค์ผ๋ก ์ปค๋งจ๋ ๋ฐ์ธ๋ฉ/ํ์
์ฆ ์ค์ํ ๊ฑด
PlayerController๊ฐ TrainFootman, TrainArcher, BuildBarracks ๊ฐ์ ๊ฐ๋ณ ๋ช
๋ น์ ์ง์ ์๋ ๊ฒ์ด ์๋๋ผ,
ํ์ฌ ์ ํ๋ ์ ๋ ๋๋ ๊ฑด๋ฌผ์ด
์ด๋ค ์ปค๋งจ๋ ๊ทธ๋ฃน์ ๊ฐ์ง๋์ง๋ฅผ ๊ธฐ์ค์ผ๋ก
๋ช
๋ น ์งํฉ์ ์ป์ด์ค๋ ๊ตฌ์กฐ๋ค.
์ด๋ ๊ฒ ํ๋ฉด:
์ ํ๋ ๋์์ด ๋ฐ๋
-> ์ปจํ
์คํธ๊ฐ ๋ฐ๋
-> CommandPanel ํ์๊ฐ ๋ฐ๋
-> ์คํ ๊ฐ๋ฅํ ๋ช
๋ น๋ ๊ฐ์ด ๋ฐ๋
์ด ํ๋ฆ์ด ์์ฐ์ค๋ฝ๊ฒ ์ด์ด์ง๋ค.
์ค๋ ๊ตฌ์กฐ์์ PlayerController๋
๋ชจ๋ ๋ช
๋ น์ ์๋ฏธ๋ฅผ ์ง์ ๋ค๊ณ ์๋ ์ฃผ์ฒด๊ฐ ์๋๋ผ
ํ์ฌ ์ ํ ์ํ๋ฅผ ๋ณด๊ณ ์ ์ ํ ์ชฝ์ผ๋ก ์ฐ๊ฒฐํ๋ ์ง์
์ ์ ๊ฐ๊น๋ค.
์ ๋ฆฌํ๋ฉด ์ด๋ฐ ๋๋์ด๋ค.
PlayerController
-> ํ์ฌ ์ ํ ๋์ ํ์ธ
-> ๋์์ ์ปค๋งจ๋ ์ปจํ
์คํธ ํ์ธ
-> ํด๋น ์ปจํ
์คํธ ๊ธฐ์ค์ผ๋ก ๋ช
๋ น ์์ฒญ ์ ๋ฌ
์ด ๊ตฌ์กฐ๊ฐ ์ข์ ์ด์ ๋ ๋ ๊ฐ์ง๋ค.
์ฒซ ๋ฒ์งธ๋
์ ํ ๋์๋ณ ๋ช
๋ น ๋ถ๊ธฐ๊ฐ PlayerController ๋ด๋ถ ํ๋์ฝ๋ฉ์ผ๋ก ์์ด์ง ์๋๋ค๋ ์ ์ด๋ค.
๋ ๋ฒ์งธ๋
์ ๋, ๊ฑด๋ฌผ, ํ์ ๋น๋ ๋ฉ๋ด, ์์ฐ ๊ฐ๋ฅํ ๊ตฌ์กฐ๋ฌผ ๊ฐ์ ๋ฌธ๋งฅ ์ฐจ์ด๋ฅผ
์ ํ ๋์์ด ๊ฐ์ง ์ปจํ
์คํธ ์ ๋ณด๋ก ํก์ํ ์ ์๋ค๋ ์ ์ด๋ค.
์ฆ ์ปจํธ๋กค๋ฌ๋
์ ์ ๋ โ๋ช
๋ น ์ ๋ฌ์โ์ ๊ฐ๊น์์ง๊ณ ,
์ค์ ์๋ฏธ ์ฒด๊ณ๋ ์ ํ ๋์ ์ชฝ์ ๋จ๊ฒ ๋๋ค.
์ฒ์์๋ QueueCount๋ฅผ CommandPanel ์ซ์ ๋ฐฐ์ง๋ก๋ง ๋ณด์ฌ์ฃผ๋ ค ํ๋๋ฐ
์ํ๋ ๋๋๊ณผ๋ ๊ฑฐ๋ฆฌ๊ฐ ์์๋ค.
์ํ๋ ํ๋ฉด์ ์คํ๋ ค ์ด๋ฐ ๊ตฌ์กฐ์๋ค.
Selection Panel
โ Portrait / ์ด๋ฆ / ํ์
/ HP
โ Production Strip
โ ์์ฐ ์ค ํ์ดํ
โ Progress Bar
โ ํ ์์ด์ฝ ๋ชฉ๋ก
์ฆ CommandPanel์
ํ์ฌ ์คํ ๊ฐ๋ฅํ ๋ช
๋ น ์งํฉ์ ๋ณด์ฌ์ฃผ๋ ๊ณณ์ด๊ณ ,
SelectionPanel์
ํ์ฌ ์ ํํ ๋์์ ์ํ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ณณ์ด์ด์ผ ํ๋ค.
์ด ๊ธฐ์ค์ผ๋ก ๋ค์ ๋ณด๋ฉด ์ญํ ์ ์ด๋ ๊ฒ ์ ๋ฆฌ๋๋ค.
CommandPanel
-> ํ์ฌ ์ปจํ
์คํธ์์ ์คํ ๊ฐ๋ฅํ ๋ช
๋ น ํ์
SelectionPanel
-> ํ์ฌ ์ ํ ๋์ ์ํ ํ์
-> ๊ฑด๋ฌผ์ด๋ผ๋ฉด ์์ฐ ์ํ๊น์ง ํฌํจ
์ด๋ ๊ฒ ๋๋๋
์์ฐ ํ UI ์์น๋ ํจ์ฌ ์์ฐ์ค๋ฌ์์ก๋ค.
๊ธฐ์กด FSelectionViewModel์
์ด๋ฆ, ํ์
, HP, Portrait, Multi Selection ์์ฝ ์ ๋๋ฅผ ๋ด๊ณ ์์๋ค.
์ค๋์ ์ฌ๊ธฐ์
๊ฑด๋ฌผ ์์ฐ ์ํ๋ฅผ ์น์ ์ ์๋๋ก ๊ตฌ์กฐ๋ฅผ ํ์ฅํ๋ ๋ฐฉํฅ์ด ์ ๋ฆฌ๋๋ค.
ํต์ฌ์ ๋ค์ ์ธ ์ธต์ด๋ค.
FProductionQueueItemViewModel
-> ํ ์ฌ๋กฏ ํ๋
FBuildingProductionViewModel
-> ์์ฐ ํจ๋ ์ ์ฒด
FSelectionViewModel
-> bShowProductionPanel
-> Production
์ด ๊ตฌ์กฐ๊ฐ ์ค์ํ ์ด์ ๋
Selection Panel ์์ ฏ์ด ์์ฐ ๋ก์ง์ ์ง์ ๊ณ์ฐํ์ง ์์๋ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
์์ ฏ์ ๋ฐ์ ๋ฐ์ดํฐ๋ง ๊ทธ๋ฆฌ๊ณ ,
์ค์ ์์ฐ ์ํ ์กฐ๋ฆฝ์ ๋ธ๋ฆฌ์ง ์ชฝ์์ ๋ด๋นํ๋ค.
์ฆ ํํ ๊ณ์ธต๊ณผ ์ํ ์กฐ๋ฆฝ ๊ณ์ธต์ด ๋ค์ ๋ถ๋ฆฌ๋๋ค.
์์ฐ ํ๋ ๊ฐ์๊ฐ ๊ณ ์ ์ด ์๋๋ผ
์ํฉ์ ๋ฐ๋ผ 0๊ฐ์ผ ์๋ ์๊ณ ์ฌ๋ฌ ๊ฐ์ผ ์๋ ์๋ค.
๊ทธ๋์ Queue UI๋
์ ์ ์ธ BindWidget ํ๋๋ก ํด๊ฒฐํ๋ ๊ตฌ์กฐ๋ณด๋ค
๋ฐํ์ ์์ฑํ ๊ตฌ์กฐ๊ฐ ๋ ์์ฐ์ค๋ฌ์ ๋ค.
ํํ๋ ์ด๋ ๋ค.
SelectionPanel
-> ProductionQueueBox
QueueItemWidget
-> ํ ์์ด์ฝ ํ ์นธ
์ฆ SelectionPanel์
ํ ์์ดํ
์์ฒด๋ฅผ ๊ณ ์ ์ผ๋ก ๋ค๊ณ ์๋ ๊ฒ์ด ์๋๋ผ,
ํ์ํ ๊ฐ์๋งํผ ์์ฑํด์ HorizontalBox์ ๋ถ์ด๋ ์ปจํ
์ด๋ ์ญํ ์ ๋งก๋๋ค.
์ด๋ ๊ฒ ํ๋ฉด
์์ฐ ํ ์๊ฐ ๋ฐ๋์ด๋ UI ๊ตฌ์กฐ๋ฅผ ์ต์ง๋ก ๊ณ ์ ํ์ง ์์๋ ๋๋ค.
Selection Panel์ด ์ง์ ์์ฐ ์ ๋ณด๋ฅผ ๊ณ์ฐํ๋ฉด
ํํ ๊ณ์ธต์ด ๋ค์ ๋น๋ํด์ง๋ค.
๊ทธ๋์ ์ค๋ ๋ฐฉํฅ์
์์ฐ ์ํ ์กฐ๋ฆฝ์ TWPlayerUIBridge์์ ์ฒ๋ฆฌํ๋ ์ชฝ์ผ๋ก ์ ๋ฆฌ๋๋ค.
์๋ฅผ ๋ค์ด ํ์ฌ ์ ํ ๋์์ด ๋ณ์์ด๋ฉด
๋ธ๋ฆฌ์ง์์ ์ด๋ฐ ์์ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ ๋ค.
- SelectionType = Building
- ViewMode = Single
- ProductionPanel = Visible
- QueueCount ์ฝ๊ธฐ
- Queue ์์ด์ฝ ๋ชฉ๋ก ์์ฑ
- ProgressBar ๊ฐ ์ฑ์ฐ๊ธฐ
๊ทธ๋ฆฌ๊ณ ์ด ๊ฒฐ๊ณผ๋ฅผ
SelectionProvider๋ฅผ ํตํด HUDCoordinator๋ก ๋๊ธฐ๊ฒ ๋๋ค.
์ด ๊ตฌ์กฐ๊ฐ ์ข์ ์ด์ ๋
๋์ค์ ๋ณ์ ์ธ์ ์์ฐ ๊ฑด๋ฌผ, ์ฐ๊ตฌ ๊ฑด๋ฌผ, ํน์ ๊ตฌ์กฐ๋ฌผ๋ก ํ์ฅํ๋๋ผ๋
์์ ฏ์ ๋ฏ์ง ์๊ณ ์กฐ๋ฆฝ ๋ก์ง๋ง ํ์ฅํ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
Selection Panel ์ชฝ ์์ฐ UI๊ฐ ๋ฉ์ธ์ด ๋๋๋ผ๋
๊ธฐ์กด CommandPanel์ QueueCount ์ ๋ณด๋ ์์ ํ ๋ฒ๋ฆด ํ์๋ ์์๋ค.
๋์ ์ด๊ฑด ๋ฉ์ธ ํํ์ด ์๋๋ผ
๋ณด์กฐ ์งํ ์ ๋๋ก ๋๋ ๊ฒ ๋ง์๋ค.
ํ๋ฆ์ ์ด๋ ๊ฒ ์ ๋ฆฌ๋๋ค.
Bridge
-> RuntimeCommandQueueCount ์ค์
SelectionProvider
-> RuntimeCommandQueueCountMap ์ ์ฅ
HUDCoordinator
-> CommandSlotViewModel ์์ฑ ์ QueueCount ์ฃผ์
์ฆ ๋ฉ์ธ ์์ฐ ์ํ๋ Selection Panel์ด ๋ด๋นํ๊ณ ,
CommandPanel์ ํ์ฌ ๋ช
๋ น ์ฌ๋กฏ์ ๋ํ ๋ณด์กฐ ์ํ๋ง ๊ฐ๋ณ๊ฒ ๋ฐ์ํ๋ ๊ตฌ์กฐ๋ค.
์ค๋์ ๋จ์ํ ์์ ฏ์ ์ถ๊ฐํ ๋ ์ด ์๋์๋ค.
์ค์ ๋ก๋ ์๋ ์ธ ๊ฐ์ง๋ฅผ ๋ง์ถ๋ ์์ ์ ๊ฐ๊น์ ๋ค.
๋ฌด์์ด ์ ํ๋์๋๊ฐ
-> ์ด๋ค ์ปจํ
์คํธ๋ฅผ ๊ฐ์ง๋๊ฐ
-> ์ด๋ค ๋ช
๋ น์ ๋ณด์ฌ์ค ๊ฒ์ธ๊ฐ
๊ฑด๋ฌผ์ด ์ ํ๋์๋๊ฐ
-> ์์ฐ ์ํ๊ฐ ์๋๊ฐ
-> Selection Panel์ ์ด๋ป๊ฒ ๋ณด์ผ ๊ฒ์ธ๊ฐ
์ ํ ๋์ ์ํ
-> Bridge
-> Provider
-> Coordinator
-> Widget
์ฆ ์ค๋์ ํต์ฌ์
์
๋ ฅ ๊ธฐ์ ์์ฒด๋ณด๋ค๋
โ์ ํ ์ํ ๊ธฐ๋ฐ์ผ๋ก ์ปค๋งจ๋์ UI๋ฅผ ์ด๋ป๊ฒ ์ฐ๊ฒฐํ ๊ฒ์ธ๊ฐโ๋ฅผ ๊ตฌ์กฐํํ ๋ฐ ์์๋ค.
์ค๋ ์์
์ผ๋ก ๊ฐ์ฅ ํฌ๊ฒ ๋ฌ๋ผ์ง ์ ์
UI๊ฐ ๋จ์ํ โํ์๋๋ ๊ตฌ์กฐโ์์
์ค์ ์ ํ ์ํ์ ์์ฐ ์ํ๋ฅผ ๋ฐ์ํ ์ ์๋ ๊ตฌ์กฐ๋ก ํ ๋จ๊ณ ๋ ๊ฐ๊น์์ก๋ค๋ ์ ์ด๋ค.
์ ๋ฆฌํ๋ฉด:
์ ํ ๋์ ์๋ณ
-> ์ปค๋งจ๋ ์ปจํ
์คํธ ๊ฒฐ์
์ปค๋งจ๋ ์ปจํ
์คํธ
-> CommandPanel ๋ช
๋ น ๊ตฌ์ฑ
๊ฑด๋ฌผ ์ํ
-> Production ์ ๋ณด ์์ฑ
UIBridge
-> SelectionViewModel์ ์์ฐ ์ํ ์กฐ๋ฆฝ
SelectionPanel
-> ProgressBar + Queue ์์ด์ฝ ํ์
์ฆ ์ง๊ธ์ ์ ์ด๋
โ๋ฌด์์ ์ ํํ๋๊ฐ์ ๋ฐ๋ผ ์ด๋ค ๋ช
๋ น์ด ๋ณด์ด๊ณ ,
๊ฑด๋ฌผ์ด๋ผ๋ฉด ํ์ฌ ์์ฐ ์ํ๊ฐ ์ด๋ป๊ฒ ๋ณด์ผ ๊ฒ์ธ๊ฐโ๋ฅผ
๊ฐ์ ๊ตฌ์กฐ ์์์ ํ
์คํธํ ์ ์๋ ์์ค๊น์ง๋ ์๋ค.
๋ช
๋ น ํด์ ๊ธฐ์ค์ด PlayerController ์ชฝ์ผ๋ก ๋ง์ด ์ ๋ ค ์์์
Selection Panel์ ๊ธฐ๋ณธ ์ ๋ณด๋ง ํ์
์์ฐ ํ๋ CommandPanel ์ซ์ ๋ฐฐ์ง ์์ค
์ ํ ๋์๊ณผ UI ๋ช
๋ น ๋ฌธ๋งฅ ์ฐ๊ฒฐ์ด ์ฝํ์
์ ํ ๋์ ๊ธฐ์ค ์ปค๋งจ๋ ์ปจํ
์คํธ ์๋ณ ๊ตฌ์กฐ ์ ๋ฆฌ
PlayerController๋ ๋ผ์ฐํฐ์ ๊ฐ๊น๊ฒ ์ญํ ์ ๋ฆฌ
Selection Panel ๋ด๋ถ ์์ฐ UI ์ถ๊ฐ
Queue / ์งํ๋ / ํ ์์ด์ฝ ํ์ ๊ตฌ์กฐ ํ๋ณด
Bridge / Provider / Coordinator ๋ฐ์ดํฐ ํ๋ฆ ๋ณด๊ฐ
| ํญ๋ชฉ | ์ด์ | ์ดํ |
|---|---|---|
| ๋ช ๋ น ํด์ ๊ธฐ์ค | PlayerController ์ค์ฌ | ์ ํ ๋์ ์ปจํ ์คํธ ์ค์ฌ |
| CommandPanel ์ญํ | ๋ช ๋ น + ์ํ ์ผ๋ถ ํผ์ฌ | ํ์ฌ ์ปจํ ์คํธ์ ๋ช ๋ น ํ์ |
| SelectionPanel ์ญํ | ๊ธฐ๋ณธ ์ ๋ณด ํ์ | ๋์ ์ํ + ์์ฐ ์ํ ํ์ |
| ํ ํํ | QueueCount ์ซ์ | ์งํ๋ฐ + ํ ์์ด์ฝ |
| ๊ตฌ์กฐ ์์ ์ฑ | ์ปจํ ์คํธ ์ฐ๊ฒฐ ๊ธฐ์ค์ด ์ฝํจ | ์ ํ ์ํ ๊ธฐ์ค ํ๋ฆ ์ ๋ฆฌ |
์ค๋ ๋ค์ ์ ๋ฆฌํด ๋ณด๋
์ค์ํ๋ ๊ฑด ํน์ ์
๋ ฅ ๊ธฐ์ ์ ํ์ ํ๋ ๊ฒ ์๋๋ผ
ํ์ฌ ์ ํ๋ ๋์์ด ์ด๋ค ๋ช
๋ น ๋ฌธ๋งฅ์ ๊ฐ์ง๋์ง๋ฅผ ๋จผ์ ๊ตฌ์กฐํํ๋ ์ผ์ด์๋ค.
์ฆ ๊ธฐ์ค์ ์ด๊ฑฐ๋ค.
์ ํ ๋์์ด ๋ฌด์์ธ๊ฐ
-> ์ด๋ค ์ปค๋งจ๋ ์งํฉ์ ๊ฐ์ง๋๊ฐ
-> UI์ ์คํ ๊ฒฝ๋ก๋ฅผ ์ด๋ป๊ฒ ๋ง์ถ ๊ฒ์ธ๊ฐ
์ด ๊ธฐ์ค์ด ๋จผ์ ์์ผ
๋์ค์ ์
๋ ฅ ์ง์
์ ์ ์ด๋ป๊ฒ ๊ฐ์ ธ๊ฐ๋
์ ์ฒด ๊ตฌ์กฐ๊ฐ ํ๋ค๋ฆฌ์ง ์๋๋ค.
CommandPanel = ๋ช
๋ น
SelectionPanel = ํ์ฌ ๋์ ์ํ
์ด ๊ธฐ์ค์ผ๋ก ๋ณด๋๊น
์์ฐ ํ๋ CommandPanel ์ซ์ ๋ฐฐ์ง๋ก ๋ฒํฐ๋ ๊ฒ๋ณด๋ค
Selection Panel ์์์ ํ์ฌ ๊ฑด๋ฌผ ์ํ๋ก ๋ณด์ฌ์ฃผ๋ ๊ฒ ํจ์ฌ ์์ฐ์ค๋ฌ์ ๋ค.
์ค๋๋ ๋ค์ ๋๋ ๊ฑด
์์ ฏ๋ง ์๋ณธ๋ค๊ณ ๋๋ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ์ ์ด์๋ค.
๊ฒฐ๊ตญ ๊ฐ์ด ๋ง์ถฐ์ผ ํ๋ ๊ฑด:
SelectionViewModel
ProductionViewModel
Provider runtime data
Coordinator ์กฐ๋ฆฝ ๊ตฌ์กฐ
์ฆ ์ค๋ ์์
์ ํต์ฌ์
์์ ฏ ์ถ๊ฐ๋ณด๋ค๋
๋ฐ์ดํฐ๊ฐ ์ด๋์ ๋ง๋ค์ด์ง๊ณ ์ด๋๋ก ํ๋ฌ๊ฐ๋์ง๋ฅผ ์ ๋ฆฌํ๋ ๋ฐ ๋ ๊ฐ๊น์ ๋ค.
์ ํ ๋์ ๋ณ๊ฒฝ
-> ์ปค๋งจ๋ ์ปจํ
์คํธ ์๋ณ
-> CommandPanel ๋ช
๋ น ๊ฐฑ์
๊ฑด๋ฌผ ์ ํ ์ํ
-> ์์ฐ ์ํ ์กฐํ
-> UIBridge
-> SelectionProvider
-> HUDCoordinator
-> SelectionPanel ๊ฐฑ์
- ์ด์ ๋ UI๋ฅผ ๊ท๊ฒฉํํ๊ณ ํํ ๊ณ์ธต์ ์ ๋ฆฌํ๋ ๋จ๊ณ์๋ค.
- ์ค๋์ ๊ทธ ๊ตฌ์กฐ ์์ ์ ํ ์ํ, ์ปค๋งจ๋ ๋ฌธ๋งฅ, ์์ฐ ํ๋ฅผ ์ฐ๊ฒฐํ๋ ๋จ๊ณ์๋ค.
- ํนํ ์ ํ๋ ์ ๋/๊ฑด๋ฌผ ๊ธฐ์ค์ผ๋ก ์ปค๋งจ๋ ์ปจํ ์คํธ๋ฅผ ์๋ณํ๊ณ , Selection Panel์ ์์ฐ UI๋ฅผ ๋ถ์ด๋ฉด์, โํ์ฌ ์ ํ ๋์์ ๋ฐ๋ผ ๋ช ๋ น๊ณผ ์ํ๊ฐ ํจ๊ป ๋ฐ๋๋ ๊ตฌ์กฐโ๋ฅผ ์ข ๋ ๋ช ํํ๊ฒ ๋ง๋ค์๋ค.