
전 글에서 경로 오류로 파일을 읽지 못했었는데
폴더를 정리 한 후 다시 해보니 되었다

DataManager에 아이템 수량 표시 함수를 만들어 주고



이제 각 패널들을 만들어준다.
우선 Store상점 패널 먼저 만들어 보겠다.
Object폴더 안에 Inventory폴더를 만들고 해당 폴더 안에 StorePanel을 만들어 준다.


다음 Goods.h를 만들어 스토어 패널에 올려줄 아이템의 정보들을 올려준다
하고 실행해서 Store를 클릭하면 내가 설정한 아이템 목록이 잘 뜨는 것을 확인할 수 있다.



이제 InventoryPanel.h를 만들어 인벤토리 패널을 만들어 보자
일단 그전에 패턴에 대해서 하나 알고가면 좋다
1. 옵저버 패턴
부모자식관계에서 많이 쓰는 패턴으로 조금 복잡하다.
지금 UI를 만들면서 확실한건 매우 복잡하다는 단점이 있다. 왔다갔다
이러한 단점을 훨씬 편리하게 하는 방법이 옵저버 패턴을 사용하는 것이다.
주제자체를 전역으로 빼서 어디에 있든 한번에 자신이 호출하고 관리하는 방법이다
함수포인터의 전역화로 모든 함수를 전역화 한다. 단 전역으로 쓰기에 위험도가 조금 높다.

우선 Manager폴더에 Eventmanager.h를 하나 만들어서 여러 이벤트를 한번에 관리해준다.

다음 UI에 패딩을 넣어주기 위해 GameObject.h에 함수 하나 추가해준다.

이제 InventoryScene.cpp에서 패널이 만들어 질때 마다 패딩을 주는 코드를 추가한다.

다음 기존에 CENTER로 적혀있는 값을 창에 맞게 오른쪽으로 좀 떙겨주기 위해 Vector2(200, CENTER_Y)로 수정을 해준다.

그러고 실행을 해보면 패널은 겹치지 않게 잘 열리나 닫기 버튼이 이상한 곳으로 가있기 떄문에
해당 값을 패널의 오른쪽 상단으로 수정해준다.

이제 상점, 인벤토리, 장비창 세개를 하나의 화면에서 편하게 볼 수 있는 것을 확인할 수 있다.



다음 키로 구매가 아닌 버튼형식의 구매,판매를 만들어주기 위해 StorePanel.h로 이동해서
버튼 생성,소멸과 업데이트 및 렌더 해준다.


InventoryPanel은 UI의 기능만 담당하게 하기 위해 골드와 아이템 데이터값 가져오는 부분 주석처리해주고
기능을 분리해준다.


제거한 부분의 기능은 따로 InventoryPlayer를 만들어 관리한다.


벡터의 곱셈이 일부 프로그램에서는 작동되지 않지만 여기서는 가능하기에 Vector2.h에
연산자 오버로딩으로 추가해주고


InventoryPanel에서 아이템을 일렬로 표시하는게 아닌
ROW, COL COUNT로 3 * 4의 크기로 해주기 위해 표시에 제한을 주고(인벤토리 창 범위 밖으로 벗어나는것을 방지)


InventoryPlayer에서 아이템의 개수를 제한 해주고, 구매를 더 할려고 할 경우 메시지 출력하고

StorePanel로 이동해 골드가 없으면 구매 불가 메세지도 출력하도록 코드를 추가해준다.
동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.
이제 테스트를 해보면 잘 동작되는것을 확인할 수 있다.
다음 글에서는 오늘 못한 판매와 장비 등 기능을 더 추가할 예정이다
'WinAPI' 카테고리의 다른 글
| 다시 공부 하는 Win API (12) - UI - Inventory 제작(4) (0) | 2025.12.29 |
|---|---|
| 다시 공부 하는 Win API (11) - UI - Inventory 제작(3) (0) | 2025.12.24 |
| 다시 공부 하는 Win API (9) - UI - Inventory 제작(1) (0) | 2025.12.12 |
| 다시 공부 하는 Win API (8) - UI 제작(1) (0) | 2025.12.10 |
| 다시 공부 하는 Win API (7) - Scene Management, 공간 분할 기법활용 (0) | 2025.12.09 |