2022/04/12 백업본

2022. 4. 12. 22:22·Unreal Engine 4/Unreal Engine 4
반응형

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()
{
   UE_LOG(LogTemp,Warning,TEXT("ClickChat"));
   _btn_OpenChat->SetVisibility(ESlateVisibility::Hidden);
   _btn_CloseChat->SetVisibility(ESlateVisibility::Visible);
   _ET_chat->SetVisibility(ESlateVisibility::Visible);
}

void UW_LobbyMain::Click_CloseChat()
{
   UE_LOG(LogTemp,Warning,TEXT("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 %d"),_lobbyServer);

         _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_TEST %d"),_lobbyServer);
         //RMOutline->SetOwner(this);
         _btn_Interact->SetOwner(this);
      }
      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;
}
// 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()
{
   UE_LOG(LogTemp,Warning,TEXT("ClickChat"));
   _btn_OpenChat->SetVisibility(ESlateVisibility::Hidden);
   _btn_CloseChat->SetVisibility(ESlateVisibility::Visible);
   _ET_chat->SetVisibility(ESlateVisibility::Visible);
}

void UW_LobbyMain::Click_CloseChat()
{
   UE_LOG(LogTemp,Warning,TEXT("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 %d"),_lobbyServer);

         _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_TEST %d"),_lobbyServer);
         //RMOutline->SetOwner(this);
         _btn_Interact->SetOwner(this);
      }
      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;
}
// 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;
};
반응형
저작자표시 (새창열림)

'Unreal Engine 4 > Unreal Engine 4' 카테고리의 다른 글

ue4 2022/05/02 tick  (0) 2022.05.02
2022/04/07 로비메뉴 백업  (1) 2022.04.07
2022/03/29 360도 캐릭터 백업  (0) 2022.03.29
OrbitingMovement 컴포넌트 생성  (0) 2022.03.24
계층구조 만들기  (0) 2022.03.22
'Unreal Engine 4/Unreal Engine 4' 카테고리의 다른 글
  • ue4 2022/05/02 tick
  • 2022/04/07 로비메뉴 백업
  • 2022/03/29 360도 캐릭터 백업
  • OrbitingMovement 컴포넌트 생성
숯불돼지왕갈비
숯불돼지왕갈비
  • 숯불돼지왕갈비
    게임 개발 공부기
    숯불돼지왕갈비
  • 전체
    오늘
    어제
    • 분류 전체보기 (303)
      • 학교수업 (165)
      • 취업강의 (6)
      • C++ (46)
        • 코딩 테스트 (4)
      • Unreal Engine 5 (25)
        • MMORPG 개발 (25)
      • Unreal Engine 4 (44)
        • Omak Project (3)
        • Unreal Engine 4 개발일지 (9)
        • Unreal Engine 4 (32)
      • Unity (1)
        • 개발 일지 (1)
      • 수학 (3)
        • 소프트웨어 공학용 수학 (3)
      • DirectX 11 (4)
      • 게임 디자인 패턴 (2)
      • 포트폴리오 (1)
      • 자격증 (1)
        • 정보처리기사 (0)
        • SQLD (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
숯불돼지왕갈비
2022/04/12 백업본
상단으로

티스토리툴바