UI ์ค์ผ๋ ํค์ ๊ธฐ๋ฐ์ผ๋ก ์ค์ ๋์๊น์ง ์ฐ๊ฒฐํ ์ดํ,
๊ธฐ๋ฅ์ ์ผ๋ก๋ UI๊ฐ ์ ์์ ์ผ๋ก ๋์ํ๊ฒ ๋์์ง๋ง ๊ตฌ์กฐ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํ๊ณ๊ฐ ๋๋ฌ๋ฌ๋ค.
| ๊ตฌ๋ถ | ๋ฌธ์ |
|---|---|
| CommandPanel | ์ปค๋งจ๋ ์ ๋ณด๊ฐ ์ฝ๋์ ํ๋์ฝ๋ฉ๋์ด ์์ |
| Selection | ํ์ ์ ๋ณด(DisplayName, TypeLabel)๊ฐ Provider ๋ด๋ถ์ ํฌํจ๋จ |
| UI ๊ตฌ์กฐ | ๋ฐ์ดํฐ์ ํํ์ด ๋ถ๋ฆฌ๋์ง ์์ |
| ํ์ฅ์ฑ | ์ค์ ๊ฒ์ ์์คํ ์ฐ๊ฒฐ ์ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ด ํ์ |
| ์ ์ง๋ณด์ | UI ๋ณ๊ฒฝ ์ ์ฝ๋ ์์ ์ด ํ์ |
Provider โ Coordinator โ ViewModel โ UI
์ด ๊ตฌ์กฐ๋ ๋์ ์์ฒด๋ ๊ฐ๋ฅํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ๋ฌธ์ ๊ฐ ์กด์ฌํ๋ค.
๋ฐ์ดํฐ ์์ฑ + ํํ ๊ฒฐ์ + UI ์ถ๋ ฅ ์ฑ
์์ด ํ๋์ ํ๋ฆ์ ์์ฌ ์๋ ์ํ
๋ฌธ์ ์ ํต์ฌ์ UI์ ๋์ ์ฌ๋ถ๊ฐ ์๋๋ผ
๋ฐ์ดํฐ์ ํํ, ๊ทธ๋ฆฌ๊ณ UI์ ์ญํ ์ด ๋ถ๋ฆฌ๋์ง ์์๋ค๋ ์ ์ด์๋ค.
Provider
โ Selection ์ํ + DisplayName + TypeLabel๊น์ง ์ง์ ์์ฑ
โ Coordinator ์ ๋ฌ
โ UI ์ถ๋ ฅ
์ด ๊ตฌ์กฐ์์๋ Provider๊ฐ ๋จ์ ๋ฐ์ดํฐ ์ ๊ณต์๊ฐ ์๋๋ผ
UI ํํ๊น์ง ์ฑ
์์ง๋ ์ํ๊ฐ ๋๋ค.
1. Provider๊ฐ UI ํํ๊น์ง ์๊ณ ์์ด์ผ ํ๋ค
2. UI ๋ณ๊ฒฝ ์ Provider ์ฝ๋ ์์ ์ด ํ์ํ๋ค
3. ์ค์ ๊ฒ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์ UI๊น์ง ์ํฅ์ด ๊ฐ๋ค
์ฆ,
๋ฐ์ดํฐ(๋ฌด์) + ํํ(์ด๋ป๊ฒ) + ์ถ๋ ฅ(UI)์ด ๊ฐํ๊ฒ ๊ฒฐํฉ๋ ๊ตฌ์กฐ
CommandPanel
โ CommandId + DisplayName + Hotkey
โ ์ฝ๋์์ ์ง์ ์ ์
์ด ๊ตฌ์กฐ์์๋:
CommandPanel์์ ์ฌ๋กฏ์ด ์ํฉ์ ๋ฐ๋ผ ์ค์ด๋๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
SetVisibility(ESlateVisibility::Collapsed);
์ด๋ก ์ธํด:
์ฌ๋กฏ ์์ ฏ ์์ฒด๊ฐ ์ ๊ฑฐ โ ๊ทธ๋ฆฌ๋ ๊ตฌ์กฐ ๋ถ๊ดด
ํต์ฌ ๋ฐฉํฅ์ ๋ค์ ๋ ๊ฐ์ง๋ก ์ ๋ฆฌํ๋ค.
1. ๋ฐ์ดํฐ์ ํํ์ ์์ ํ ๋ถ๋ฆฌํ๋ค
2. UI๋ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ง ์๊ณ ์๋น๋ง ํ๋ค
์ปค๋งจ๋ ์ ๋ณด๋ฅผ ์ฝ๋์์ ์ ๊ฑฐํ๊ณ DataTable๋ก ์ด๋ํ๋ค.
Command ์ ๋ณด โ ์ฝ๋ ๋ด๋ถ์์ ์ง์ ์ ์
CommandId
โ DT_CommandMeta ์กฐํ
โ ViewModel ์์ฑ
โ UI ์ถ๋ ฅ
SelectionSource
โ CommandId ๋ชฉ๋ก ์ ๋ฌ
โ Coordinator
โ DataTable์์ ๋ฉํ ์กฐํ
โ ViewModel ๊ตฌ์ฑ
โ CommandPanel ์ถ๋ ฅ
| ์์ญ | ์ญํ |
|---|---|
| Provider | CommandId ์ ๊ณต |
| DataTable | ํ์ ์ ๋ณด (์ด๋ฆ, Hotkey, Icon ๋ฑ) |
| Coordinator | ๋ฐ์ดํฐ + ๋ฉํ๋ฅผ ์กฐํฉํ์ฌ ViewModel ์์ฑ |
| UI | ViewModel ์ถ๋ ฅ |
Selection๋ ๋์ผํ ๋ฐฉ์์ผ๋ก ๊ตฌ์กฐ๋ฅผ ๋ถ๋ฆฌํ๋ค.
Provider โ DisplayName / TypeLabel ์ง์ ์์ฑ
SelectionSource โ SelectionId ์ ๋ฌ
โ Coordinator
โ DT_SelectionPresentation ์กฐํ
โ DisplayName / TypeLabel / Icon ๋ณด์
Provider โ "๋ฌด์์ด ์ ํ๋์๋๊ฐ"
DataTable โ "์ด๋ป๊ฒ ๋ณด์ฌ์ค ๊ฒ์ธ๊ฐ"
UI๋ ๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์์ฑํ์ง ์๋๋ก ๊ตฌ์กฐ๋ฅผ ์ ๋ฆฌํ๋ค.
SelectionSource / ResourceSource
โ Coordinator
โ ViewModel ์์ฑ
โ HUDRoot
โ Panel Widget
์ถ๊ฐ์ ์ผ๋ก:
Coordinator
โ
DataTable (CommandMeta / SelectionPresentation)
Provider = ์ํ ์ ๊ณต
DataTable = ํํ ์ ์
Coordinator = ์กฐํฉ ๋ฐ ๋ณํ
UI = ์ถ๋ ฅ
CommandPanel์ ํญ์ ๋์ผํ ๋ ์ด์์์ ์ ์งํ๋๋ก ์์ ํ๋ค.
์ฌ๋กฏ Collapse โ ๊ทธ๋ฆฌ๋ ์ถ์
ํญ์ 9์นธ ์ ์ง
โ ์ฌ๋กฏ์ ์ ์งํ๊ณ ๋ด๋ถ ๋ฐ์ดํฐ๋ง ๋ณ๊ฒฝ
1. ๋ชจ๋ ์ฌ๋กฏ์ ๋น ์ํ๋ก ์ด๊ธฐํ
2. CommandId์ SlotIndex ๊ธฐ์ค์ผ๋ก ํด๋น ์์น์ ๋ฐฐ์น
3. ๋น ์ฌ๋กฏ์ ํ
์คํธ/์์ด์ฝ๋ง ์ ๊ฑฐ
[Move] [Stop] [Attack]
[ ] [ ] [ ]
[ ] [ ] [ ]
ํฅํ ๊ธฐ๋ฅ ํ์ฅ์ ๊ณ ๋ คํด ์ธํฐํ์ด์ค๋ฅผ ํ์ฅํ๋ค.
| ํจ์ | ์ญํ |
|---|---|
| GetSelectionViewMode | Single / Multi ๊ตฌ๋ถ |
| GetPrimaryEntityId | ๋ํ ์ ํ ๋์ |
| GetTotalSelectedCount | ์ ํ ๊ฐ์ |
| GetSelectionSummary | Multi ์ ํ ์ ๋ณด |
ํ์ฌ๋ Mock ๊ธฐ๋ฐ์ด์ง๋ง
์ค์ ๊ฒ์ ์์คํ
๊ณผ ์ฐ๊ฒฐํด๋ ๊ตฌ์กฐ ๋ณ๊ฒฝ ์์ด ํ์ฅ ๊ฐ๋ฅํ๋๋ก ์ค๋น
| ํญ๋ชฉ | ๊ฒฐ๊ณผ |
|---|---|
| CommandPanel | DataTable ๊ธฐ๋ฐ์ผ๋ก ๋์ |
| SelectionPanel | ID ๊ธฐ๋ฐ + ๋ฉํ๋ฐ์ดํฐ ๋ถ๋ฆฌ |
| UI ๊ตฌ์กฐ | ๋ฐ์ดํฐ / ํํ / ์ถ๋ ฅ ์์ ๋ถ๋ฆฌ |
| ๋ ์ด์์ | ํญ์ ์์ ์ ์ธ 9์นธ ๊ตฌ์กฐ ์ ์ง |
| ํ์ฅ์ฑ | ์ค์ ๊ฒ์ ์์คํ ์ฐ๊ฒฐ ๊ฐ๋ฅํ ๊ตฌ์กฐ ํ๋ณด |
| ์ ์ง๋ณด์ | UI ๋ณ๊ฒฝ ์ ์ฝ๋ ์์ ์์ด ๋ฐ์ดํฐ๋ง์ผ๋ก ๋์ ๊ฐ๋ฅ |
- ์ด๋ฒ ์์ ์ UI๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ
UI๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ๋์ํ๋ ๊ตฌ์กฐ ์์ฒด๋ฅผ ์ ๋ฆฌ- UI๋ ๋ ์ด์ ์ํ๋ฅผ ์ง์ ๊ฐ์ง์ง ์๊ณ ,
Provider์ DataTable์ ์กฐํฉํด ์ถ๋ ฅํ๋ ๊ตฌ์กฐ๋ก ์ ํ