KLingo Project Documentation
1.0.0
Unreal Engine 5.6 C++ Project Documentation
로딩중...
검색중...
일치하는것 없음
UPopup_HowToPlay.cpp
이 파일의 문서화 페이지로 가기
1
// Copyright (c) 2025 Doppleddiggong. All rights reserved. Unauthorized copying, modification, or distribution of this file, via any medium is strictly prohibited. Proprietary and confidential.
2
3
#include "
UPopup_HowToPlay.h
"
4
#include "
UPageScrollView.h
"
5
#include "
UPageScrollItem.h
"
6
#include "
UPopup_HowToPlayItem.h
"
7
#include "
UPopupManager.h
"
8
#include "
UTextureButton.h
"
9
#include "
UGameDataManager.h
"
10
11
void
UPopup_HowToPlay::InitPopup
(
const
TArray<EHowToPlayPageType>& InPageTypes )
12
{
13
// 버튼 이벤트 바인딩
14
if
(
Btn_Close
)
15
{
16
Btn_Close
->OnButtonClickedEvent.RemoveDynamic(
this
, &
UPopup_HowToPlay::OnClickClose
);
17
Btn_Close
->OnButtonClickedEvent.AddDynamic(
this
, &
UPopup_HowToPlay::OnClickClose
);
18
}
19
20
if
(
Btn_Prev
)
21
{
22
Btn_Prev
->OnButtonClickedEvent.RemoveDynamic(
this
, &
UPopup_HowToPlay::OnClickPrev
);
23
Btn_Prev
->OnButtonClickedEvent.AddDynamic(
this
, &
UPopup_HowToPlay::OnClickPrev
);
24
}
25
26
if
(
Btn_Next
)
27
{
28
Btn_Next
->OnButtonClickedEvent.RemoveDynamic(
this
, &
UPopup_HowToPlay::OnClickNext
);
29
Btn_Next
->OnButtonClickedEvent.AddDynamic(
this
, &
UPopup_HowToPlay::OnClickNext
);
30
}
31
32
PageTypes
= InPageTypes;
33
34
InitPageScrollView
();
35
36
UpdateNavigationButtons
();
37
}
38
39
void
UPopup_HowToPlay::InitPageScrollView
()
40
{
41
if
(!
PageScrollView
)
42
return
;
43
44
// 5개 페이지 생성
45
PageScrollView
->SetNumberOfPages(
PageTypes
.Num());
46
47
// 페이지 변경 이벤트 바인딩
48
PageScrollView
->OnPageChanged.RemoveDynamic(
this
, &
UPopup_HowToPlay::OnPageChanged
);
49
PageScrollView
->OnPageChanged.AddDynamic(
this
, &
UPopup_HowToPlay::OnPageChanged
);
50
51
// 각 페이지에 데이터 설정
52
TArray<FHowToPlayPageData> PageDataArray =
GetPageDataArray
();
53
for
(int32 i = 0; i < PageDataArray.Num() && i < PageScrollView->GetTotalPages(); ++i)
54
{
55
if
(
auto
Page = Cast<UPopup_HowToPlayItem>(
PageScrollView
->GetPageAt(i)))
56
{
57
Page->InitPageData(PageDataArray[i]);
58
}
59
}
60
}
61
62
void
UPopup_HowToPlay::UpdateNavigationButtons
()
63
{
64
if
(!
PageScrollView
)
65
return
;
66
67
Btn_Prev
->SetVisibility(
PageTypes
.Num() > 1 ? ESlateVisibility::Visible : ESlateVisibility::Hidden );
68
Btn_Next
->SetVisibility(
PageTypes
.Num() > 1 ? ESlateVisibility::Visible : ESlateVisibility::Hidden );
69
70
int32 CurPage =
PageScrollView
->GetCurrentPage();
71
int32 TotalPages =
PageScrollView
->GetTotalPages();
72
73
// 이전 버튼 활성화/비활성화
74
Btn_Prev
->SetIsEnabled(CurPage > 0);
75
76
// 다음 버튼 활성화/비활성화
77
Btn_Next
->SetIsEnabled(CurPage < TotalPages - 1);
78
}
79
80
void
UPopup_HowToPlay::OnClickClose
()
81
{
82
// PopupManager를 통해 팝업 닫기
83
if
(
UPopupManager
* PopupMgr = UPopupManager::Get(GetWorld()))
84
{
85
PopupMgr->HideCurrentPopup();
86
}
87
88
// 델리게이트 호출
89
if
(
OnClosedDelegate
.IsBound())
90
{
91
OnClosedDelegate
.Execute();
92
OnClosedDelegate
=
nullptr
;
93
}
94
}
95
96
void
UPopup_HowToPlay::OnClickPrev
()
97
{
98
PageScrollView
->PrevPage();
99
}
100
101
void
UPopup_HowToPlay::OnClickNext
()
102
{
103
PageScrollView
->NextPage();
104
}
105
106
void
UPopup_HowToPlay::OnPageChanged
(int32 PrevPage, int32 CurrentPage)
107
{
108
// 네비게이션 버튼 상태 업데이트
109
UpdateNavigationButtons
();
110
}
111
112
TArray<FHowToPlayPageData>
UPopup_HowToPlay::GetPageDataArray
()
const
113
{
114
TArray<FHowToPlayPageData> RetData;
115
116
if
(
auto
DM = UGameDataManager::Get(GetWorld()) )
117
{
118
for
(
const
EHowToPlayPageType
& pageType :
PageTypes
)
119
{
120
FHowToPlayPageData
pageData;
121
if
(DM->GetHowToPlayPageData(pageType, pageData))
122
RetData.Add(pageData);
123
}
124
}
125
126
return
RetData;
127
}
EHowToPlayPageType
EHowToPlayPageType
HowToPlay 페이지 타입
Definition
FHowToPlayPageData.h:12
UGameDataManager.h
UGameDataManager 클래스를 선언합니다.
UPageScrollItem.h
UPageScrollView.h
UPopupManager.h
UPopup_HowToPlayItem.h
UPopup_HowToPlay.h
UTextureButton.h
UPopupManager
팝업 관리자
Definition
UPopupManager.h:31
UPopup_HowToPlay::InitPageScrollView
void InitPageScrollView()
Definition
UPopup_HowToPlay.cpp:39
UPopup_HowToPlay::PageTypes
TArray< EHowToPlayPageType > PageTypes
Definition
UPopup_HowToPlay.h:74
UPopup_HowToPlay::InitPopup
void InitPopup(const TArray< EHowToPlayPageType > &InPageTypes)
팝업을 초기화합니다.
Definition
UPopup_HowToPlay.cpp:11
UPopup_HowToPlay::OnClickPrev
void OnClickPrev()
이전 페이지 버튼 클릭 이벤트
Definition
UPopup_HowToPlay.cpp:96
UPopup_HowToPlay::OnClickNext
void OnClickNext()
다음 페이지 버튼 클릭 이벤트
Definition
UPopup_HowToPlay.cpp:101
UPopup_HowToPlay::UpdateNavigationButtons
void UpdateNavigationButtons()
페이지 네비게이션 버튼 상태를 업데이트합니다.
Definition
UPopup_HowToPlay.cpp:62
UPopup_HowToPlay::Btn_Close
TObjectPtr< class UTextureButton > Btn_Close
닫기 버튼 (우측 상단)
Definition
UPopup_HowToPlay.h:63
UPopup_HowToPlay::PageScrollView
TObjectPtr< class UPageScrollView > PageScrollView
페이지 스크롤 뷰
Definition
UPopup_HowToPlay.h:59
UPopup_HowToPlay::OnPageChanged
void OnPageChanged(int32 PrevPage, int32 CurrentPage)
페이지 변경 이벤트
Definition
UPopup_HowToPlay.cpp:106
UPopup_HowToPlay::Btn_Next
TObjectPtr< class UTextureButton > Btn_Next
다음 페이지 버튼 (선택적)
Definition
UPopup_HowToPlay.h:71
UPopup_HowToPlay::OnClosedDelegate
FOnHowToPlayClosedDelegate OnClosedDelegate
팝업 닫힘 시 호출될 델리게이트
Definition
UPopup_HowToPlay.h:54
UPopup_HowToPlay::Btn_Prev
TObjectPtr< class UTextureButton > Btn_Prev
이전 페이지 버튼 (선택적)
Definition
UPopup_HowToPlay.h:67
UPopup_HowToPlay::GetPageDataArray
TArray< FHowToPlayPageData > GetPageDataArray() const
페이지 데이터 배열을 가져옵니다.
Definition
UPopup_HowToPlay.cpp:112
UPopup_HowToPlay::OnClickClose
void OnClickClose()
닫기 버튼 클릭 이벤트
Definition
UPopup_HowToPlay.cpp:80
FHowToPlayPageData
HowToPlay 페이지 데이터
Definition
FHowToPlayPageData.h:45
Source
Onepiece
MessageBox
Private
UPopup_HowToPlay.cpp
생성시간 : 금 1월 9 2026 00:25:57, 프로젝트명 : KLingo Project Documentation, 생성자 :
1.9.8