diff --git a/EndlessVendetta/Config/DefaultEngine.ini b/EndlessVendetta/Config/DefaultEngine.ini index 505db906..a3178012 100644 --- a/EndlessVendetta/Config/DefaultEngine.ini +++ b/EndlessVendetta/Config/DefaultEngine.ini @@ -70,7 +70,7 @@ bOffsetPlayerGamepadIds=False GameInstanceClass=/Script/Engine.GameInstance GameDefaultMap=/Game/Levels/TrainingFacility.TrainingFacility ServerDefaultMap=/Engine/Maps/Entry.Entry -GlobalDefaultGameMode=/Game/FirstPerson/GunMechanicWorld.GunMechanicWorld_C +GlobalDefaultGameMode=/Script/EndlessVendetta.EndlessVendettaGameMode GlobalDefaultServerGameMode=None [/Script/Engine.RendererSettings] diff --git a/EndlessVendetta/Content/BP_Telemetry.uasset b/EndlessVendetta/Content/BP_Telemetry.uasset deleted file mode 100644 index efc6e5c2..00000000 --- a/EndlessVendetta/Content/BP_Telemetry.uasset +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:39a587c7f8452e17e2dd4dfccdcc3a0a7a81f2388d937de51f388fbfc53cbd30 -size 19076 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset index 5c135c06..537c3b62 100644 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset +++ b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_EnterBountySimulationFacility.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:985680b85d426c26cf6b12a0ec3eaddf71c4a2e8f9135a08855016daca429e37 -size 83257 +oid sha256:cb422b19b15ab7568686c196a6f8344053589c94ab572025195f6a31ed6e2a7a +size 83208 diff --git a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset index b0bb11dc..16ed3897 100644 --- a/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset +++ b/EndlessVendetta/Content/BountySystem/TutorialFacility/Checkpoints/BountySimulation/CP_ExitBountySimulationFacility.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:3969ee3ade0537148800a825bbb2817a35eddc0a241c58c433225333bd00f8ca -size 61123 +oid sha256:a95afab359651372dc7a4b610c26acdceee19e660d3e0a1036eecc5e9dc081ba +size 59234 diff --git a/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset b/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset index a0727e89..939e70d9 100644 --- a/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset +++ b/EndlessVendetta/Content/FirstPerson/Blueprints/WBP_Crosshair.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:deaa5ca564990b06d573f4a3bb575a3f2a439d3b7516e30b5b389d5a82f80ad0 -size 61358 +oid sha256:13ff21aa89e2ded711aff8ee6617abc2d565d222c39ce3878969fdfe44d5a81f +size 75992 diff --git a/EndlessVendetta/Content/Levels/TrainingFacility.umap b/EndlessVendetta/Content/Levels/TrainingFacility.umap index 46e115df..cbe7aa20 100644 --- a/EndlessVendetta/Content/Levels/TrainingFacility.umap +++ b/EndlessVendetta/Content/Levels/TrainingFacility.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c602b7e79cb2817cd4a3b4d56b2f94aaa68984977abf3d3eb777960dab8f0e89 -size 679799 +oid sha256:87523c2b8607590648fb1ad88b98e94617e34faa25375af04116b01388bdbda2 +size 679514 diff --git a/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.cpp index 8c91d7f5..c95a5e7e 100644 --- a/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/AI/AICharacter.cpp @@ -10,6 +10,7 @@ #include "Perception/AISense_Sight.h" #include "BehaviorTree/BlackboardComponent.h" #include "../Telemetry.h" +#include // Sets default values @@ -99,5 +100,5 @@ void AAICharacter::OnDeath() } SetLifeSpan(30.0f); - Cast(GetWorld()->GetGameState())->SendEvent("kill", ""); + Cast(GetWorld()->GetAuthGameMode())->SendEvent("kill", ""); } diff --git a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h index 09fe069e..854d8588 100644 --- a/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h +++ b/EndlessVendetta/Source/EndlessVendetta/BountySystem/CheckpointClass.h @@ -7,6 +7,7 @@ #include "EndlessVendetta/EndlessVendettaCharacter.h" #include "EndlessVendetta/Telemetry.h" #include "GameFramework/Actor.h" +#include #include "CheckpointClass.generated.h" DECLARE_DYNAMIC_MULTICAST_DELEGATE(FCompletedCheckpoint); @@ -37,7 +38,7 @@ protected: void BroadcastCompletion() { CompletedCheckpoint.Broadcast(); - Cast(GetWorld()->GetGameState())->SendEvent("Check", CheckpointTip); + Cast(GetWorld()->GetAuthGameMode())->SendEvent("Check", CheckpointTip); } UFUNCTION(BlueprintCallable) diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp index a2dcae5d..30287f35 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaCharacter.cpp @@ -14,6 +14,7 @@ #include "Kismet/GameplayStatics.h" #include "GameFramework/MovementComponent.h" #include "Inventory/InventoryComponent.h" +#include "EndlessVendettaGameMode.h" ////////////////////////////////////////////////////////////////////////// @@ -293,7 +294,7 @@ void AEndlessVendettaCharacter::EquipPrimary() PrimaryWeapon = nullptr; bHasRifle = false; GLog->Log("Primary Weapon Put Away"); - Cast(GetWorld()->GetGameState())->SendEvent("DeEquip", "Pri"); + Cast(GetWorld()->GetAuthGameMode())->SendEvent("DeEquip", "Pri"); return; } if(bIsWeaponPickedUp) @@ -320,7 +321,7 @@ void AEndlessVendettaCharacter::EquipPrimary() // bIsPrimaryWeaponCreated = true; // } if (!IsValid(PrimaryWeaponActor)) return; - Cast(GetWorld()->GetGameState())->SendEvent("Equip", "Pri"); + Cast(GetWorld()->GetAuthGameMode())->SendEvent("Equip", "Pri"); PrimaryWeaponActor->AttachToComponent(Mesh1P, AttachmentRules, FName("GripPoint")); PrimaryWeapon = Cast(PrimaryWeaponActor); PrimaryWeapon->SetActorHiddenInGame(false); diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp index bbba7bcd..9390d136 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.cpp @@ -7,6 +7,7 @@ #include "EndlessVendetta/AI/AIControlHub.h" #include "Kismet/GameplayStatics.h" #include "Engine/DamageEvents.h" +#include "Misc/Guid.h" AEndlessVendettaGameMode::AEndlessVendettaGameMode() : Super() { @@ -38,3 +39,26 @@ void AEndlessVendettaGameMode::SetLocalAIAlertLevel(int NewAlertLevel) AIControlHub->SetAlertLevel(NewAlertLevel); } } + +void AEndlessVendettaGameMode::SendEvent(FString EventKey, FString EventData) +{ + const FString EventID = FGuid::NewGuid().ToString(); + const FString EventTime = FDateTime::Now().ToString(); + const auto Request = FHttpModule::Get().CreateRequest(); + Request->SetURL(TelemetryURLEvents); + Request->SetVerb("POST"); + Request->SetHeader("Content-Type", "application/json"); + Request->SetHeader("Accept", "application/json"); + Request->SetContentAsString("{\"SessionID\":\"" + SessionID + "\",\"PlayerGUID\":\"" + PlayerGUID + "\",\"EventID\":\"" + EventID + "\",\"Timestamp\":\"" + EventTime + "\",\"EventKey\":\"" + EventKey + "\",\"EventData\":\"" + EventData + "\"}"); + Request->OnProcessRequestComplete().BindLambda([](FHttpRequestPtr request, FHttpResponsePtr response, bool success) + { + GLog->Log("Telemetry Event Response: " + response->GetContentAsString()); + }); + Request->ProcessRequest(); +} + +void AEndlessVendettaGameMode::BeginPlay() +{ + Super::BeginPlay(); + SessionID = FGuid::NewGuid().ToString().Left(5).ToUpper(); +} diff --git a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h index 420ab589..a5fb31f5 100644 --- a/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h +++ b/EndlessVendetta/Source/EndlessVendetta/EndlessVendettaGameMode.h @@ -4,6 +4,7 @@ #include "CoreMinimal.h" #include "GameFramework/GameModeBase.h" +#include "Http.h" #include "EndlessVendettaGameMode.generated.h" UCLASS(minimalapi) @@ -19,4 +20,18 @@ public: UFUNCTION(Exec, Category = ExecFunctions) void SetLocalAIAlertLevel(int NewAlertLevel); + + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Telemetry") + FString TelemetryURLEvents = "https://ev.api.philipwhite.dev/api/event"; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Telemetry") + FString TelemetryURLUsers = "https://ev.api.philipwhite.dev/api/user"; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Instanced, Category = "Telemetry") + FString SessionID = "AAAAA"; + UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Telemetry") + FString PlayerGUID = "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee"; + + UFUNCTION(BlueprintCallable, Category = "Telemetry") + void SendEvent(FString EventKey, FString EventData); + + virtual void BeginPlay() override; }; diff --git a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp index 8199182c..d5069806 100644 --- a/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp +++ b/EndlessVendetta/Source/EndlessVendetta/WeaponSystem/BaseWeaponClass.cpp @@ -11,6 +11,7 @@ #include "Kismet/GameplayStatics.h" #include "Engine/DamageEvents.h" #include "EndlessVendetta/AI/EnemyCharacter.h" +#include // Sets default values @@ -243,7 +244,7 @@ void ABaseWeaponClass::Interact() { if(!IsValid(this)) return; endlessVendettaChar->WeaponSwitcher(this); - Cast(GetWorld()->GetGameState())->SendEvent("pickup", ""); + Cast(GetWorld()->GetAuthGameMode())->SendEvent("pickup", ""); } void ABaseWeaponClass::InteractPrompt()