BP_Counter + ArchSelect Manager

This commit is contained in:
2024-07-16 18:58:01 +02:00
parent f1b7834743
commit dd40f7fc02
7 changed files with 92 additions and 40 deletions

View File

@ -87,6 +87,6 @@ void UDTFluxCountDownComponent::CountUpTimerFn()
void UDTFluxCountDownComponent::WaitingTimerFn()
{
UE_LOG(LogDTFluxAPI, Log, TEXT("WAITING"));
// UE_LOG(LogDTFluxAPI, Log, TEXT("WAITING"));
}

View File

@ -77,13 +77,13 @@ void UDTFluxSubsystem::LoadConfig(const UDTFluxProjectSettings* Settings)
SubSettings.WebsocketPort = Settings->WebsocketServerPort;
SubSettings.WebsocketAddress = Settings->WebsocketServerAddress;
SubSettings.ProxyAddress = Settings->ProxyAddress;
SubSettings.ProxyPort = Settings->ProxyPort;
TMap<FString,FString> SettingsEndpoints;
SettingsEndpoints.Add(FString("race-data"), Settings->ProxyRaceDataEndpoint);
SettingsEndpoints.Add(FString("contest-ranking"), Settings->ProxyRankingEndpoint);
SettingsEndpoints.Add(FString("stage-ranking"), Settings->ProxyRankingEndpoint);
SettingsEndpoints.Add(FString("team-list"), Settings->ProxyTeamsEndpoint);
SubSettings.ProxyEndpoints = SettingsEndpoints;
// SubSettings.ProxyPort = Settings->ProxyPort;
// TMap<FString,FString> SettingsEndpoints;
// SettingsEndpoints.Add(FString("race-data"), Settings->ProxyRaceDataEndpoint);
// SettingsEndpoints.Add(FString("contest-ranking"), Settings->ProxyRankingEndpoint);
// SettingsEndpoints.Add(FString("stage-ranking"), Settings->ProxyRankingEndpoint);
// SettingsEndpoints.Add(FString("team-list"), Settings->ProxyTeamsEndpoint);
// SubSettings.ProxyEndpoints = SettingsEndpoints;
}
// Get project Settings
@ -359,6 +359,22 @@ void UDTFluxSubsystem::WsReceivedMessage( const FString& MessageReceived)
Event.WsResponseType = StatusUpdate;
}
if(Type.Contains("broadcast-message"))
{
FDTFluxArchSelectResponse ArchSelectResponse;
if( !FJsonObjectConverter::JsonObjectToUStruct
<FDTFluxArchSelectResponse>(Json.ToSharedRef(), &ArchSelectResponse))
{
UE_LOG(LogDTFluxAPI, Error, TEXT("Message %s is not a valid broadcast-message data"), *MessageReceived)
}
for(const auto& ArchSelect : ArchSelectResponse.Datas)
{
ProcessArchSelect(ArchSelect);
}
Event.RawData = "ArchSelect";
Event.WsResponseType = ArchSelect;
UE_LOG(LogDTFluxAPI, Log, TEXT("Received broadcast-message data"));
}
}
OnWsEvent.Broadcast(Event);
}
@ -515,3 +531,8 @@ void UDTFluxSubsystem::ProcessSplitSensor(const FDTFluxSplitSensorResponse& Spli
}
void UDTFluxSubsystem::ProcessArchSelect(FDTFluxArchSelectResponseItem ArchSelectResponse)
{
OnArchSelect.Broadcast(ArchSelectResponse.ContestId, ArchSelectResponse.StageId);
}

View File

@ -288,5 +288,27 @@ struct DTFLUXAPI_API FDTFluxTeamUpdateResponse
TArray<FDTFluxTeamListItemResponse> Datas;
};
USTRUCT()
struct DTFLUXAPI_API FDTFluxArchSelectResponseItem
{
GENERATED_BODY()
UPROPERTY()
FString Type = "arch-select";
UPROPERTY()
int ContestId;
UPROPERTY()
int StageId;
};
USTRUCT()
struct DTFLUXAPI_API FDTFluxArchSelectResponse
{
GENERATED_BODY()
UPROPERTY()
FString Type = "arch-select";
UPROPERTY()
TArray<FDTFluxArchSelectResponseItem> Datas;
};

View File

@ -22,48 +22,48 @@ public:
OnDTFluxProjectSettingsModified OnProjectSettingsModified;
UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
int RaceResultPort = 80;
UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
FString RaceResultUrl = "http://localhost";
UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
FString RaceResultSessionID;
UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
bool bAccessIsLocal = true;
UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
FString StartListAccessToken;
UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
FString GeneralClassificationAccessToken;
UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
FString LiveStageResultsAccessToken ;
// UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
// int RaceResultPort = 80;
//
// UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
// FString RaceResultUrl = "http://localhost";
//
// UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
// FString RaceResultSessionID;
//
// UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
// bool bAccessIsLocal = true;
//
// UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
// FString StartListAccessToken;
//
// UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
// FString GeneralClassificationAccessToken;
//
// UPROPERTY(Category="DTFlux|Config|Race Result API", Config, EditAnywhere, BlueprintReadOnly)
// FString LiveStageResultsAccessToken ;
// Proxy
UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
int WebsocketServerPort = 3000;
UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
FString WebsocketServerAddress = "ws://127.0.0.1";
FString WebsocketServerAddress = "ws://127.0.0.1/ws";
UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
FString ProxyAddress = "http://localhost";
UPROPERTY(Category="DTFlux|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
int ProxyPort = 8000;
UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
FString ProxyRootPath = "/endpoints";
UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
FString ProxyRaceDataEndpoint;
UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
FString ProxyRankingEndpoint;
UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
FString ProxyTeamsEndpoint;
// UPROPERTY(Category="DTFlux|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
// int ProxyPort = 8000;
//
// UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
// FString ProxyRootPath = "/endpoints";
// UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
// FString ProxyRaceDataEndpoint;
// UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
// FString ProxyRankingEndpoint;
// UPROPERTY(Category="DTFlux|Config|Chrono Proxy", Config, EditAnywhere, BlueprintReadOnly)
// FString ProxyTeamsEndpoint;
//Server Config ****NOT USED****

View File

@ -36,6 +36,8 @@ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FOnContestBegin, int, ContestId);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnStageBegin, int, ContestId, int, StageId);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnTimesUp, int, ContestId, int, StageId);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnRestTimeBegin, int, ContestId, int, StageId);
DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FOnArchSelect, int, ContestId, int, StageId);
/**
* DTFlux API Subsystem
*
@ -122,6 +124,8 @@ public:
FOnRestTimeBegin FOnRestTimeBegin;
UPROPERTY(BlueprintAssignable, Category="DTFlux|Events")
FOnRaceDataReceived OnRaceDataReceived;
UPROPERTY(BlueprintAssignable, Category="DTFlux|Events")
FOnArchSelect OnArchSelect;
// UPROPERTY(BlueprintReadWrite, Category="DTFlux|Subsystem|Websocket")
// int ReconnectTimeout = 60; //seconds
@ -168,6 +172,8 @@ public:
UFUNCTION()
void ProcessSplitSensor(const FDTFluxSplitSensorResponse& SplitSensorResponse);
UFUNCTION()
void ProcessArchSelect(FDTFluxArchSelectResponseItem ArchSelectResponse);
UFUNCTION()
void WsConnected();

View File

@ -52,6 +52,7 @@ enum EDTFluxResponseType: uint8
WsConnected = 9 UMETA(DisplayName="WsConnected"),
WsClosed = 10 UMETA(DisplayName="WsClosed"),
WsError = 11 UMETA(DisplayName="WsError"),
ArchSelect = 12 UMETA(DisplayName="ArchSelect"),
};
UENUM(BlueprintType, Category="DTFlux|Subsystem")

View File

@ -3,6 +3,7 @@
#pragma once
#include "CoreMinimal.h"
#include "CrossCompilerCommon.h"
#include "DTFluxModel/DTFluxModel.h"
#include "DTFluxSubsystem/DTFluxSubsystem.h"
#include "UObject/Object.h"
@ -119,4 +120,5 @@ public:
UFUNCTION(BlueprintCallable, Category="DTFlux|Model|Helpers")
static EDTFluxStageStatusType GetStatusType(const int ContestID, const int StageID, UDTFluxDataStorage* DataStorage);
};