UI ์ค์ผ๋ ํค ๊ตฌ์กฐ๋ฅผ ๊ธฐ์ค์ผ๋ก WBP์ C++์ ์ฐ๊ฒฐํ ๋ค ์ค์ ํ
์คํธ๋ฅผ ์งํํ์ ๋,
๋จ์ ํ์ ์์ค์์๋ ์ ์์ฒ๋ผ ๋ณด์์ง๋ง, ์ค์ ์
๋ ฅ ๊ธฐ๋ฐ์ผ๋ก ์ํ๋ฅผ ๋ฐ๊ฟ๋ณด๋ฉด UI๊ฐ ์ ์์ ์ผ๋ก ๊ฐฑ์ ๋์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
| ๊ตฌ๋ถ | ์ฆ์ |
|---|---|
| ์ ๋ ฅ ์ฒ๋ฆฌ | ํค ์ ๋ ฅ ๋ก๊ทธ๋ ์ ์์ ์ผ๋ก ์ถ๋ ฅ๋จ |
| SelectionPanel | ์ํ ๋ณ๊ฒฝ ํ ์ฆ์ ๋ฐ์๋์ง ์๊ฑฐ๋ ์ผ๋ถ๋ง ๋ฐ์ |
| CommandPanel | Selection ๋ณ๊ฒฝ๊ณผ ๋๊ธฐํ๋์ง ์์ |
| TopBar | ์์ ๊ฐ ๋ณ๊ฒฝ ์ UI ๊ฐฑ์ ์๋จ |
| Notification | ํธ์ถ์ ๋์ง๋ง ํ๋ฆ๊ณผ ์ฐ๊ฒฐ๋์ง ์์ |
| ์ ์ฒด ํ๋ฆ | ์ ๋ ฅ โ ๋ฐ์ดํฐ ๋ณ๊ฒฝ โ UI ๋ฐ์๊น์ง ์ด์ด์ง์ง ์์ |
์ค์ ๋ด๋ถ ํ๋ฆ์ ๋ณด๋ฉด ์๋์ฒ๋ผ ๋๊ฒจ ์์๋ค.
์
๋ ฅ (PlayerController)
โ Mock ๋ฐ์ดํฐ ๋ณ๊ฒฝ
โ (UI ๊ฐฑ์ ์์)
์ฆ ๊ตฌ์กฐ๋ ์์์ง๋ง ์คํ ๋ฃจํ๊ฐ ์์ฑ๋์ง ์์ ์ํ์๋ค.
๋ฌธ์ ๋ฅผ ๊ตฌ์กฐ ๊ธฐ์ค์ผ๋ก ๋ถํดํด๋ณด๋ฉด, ์์ธ์ ๋ช ํํ๊ฒ 4๊ฐ์ง๋ก ๋๋ ์ ์์๋ค.
ํ์ฌ ๊ตฌ์กฐ๋ ์๋์ ๊ฐ์ด ์ค๊ณ๋์ด ์์๋ค.
Provider โ Coordinator โ ViewModel โ HUDRoot โ Panel
์ด ๊ตฌ์กฐ ์์ฒด๋ ๋ฌธ์ ๊ฐ ์์์ง๋ง,
ํต์ฌ ๋ฌธ์ ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋์์ ๋ Coordinator๊ฐ ๋ค์ ์คํ๋์ง ์๋ ๊ฒ์ด์๋ค.
MockSelection ์ํ ๋ณ๊ฒฝ๋จ
โ Provider ๊ฐ์ ๋ฐ๋
โ Coordinator๋ ๋ค์ ํธ์ถ๋์ง ์์
โ UI ๊ทธ๋๋ก ์ ์ง
์ฆ ๊ตฌ์กฐ๋ ๋ง๋๋ฐ โ์ธ์ ๊ฐฑ์ ํ ์งโ๊ฐ ์ ์๋์ง ์์ ์ํ์๋ค.
์ ๋ ฅ ์ฒ๋ฆฌ ๋ก์ง์ ๋ณด๋ฉด ์๋์ฒ๋ผ ๋์ด ์์๋ค.
Input โ Mock ๋ฐ์ดํฐ ๋ณ๊ฒฝ โ ๋
์ฌ๊ธฐ์ ๋น ์ง ํต์ฌ ๋จ๊ณ๋ ์ด๊ฒ์ด๋ค.
โ Coordinator Refresh ํธ์ถ
์
๋ ฅ
โ ๋ฐ์ดํฐ ๋ณ๊ฒฝ
โ Coordinator.RefreshXXX()
โ HUDRoot ์ ๋ฌ
โ Panel ๊ฐฑ์
์ด ํ ์ค์ด ๋น ์ ธ์ UI๊ฐ ์ ์ง ์ํ์ฒ๋ผ ๋ณด์๋ ๊ฒ์ด๋ค.
Selection ์ํ์ CommandPanel์ ๊ฐํ๊ฒ ์ฐ๊ฒฐ๋์ด์ผ ํ๋ค.
ํ์ง๋ง ์ค์ ๊ตฌํ์์๋
๋น๋๊ธฐ ์ํ๊ฐ ๋ฐ์ํ๋ค.
Selection ๋ณ๊ฒฝ
โ SelectionPanel๋ง ๊ฐฑ์
โ CommandPanel ๊ทธ๋๋ก ์ ์ง
Selection ๋ณ๊ฒฝ
โ SelectionPanel ๊ฐฑ์
โ CommandPanel ๊ฐฑ์ (ํญ์ ๊ฐ์ด)
์ผ๋ถ UI๊ฐ ์์ ๋ฐ์๋์ง ์๋ ์ผ์ด์ค๋
์ฝ๋ ๋ฌธ์ ๊ฐ ์๋๋ผ WBP ์ค์ ๋ฌธ์ ์๋ค.
| ํญ๋ชฉ | ๋ฌธ์ |
|---|---|
| BindWidget ์ด๋ฆ | C++๊ณผ ๋ถ์ผ์น |
| ๋ถ๋ชจ ํด๋์ค | ์๋ชป๋ Widget ํด๋์ค ์ฌ์ฉ |
| IsVariable | ์ฒดํฌ ์๋จ |
| ์์ ฏ ํธ๋ฆฌ | ์ฐธ์กฐ ๋๊น |
๋ฌธ์ ํด๊ฒฐ ๋ฐฉํฅ์ ๋จ์ํ๊ฒ ์ก์๋ค.
โ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ดํ ๋ฐ๋์ UI ๊ฐฑ์ ํจ์๊น์ง ์ฐ๊ฒฐํ๋คโ
์ ๋ ฅ ์ฒ๋ฆฌ ์ดํ ํ๋ฆ์ ๋ช ํํ๊ฒ ์ฐ๊ฒฐํ๋ค.
์
๋ ฅ
โ Mock ๋ฐ์ดํฐ ๋ณ๊ฒฝ
โ Coordinator.Refresh ํธ์ถ
โ HUDRoot ์ ๋ฌ
โ Panel ๊ฐฑ์
| ์ ๋ ฅ | ์ฒ๋ฆฌ |
|---|---|
| F1/F2/F3 | Selection ์ํ ๋ณ๊ฒฝ + Selection/Command Refresh |
| 1/2/3 | Resource ๊ฐ ๋ณ๊ฒฝ + TopBar Refresh |
| F8 | Notification ํธ์ถ |
Selection ๋ณ๊ฒฝ ์ ํญ์ ์๋ ๋ ๊ฐ๋ฅผ ๊ฐ์ด ํธ์ถํ๋๋ก ๊ณ ์ ํ๋ค.
RefreshSelectionPanel()
RefreshCommandPanel()
| ์ํ | ๋ณ๊ฒฝ ์ | ๋ณ๊ฒฝ ํ |
|---|---|---|
| Selection ๋ณ๊ฒฝ | UI ๋ถ์ผ์น ๋ฐ์ | ํญ์ ๋๊ธฐํ |
| CommandPanel | ๊ฐฑ์ ๋๋ฝ | ํญ์ ๊ฐฑ์ |
์ด๊ธฐ ์ง์ ์์๋ ์ ์ฒด ๊ฐฑ์ ์ ํ ๋ฒ๋ง ์ํํ๋๋ก ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํ๋ค.
BeginPlay
โ Coordinator.Initialize
โ RefreshAll (1ํ)
๋ฐ์ดํฐ ๋ณ๊ฒฝ ์
โ ํ์ํ ๋ถ๋ถ๋ง Refresh
Mock ๊ฐ์ฒด๋ฅผ ๋จ์ ๋ฐ์ดํฐ ์ ์ฅ์ด ์๋๋ผ
ํ
์คํธ ๊ฐ๋ฅํ ์ํ ๋จธ์ ์ผ๋ก ์์ ํ๋ค.
| ๊ธฐ๋ฅ | ๋ด์ฉ |
|---|---|
| ์ํ ๊ด๋ฆฌ | None / Unit / Building |
| ViewModel ๋ฐํ | ์ํ๋ณ ๋ฐ์ดํฐ ๊ตฌ์ฑ |
| CommandId ๋ฐํ | ์ํ๋ณ ๋ค๋ฅธ Command ๋ฆฌ์คํธ |
| ๊ธฐ๋ฅ | ๋ด์ฉ |
|---|---|
| ๋ด๋ถ ๊ฐ | Wood / Gas / Population |
| ๋ณ๊ฒฝ ํจ์ | AddWood / AddGas / AddPopulation |
| ViewModel ๋ฐํ | TopBar ๋ฐ์ดํฐ ๊ตฌ์ฑ |
์๋ ๊ธฐ์ค์ผ๋ก ์ ๋ถ ์ฌ์ ๊ฒํ๋ค.
| ํญ๋ชฉ | ํ์ธ |
|---|---|
| BindWidget ์ด๋ฆ | ์ ํํ ์ผ์น |
| ๋ถ๋ชจ ํด๋์ค | ์ฌ๋ฐ๋ฅธ Widget ํด๋์ค |
| IsVariable | ํ์ํ ์์ ์ฒดํฌ |
| Layout | ์ค์ ํ๋ฉด ํ์ ํ์ธ |
์์ ์ดํ ์ ์ฒด ํ๋ฆ์ด ์ ์์ ์ผ๋ก ์ฐ๊ฒฐ๋์๋ค.
์
๋ ฅ
โ Mock ๋ฐ์ดํฐ ๋ณ๊ฒฝ
โ Coordinator.RefreshXXX()
โ ViewModel ์์ฑ
โ HUDRoot ์ ๋ฌ
โ Panel UI ๊ฐฑ์
| ๊ธฐ๋ฅ | ๊ฒฐ๊ณผ |
|---|---|
| Selection ๋ณ๊ฒฝ | SelectionPanel ์ฆ์ ๋ฐ์ |
| Command ๋ณ๊ฒฝ | CommandPanel ์ฆ์ ๋ฐ์ |
| Resource ๋ณ๊ฒฝ | TopBar ์ฆ์ ๋ฐ์ |
| Notification | ๋ฉ์์ง + ์์ ์ ์ ์ถ๋ ฅ |
| ์ ์ฒด HUD | ์ํ ๋ณํ์ ๋ฐ๋ผ ์ ์ ์ ์ง |
- UI๋ ์๋์ผ๋ก ๊ฐฑ์ ๋์ง ์๋๋ค
- ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ดํ ๋ฐ๋์ Refresh๋ฅผ ํธ์ถํด์ผ ํ๋ค
- Selection๊ณผ Command๋ ํญ์ ๊ฐ์ด ์์ง์ฌ์ผ ํ๋ค
- ๊ตฌ์กฐ๋ณด๋ค โ๊ฐฑ์ ํ์ด๋ฐโ์ด ๋ ์ค์ํ๋ค