Ranking reforge. SplitRanking is not implemented yet !!!
This commit is contained in:
@ -11,6 +11,7 @@
|
||||
#include "Struct/DTFluxServerResponseStruct.h"
|
||||
#include "Struct/DTFluxRequestStructs.h"
|
||||
#include "Struct/DTFluxRaceDataServerResponse.h"
|
||||
#include "Struct/DTFluxRankingServerResponse.h"
|
||||
#include "Struct/DTFluxTeamListServerResponse.h"
|
||||
#include "Types/Struct/DTFluxRaceDataStructs.h"
|
||||
|
||||
@ -192,6 +193,7 @@ void UFDTFluxNetworkSubsystem::OnWebSocketClosedEvent_Subsystem(int32 StatusCode
|
||||
*WsClient->GetAddress(), *Reason, StatusCode, bWasClean ? TEXT("True") : TEXT("False"));
|
||||
}
|
||||
|
||||
//TODO reforge API to keep track of Requests
|
||||
void UFDTFluxNetworkSubsystem::OnWebSocketMessageEvent_Subsystem(const FString& MessageString)
|
||||
{
|
||||
UE_LOG(logDTFluxNetwork, Warning, TEXT("Ws %s :\nMessage Received : %s"), *WsClient->GetAddress(), *MessageString);
|
||||
@ -265,8 +267,41 @@ void UFDTFluxNetworkSubsystem::OnWebSocketMessageEvent_Subsystem(const FString&
|
||||
UE_LOG(logDTFluxNetwork, Warning, TEXT("Ws Team-List Data Sent"));
|
||||
return OnTeamListReceived.Broadcast(TeamListDefinition);
|
||||
}
|
||||
if(Response.Type.Contains("contest-ranking"))
|
||||
{
|
||||
UE_LOG(logDTFluxNetwork, Warning, TEXT("Ws Contest-Ranking Data"));
|
||||
FDTFluxContestRankingResponse ContestRankingResponse;
|
||||
FJsonObjectConverter::JsonObjectStringToUStruct<FDTFluxContestRankingResponse>(Response.RawMessage, &ContestRankingResponse);
|
||||
FDTFluxContestRankings ContestRankings;
|
||||
ContestRankings.ContestId = ContestRankingResponse.ContestID;
|
||||
for(auto& RankingItem : ContestRankingResponse.Datas)
|
||||
{
|
||||
FDTFluxContestRanking Temp = RankingItem;
|
||||
ContestRankings.Rankings.Add(Temp);
|
||||
}
|
||||
UE_LOG(logDTFluxNetwork, Warning, TEXT("Ws ContestRanking Data Sent for Contest %i"), ContestRankings.ContestId);
|
||||
return OnContestRankingReceived.Broadcast(ContestRankings);
|
||||
}
|
||||
if(Response.Type.Contains("stage-ranking") )
|
||||
{
|
||||
// StageRanking
|
||||
UE_LOG(logDTFluxNetwork, Warning, TEXT("Ws Stage-Ranking Data"));
|
||||
FDTFluxStageRankingResponse StageRankingResponse;
|
||||
FJsonObjectConverter::JsonObjectStringToUStruct<FDTFluxStageRankingResponse>(Response.RawMessage, &StageRankingResponse);
|
||||
FDTFluxStageRankings StageRankings;
|
||||
StageRankings.ContestId = StageRankingResponse.ContestId;
|
||||
StageRankings.StageId = StageRankingResponse.StageId;
|
||||
StageRankings.SplitId = StageRankingResponse.SplitId;
|
||||
for(FDTFluxStageRanking& InRanking : StageRankingResponse.Datas)
|
||||
{
|
||||
FDTFluxStageRanking Temp = InRanking;
|
||||
StageRankings.Rankings.Add(InRanking);
|
||||
}
|
||||
UE_LOG(logDTFluxNetwork, Warning, TEXT("Ws StageRanking Data Sent for Contest %i and Stage %i\n[Result] : %s"),
|
||||
StageRankings.ContestId, StageRankings.StageId, OnStageRankingReceived.ExecuteIfBound(StageRankings) ? TEXT("Executed") : TEXT("Not Bound !!!"));
|
||||
return;
|
||||
}
|
||||
}
|
||||
UE_LOG(logDTFluxNetwork, Error, TEXT("Ws %s :\nMessage Cannot be Parsed\n%s"), *WsClient->GetAddress(), *MessageString);
|
||||
|
||||
}
|
||||
UE_LOG(logDTFluxNetwork, Error, TEXT("Ws %s :\nMessage Received : %s Cannot be Parsed"), *WsClient->GetAddress(), *MessageString);
|
||||
|
||||
@ -43,20 +43,16 @@ public:
|
||||
};
|
||||
|
||||
USTRUCT(BlueprintType)
|
||||
struct DTFLUXNETWORK_API FDTFluxStageRankingResponse
|
||||
struct DTFLUXNETWORK_API FDTFluxStageRankingResponse : public FDTFluxStageRankings
|
||||
{
|
||||
GENERATED_BODY()
|
||||
|
||||
public:
|
||||
UPROPERTY()
|
||||
FString Type = "stage-ranking";
|
||||
UPROPERTY()
|
||||
int ContestID;
|
||||
UPROPERTY()
|
||||
int StageID;
|
||||
UPROPERTY()
|
||||
int SplitID = -1;
|
||||
|
||||
|
||||
UPROPERTY()
|
||||
// ReSharper disable once IdentifierTypo
|
||||
TArray<FDTFluxStageRankingResponseItem> Datas;
|
||||
};
|
||||
};
|
||||
|
||||
@ -7,6 +7,7 @@
|
||||
#include "Subsystems/EngineSubsystem.h"
|
||||
#include "Types/DTFluxNetworkSettingsTypes.h"
|
||||
#include "Types/Enum/DTfluxCoreEnum.h"
|
||||
#include "Types/Struct/DTFluxRankingStructs.h"
|
||||
#include "DTFluxNetworkSubsystem.generated.h"
|
||||
|
||||
|
||||
@ -46,6 +47,22 @@ public:
|
||||
return OnTeamListReceived;
|
||||
};
|
||||
|
||||
DECLARE_DELEGATE_OneParam(FOnStageRankingReceived, const FDTFluxStageRankings&);
|
||||
FOnStageRankingReceived OnStageRankingReceived;
|
||||
FOnStageRankingReceived& OnReceivedStageRanking()
|
||||
{
|
||||
return OnStageRankingReceived;
|
||||
}
|
||||
|
||||
DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnContestRankingReceived, const FDTFluxContestRankings&, ContestRankings);
|
||||
FOnContestRankingReceived OnContestRankingReceived;
|
||||
FOnContestRankingReceived& OnReceivedContestRanking()
|
||||
{
|
||||
return OnContestRankingReceived;
|
||||
};
|
||||
|
||||
|
||||
|
||||
UFUNCTION(BlueprintCallable, Category="DTFlux|Network")
|
||||
void Connect();
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user