|
|
@@ -8,6 +8,40 @@
|
|
|
#include "Misc/Timespan.h"
|
|
|
#include <Runtime/Engine/Classes/Kismet/KismetMathLibrary.h>
|
|
|
|
|
|
+FString UMyBlueprintFunctionLibrary::MyText()
|
|
|
+{
|
|
|
+ int64 StartTimestamp = 1629431914;
|
|
|
+ //int64 EndTimestamp = 1629393979;
|
|
|
+ FDateTime StartTime = UnixTimestampToDateTime(StartTimestamp);
|
|
|
+ //FTimespan Duration = FTimespan(8, 0, 0);
|
|
|
+ StartTime = StartTime + (FDateTime::Now()-FDateTime::UtcNow());
|
|
|
+ //FDateTime EndTime = UnixTimestampToDateTime(EndTimestamp);
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("StartTime======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+ //UE_LOG(LogTemp, Log, TEXT("EndTime======%s"), *EndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+
|
|
|
+
|
|
|
+ //FDateTime NowTime = FDateTime::UtcNow();
|
|
|
+ //UE_LOG(LogTemp, Log, TEXT("Now======%s"), *NowTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+ //获取时间戳
|
|
|
+ //int64 NowTimestamp = NowTime.ToUnixTimestamp();
|
|
|
+ //UE_LOG(LogTemp, Log, TEXT("%d"), NowTimestamp);
|
|
|
+
|
|
|
+
|
|
|
+ //EndTime = StartTime+ FTimespan::FromSeconds(30);
|
|
|
+ //UE_LOG(LogTemp, Log, TEXT("TimeUsed======%d"), (EndTime - StartTime).GetSeconds());
|
|
|
+ /*UE_LOG(LogTemp, Log, TEXT("StartTime1======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("StartTimestamp======%d"), DateTimeToUnixTimestamp(StartTime));
|
|
|
+ StartTime = UnixTimestampToDateTime(DateTimeToUnixTimestamp(StartTime));
|
|
|
+
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("StartTime2======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("EndTime======%s"), *EndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+
|
|
|
+
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("TimeUsed1======%d"), (EndTime - StartTime).GetSeconds());*/
|
|
|
+
|
|
|
+ return TEXT("MyTest");
|
|
|
+}
|
|
|
+
|
|
|
FDateTime UMyBlueprintFunctionLibrary::UnixTimestampToDateTime(int64 UnixTime)
|
|
|
{
|
|
|
FDateTime Time = FDateTime::FromUnixTimestamp(UnixTime);
|
|
|
@@ -18,10 +52,64 @@ FDateTime UMyBlueprintFunctionLibrary::UnixTimestampToDateTime(int64 UnixTime)
|
|
|
int64 UMyBlueprintFunctionLibrary::DateTimeToUnixTimestamp(FDateTime DateTime)
|
|
|
{
|
|
|
int64 Timestamp = DateTime.ToUnixTimestamp();
|
|
|
-
|
|
|
return Timestamp;
|
|
|
}
|
|
|
|
|
|
+int32 UMyBlueprintFunctionLibrary::GetCurrentIndex(FString RawDataJson)
|
|
|
+{
|
|
|
+ int32 CurrentIndex = 0;
|
|
|
+ TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader2 = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader2, JsonObjectValue))
|
|
|
+ {
|
|
|
+ for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
+
|
|
|
+ TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
+ double EndTimeStamp = jsonMember->GetIntegerField(TEXT("EndTime"));
|
|
|
+ if (EndTimeStamp == 0)
|
|
|
+ {
|
|
|
+ CurrentIndex = i;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+ //int32 Score = jsonMember->GetIntegerField(TEXT("Score"));
|
|
|
+ ////UE_LOG(LogTemp, Log, TEXT("Score======%d"), Score);
|
|
|
+ //if (Score==-1)
|
|
|
+ //{
|
|
|
+ // CurrentIndex = i;
|
|
|
+ // break;
|
|
|
+ //}
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return CurrentIndex;
|
|
|
+}
|
|
|
+
|
|
|
+FString UMyBlueprintFunctionLibrary::GetCallBackJsonStr(FString RawDataJson)
|
|
|
+{
|
|
|
+ JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
+
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
+
|
|
|
+ FString JsonIDStr;
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
|
|
|
+ {
|
|
|
+ double Code = JsonRootObject->GetNumberField(TEXT("Code"));
|
|
|
+
|
|
|
+ if (Code != 100)
|
|
|
+ {
|
|
|
+ return "";
|
|
|
+ }
|
|
|
+
|
|
|
+ JsonObjectPtr JsonExamObject = JsonRootObject->GetObjectField(TEXT("Exam"));
|
|
|
+
|
|
|
+ JsonIDStr = JsonExamObject->GetStringField(TEXT("ScoreStep"));
|
|
|
+ return JsonIDStr;
|
|
|
+ }
|
|
|
+
|
|
|
+ return "";
|
|
|
+}
|
|
|
+
|
|
|
FString UMyBlueprintFunctionLibrary::GetTempScoresStr(FString RawDataJson)
|
|
|
{
|
|
|
JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
@@ -152,7 +240,8 @@ int64 UMyBlueprintFunctionLibrary::GetStartTimestamp(FString RawDataJson)
|
|
|
|
|
|
if (FJsonSerializer::Deserialize(JsonReader, JsonRootObject))
|
|
|
{
|
|
|
- return JsonRootObject->GetNumberField(TEXT("StartTime"));
|
|
|
+ JsonObjectPtr ExamObj = JsonRootObject->GetObjectField(TEXT("Exam"));
|
|
|
+ return ExamObj->GetNumberField(TEXT("StartTime"));
|
|
|
}
|
|
|
|
|
|
return 0;
|
|
|
@@ -203,10 +292,8 @@ int32 UMyBlueprintFunctionLibrary::GetScore(FString RawDataJson, int32 ScoreInde
|
|
|
return Score;
|
|
|
}
|
|
|
|
|
|
-FString UMyBlueprintFunctionLibrary::SetScoreJson(FString RawDataJson, FString ExamId, FString UserID, int32 Score, int32 ScoreIndex)
|
|
|
+FString UMyBlueprintFunctionLibrary::SetScoreJson(FString RawDataJson, FString ExamId, FString UserID, int32 Score, int32 ScoreIndex,int64 StartTimeStamp,int64 EndTimeStamp)
|
|
|
{
|
|
|
- //ABP_GameState * BP_GameState = Cast<ABP_GameState>(AGameState);
|
|
|
-
|
|
|
JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
JsonRootObject->SetStringField(TEXT("UserID"), UserID);
|
|
|
JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
|
|
|
@@ -229,7 +316,6 @@ FString UMyBlueprintFunctionLibrary::SetScoreJson(FString RawDataJson, FString E
|
|
|
double MaxScore = jsonMember->GetNumberField(TEXT("MaxScore"));
|
|
|
int32 Evaluation = Score / MaxScore * 100;
|
|
|
|
|
|
-
|
|
|
FString EvaluationStr = TEXT("不及格");
|
|
|
if (Evaluation < 60)
|
|
|
{
|
|
|
@@ -261,7 +347,7 @@ FString UMyBlueprintFunctionLibrary::SetScoreJson(FString RawDataJson, FString E
|
|
|
JsonRootObject->SetStringField(TEXT("Score"), ScoresString);
|
|
|
|
|
|
// set start time
|
|
|
- double StartTimeStamp = 0;
|
|
|
+ /*double StartTimeStamp = 0;
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
@@ -271,11 +357,11 @@ FString UMyBlueprintFunctionLibrary::SetScoreJson(FString RawDataJson, FString E
|
|
|
StartTimeStamp = STStamp;
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
|
|
|
- double EndTimeStamp = 0;
|
|
|
+ /*double EndTimeStamp = 0;
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
@@ -284,11 +370,17 @@ FString UMyBlueprintFunctionLibrary::SetScoreJson(FString RawDataJson, FString E
|
|
|
{
|
|
|
EndTimeStamp = ETStamp;
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
// set end time
|
|
|
//JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
|
|
|
+
|
|
|
+ /* UE_LOG(LogTemp, Log, TEXT("StartTimeStamp======%d"), StartTimeStamp);
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("AStartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), EndTimeStamp);
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("AEndTime======%s"), *AEndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));*/
|
|
|
// set TimeUsed
|
|
|
if (EndTimeStamp - StartTimeStamp > 0)
|
|
|
{
|
|
|
@@ -310,7 +402,7 @@ FString UMyBlueprintFunctionLibrary::SetScoreJson(FString RawDataJson, FString E
|
|
|
return OutPutString;
|
|
|
}
|
|
|
|
|
|
-FString UMyBlueprintFunctionLibrary::SetOtherScoreJson(FString UserID, FString ExamId,FString ScoresStr, TArray<int32> Scores)
|
|
|
+FString UMyBlueprintFunctionLibrary::SetOtherScoreJson(FString UserID, FString ExamId,FString ScoresStr, TArray<int32> Scores, int64 StartTimeStamp, int64 EndTimeStamp)
|
|
|
{
|
|
|
JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
JsonRootObject->SetStringField(TEXT("UserID"), UserID);
|
|
|
@@ -324,42 +416,158 @@ FString UMyBlueprintFunctionLibrary::SetOtherScoreJson(FString UserID, FString E
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
jsonMember->SetNumberField(TEXT("Score"), Scores[i]);
|
|
|
+
|
|
|
+ double MaxScore = jsonMember->GetNumberField(TEXT("MaxScore"));
|
|
|
+ int32 Evaluation = Scores[i] / MaxScore * 100;
|
|
|
+
|
|
|
+ FString EvaluationStr = TEXT("不及格");
|
|
|
+ if (Evaluation < 60)
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("不及格");
|
|
|
+ }
|
|
|
+ else if (Evaluation > 60 && Evaluation < 85)
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("及格");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("优秀");
|
|
|
+ }
|
|
|
+
|
|
|
+ jsonMember->SetStringField(TEXT("Evaluation"), EvaluationStr);
|
|
|
+
|
|
|
+ auto RepeatCount = jsonMember->GetNumberField(TEXT("RepeatCount"));
|
|
|
+ RepeatCount++;
|
|
|
+ jsonMember->SetNumberField(TEXT("RepeatCount"), RepeatCount);
|
|
|
}
|
|
|
// set Score jsonstring
|
|
|
FString ScoresString;
|
|
|
TSharedRef<TJsonWriter<>> AWriter1 = TJsonWriterFactory<>::Create(&ScoresString);
|
|
|
FJsonSerializer::Serialize(JsonObjectValue, AWriter1);
|
|
|
JsonRootObject->SetStringField(TEXT("Score"), ScoresString);
|
|
|
+
|
|
|
+ JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
+ FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
|
|
|
- // set start time
|
|
|
- double StartTimeStamp = 0;
|
|
|
+ // set end time
|
|
|
+ JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
+ FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
|
|
|
+ // set TimeUsed
|
|
|
+ if (EndTimeStamp - StartTimeStamp > 0)
|
|
|
+ {
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // FStringにJsonを書き込むためのWriterを作成
|
|
|
+ FString OutPutString;
|
|
|
+ TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
|
|
|
+
|
|
|
+ //JsonをFStringに書き込み
|
|
|
+ FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
|
|
|
+ //UE_LOG(LogTemp, Log, TEXT("%s"), *OutPutString);
|
|
|
+ return OutPutString;
|
|
|
+}
|
|
|
+
|
|
|
+FDateTime UMyBlueprintFunctionLibrary::GetStartTime(FString RawDataJson, int32 ScoreIndex)
|
|
|
+{
|
|
|
+ double StartTime = -1;
|
|
|
+ TArray<int32> ScoreArr;
|
|
|
+
|
|
|
+ TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
+
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
|
|
|
+ {
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
- double STStamp = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
- if (STStamp != 0)
|
|
|
+
|
|
|
+ if (ScoreIndex == i)
|
|
|
{
|
|
|
- StartTimeStamp = STStamp;
|
|
|
+ StartTime = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
+ }
|
|
|
+
|
|
|
+ return UnixTimestampToDateTime(StartTime);
|
|
|
+}
|
|
|
+
|
|
|
+int32 UMyBlueprintFunctionLibrary::GetStartTimestampByIndex(FString RawDataJson, int32 ScoreIndex)
|
|
|
+{
|
|
|
+ double StartTime = -1;
|
|
|
+ TArray<int32> ScoreArr;
|
|
|
|
|
|
- double EndTimeStamp = 0;
|
|
|
+ TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
+
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
|
|
|
+ {
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
- double ETStamp = jsonMember->GetNumberField(TEXT("EndTime"));
|
|
|
- if (ETStamp != 0)
|
|
|
+
|
|
|
+ if (ScoreIndex == i)
|
|
|
{
|
|
|
- EndTimeStamp = ETStamp;
|
|
|
+ return jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
+ break;
|
|
|
}
|
|
|
}
|
|
|
- // set end time
|
|
|
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+int32 UMyBlueprintFunctionLibrary::GetEndTimestampByIndex(FString RawDataJson, int32 ScoreIndex)
|
|
|
+{
|
|
|
+ double StartTime = -1;
|
|
|
+ TArray<int32> ScoreArr;
|
|
|
+
|
|
|
+ TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
+
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
|
|
|
+ {
|
|
|
+ for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
+
|
|
|
+ TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
+
|
|
|
+ if (ScoreIndex == i)
|
|
|
+ {
|
|
|
+ return jsonMember->GetNumberField(TEXT("EndTime"));
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+FString UMyBlueprintFunctionLibrary::GetTotalUsedTimeStr(FString RawDataJson, FString UserID, FString ExamId)
|
|
|
+{
|
|
|
+ JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
+ JsonRootObject->SetStringField(TEXT("UserID"), UserID);
|
|
|
+ JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
|
|
|
+
|
|
|
+ TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
+
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
|
|
|
+ {
|
|
|
+ TSharedPtr<FJsonObject> StartMember = (JsonObjectValue)[0]->AsObject();
|
|
|
+ TSharedPtr<FJsonObject> EndMember = (JsonObjectValue)[(JsonObjectValue).Num()-1]->AsObject();
|
|
|
+ // start time
|
|
|
+ double StartTimeStamp = StartMember->GetNumberField(TEXT("StartTime"));
|
|
|
+ FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
+ // end time
|
|
|
+ double EndTimeStamp = StartMember->GetNumberField(TEXT("EndTime"));
|
|
|
FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
|
|
|
+
|
|
|
// set TimeUsed
|
|
|
if (EndTimeStamp - StartTimeStamp > 0)
|
|
|
{
|
|
|
@@ -381,29 +589,133 @@ FString UMyBlueprintFunctionLibrary::SetOtherScoreJson(FString UserID, FString E
|
|
|
return OutPutString;
|
|
|
}
|
|
|
|
|
|
-FDateTime UMyBlueprintFunctionLibrary::GetStartTime(FString RawDataJson, int32 ScoreIndex)
|
|
|
+FString UMyBlueprintFunctionLibrary::SetEndTimeAndTotalUsedTimeAndTotalScore(FString RawDataJson, FString UserID, FString ExamId, FDateTime EndTime, int32 Index, int64 StartTimeStamp, int64 EndTimeStamp)
|
|
|
{
|
|
|
- double StartTime = -1;
|
|
|
- TArray<int32> ScoreArr;
|
|
|
+ //UE_LOG(LogTemp, Log, TEXT("RawDataJson===%s"), *RawDataJson);
|
|
|
+
|
|
|
+ JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
+ JsonRootObject->SetStringField(TEXT("UserID"), UserID);
|
|
|
+ JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
|
|
|
|
|
|
TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
|
|
|
if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
|
|
|
{
|
|
|
+ int32 TotalScore = 0;
|
|
|
+
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
|
|
|
- if (ScoreIndex == i)
|
|
|
+ TotalScore+=jsonMember->GetNumberField(TEXT("Score"));
|
|
|
+
|
|
|
+ if (Index == i)
|
|
|
{
|
|
|
- StartTime = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
+ jsonMember->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
|
|
|
+
|
|
|
+ double StartTimeNum = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
+ FDateTime AStartTime = UnixTimestampToDateTime(StartTimeNum);
|
|
|
+ int32 TimeUsed = UKismetMathLibrary::Round((EndTime - AStartTime).GetSeconds());
|
|
|
+ jsonMember->SetNumberField(TEXT("TimeUsed"), TimeUsed);
|
|
|
+
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), TotalScore);
|
|
|
+
|
|
|
+ FString newScoreString = "";
|
|
|
+ TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&newScoreString);
|
|
|
+ FJsonSerializer::Serialize(JsonObjectValue, Writer);
|
|
|
+ JsonRootObject->SetStringField(TEXT("Score"), newScoreString);
|
|
|
+
|
|
|
+ TSharedPtr<FJsonObject> StartMember = (JsonObjectValue)[0]->AsObject();
|
|
|
+ TSharedPtr<FJsonObject> EndMember = (JsonObjectValue)[(JsonObjectValue).Num() - 1]->AsObject();
|
|
|
+
|
|
|
}
|
|
|
|
|
|
- return UnixTimestampToDateTime(StartTime);
|
|
|
+ // set start time
|
|
|
+ JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
+ FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
+
|
|
|
+ // set end time
|
|
|
+ JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
+ FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
|
|
|
+ // set TimeUsed
|
|
|
+ if (EndTimeStamp - StartTimeStamp > 0)
|
|
|
+ {
|
|
|
+ //JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round(EndTimeStamp - StartTimeStamp));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ // FStringにJsonを書き込むためのWriterを作成
|
|
|
+ FString OutPutString;
|
|
|
+ TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
|
|
|
+
|
|
|
+ //JsonをFStringに書き込み
|
|
|
+ FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
|
|
|
+ //UE_LOG(LogTemp, Log, TEXT("OutPutString===%s"), *OutPutString);
|
|
|
+ return OutPutString;
|
|
|
+}
|
|
|
+
|
|
|
+FString UMyBlueprintFunctionLibrary::SetTotalEndTimeAndTotalUsedTimeAndTotalScore(FString RawDataJson, FString UserID, FString ExamId, int64 StartTimeStamp, int64 EndTimeStamp)
|
|
|
+{
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("RawDataJson===%s"), *RawDataJson);
|
|
|
+
|
|
|
+ JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
+ JsonRootObject->SetStringField(TEXT("UserID"), UserID);
|
|
|
+ JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
|
|
|
+
|
|
|
+ TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
+
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
|
|
|
+ {
|
|
|
+ int32 TotalScore = 0;
|
|
|
+
|
|
|
+ for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
+
|
|
|
+ TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
+
|
|
|
+ TotalScore += jsonMember->GetNumberField(TEXT("Score"));
|
|
|
+ }
|
|
|
+
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), TotalScore);
|
|
|
+ }
|
|
|
+
|
|
|
+ // set start time
|
|
|
+ JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
+ FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
+
|
|
|
+ // set end time
|
|
|
+ //int64 EndTimeStamp = DateTimeToUnixTimestamp(EndTime);
|
|
|
+ JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
+ //FDateTime AEndTime = EndTime;
|
|
|
+
|
|
|
+
|
|
|
+ // set TimeUsed
|
|
|
+ if (EndTimeStamp - StartTimeStamp > 0)
|
|
|
+ {
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round(EndTimeStamp - StartTimeStamp));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
|
|
|
+ }
|
|
|
+
|
|
|
+ // FStringにJsonを書き込むためのWriterを作成
|
|
|
+ FString OutPutString;
|
|
|
+ TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
|
|
|
+
|
|
|
+ //JsonをFStringに書き込み
|
|
|
+ FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("OutPutString===%s"), *OutPutString);
|
|
|
+ return OutPutString;
|
|
|
}
|
|
|
|
|
|
FDateTime UMyBlueprintFunctionLibrary::GetExpectTime(FString RawDataJson, int32 ScoreIndex)
|
|
|
@@ -474,7 +786,7 @@ bool UMyBlueprintFunctionLibrary::IsOverTime(FString RawDataJson, int32 ScoreInd
|
|
|
return EndDateTime > ExpectDataTime ?1:0;
|
|
|
}
|
|
|
|
|
|
-FString UMyBlueprintFunctionLibrary::SetStartTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime StartTime, int32 ScoreIndex)
|
|
|
+FString UMyBlueprintFunctionLibrary::SetStartTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime StartTime, int32 ScoreIndex, int64 StartTimeStamp, int64 EndTimeStamp)
|
|
|
{
|
|
|
//UE_LOG(LogTemp, Log, TEXT("ScoresStr======%s"), *ScoresStr);
|
|
|
//UE_LOG(LogTemp, Log, TEXT("StartTime======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
@@ -502,8 +814,8 @@ FString UMyBlueprintFunctionLibrary::SetStartTimeJson(FString ScoresStr, FString
|
|
|
if (ATime == 0)
|
|
|
{
|
|
|
jsonMember->SetNumberField(TEXT("StartTime"), DateTimeToUnixTimestamp(StartTime));
|
|
|
-
|
|
|
- //UE_LOG(LogTemp, Log, TEXT("StartTimestamp======%d"), DateTimeToUnixTimestamp(StartTime));
|
|
|
+ /*UE_LOG(LogTemp, Log, TEXT("StartTime11======%s"), *StartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("StartTimestamp11======%d"), DateTimeToUnixTimestamp(StartTime));*/
|
|
|
}
|
|
|
|
|
|
break;
|
|
|
@@ -516,32 +828,9 @@ FString UMyBlueprintFunctionLibrary::SetStartTimeJson(FString ScoresStr, FString
|
|
|
JsonRootObject->SetStringField(TEXT("Score"), AStr);
|
|
|
|
|
|
// set start time
|
|
|
- double StartTimeStamp = 0;
|
|
|
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
-
|
|
|
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
- double STStamp = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
- if (STStamp != 0)
|
|
|
- {
|
|
|
- StartTimeStamp = STStamp;
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
|
|
|
- double EndTimeStamp = 0;
|
|
|
- UE_LOG(LogTemp, Log, TEXT("(JsonObjectValue).Num() - 1======%d"), (JsonObjectValue).Num() - 1);
|
|
|
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
-
|
|
|
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
- double ETStamp = jsonMember->GetNumberField(TEXT("EndTime"));
|
|
|
- if (ETStamp != 0)
|
|
|
- {
|
|
|
- EndTimeStamp = ETStamp;
|
|
|
- }
|
|
|
- }
|
|
|
// set end time
|
|
|
JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
|
|
|
@@ -565,7 +854,7 @@ FString UMyBlueprintFunctionLibrary::SetStartTimeJson(FString ScoresStr, FString
|
|
|
return OutPutString;
|
|
|
}
|
|
|
|
|
|
-FString UMyBlueprintFunctionLibrary::SetEndTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime EndTime, int32 ScoreIndex)
|
|
|
+FString UMyBlueprintFunctionLibrary::SetEndTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime EndTime, int32 ScoreIndex, int64 StartTimeStamp, int64 EndTimeStamp)
|
|
|
{
|
|
|
//UE_LOG(LogTemp, Log, TEXT("xxxxxxxxxxxxxxxxx"));
|
|
|
JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
@@ -607,7 +896,7 @@ FString UMyBlueprintFunctionLibrary::SetEndTimeJson(FString ScoresStr, FString E
|
|
|
JsonRootObject->SetStringField(TEXT("Score"), AStr);
|
|
|
|
|
|
// set start time
|
|
|
- double StartTimeStamp = 0;
|
|
|
+ /*double StartTimeStamp = 0;
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
@@ -617,12 +906,12 @@ FString UMyBlueprintFunctionLibrary::SetEndTimeJson(FString ScoresStr, FString E
|
|
|
StartTimeStamp = STStamp;
|
|
|
break;
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
|
|
|
- double EndTimeStamp = 0;
|
|
|
+ /*double EndTimeStamp = 0;
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
@@ -631,12 +920,17 @@ FString UMyBlueprintFunctionLibrary::SetEndTimeJson(FString ScoresStr, FString E
|
|
|
{
|
|
|
EndTimeStamp = ETStamp;
|
|
|
}
|
|
|
- }
|
|
|
+ }*/
|
|
|
// set end time
|
|
|
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
- FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
|
|
|
- UE_LOG(LogTemp, Log, TEXT("AEndTime======%s"), *AEndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+ JsonRootObject->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
|
|
|
+ FDateTime AEndTime = UnixTimestampToDateTime(DateTimeToUnixTimestamp(EndTime));
|
|
|
+
|
|
|
+ /*UE_LOG(LogTemp, Log, TEXT("StartTimeStamp======%d"), StartTimeStamp);
|
|
|
UE_LOG(LogTemp, Log, TEXT("AStartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), EndTimeStamp);
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("AEndTime======%s"), *AEndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));*/
|
|
|
+
|
|
|
// set TimeUsed
|
|
|
if (EndTimeStamp - StartTimeStamp > 0)
|
|
|
{
|
|
|
@@ -658,7 +952,7 @@ FString UMyBlueprintFunctionLibrary::SetEndTimeJson(FString ScoresStr, FString E
|
|
|
}
|
|
|
|
|
|
|
|
|
-FString UMyBlueprintFunctionLibrary::SetScoreAndEndTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime EndTime, int32 Score, int32 ScoreIndex)
|
|
|
+FString UMyBlueprintFunctionLibrary::SetScoreAndStartTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime StartTime, int32 Score, int32 ScoreIndex, int64 StartTimeStamp, int64 EndTimeStamp)
|
|
|
{
|
|
|
JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
JsonRootObject->SetStringField(TEXT("UserID"), UserID);
|
|
|
@@ -675,16 +969,39 @@ FString UMyBlueprintFunctionLibrary::SetScoreAndEndTimeJson(FString ScoresStr, F
|
|
|
|
|
|
if (ScoreIndex == i)
|
|
|
{
|
|
|
- jsonMember->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
|
|
|
+ jsonMember->SetNumberField(TEXT("StartTime"), DateTimeToUnixTimestamp(StartTime));
|
|
|
|
|
|
- double StartTimeNum = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
- FDateTime AStartTime = UnixTimestampToDateTime(StartTimeNum);
|
|
|
+ auto AEndTimeNum = jsonMember->GetNumberField(TEXT("EndTime"));
|
|
|
+ FDateTime AEndTime = UnixTimestampToDateTime(AEndTimeNum);
|
|
|
|
|
|
- int32 TimeUsed = UKismetMathLibrary::Round((EndTime - AStartTime).GetSeconds());
|
|
|
+ int32 TimeUsed = UKismetMathLibrary::Round((AEndTime - StartTime).GetSeconds());
|
|
|
jsonMember->SetNumberField(TEXT("TimeUsed"), TimeUsed);
|
|
|
|
|
|
-
|
|
|
jsonMember->SetNumberField(TEXT("Score"), Score);
|
|
|
+
|
|
|
+ double MaxScore = jsonMember->GetNumberField(TEXT("MaxScore"));
|
|
|
+ int32 Evaluation = Score / MaxScore * 100;
|
|
|
+
|
|
|
+ FString EvaluationStr = TEXT("不及格");
|
|
|
+ if (Evaluation < 60)
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("不及格");
|
|
|
+ }
|
|
|
+ else if (Evaluation > 60 && Evaluation < 85)
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("及格");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("优秀");
|
|
|
+ }
|
|
|
+
|
|
|
+ jsonMember->SetStringField(TEXT("Evaluation"), EvaluationStr);
|
|
|
+
|
|
|
+ auto RepeatCount = jsonMember->GetNumberField(TEXT("RepeatCount"));
|
|
|
+ RepeatCount++;
|
|
|
+ jsonMember->SetNumberField(TEXT("RepeatCount"), RepeatCount);
|
|
|
+
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
@@ -695,34 +1012,119 @@ FString UMyBlueprintFunctionLibrary::SetScoreAndEndTimeJson(FString ScoresStr, F
|
|
|
JsonRootObject->SetStringField(TEXT("Score"), AStr);
|
|
|
|
|
|
// set start time
|
|
|
- double StartTimeStamp = 0;
|
|
|
+
|
|
|
+ JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
+ FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
+
|
|
|
+ // set end time
|
|
|
+ JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
+ FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
|
|
|
+
|
|
|
+
|
|
|
+ // set TimeUsed
|
|
|
+ if (EndTimeStamp - StartTimeStamp > 0)
|
|
|
+ {
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), UKismetMathLibrary::Round((AEndTime - AStartTime).GetSeconds()));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ JsonRootObject->SetNumberField(TEXT("TimeUsed"), 0);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // FStringにJsonを書き込むためのWriterを作成
|
|
|
+ FString OutPutString;
|
|
|
+ TSharedRef<TJsonWriter<>> Writer = TJsonWriterFactory<>::Create(&OutPutString);
|
|
|
+
|
|
|
+ //JsonをFStringに書き込み
|
|
|
+ FJsonSerializer::Serialize(JsonRootObject.ToSharedRef(), Writer);
|
|
|
+ //UE_LOG(LogTemp, Log, TEXT("SetStartTimeJson =====%s"), *OutPutString);
|
|
|
+ return OutPutString;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+FString UMyBlueprintFunctionLibrary::SetScoreAndEndTimeJson(FString ScoresStr, FString ExamId, FString UserID, FDateTime EndTime, int32 Score, int32 ScoreIndex, int64 StartTimeStamp, int64 EndTimeStamp)
|
|
|
+{
|
|
|
+ JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
+ JsonRootObject->SetStringField(TEXT("UserID"), UserID);
|
|
|
+ JsonRootObject->SetStringField(TEXT("ExamId"), ExamId);
|
|
|
+
|
|
|
+ TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(ScoresStr);
|
|
|
+
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
|
|
|
+ {
|
|
|
for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
|
|
|
TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
- double STStamp = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
- if (STStamp != 0)
|
|
|
+
|
|
|
+ if (ScoreIndex == i)
|
|
|
{
|
|
|
- StartTimeStamp = STStamp;
|
|
|
+ jsonMember->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
|
|
|
+
|
|
|
+ auto StartTimeNum = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
+ FDateTime AStartTime = UnixTimestampToDateTime(StartTimeNum);
|
|
|
+
|
|
|
+ int32 TimeUsed = UKismetMathLibrary::Round((EndTime - AStartTime).GetSeconds());
|
|
|
+ jsonMember->SetNumberField(TEXT("TimeUsed"), TimeUsed);
|
|
|
+
|
|
|
+ /*UE_LOG(LogTemp, Log, TEXT("StartTimeStamp======%d"), StartTimeNum);
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("AStartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), DateTimeToUnixTimestamp(EndTime));
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("EndTime======%s"), *EndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("Timeused======%d"), UKismetMathLibrary::Round((EndTime - AStartTime).GetSeconds()));*/
|
|
|
+
|
|
|
+
|
|
|
+ jsonMember->SetNumberField(TEXT("Score"), Score);
|
|
|
+
|
|
|
+ double MaxScore = jsonMember->GetNumberField(TEXT("MaxScore"));
|
|
|
+ int32 Evaluation = Score / MaxScore * 100;
|
|
|
+
|
|
|
+ FString EvaluationStr = TEXT("不及格");
|
|
|
+ if (Evaluation < 60)
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("不及格");
|
|
|
+ }
|
|
|
+ else if (Evaluation > 60 && Evaluation < 85)
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("及格");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ EvaluationStr = TEXT("优秀");
|
|
|
+ }
|
|
|
+
|
|
|
+ jsonMember->SetStringField(TEXT("Evaluation"), EvaluationStr);
|
|
|
+
|
|
|
+ auto RepeatCount = jsonMember->GetNumberField(TEXT("RepeatCount"));
|
|
|
+ RepeatCount++;
|
|
|
+ jsonMember->SetNumberField(TEXT("RepeatCount"), RepeatCount);
|
|
|
+
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
+ FString AStr;
|
|
|
+ TSharedRef<TJsonWriter<>> Writer1 = TJsonWriterFactory<>::Create(&AStr);
|
|
|
+ //JsonをFStringに書き込み
|
|
|
+ FJsonSerializer::Serialize(JsonObjectValue, Writer1);
|
|
|
+ JsonRootObject->SetStringField(TEXT("Score"), AStr);
|
|
|
|
|
|
+ // set start time
|
|
|
+
|
|
|
JsonRootObject->SetNumberField(TEXT("StartTime"), StartTimeStamp);
|
|
|
FDateTime AStartTime = UnixTimestampToDateTime(StartTimeStamp);
|
|
|
|
|
|
- double EndTimeStamp = 0;
|
|
|
- for (int32 i = 0; i < (JsonObjectValue).Num(); i++) {
|
|
|
-
|
|
|
- TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[i]->AsObject();
|
|
|
- double ETStamp = jsonMember->GetNumberField(TEXT("EndTime"));
|
|
|
- if (ETStamp != 0)
|
|
|
- {
|
|
|
- EndTimeStamp = ETStamp;
|
|
|
- }
|
|
|
- }
|
|
|
// set end time
|
|
|
- JsonRootObject->SetNumberField(TEXT("EndTime"), EndTimeStamp);
|
|
|
- FDateTime AEndTime = UnixTimestampToDateTime(EndTimeStamp);
|
|
|
+ JsonRootObject->SetNumberField(TEXT("EndTime"), DateTimeToUnixTimestamp(EndTime));
|
|
|
+ FDateTime AEndTime = UnixTimestampToDateTime(DateTimeToUnixTimestamp(EndTime));
|
|
|
+
|
|
|
+ /*UE_LOG(LogTemp, Log, TEXT("StartTimeStamp======%d"), StartTimeStamp);
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("AStartTime======%s"), *AStartTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));
|
|
|
+
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("EndTimeStamp======%d"), EndTimeStamp);
|
|
|
+ UE_LOG(LogTemp, Log, TEXT("AEndTime======%s"), *AEndTime.ToString(TEXT("%Y-%m-%d-%H-%M-%S")));*/
|
|
|
// set TimeUsed
|
|
|
if (EndTimeStamp - StartTimeStamp > 0)
|
|
|
{
|
|
|
@@ -744,6 +1146,29 @@ FString UMyBlueprintFunctionLibrary::SetScoreAndEndTimeJson(FString ScoresStr, F
|
|
|
|
|
|
}
|
|
|
|
|
|
+bool UMyBlueprintFunctionLibrary::CanGoNextStep(FString RawDataJson, int32 MyIndex)
|
|
|
+{
|
|
|
+ JsonObjectPtr JsonRootObject = MakeShareable(new FJsonObject());
|
|
|
+
|
|
|
+ TArray< TSharedPtr<FJsonValue> > JsonObjectValue;
|
|
|
+ TSharedRef<TJsonReader<>> JsonReader = TJsonReaderFactory<>::Create(RawDataJson);
|
|
|
+
|
|
|
+ if (FJsonSerializer::Deserialize(JsonReader, JsonObjectValue))
|
|
|
+ {
|
|
|
+ TSharedPtr<FJsonObject> jsonMember = (JsonObjectValue)[(MyIndex-1)]->AsObject();
|
|
|
+
|
|
|
+ double AScore = jsonMember->GetNumberField(TEXT("Score"));
|
|
|
+ double AStartTimeStamp = jsonMember->GetNumberField(TEXT("StartTime"));
|
|
|
+ double AEndTimeStamp = jsonMember->GetNumberField(TEXT("EndTime"));
|
|
|
+
|
|
|
+ if (AScore != -1 && AStartTimeStamp != 0 && AEndTimeStamp != 0)
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
bool UMyBlueprintFunctionLibrary::IsSubmit(FString RawDataJson)
|
|
|
{
|
|
|
bool bSubmit = true;
|
|
|
@@ -768,7 +1193,6 @@ bool UMyBlueprintFunctionLibrary::IsSubmit(FString RawDataJson)
|
|
|
return bSubmit;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
FString UMyBlueprintFunctionLibrary::GetSubmitJsonString(FString UserID, FString ProjectName,FString RawDataJson)
|
|
|
{
|
|
|
bool bSubmit = true;
|