헤더
// Fill out your copyright notice in the Description page of Project Settings.
#pragma once
#include "CoreMinimal.h"
#include "Blueprint/UserWidget.h"
#include "../Server/Net_ServerCore.h"
#include "LobbyWidget/W_Interact.h"
//#include "LobbyWidget/W_RMOutline.h"
#include "W_LobbyMain.generated.h"
/**
*
*/
UCLASS()
class KANGNAMSQUARE_API UW_LobbyMain : public UUserWidget
{
GENERATED_BODY()
protected:
//virtual void NativeOnInitialized() override;
//virtual void NativePreConstruct() override;
virtual void NativeConstruct() override;
//virtual void NativeDestruct() override;
//virtual void NativeTick(const FGeometry& MyGeometry, float InDeltaTime);
UPROPERTY(Meta = (BindWidget))
class UButton* _btn_OpenChat;
UPROPERTY(Meta = (BindWidget))
class UButton* _btn_CloseChat;
UPROPERTY(Meta = (BindWidget))
class UEditableTextBox* _ET_chat;
/*
UPROPERTY(Meta = (BindWidget))
class UW_Interact* _btn_Interact;
UPROPERTY(meta= (BindeWidget))
class UW_JumpButton* _Btn_Jump;
UPROPERTY()
class UW_IconOutline* Icon_Outline;
UPROPERTY()
class UW_RMOutline* RMOutline;
public:
UPROPERTY()
class UW_SelectOption* SelectOption;
UPROPERTY()
class UW_AccountManagement* AccountManagement;
*/
public:
UFUNCTION()
void Click_OpenChat();
UFUNCTION()
void Click_CloseChat();
UFUNCTION()
void Committed_Chat(const FText& message, ETextCommit::Type commitType);
public:
void FindServer();
bool IsInvalidServer();
ANet_ServerCore* GetLobbyServer() const;
private:
UPROPERTY()
ANet_ServerCore* _lobbyServer;
};
cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "W_LobbyMain.h"
#include <Components/EditableTextBox.h>
#include <Components/Button.h>
#include <Components/CanvasPanel.h>
#include <Runtime/UMG/Public/Blueprint/WidgetBlueprintLibrary.h>
#include "../Framework/KangnamMain/CC_KangnamMain.h"
#include "../Server/Lobby/Net_lobbyServer.h"
#include <Runtime/Engine/Classes/Kismet/GameplayStatics.h>
//#include "LobbyWidget/W_AccountManagement.h"
//#include "LobbyWidget/W_IconOutline.h"
//#include "LobbyWidget/W_RMOutline.h"
//#include "LobbyWidget/W_Interact.h"
//#include "LobbyWidget/W_JumpButton.h"
//#include "LobbyWidget/W_Option.h"
//#include "LobbyWidget/W_RMOutline.h"
//#include "LobbyWidget/W_SelectOption.h"
void UW_LobbyMain::NativeConstruct()
{
Super::NativeConstruct();
//Init
_btn_OpenChat = Cast<UButton>(GetWidgetFromName(TEXT("_btn_OpenChat")));
_btn_CloseChat = Cast<UButton>(GetWidgetFromName(TEXT("_btn_CloseChat")));
_ET_chat = Cast<UEditableTextBox>(GetWidgetFromName(TEXT("_ET_chat")));
/*
_Btn_Jump=Cast<UW_JumpButton>(GetWidgetFromName(TEXT("_btn_GJump")));
_Btn_Jump=Cast<UW_JumpButton>(GetWidgetFromName(TEXT("_btn_GJump")));
_btn_Interact = Cast<UW_Interact>(GetWidgetFromName(TEXT("_btn_Interact")));
Icon_Outline=Cast<UW_IconOutline>(GetWidgetFromName(TEXT("IconOutline")));
RMOutline=Cast<UW_RMOutline>(GetWidgetFromName(TEXT("_RMOutline")));
SelectOption=Cast<UW_SelectOption>(GetWidgetFromName(TEXT("Select_Option")));
AccountManagement=Cast<UW_AccountManagement>(GetWidgetFromName(TEXT("Account_Management")));
*/
//UEditableTextBox
_ET_chat->SetHintText(FText::FromString(FString(TEXT("Input Comment..."))));
if (_ET_chat != nullptr)
{
_ET_chat->OnTextCommitted.AddDynamic(this, &UW_LobbyMain::Committed_Chat);
}
//UButton
if (_btn_OpenChat != nullptr)
{
_btn_OpenChat->OnClicked.AddDynamic(this, &UW_LobbyMain::Click_OpenChat);
}
if (_btn_CloseChat != nullptr)
{
_btn_CloseChat->OnClicked.AddDynamic(this, &UW_LobbyMain::Click_CloseChat);
}
_btn_CloseChat->SetVisibility(ESlateVisibility::Hidden);
_ET_chat->SetVisibility(ESlateVisibility::Hidden);
//
FindServer();
//
}
void UW_LobbyMain::Click_OpenChat()
{
_btn_OpenChat->SetVisibility(ESlateVisibility::Hidden);
_btn_CloseChat->SetVisibility(ESlateVisibility::Visible);
_ET_chat->SetVisibility(ESlateVisibility::Visible);
}
void UW_LobbyMain::Click_CloseChat()
{
_btn_OpenChat->SetVisibility(ESlateVisibility::Visible);
_btn_CloseChat->SetVisibility(ESlateVisibility::Hidden);
_ET_chat->SetVisibility(ESlateVisibility::Hidden);
}
void UW_LobbyMain::Committed_Chat(const FText& message, ETextCommit::Type commitType)
{
if (ETextCommit::Type::OnEnter == commitType)
{
UE_LOG(LogTemp,Warning,TEXT("%s"),*message.ToString());
ANet_ServerCore* ProudNetActor = Cast<ANet_ServerCore>(UGameplayStatics::GetActorOfClass(GetWorld(), ANet_ServerCore::StaticClass()));
Proud::HostID LocalRemoteID = ProudNetActor->_client->GetLocalHostID();
Proud::RmiContext context = Proud::RmiContext::ReliableSend;
Proud::String stream = ProudHelper::StringFS2PS(message.ToString());
if (IsInvalidServer())
{
UE_LOG(LogTemp, Warning, TEXT("IsInvalid"));
_lobbyServer->_lobbyServer->GetProxy()->SendChat(Proud::HostID_Server, context, stream);
}
_ET_chat->SetText(FText::FromString(FString(TEXT(""))));
}
}
void UW_LobbyMain::FindServer()
{
if (GetWorld())
{
_lobbyServer = Cast<ANet_ServerCore>(UGameplayStatics::GetActorOfClass(GetWorld(), ANet_ServerCore::StaticClass()));
if (_lobbyServer)
{
UE_LOG(LogTemp, Warning, TEXT("Success Find lobbyServer"));
//RMOutline->SetOwner(this);
//UE_LOG(LogTemp,Warning,TEXT("RM %d"),RMOutline->_lobbyMain);
//_btn_Interact->SetOwner(this);
//UE_LOG(LogTemp,Warning,TEXT("inter %d"),_btn_Interact->_lobbyMain);
}
else
{
UE_LOG(LogTemp, Warning, TEXT("Failed Find lobbyServer"));
}
}
}
bool UW_LobbyMain::IsInvalidServer()
{
if (_lobbyServer)
{
UE_LOG(LogTemp, Warning, TEXT("Success"));
if (_lobbyServer->_lobbyServer->IsConnect())
{
UE_LOG(LogTemp, Warning, TEXT("Success Find "));
return true;
}
}
UE_LOG(LogTemp, Warning, TEXT("Failed"));
return false;
}
ANet_ServerCore* UW_LobbyMain::GetLobbyServer() const
{
return _lobbyServer;
}
'Unreal Engine 4 > Unreal Engine 4' 카테고리의 다른 글
ue4 2022/05/02 tick (0) | 2022.05.02 |
---|---|
2022/04/12 백업본 (0) | 2022.04.12 |
2022/03/29 360도 캐릭터 백업 (0) | 2022.03.29 |
OrbitingMovement 컴포넌트 생성 (0) | 2022.03.24 |
계층구조 만들기 (0) | 2022.03.22 |