Project Type | Personal project |
Software Used | Unreal Engine 4 |
Languages Used | C++, Blueprints |
Primary Role(s) | Multiplayer programming |
UCLASS() class PUZZLEPLATFORMS_API UPuzzlePlatformsGameInstance : public UGameInstance, public IMenuInterface { GENERATED_BODY() public: UPuzzlePlatformsGameInstance(const FObjectInitializer & ObjectInitializer); void Init(); UFUNCTION(BlueprintCallable, Category = "Menu") void LoadMenuWidget(); UFUNCTION(BlueprintCallable, Category = "Menu") void LoadPauseMenu(); UFUNCTION(Exec) void Host(FString ServerName) override; UFUNCTION(Exec) void Join(uint32 Index) override; void StartSession(); virtual void LoadMainMenu() override; virtual void ExitGame() override; virtual void RefreshingServerList() override; private: TSubclassOfMenuClass; TSubclassOf InGameMenuClass; TSharedPtr SessionSearch; IOnlineSessionPtr SessionInterface; // we can't forward declear this bvecause it will need a pointer and it is interface. class UMainMenu* Menu; FString DesiredServerName; void OnCreateSessionComplete(FName SessionName, bool Success); void OnDestroySessionComplete(FName SessionName, bool Success); void OnFindSessionsComplete(bool Success); void OnJoinSessionComplete(FName SessionName, EOnJoinSessionCompleteResult::Type Results); void CreateSession(); };
UCLASS() class PUZZLEPLATFORMS_API UMainMenu : public UMenuWidget { GENERATED_BODY() public: UMainMenu(const FObjectInitializer & ObjectInitializer); void SetServerList(TArrayServerNames); void SelectIndex(uint32 Index); protected: virtual bool Initialize() override; private: UPROPERTY(meta = (BindWidget)) class UButton* HostButton; UPROPERTY(meta = (BindWidget)) class UButton* JoinButton; UPROPERTY(meta = (BindWidget)) class UButton* CancelButton; UPROPERTY(meta = (BindWidget)) class UButton* ConfirmJoinServerButton; UPROPERTY(meta = (BindWidget)) class UButton* RefreshServerListButton; UPROPERTY(meta = (BindWidget)) class UButton* QuitButton; UPROPERTY(meta = (BindWidget)) class UButton* ConfirmHostAServerButton; UPROPERTY(meta = (BindWidget)) class UButton* HostServerCancelButton; UPROPERTY(meta = (BindWidget)) class UEditableTextBox* ServerNameTextBox; UPROPERTY(meta = (BindWidget)) class UPanelWidget* ServerList; UPROPERTY(meta = (BindWidget)) class UWidgetSwitcher* MenuSwitcher; UPROPERTY(meta = (BindWidget)) class UWidget* JoinMenu; UPROPERTY(meta = (BindWidget)) class UWidget* HostAServerMenu; UPROPERTY(meta = (BindWidget)) class UWidget* MainMenu; TSubclassOf ServerRowClass; UFUNCTION() void HostServer(); UFUNCTION() void OpenJoinMenu(); UFUNCTION() void RefreshServerList(); UFUNCTION() void OpenHostAServerMenu(); UFUNCTION() void ReturnToMainMenu(); UFUNCTION() void JoinServer(); UFUNCTION() void QuitClicked(); void UpdateChildren(); TOptional SelectedIndex;