From 45ffe8cafe52877945d34502b0e9ee5c09dd426a Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 19 Dec 2025 12:26:47 +0530 Subject: [PATCH 01/27] Project Initialization Initial Unreal Project with Git Ignore and Attributes for LFS --- trivialkart/trivialkart_unreal/.gitattributes | 23 ++ trivialkart/trivialkart_unreal/.gitignore | 76 +++++ .../Config/DefaultEditor.ini | 0 .../Config/DefaultEngine.ini | 279 ++++++++++++++++++ .../trivialkart_unreal/Config/DefaultGame.ini | 6 + .../Config/DefaultInput.ini | 84 ++++++ .../Source/TrivialKart_Unreal.Target.cs | 13 + .../TrivialKart_Unreal.Build.cs | 21 ++ .../TrivialKart_Unreal/TrivialKart_Unreal.cpp | 4 + .../TrivialKart_Unreal/TrivialKart_Unreal.h | 4 + .../Source/TrivialKart_UnrealEditor.Target.cs | 13 + .../TrivialKart_Unreal.uproject | 22 ++ 12 files changed, 545 insertions(+) create mode 100644 trivialkart/trivialkart_unreal/.gitattributes create mode 100644 trivialkart/trivialkart_unreal/.gitignore create mode 100644 trivialkart/trivialkart_unreal/Config/DefaultEditor.ini create mode 100644 trivialkart/trivialkart_unreal/Config/DefaultEngine.ini create mode 100644 trivialkart/trivialkart_unreal/Config/DefaultGame.ini create mode 100644 trivialkart/trivialkart_unreal/Config/DefaultInput.ini create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal.Target.cs create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.h create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_UnrealEditor.Target.cs create mode 100644 trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject diff --git a/trivialkart/trivialkart_unreal/.gitattributes b/trivialkart/trivialkart_unreal/.gitattributes new file mode 100644 index 00000000..d0949bde --- /dev/null +++ b/trivialkart/trivialkart_unreal/.gitattributes @@ -0,0 +1,23 @@ +# UE file types +*.uasset filter=lfs diff=lfs merge=lfs -text +*.umap filter=lfs diff=lfs merge=lfs -text + +# Raw Content types +*.fbx filter=lfs diff=lfs merge=lfs -text +*.3ds filter=lfs diff=lfs merge=lfs -text +*.psd filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.mp3 filter=lfs diff=lfs merge=lfs -text +*.wav filter=lfs diff=lfs merge=lfs -text +*.xcf filter=lfs diff=lfs merge=lfs -text +*.jpg filter=lfs diff=lfs merge=lfs -text +*.uexp filter=lfs diff=lfs merge=lfs -text +*.bank filter=lfs diff=lfs merge=lfs -text +*.tmp filter=lfs diff=lfs merge=lfs -text +*.vox filter=lfs diff=lfs merge=lfs -text + +# Libraries and executables +*.a filter=lfs diff=lfs merge=lfs -text +*.lib filter=lfs diff=lfs merge=lfs -text +*.exe filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text \ No newline at end of file diff --git a/trivialkart/trivialkart_unreal/.gitignore b/trivialkart/trivialkart_unreal/.gitignore new file mode 100644 index 00000000..6e21aa18 --- /dev/null +++ b/trivialkart/trivialkart_unreal/.gitignore @@ -0,0 +1,76 @@ +### UnrealEngine template +# Visual Studio 2015 user specific files +.vs/ + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app +*.ipa + +# These project files can be generated by the engine +*.xcodeproj +*.xcworkspace +*.sln +*.suo +*.opensdf +*.sdf +*.VC.db +*.VC.opendb + +# Precompiled Assets +SourceArt/**/*.png +SourceArt/**/*.tga + +# Binary Files +Binaries/* +Plugins/*/Binaries/* + +# Builds +Build/* + +# Whitelist PakBlacklist-.txt files +!Build/*/ +Build/*/** +!Build/*/PakBlacklist*.txt + +# Don't ignore icon files in Build +!Build/**/*.ico + +# Built data for maps +*_BuiltData.uasset + +# Configuration files generated by the Editor +Saved/* + +# Compiled source files for the engine to use +Intermediate/* +Plugins/*/Intermediate/* + +# Cache files for the editor to use +DerivedDataCache/* + diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEditor.ini b/trivialkart/trivialkart_unreal/Config/DefaultEditor.ini new file mode 100644 index 00000000..e69de29b diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini new file mode 100644 index 00000000..a946e7e1 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -0,0 +1,279 @@ + + +[/Script/EngineSettings.GameMapsSettings] +EditorStartupMap=/Engine/Maps/Templates/OpenWorld.OpenWorld +LocalMapOptions= +TransitionMap=None +bUseSplitscreen=False +TwoPlayerSplitscreenLayout=Horizontal +ThreePlayerSplitscreenLayout=FavorTop +FourPlayerSplitscreenLayout=Grid +bShowAllPlayerWidgetsWhenSplitscreenDisabled=False +bOffsetPlayerGamepadIds=False +GameInstanceClass=/Script/Engine.GameInstance +GameDefaultMap=/Engine/Maps/Templates/OpenWorld.OpenWorld +ServerDefaultMap=/Engine/Maps/Entry.Entry +GlobalDefaultGameMode=/Script/Engine.GameModeBase +GlobalDefaultServerGameMode=None + +[/Script/Engine.RendererSettings] +r.Mobile.ShadingPath=1 +r.Mobile.AntiAliasing=2 +r.Mobile.FloatPrecisionMode=0 +r.Mobile.AllowDitheredLODTransition=False +r.Mobile.VirtualTextures=False +r.DiscardUnusedQuality=False +r.AllowOcclusionQueries=True +r.MinScreenRadiusForLights=0.030000 +r.MinScreenRadiusForDepthPrepass=0.030000 +r.PrecomputedVisibilityWarning=False +r.TextureStreaming=True +Compat.UseDXT5NormalMaps=False +r.VirtualTextures=True +r.VirtualTexturedLightmaps=False +r.VT.TileSize=128 +r.VT.TileBorderSize=4 +r.VT.AnisotropicFiltering=False +r.VT.EnableAutoImport=False +bEnableVirtualTextureOpacityMask=True +r.MeshPaintVirtualTexture.Support=True +r.MeshPaintVirtualTexture.TileSize=32 +r.MeshPaintVirtualTexture.TileBorderSize=2 +r.MeshPaintVirtualTexture.UseCompression=True +r.StaticMesh.DefaultMeshPaintTextureSupport=True +r.MeshPaintVirtualTexture.DefaultTexelsPerVertex=4 +r.MeshPaintVirtualTexture.MaxTextureSize=4096 +r.vt.rvt.EnableBaseColor=True +r.vt.rvt.EnableBaseColorRoughness=True +r.vt.rvt.EnableBaseColorSpecular=True +r.vt.rvt.EnableMask4=True +r.vt.rvt.EnableWorldHeight=True +r.vt.rvt.EnableDisplacement=True +r.vt.rvt.HighQualityPerPixelHeight=True +WorkingColorSpaceChoice=sRGB +RedChromaticityCoordinate=(X=0.640000,Y=0.330000) +GreenChromaticityCoordinate=(X=0.300000,Y=0.600000) +BlueChromaticityCoordinate=(X=0.150000,Y=0.060000) +WhiteChromaticityCoordinate=(X=0.312700,Y=0.329000) +r.LegacyLuminanceFactors=False +r.ClearCoatNormal=False +r.DynamicGlobalIlluminationMethod=1 +r.ReflectionMethod=1 +r.ReflectionCaptureResolution=128 +r.ReflectionEnvironmentLightmapMixBasedOnRoughness=True +r.Lumen.HardwareRayTracing=True +r.Lumen.HardwareRayTracing.LightingMode=0 +r.Lumen.TranslucencyReflections.FrontLayer.EnableForProject=False +r.Lumen.TraceMeshSDFs=0 +r.Lumen.ScreenTracingSource=0 +r.Lumen.Reflections.HardwareRayTracing.Translucent.Refraction.EnableForProject=True +r.MegaLights.EnableForProject=False +r.RayTracing.Shadows=False +r.Shadow.Virtual.Enable=1 +r.RayTracing=True +r.RayTracing.RayTracingProxies.ProjectEnabled=True +r.RayTracing.UseTextureLod=False +r.PathTracing=True +r.GenerateMeshDistanceFields=True +r.DistanceFields.DefaultVoxelDensity=0.200000 +r.Nanite.ProjectEnabled=True +r.AllowStaticLighting=False +r.NormalMapsForStaticLighting=False +r.ForwardShading=False +r.VertexFoggingForOpaque=True +r.SeparateTranslucency=False +r.TranslucentSortPolicy=0 +TranslucentSortAxis=(X=0.000000,Y=-1.000000,Z=0.000000) +r.LocalFogVolume.ApplyOnTranslucent=False +xr.VRS.FoveationLevel=0 +xr.VRS.DynamicFoveation=False +r.CustomDepth=1 +r.CustomDepthTemporalAAJitter=True +r.PostProcessing.PropagateAlpha=False +r.Deferred.SupportPrimitiveAlphaHoldout=False +r.DefaultFeature.Bloom=False +r.DefaultFeature.AmbientOcclusion=False +r.DefaultFeature.AmbientOcclusionStaticFraction=True +r.DefaultFeature.AutoExposure=False +r.DefaultFeature.AutoExposure.Method=0 +r.DefaultFeature.AutoExposure.Bias=1.000000 +r.DefaultFeature.AutoExposure.ExtendDefaultLuminanceRange=True +r.DefaultFeature.LocalExposure.HighlightContrastScale=0.800000 +r.DefaultFeature.LocalExposure.ShadowContrastScale=0.800000 +r.DefaultFeature.MotionBlur=False +r.DefaultFeature.LensFlare=False +r.TemporalAA.Upsampling=True +r.AntiAliasingMethod=0 +r.MSAACount=4 +r.DefaultFeature.LightUnits=1 +r.DefaultBackBufferPixelFormat=4 +r.ScreenPercentage.Default=100.000000 +r.ScreenPercentage.Default.Desktop.Mode=1 +r.ScreenPercentage.Default.Mobile.Mode=0 +r.ScreenPercentage.Default.VR.Mode=0 +r.ScreenPercentage.Default.PathTracer.Mode=0 +r.Shadow.UnbuiltPreviewInGame=True +r.StencilForLODDither=False +r.EarlyZPass=3 +r.EarlyZPassOnlyMaterialMasking=False +r.Shadow.CSMCaching=False +r.DBuffer=True +r.ClearSceneMethod=1 +r.VelocityOutputPass=0 +r.Velocity.EnableVertexDeformation=2 +r.SelectiveBasePassOutputs=False +bDefaultParticleCutouts=False +fx.GPUSimulationTextureSizeX=1024 +fx.GPUSimulationTextureSizeY=1024 +r.AllowGlobalClipPlane=False +r.GBufferFormat=1 +r.MorphTarget.Mode=True +r.MorphTarget.MaxBlendWeight=5.000000 +r.SupportSkyAtmosphere=True +r.SupportSkyAtmosphereAffectsHeightFog=True +r.SupportExpFogMatchesVolumetricFog=False +r.SupportLocalFogVolumes=True +r.SupportCloudShadowOnForwardLitTranslucent=False +r.ClusteredDeferredShading.EnableForProject=True +r.LightFunctionAtlas.Format=0 +r.VolumetricFog.LightFunction=True +r.Deferred.UsesLightFunctionAtlas=True +r.SingleLayerWater.UsesLightFunctionAtlas=False +r.Translucent.UsesLightFunctionAtlas=False +r.Translucent.UsesIESProfiles=False +r.Translucent.UsesRectLights=False +r.Translucent.UsesShadowedLocalLights=False +r.GPUCrashDebugging=False +vr.InstancedStereo=False +r.MobileHDR=True +vr.MobileMultiView=False +r.Mobile.UseHWsRGBEncoding=False +vr.RoundRobinOcclusion=False +r.MeshStreaming=False +r.HeterogeneousVolumes=True +r.HeterogeneousVolumes.Shadows=False +r.Translucency.HeterogeneousVolumes=False +r.WireframeCullThreshold=5.000000 +r.SupportStationarySkylight=True +r.SupportLowQualityLightmaps=True +r.SupportPointLightWholeSceneShadows=True +r.Shadow.TranslucentPerObject.ProjectEnabled=False +r.Water.SingleLayerWater.SupportCloudShadow=False +r.Substrate=True +r.Substrate.ProjectGBufferFormat=0 +r.Substrate.ProjectClosuresPerPixel=4 +r.Substrate.ProjectClosuresPerPixelOverride=0 +r.Substrate.BytesPerPixel=80 +r.Substrate.OpaqueMaterialRoughRefraction=False +r.Refraction.Blur=True +r.Substrate.Debug.AdvancedVisualizationShaders=False +r.Substrate.EnableLayerSupport=False +r.Material.RoughDiffuse=False +r.Material.EnergyConservation=False +r.Material.DefaultAutoMaterialUsage=True +r.OIT.SortedPixels=False +r.HairStrands.LODMode=True +r.SkinCache.CompileShaders=True +r.VRS.Support=True +r.SkinCache.SkipCompilingGPUSkinVF=False +r.SkinCache.DefaultBehavior=1 +r.SkinCache.SceneMemoryLimitInMB=128.000000 +r.Mobile.EnableStaticAndCSMShadowReceivers=True +r.Mobile.EnableMovableLightCSMShaderCulling=True +r.Mobile.Forward.EnableLocalLights=1 +r.Mobile.Forward.EnableClusteredReflections=False +r.Mobile.AllowDistanceFieldShadows=True +r.Mobile.EnableMovableSpotlightsShadow=False +r.GPUSkin.Support16BitBoneIndex=False +r.GPUSkin.Limit2BoneInfluences=False +r.SupportDepthOnlyIndexBuffers=False +r.SupportReversedIndexBuffers=False +r.Mobile.AmbientOcclusion=False +r.Mobile.ScreenSpaceReflections=False +r.Mobile.DBuffer=False +r.Mobile.PropagateAlpha=False +r.GPUSkin.UnlimitedBoneInfluences=False +r.GPUSkin.AlwaysUseDeformerForUnlimitedBoneInfluences=False +r.GPUSkin.UnlimitedBoneInfluencesThreshold=8 +DefaultBoneInfluenceLimit=(Default=0,PerPlatform=()) +MaxSkinBones=(Default=65536,PerPlatform=(("Mobile", 256))) +r.Nanite.Foliage=False +bStreamSkeletalMeshLODs=(Default=False,PerPlatform=()) +bDiscardSkeletalMeshOptionalLODs=(Default=False,PerPlatform=()) +VisualizeCalibrationColorMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationColor.PPM_DefaultCalibrationColor +VisualizeCalibrationCustomMaterialPath=None +VisualizeCalibrationGrayscaleMaterialPath=/Engine/EngineMaterials/PPM_DefaultCalibrationGrayscale.PPM_DefaultCalibrationGrayscale + +[/Script/WindowsTargetPlatform.WindowsTargetSettings] +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +DefaultGraphicsRHI=DefaultGraphicsRHI_DX12 +-D3D12TargetedShaderFormats=PCD3D_SM5 ++D3D12TargetedShaderFormats=PCD3D_SM6 +-D3D11TargetedShaderFormats=PCD3D_SM5 ++D3D11TargetedShaderFormats=PCD3D_SM5 +Compiler=Default +AudioSampleRate=48000 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=1 +AudioMaxChannels=0 +AudioNumSourceWorkers=4 +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) +CacheSizeKB=65536 +MaxChunkSizeOverrideKB=0 +bResampleForDevice=False +MaxSampleRate=48000.000000 +HighSampleRate=32000.000000 +MedSampleRate=24000.000000 +LowSampleRate=12000.000000 +MinSampleRate=8000.000000 +CompressionQualityModifier=1.000000 +AutoStreamingThreshold=0.000000 +SoundCueCookQualityIndex=-1 + +[/Script/LinuxTargetPlatform.LinuxTargetSettings] +-TargetedRHIs=SF_VULKAN_SM5 ++TargetedRHIs=SF_VULKAN_SM6 + +[/Script/MacTargetPlatform.MacTargetSettings] +-TargetedRHIs=SF_METAL_SM5 ++TargetedRHIs=SF_METAL_SM6 + +[/Script/HardwareTargeting.HardwareTargetingSettings] +TargetedHardwareClass=Mobile +AppliedTargetedHardwareClass=Mobile +DefaultGraphicsPerformance=Scalable +AppliedDefaultGraphicsPerformance=Scalable + +[/Script/WorldPartitionEditor.WorldPartitionEditorSettings] +CommandletClass=Class'/Script/UnrealEd.WorldPartitionConvertCommandlet' + +[/Script/Engine.UserInterfaceSettings] +bAuthorizeAutomaticWidgetVariableCreation=False +FontDPIPreset=Standard +FontDPI=72 + +[/Script/Engine.Engine] ++ActiveGameNameRedirects=(OldGameName="TP_Blank",NewGameName="/Script/TrivialKart_Unreal") ++ActiveGameNameRedirects=(OldGameName="/Script/TP_Blank",NewGameName="/Script/TrivialKart_Unreal") + +[/Script/Slate.SlateSettings] +bExplicitCanvasChildZOrder=True + +[/Script/AndroidFileServerEditor.AndroidFileServerRuntimeSettings] +bEnablePlugin=True +bAllowNetworkConnection=True +SecurityToken=924B1CB8E24E0D6B186D64B27B9ED4A0 +bIncludeInShipping=False +bAllowExternalStartInShipping=False +bCompileAFSProject=False +bUseCompression=False +bLogFiles=False +bReportStats=False +ConnectionType=USBOnly +bUseManualIPAddress=False +ManualIPAddress= + diff --git a/trivialkart/trivialkart_unreal/Config/DefaultGame.ini b/trivialkart/trivialkart_unreal/Config/DefaultGame.ini new file mode 100644 index 00000000..a1fbeeff --- /dev/null +++ b/trivialkart/trivialkart_unreal/Config/DefaultGame.ini @@ -0,0 +1,6 @@ + +[/Script/CommonUI.CommonUISettings] +CommonButtonAcceptKeyHandling=TriggerClick + +[/Script/EngineSettings.GeneralProjectSettings] +ProjectID=C958FA925B4F85EF31EC53B627AD4809 diff --git a/trivialkart/trivialkart_unreal/Config/DefaultInput.ini b/trivialkart/trivialkart_unreal/Config/DefaultInput.ini new file mode 100644 index 00000000..a919105d --- /dev/null +++ b/trivialkart/trivialkart_unreal/Config/DefaultInput.ini @@ -0,0 +1,84 @@ +[/Script/Engine.InputSettings] +-AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.25,Exponent=1.f,Sensitivity=1.f)) +-AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) +-AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.f,Exponent=1.f,Sensitivity=0.07f)) ++AxisConfig=(AxisKeyName="Gamepad_LeftX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightX",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightY",AxisProperties=(DeadZone=0.250000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseX",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseY",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Mouse2D",AxisProperties=(DeadZone=0.000000,Sensitivity=0.070000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MouseWheelAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_LeftTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_RightTriggerAxis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Gamepad_Special_Left_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="Vive_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="MixedReality_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="OculusTouch_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Left_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Grip_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trigger_Axis",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Thumbstick_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_X",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Y",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) ++AxisConfig=(AxisKeyName="ValveIndex_Right_Trackpad_Force",AxisProperties=(DeadZone=0.000000,Sensitivity=1.000000,Exponent=1.000000,bInvert=False)) +bAltEnterTogglesFullscreen=True +bF11TogglesFullscreen=True +bUseMouseForTouch=False +bEnableMouseSmoothing=True +bEnableFOVScaling=True +bCaptureMouseOnLaunch=True +bEnableLegacyInputScales=True +bEnableMotionControls=True +bFilterInputByPlatformUser=False +bShouldFlushPressedKeysOnViewportFocusLost=True +bAlwaysShowTouchInterface=False +bShowConsoleOnFourFingerTap=True +bEnableGestureRecognizer=False +bUseAutocorrect=False +DefaultViewportMouseCaptureMode=CapturePermanently_IncludingInitialMouseDown +DefaultViewportMouseLockMode=LockOnCapture +FOVScale=0.011110 +DoubleClickTime=0.200000 +DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput +DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent +DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks +-ConsoleKeys=Tilde ++ConsoleKeys=Tilde + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal.Target.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal.Target.cs new file mode 100644 index 00000000..8331bcf2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal.Target.cs @@ -0,0 +1,13 @@ +using UnrealBuildTool; +using System.Collections.Generic; + +public class TrivialKart_UnrealTarget : TargetRules +{ + public TrivialKart_UnrealTarget(TargetInfo Target) : base(Target) + { + Type = TargetType.Game; + DefaultBuildSettings = BuildSettingsVersion.V6; + IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7; + ExtraModuleNames.Add("TrivialKart_Unreal"); + } +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs new file mode 100644 index 00000000..1510e072 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs @@ -0,0 +1,21 @@ +using UnrealBuildTool; + +public class TrivialKart_Unreal : ModuleRules +{ + public TrivialKart_Unreal(ReadOnlyTargetRules Target) : base(Target) + { + PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; + + PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput" }); + + PrivateDependencyModuleNames.AddRange(new string[] { }); + + // Uncomment if you are using Slate UI + // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); + + // Uncomment if you are using online features + // PrivateDependencyModuleNames.Add("OnlineSubsystem"); + + // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true + } +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.cpp new file mode 100644 index 00000000..3f8aca82 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.cpp @@ -0,0 +1,4 @@ +#include "TrivialKart_Unreal.h" +#include "Modules/ModuleManager.h" + +IMPLEMENT_PRIMARY_GAME_MODULE( FDefaultGameModuleImpl, TrivialKart_Unreal, "TrivialKart_Unreal" ); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.h new file mode 100644 index 00000000..fe82abe0 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.h @@ -0,0 +1,4 @@ +#pragma once + +#include "CoreMinimal.h" + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_UnrealEditor.Target.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_UnrealEditor.Target.cs new file mode 100644 index 00000000..ba2d2f12 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_UnrealEditor.Target.cs @@ -0,0 +1,13 @@ +using UnrealBuildTool; +using System.Collections.Generic; + +public class TrivialKart_UnrealEditorTarget : TargetRules +{ + public TrivialKart_UnrealEditorTarget( TargetInfo Target) : base(Target) + { + Type = TargetType.Editor; + DefaultBuildSettings = BuildSettingsVersion.V6; + IncludeOrderVersion = EngineIncludeOrderVersion.Unreal5_7; + ExtraModuleNames.Add("TrivialKart_Unreal"); + } +} diff --git a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject new file mode 100644 index 00000000..50d86cfb --- /dev/null +++ b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject @@ -0,0 +1,22 @@ +{ + "FileVersion": 3, + "EngineAssociation": "5.7", + "Category": "", + "Description": "", + "Modules": [ + { + "Name": "TrivialKart_Unreal", + "Type": "Runtime", + "LoadingPhase": "Default" + } + ], + "Plugins": [ + { + "Name": "ModelingToolsEditorMode", + "Enabled": true, + "TargetAllowList": [ + "Editor" + ] + } + ] +} \ No newline at end of file From 7692996e80ce5ee7b091b5cf5ee9a29552d14084 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 19 Dec 2025 17:06:24 +0530 Subject: [PATCH 02/27] Asset Import and Conversion Added Empty Map, Trivial Kart 2D assets, converter 2D assets into UI Textures, Paper 2D Textures, extracted Sprites and added Flip book animation for Cars and Flag --- trivialkart/trivialkart_unreal/Config/DefaultEngine.ini | 4 ++-- .../Items/Flag/FlipBook/S_FlagRed_Down_Flipbook.uasset | 3 +++ .../Background/Items/Flag/Sprites/S_FlagRed2_Sprite.uasset | 3 +++ .../Items/Flag/Sprites/S_FlagRed_Down_Sprite.uasset | 3 +++ .../Background/Items/Flag/Sprites/S_FlagRed_Sprite.uasset | 3 +++ .../Content/Background/Items/Flag/Textures/T_FlagRed.uasset | 3 +++ .../Content/Background/Items/Flag/Textures/T_FlagRed2.uasset | 3 +++ .../Background/Items/Flag/Textures/T_FlagRed_Down.uasset | 3 +++ .../Content/Background/Items/Sprites/T_Bush_Sprite.uasset | 3 +++ .../Content/Background/Items/Sprites/T_GrassMid_Sprite.uasset | 3 +++ .../Content/Background/Items/Sprites/T_Grass_1_Sprite.uasset | 3 +++ .../Background/Items/Sprites/T_Green_Land_Sprite.uasset | 3 +++ .../Background/Items/Sprites/T_RoadRampLong_SE_Sprite.uasset | 3 +++ .../Content/Background/Items/Sprites/T_Rock_Sprite.uasset | 3 +++ .../Background/Items/Sprites/T_SignRight_Sprite.uasset | 3 +++ .../Content/Background/Items/Textures/T_Bush.uasset | 3 +++ .../Content/Background/Items/Textures/T_GrassMid.uasset | 3 +++ .../Content/Background/Items/Textures/T_Grass_1.uasset | 3 +++ .../Content/Background/Items/Textures/T_Green_Land.uasset | 3 +++ .../Background/Items/Textures/T_RoadRampLong_SE.uasset | 3 +++ .../Content/Background/Items/Textures/T_Rock.uasset | 3 +++ .../Content/Background/Items/Textures/T_SignRight.uasset | 3 +++ .../Content/Background/Sprites/S_BlueDesert_Sprite.uasset | 3 +++ .../Content/Background/Sprites/S_BlueGrass_Sprite.uasset | 3 +++ .../Content/Background/Sprites/S_BlueLand_Sprite.uasset | 3 +++ .../Content/Background/Sprites/S_BlueShroom_Sprite.uasset | 3 +++ .../Content/Background/Sprites/S_ColoredDesert_Sprite.uasset | 3 +++ .../Content/Background/Sprites/S_ColoredGrass_Sprite.uasset | 3 +++ .../Content/Background/Sprites/S_ColoredLand_Sprite.uasset | 3 +++ .../Content/Background/Sprites/S_ColoredShroom_Sprite.uasset | 3 +++ .../Content/Background/Textures/T_BlueDesert.uasset | 3 +++ .../Content/Background/Textures/T_BlueGrass.uasset | 3 +++ .../Content/Background/Textures/T_BlueLand.uasset | 3 +++ .../Content/Background/Textures/T_BlueShroom.uasset | 3 +++ .../Content/Background/Textures/T_ColoredDesert.uasset | 3 +++ .../Content/Background/Textures/T_ColoredGrass.uasset | 3 +++ .../Content/Background/Textures/T_ColoredLand.uasset | 3 +++ .../Content/Background/Textures/T_ColoredShroom.uasset | 3 +++ .../Content/Cars/CarKart/FlipBook/PFB_CarKartStatus.uasset | 3 +++ .../Cars/CarKart/Sprites/S_CarKartStatus1_Sprite.uasset | 3 +++ .../Cars/CarKart/Sprites/S_CarKartStatus2_Sprite.uasset | 3 +++ .../Cars/CarKart/Sprites/S_CarKartStatus3_Sprite.uasset | 3 +++ .../Cars/CarKart/Sprites/S_CarKartStatus4_Sprite.uasset | 3 +++ .../Content/Cars/CarKart/Textures/T_CarKartStatus1.uasset | 3 +++ .../Content/Cars/CarKart/Textures/T_CarKartStatus2.uasset | 3 +++ .../Content/Cars/CarKart/Textures/T_CarKartStatus3.uasset | 3 +++ .../Content/Cars/CarKart/Textures/T_CarKartStatus4.uasset | 3 +++ .../Cars/CarOffroad/FlipBook/PFB_CarOffroadStatus.uasset | 3 +++ .../Cars/CarOffroad/Sprites/S_CarOffroadStatus1_Sprite.uasset | 3 +++ .../Cars/CarOffroad/Sprites/S_CarOffroadStatus2_Sprite.uasset | 3 +++ .../Cars/CarOffroad/Sprites/S_CarOffroadStatus3_Sprite.uasset | 3 +++ .../Cars/CarOffroad/Sprites/S_CarOffroadStatus4_Sprite.uasset | 3 +++ .../Cars/CarOffroad/Textures/T_CarOffroadStatus1.uasset | 3 +++ .../Cars/CarOffroad/Textures/T_CarOffroadStatus2.uasset | 3 +++ .../Cars/CarOffroad/Textures/T_CarOffroadStatus3.uasset | 3 +++ .../Cars/CarOffroad/Textures/T_CarOffroadStatus4.uasset | 3 +++ .../Content/Cars/CarSedan/FlipBook/PFB_Red_Car_Status.uasset | 3 +++ .../Cars/CarSedan/Sprites/S_Red_Car_Status_1_Sprite.uasset | 3 +++ .../Cars/CarSedan/Sprites/S_Red_Car_Status_2_Sprite.uasset | 3 +++ .../Cars/CarSedan/Sprites/S_Red_Car_Status_3_Sprite.uasset | 3 +++ .../Cars/CarSedan/Sprites/S_Red_Car_Status_4_Sprite.uasset | 3 +++ .../Content/Cars/CarSedan/Textures/T_Red_Car_Status_1.uasset | 3 +++ .../Content/Cars/CarSedan/Textures/T_Red_Car_Status_2.uasset | 3 +++ .../Content/Cars/CarSedan/Textures/T_Red_Car_Status_3.uasset | 3 +++ .../Content/Cars/CarSedan/Textures/T_Red_Car_Status_4.uasset | 3 +++ .../Content/Cars/CarTruck/FlipBook/PFB_CarTruckStatus.uasset | 3 +++ .../Cars/CarTruck/Sprites/S_CarTruckStatus1_Sprite.uasset | 3 +++ .../Cars/CarTruck/Sprites/S_CarTruckStatus2_Sprite.uasset | 3 +++ .../Cars/CarTruck/Sprites/S_CarTruckStatus3_Sprite.uasset | 3 +++ .../Cars/CarTruck/Sprites/S_CarTruckStatus4_Sprite.uasset | 3 +++ .../Content/Cars/CarTruck/Textures/T_CarTruckStatus1.uasset | 3 +++ .../Content/Cars/CarTruck/Textures/T_CarTruckStatus2.uasset | 3 +++ .../Content/Cars/CarTruck/Textures/T_CarTruckStatus3.uasset | 3 +++ .../Content/Cars/CarTruck/Textures/T_CarTruckStatus4.uasset | 3 +++ .../trivialkart_unreal/Content/Font/FF_kenpixel.uasset | 3 +++ trivialkart/trivialkart_unreal/Content/Font/F_kenpixel.uasset | 3 +++ .../trivialkart_unreal/Content/Maps/L_TrivialKart.umap | 3 +++ .../Content/UI/GasBar/T_Gas_Status_0.uasset | 3 +++ .../Content/UI/GasBar/T_Gas_Status_1.uasset | 3 +++ .../Content/UI/GasBar/T_Gas_Status_2.uasset | 3 +++ .../Content/UI/GasBar/T_Gas_Status_3.uasset | 3 +++ .../Content/UI/GasBar/T_Gas_Status_4.uasset | 3 +++ .../Content/UI/GasBar/T_Gas_Status_5.uasset | 3 +++ .../Content/UI/Store/CarsInSale/T_Kart_In_Sale.uasset | 3 +++ .../Content/UI/Store/CarsInSale/T_Offroad_In_Sale.uasset | 3 +++ .../Content/UI/Store/CarsInSale/T_Sedan_In_Sale.uasset | 3 +++ .../Content/UI/Store/CarsInSale/T_Truck_In_Sale.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_EmptyBg.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_FillGasBg.uasset | 3 +++ .../trivialkart_unreal/Content/UI/Store/StoreBg/T_Left.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_Left_Bottom.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_Left_Top.uasset | 3 +++ .../trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_Mid_Bottom.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_Mid_Top.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_Right_Bottom.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_Right_Mid.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_Right_Top.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_StoreBg.uasset | 3 +++ .../Content/UI/Store/StoreBg/T_SubcriptionBg.uasset | 3 +++ trivialkart/trivialkart_unreal/Content/UI/Store/T_Gas.uasset | 3 +++ .../trivialkart_unreal/Content/UI/Store/T_Rectangle.uasset | 3 +++ .../Content/UI/Store/T_SubscriptionButton.uasset | 3 +++ .../Content/UI/Store/T_Subscription_Button.uasset | 3 +++ .../trivialkart_unreal/Content/UI/Store/Tabs/T_Car.uasset | 3 +++ .../Content/UI/Store/Tabs/T_CarSelected.uasset | 3 +++ .../Content/UI/Store/Tabs/T_TabSelected.uasset | 3 +++ .../Content/UI/Store/Tabs/T_TabUnselected.uasset | 3 +++ .../Content/UI/Store/Tabs/T_Vip_Star_Selected.uasset | 3 +++ .../Content/UI/Store/Tabs/T_Vip_Star_Unselected.uasset | 3 +++ trivialkart/trivialkart_unreal/Content/UI/T_CoinBar.uasset | 3 +++ trivialkart/trivialkart_unreal/Content/UI/T_CoinGold.uasset | 3 +++ .../trivialkart_unreal/Content/UI/T_CoinGold_Small.uasset | 3 +++ trivialkart/trivialkart_unreal/Content/UI/T_Gear.uasset | 3 +++ .../Content/UI/T_LeaderboardsComplex.uasset | 3 +++ .../trivialkart_unreal/Content/UI/T_MassiveMultiplayer.uasset | 3 +++ .../trivialkart_unreal/Content/UI/T_RestorePurchase.uasset | 3 +++ .../trivialkart_unreal/Content/UI/T_Singleplayer.uasset | 3 +++ trivialkart/trivialkart_unreal/Content/UI/T_Triangle.uasset | 3 +++ trivialkart/trivialkart_unreal/Content/UI/T_Trophy.uasset | 3 +++ 120 files changed, 359 insertions(+), 2 deletions(-) create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Flag/FlipBook/S_FlagRed_Down_Flipbook.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed2_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed_Down_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed2.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed_Down.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Bush_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_GrassMid_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Grass_1_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Green_Land_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_RoadRampLong_SE_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Rock_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_SignRight_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Bush.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_GrassMid.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Grass_1.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Green_Land.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_RoadRampLong_SE.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Rock.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_SignRight.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueDesert_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueGrass_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueLand_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueShroom_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredDesert_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredGrass_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredLand_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredShroom_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueDesert.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueGrass.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueLand.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueShroom.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredDesert.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredGrass.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredLand.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredShroom.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/FlipBook/PFB_CarKartStatus.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus1_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus2_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus3_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus4_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus1.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus2.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus3.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus4.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/FlipBook/PFB_CarOffroadStatus.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus1_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus2_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus3_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus4_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus1.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus2.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus3.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus4.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/FlipBook/PFB_Red_Car_Status.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_1_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_2_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_3_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_4_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_1.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_2.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_3.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_4.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/FlipBook/PFB_CarTruckStatus.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus1_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus2_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus3_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus4_Sprite.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus1.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus2.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus3.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus4.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Font/FF_kenpixel.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Font/F_kenpixel.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap create mode 100644 trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_0.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_1.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_2.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_3.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_4.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_5.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Kart_In_Sale.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Offroad_In_Sale.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Sedan_In_Sale.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Truck_In_Sale.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_EmptyBg.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_FillGasBg.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left_Bottom.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left_Top.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid_Bottom.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid_Top.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Bottom.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Mid.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Top.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_StoreBg.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_SubcriptionBg.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/T_Gas.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/T_Rectangle.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/T_SubscriptionButton.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/T_Subscription_Button.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Car.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_CarSelected.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_TabSelected.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_TabUnselected.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Vip_Star_Selected.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Vip_Star_Unselected.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_CoinBar.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_CoinGold.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_CoinGold_Small.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_Gear.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_LeaderboardsComplex.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_MassiveMultiplayer.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_RestorePurchase.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_Singleplayer.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_Triangle.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/UI/T_Trophy.uasset diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index a946e7e1..eb1cfaba 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -1,7 +1,7 @@ [/Script/EngineSettings.GameMapsSettings] -EditorStartupMap=/Engine/Maps/Templates/OpenWorld.OpenWorld +EditorStartupMap=/Game/Maps/TrivialKart_Map.TrivialKart_Map LocalMapOptions= TransitionMap=None bUseSplitscreen=False @@ -11,7 +11,7 @@ FourPlayerSplitscreenLayout=Grid bShowAllPlayerWidgetsWhenSplitscreenDisabled=False bOffsetPlayerGamepadIds=False GameInstanceClass=/Script/Engine.GameInstance -GameDefaultMap=/Engine/Maps/Templates/OpenWorld.OpenWorld +GameDefaultMap=/Game/Maps/TrivialKart_Map.TrivialKart_Map ServerDefaultMap=/Engine/Maps/Entry.Entry GlobalDefaultGameMode=/Script/Engine.GameModeBase GlobalDefaultServerGameMode=None diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/FlipBook/S_FlagRed_Down_Flipbook.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/FlipBook/S_FlagRed_Down_Flipbook.uasset new file mode 100644 index 00000000..39c114db --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/FlipBook/S_FlagRed_Down_Flipbook.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e67fb3fe190ff0e6146f01c61a4824e500b9c8175bc5e240ebfa543f474126ec +size 9316 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed2_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed2_Sprite.uasset new file mode 100644 index 00000000..83be8776 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed2_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:af0059a171e0884c203a88e58936c90d9b2dc7f6a759701cda1f926f658bef31 +size 13328 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed_Down_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed_Down_Sprite.uasset new file mode 100644 index 00000000..c94388b3 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed_Down_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51a73fdb1b152afd1c415122e57e9bba65651cb9f1c8ebb0a9ff44b3d3e8b41b +size 13927 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed_Sprite.uasset new file mode 100644 index 00000000..ebe7ed77 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Sprites/S_FlagRed_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:051f94dcbe7dfe22c58e3c80a5b39cb79199e15ff34f8aa26017cae493c559ed +size 13248 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed.uasset new file mode 100644 index 00000000..5a9974fc --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:571d0653e6e55871820b1922e9e7cff768f676bc60d0e012343969d346c09880 +size 14173 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed2.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed2.uasset new file mode 100644 index 00000000..af49df12 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9f85d6d80f39c4f1d637b1e8680ac4e6702c856e206bbc6a4010a81581e6890 +size 14197 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed_Down.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed_Down.uasset new file mode 100644 index 00000000..e1f21d49 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Flag/Textures/T_FlagRed_Down.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:601433eef5c7af326816f29f61d7101a963c0d6fd3d9175fca41a578256ea8a7 +size 13202 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Bush_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Bush_Sprite.uasset new file mode 100644 index 00000000..2a50faac --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Bush_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:76f9a6780612b3035a615a920706c5a582339f92d9c59466b0e886420e6e3ce1 +size 12377 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_GrassMid_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_GrassMid_Sprite.uasset new file mode 100644 index 00000000..37ba6fbb --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_GrassMid_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c532fae4ad79e362a1037846ed89b54fdd9ba9d7fe74a023e96ada7599b5c484 +size 8758 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Grass_1_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Grass_1_Sprite.uasset new file mode 100644 index 00000000..24aa000f --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Grass_1_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ef361da6f739bd5f5e3914d80e9e2ed4b19abb027e1ca35011418924d7d5734f +size 13010 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Green_Land_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Green_Land_Sprite.uasset new file mode 100644 index 00000000..8d630121 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Green_Land_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4d7b5786e2a89ead796bb1eb1d8b3f5a169828b6466befad69e86e2fd1c12973 +size 14092 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_RoadRampLong_SE_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_RoadRampLong_SE_Sprite.uasset new file mode 100644 index 00000000..a6f48c1e --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_RoadRampLong_SE_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:659a0a5a345fd6b07de9e3160923d2ad74ca06a0294c11e46499df64db44c636 +size 14800 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Rock_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Rock_Sprite.uasset new file mode 100644 index 00000000..01b44d60 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_Rock_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4b71a23ed0bb6f3b613c910e2a73a67d3ad412fa974bae73b195c48e82815ae9 +size 12273 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_SignRight_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_SignRight_Sprite.uasset new file mode 100644 index 00000000..6154304e --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Sprites/T_SignRight_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:04470033787f6fe09b1de6e150b5f839c549405757fd44e4762dca870ef1f61e +size 12600 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Bush.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Bush.uasset new file mode 100644 index 00000000..3ffde167 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Bush.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0000289d33670e0c19b7b1c4a21b66e7868e699f2a952517f03c1eeab7051462 +size 14162 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_GrassMid.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_GrassMid.uasset new file mode 100644 index 00000000..5d33ee0d --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_GrassMid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:33de0d14c895cc23b24ed47057a1cc6135174aa14db515c127812c7ae9e8edb1 +size 14506 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Grass_1.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Grass_1.uasset new file mode 100644 index 00000000..580da6d1 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Grass_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bfa38410db7ef28af17bfe3de8b513c2acc09f7f44893a7dd44948b28e3082bd +size 13283 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Green_Land.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Green_Land.uasset new file mode 100644 index 00000000..00c6ca76 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Green_Land.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a3939f2a94223e5d39cf4283e490f28c410a825e41cd99a626e9ed4d63425557 +size 11626 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_RoadRampLong_SE.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_RoadRampLong_SE.uasset new file mode 100644 index 00000000..cd88c822 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_RoadRampLong_SE.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:57792cb5c175cbf459b110d8900a5fd95533759a601c55b08ac034799848db82 +size 26255 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Rock.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Rock.uasset new file mode 100644 index 00000000..486a392d --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_Rock.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f0bf10618c59d3083acc7c50a1dd5a95888e40ba3d090a6146a83f33ffde62b +size 14428 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_SignRight.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_SignRight.uasset new file mode 100644 index 00000000..8a24781f --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/Textures/T_SignRight.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f470a96df91880161531698f0a195eb8e2bc2d829263b0b5693b5a6bfb8ac15 +size 13798 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueDesert_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueDesert_Sprite.uasset new file mode 100644 index 00000000..98abc2f1 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueDesert_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:98d3113d7b71eacce776acd57098ed44d46e0924967c6bb631363038d1eb1a7c +size 7696 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueGrass_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueGrass_Sprite.uasset new file mode 100644 index 00000000..5fbf2443 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueGrass_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:51d0a141e9012c289d1e5c5aabbc69f66c7eeafea8446b7a15ce5b95cb74b999 +size 7720 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueLand_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueLand_Sprite.uasset new file mode 100644 index 00000000..7a57a666 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueLand_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d12ad0e0484281d6a9d2335d8ce61fe87f604648b370b503db57bc7bb7ae3043 +size 7546 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueShroom_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueShroom_Sprite.uasset new file mode 100644 index 00000000..081e1112 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_BlueShroom_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55c4773e75dd742d1e9d4d34817fc1af5ad187ea012c9a5356f7f23a20452c30 +size 7758 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredDesert_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredDesert_Sprite.uasset new file mode 100644 index 00000000..cd433674 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredDesert_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1e867cd1ce8319dc90edd6f6e2211d3c24bfd2bd3dff01919d2b0b3866aad416 +size 8248 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredGrass_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredGrass_Sprite.uasset new file mode 100644 index 00000000..8b2529e6 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredGrass_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e095a9301023a32519f381aa280556afad4f863af45a2a2c3232773ea4f8f7c2 +size 8524 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredLand_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredLand_Sprite.uasset new file mode 100644 index 00000000..f5dc2eb9 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredLand_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eb04da91da815ced896ad2de773432aac7a582dcb2d2702f4962f3f0c6bfa205 +size 7880 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredShroom_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredShroom_Sprite.uasset new file mode 100644 index 00000000..6153052a --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Sprites/S_ColoredShroom_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a37b40b94f59f9075ecb1c41873915ad9c1e6faef87ccf44359d8a58fbfef27c +size 8568 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueDesert.uasset b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueDesert.uasset new file mode 100644 index 00000000..56d54bbf --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueDesert.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67c12ae124e6b0d0a4ee781605aa408e059f27122dd22e56c93cfa7153c0a9aa +size 26916 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueGrass.uasset b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueGrass.uasset new file mode 100644 index 00000000..0b74e83d --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueGrass.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eff5f6cd631b8c0054464a5ada1e3ab50508f047e1a43c12375d54831b733ff5 +size 26115 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueLand.uasset b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueLand.uasset new file mode 100644 index 00000000..8f172c0b --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueLand.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c72c61c375f96319dc4c76cacdb3bd92a921978d21a888f9110edd1650d62c56 +size 23929 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueShroom.uasset b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueShroom.uasset new file mode 100644 index 00000000..cfec327f --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_BlueShroom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8ab96f7942469c959258c4ca877868be270ccbe4a627d0d714acbe8b9f115c41 +size 27793 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredDesert.uasset b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredDesert.uasset new file mode 100644 index 00000000..acecb520 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredDesert.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1df6b570900d33c39eaa17f2842421aab7a090528bde455eb188b29b35eaab50 +size 32116 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredGrass.uasset b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredGrass.uasset new file mode 100644 index 00000000..e9bdce5d --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredGrass.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:48768b834abbd38de53561793629ea6a8af94cd5758da1db44198273e68f4678 +size 32513 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredLand.uasset b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredLand.uasset new file mode 100644 index 00000000..c56ee3a4 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredLand.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0dcd6d2837e96b41de92c6c0fa1fa89f8d9edc8373d01d9a259812dc36133748 +size 28574 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredShroom.uasset b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredShroom.uasset new file mode 100644 index 00000000..8b5887fb --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Textures/T_ColoredShroom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fc512f004cc4cd643ec311b52ad7d909438c643bd593ef2b62fe451379b6274a +size 33310 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/FlipBook/PFB_CarKartStatus.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/FlipBook/PFB_CarKartStatus.uasset new file mode 100644 index 00000000..665c7ca7 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/FlipBook/PFB_CarKartStatus.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0817f1d257585c065b851016533ec22a94b7fe44707ba5c69aacd62e0fc02914 +size 11865 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus1_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus1_Sprite.uasset new file mode 100644 index 00000000..b0d5d847 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus1_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:608bd1a8980e58fc6e0e09541f7c377e63e63f64aa9a98fe47512ddacd5052da +size 15249 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus2_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus2_Sprite.uasset new file mode 100644 index 00000000..2cc8cc5b --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus2_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e9ad869ce1f64b7f3b890d8998395c51f6319edc6eb6483f5b7bf5f2dd2decc7 +size 15266 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus3_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus3_Sprite.uasset new file mode 100644 index 00000000..d170dae3 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus3_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:17f1cf305321cb39de38ac52e4ae886bff61d9bc50703b7bd91f3ec420d1f85d +size 15389 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus4_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus4_Sprite.uasset new file mode 100644 index 00000000..b13c2fd7 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Sprites/S_CarKartStatus4_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:93f518f464a35ea613ac3fa4fca934153ab831591c3b76b696f68cb481017792 +size 15307 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus1.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus1.uasset new file mode 100644 index 00000000..9ae5fe53 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7f23c7635e58b5b665df05e40214a184f2cdf64e5ecaace473c56a20a99f922 +size 35541 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus2.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus2.uasset new file mode 100644 index 00000000..90b70eb0 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c94e6ee044bdd0050066eb70a4e50931ef83808b315ce71ef62165189fc4ad7b +size 35564 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus3.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus3.uasset new file mode 100644 index 00000000..1049ca7b --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d27a2da0bbfb5f342945105ba202d2fd96911b8391d2c7b8cae8fe33005b8c3 +size 35812 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus4.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus4.uasset new file mode 100644 index 00000000..37b41e6b --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarKart/Textures/T_CarKartStatus4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:69d6752e8e6ccfb3369ac95084c251bd838af380bc35b513209a4b68422dd9dd +size 35568 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/FlipBook/PFB_CarOffroadStatus.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/FlipBook/PFB_CarOffroadStatus.uasset new file mode 100644 index 00000000..287f29d2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/FlipBook/PFB_CarOffroadStatus.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fe4d4a3288297a567cd036d54cc9e9e7583c9e465fa0033a060ba114119599e8 +size 11125 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus1_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus1_Sprite.uasset new file mode 100644 index 00000000..40beda50 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus1_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e5b6d946d8f1523d2383d39429aba1f275da5504f1bd2ebfe4bfcb41c7dfc454 +size 14764 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus2_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus2_Sprite.uasset new file mode 100644 index 00000000..71813130 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus2_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0261dda0e889bd2d41ba49dcfab1d1ad9d82bee66a513dbc498d799b2afa14be +size 14797 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus3_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus3_Sprite.uasset new file mode 100644 index 00000000..b41d2d25 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus3_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b274171af70b9cbb393fe991b495d0ffbeb32d4acaa9bcee7ec55b542f611b2a +size 14627 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus4_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus4_Sprite.uasset new file mode 100644 index 00000000..da067ca0 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Sprites/S_CarOffroadStatus4_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1696227ec0806b13164cea6b4be214b5967970515653802fe905af5cb0a482c2 +size 14792 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus1.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus1.uasset new file mode 100644 index 00000000..84750103 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a29b1e8e587c3a6385de12fb638295502dda1ec53df1e0d1cd183f80876ab2a +size 31606 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus2.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus2.uasset new file mode 100644 index 00000000..9ab134df --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9957054cc50e0de871895ae4298aab9c3771efcbd0e531dddb0d2d084927c005 +size 31577 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus3.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus3.uasset new file mode 100644 index 00000000..66a2a040 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fbad8c7eef0df8ee23f1cbeda71ad54f1fb082c301f64f5e48549d61090adeeb +size 31640 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus4.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus4.uasset new file mode 100644 index 00000000..b056bd37 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarOffroad/Textures/T_CarOffroadStatus4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:429153f44a151ed68a2b7b16533b4efb54f8a6b466f511e65286e36052a3280a +size 31586 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/FlipBook/PFB_Red_Car_Status.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/FlipBook/PFB_Red_Car_Status.uasset new file mode 100644 index 00000000..af077286 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/FlipBook/PFB_Red_Car_Status.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f3052cd16976f4356e42265e9328cebe1b3711d5d2ee8b6e01e6aa16e6a2a8dd +size 11790 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_1_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_1_Sprite.uasset new file mode 100644 index 00000000..d762f89a --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_1_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:810804b7a6342cfb77cbb0e9a513de4dae0ddbf44fb79a0df06d1344c681a8f5 +size 15249 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_2_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_2_Sprite.uasset new file mode 100644 index 00000000..7edd2d48 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_2_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a9053ecb2b2833d1df30246ddde76be060a8f95f724b20795f6893b669c6f5ca +size 15187 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_3_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_3_Sprite.uasset new file mode 100644 index 00000000..5a67cb18 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_3_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:df779af24b5d5219dc4ad81f9caa356e8c4d88d31809076954915216413b4ae0 +size 15235 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_4_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_4_Sprite.uasset new file mode 100644 index 00000000..3ebd96b6 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Sprites/S_Red_Car_Status_4_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d7a7892650d06e4702da2594599d592b9ff4c0d1cf33be6061b07c3fced93a3b +size 15175 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_1.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_1.uasset new file mode 100644 index 00000000..3df1d5c2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4823b04e9a47053638ad6e681d168953b224cf3117633ee1cb7a9e067b8d5bcb +size 27730 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_2.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_2.uasset new file mode 100644 index 00000000..733ddb17 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:11363977f481674cdea44ba72fad9dc9ded9fdf0c30fe554fca530ab45780e9a +size 27291 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_3.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_3.uasset new file mode 100644 index 00000000..de011727 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7bfa56b4dc56a6221dd1f3b57421f3474927b66f1407aaa4c9bb68d93f46bf16 +size 27323 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_4.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_4.uasset new file mode 100644 index 00000000..86ff8c9c --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarSedan/Textures/T_Red_Car_Status_4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6bd2c813514c093eeac7f79adab7962885ac2d3dfba47c82cd49a01fefd884ab +size 27244 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/FlipBook/PFB_CarTruckStatus.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/FlipBook/PFB_CarTruckStatus.uasset new file mode 100644 index 00000000..a34f07be --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/FlipBook/PFB_CarTruckStatus.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f541b0117f537df9dbf4f6b9c2cd35a2b2f6a44be3ea13418df394145635d157 +size 11880 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus1_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus1_Sprite.uasset new file mode 100644 index 00000000..3e363d4b --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus1_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a96d4908f675ac7bbb05e6a7cdd3590f56fccc2c0d4ae07bf5ed056b4cce8226 +size 15352 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus2_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus2_Sprite.uasset new file mode 100644 index 00000000..6c7ee8e5 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus2_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf500ce6d92d3cae0002c42ac7e65edce0d022fd7138167cb1f8007ac74b51df +size 15335 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus3_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus3_Sprite.uasset new file mode 100644 index 00000000..3ae9c134 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus3_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6aa1e4e853728566102d72f07d4b405d978a81ed1f6ba257cab52dd7223c8d2d +size 15383 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus4_Sprite.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus4_Sprite.uasset new file mode 100644 index 00000000..deda645b --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Sprites/S_CarTruckStatus4_Sprite.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:537e8ba1999d58741bec1f8ef0d3d9d7a15c13e76603e1d6e3947fecf3593e0a +size 15363 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus1.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus1.uasset new file mode 100644 index 00000000..61792bb5 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8d92d3e04004eb388ae9b5f89f3da9627b1d19fe6ba0c93cc5b4c9ddefe0f625 +size 30638 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus2.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus2.uasset new file mode 100644 index 00000000..5e073df1 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:365587c8028ad4c28db34b1c4ef320be77a5e37512e016cbdfedac750e7989de +size 30792 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus3.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus3.uasset new file mode 100644 index 00000000..7d708f89 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32031f9f10be3e57cc3830fd9e7858d64e5e0d3a51b0a8daeab4e49e72e2908c +size 30759 diff --git a/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus4.uasset b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus4.uasset new file mode 100644 index 00000000..886b9f3a --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Cars/CarTruck/Textures/T_CarTruckStatus4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:25bd12e614035ddb84898a8250584d8a2c0b08359539e1719271be09bb0ca1bb +size 30795 diff --git a/trivialkart/trivialkart_unreal/Content/Font/FF_kenpixel.uasset b/trivialkart/trivialkart_unreal/Content/Font/FF_kenpixel.uasset new file mode 100644 index 00000000..fbb37823 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Font/FF_kenpixel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7ce5acf3d7f979d1e900659ba1ff05280a0542f21c0e1b9845b16059a44fe14e +size 19574 diff --git a/trivialkart/trivialkart_unreal/Content/Font/F_kenpixel.uasset b/trivialkart/trivialkart_unreal/Content/Font/F_kenpixel.uasset new file mode 100644 index 00000000..a133dafc --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Font/F_kenpixel.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b1f515d67fd5b1ea4ea53b08d7dbe2368c534477d7d0c2a19eb92d14a30875a4 +size 6784 diff --git a/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap b/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap new file mode 100644 index 00000000..1493f2f2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7673b75dcffdaf781206f204bee75b0e8a328d719749e190b8fd5cbf27d5f875 +size 8628 diff --git a/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_0.uasset b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_0.uasset new file mode 100644 index 00000000..24bcef01 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_0.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f0a60c7490d03afcb2db2c22d3cde892636303f7b66117d0131586634ccb123 +size 12387 diff --git a/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_1.uasset b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_1.uasset new file mode 100644 index 00000000..9b649789 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_1.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:53d5ff342d9b14f75c29905679981bbab0748a5dc556b4ba3bbb7173ec95ec22 +size 12640 diff --git a/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_2.uasset b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_2.uasset new file mode 100644 index 00000000..35792514 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_2.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2a4bbbdad9d98b4d7f4eba94b3d9c217057a1fcbd6c4ed243235240d457c617f +size 12747 diff --git a/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_3.uasset b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_3.uasset new file mode 100644 index 00000000..5ad56e47 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_3.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:61aae0c52294a2235d5fcd98ff530fffa7fcd027c37e1d8f15596ce995c37e25 +size 12702 diff --git a/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_4.uasset b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_4.uasset new file mode 100644 index 00000000..3eddbac8 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_4.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cf7543f321a20d1b935572d4ea878568aac22552eb57c56d8b9c19a3c10a05da +size 12775 diff --git a/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_5.uasset b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_5.uasset new file mode 100644 index 00000000..9eacf370 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/GasBar/T_Gas_Status_5.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8e216e6dfc366197f75621fcadeb7ba04a431a30e62ba118c5eec3f055681b9a +size 12808 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Kart_In_Sale.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Kart_In_Sale.uasset new file mode 100644 index 00000000..10d3339f --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Kart_In_Sale.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24ef08909f8e266985d98f17ecb98c6904ca3e3398d541927855d83baaf61059 +size 37659 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Offroad_In_Sale.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Offroad_In_Sale.uasset new file mode 100644 index 00000000..1d466a62 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Offroad_In_Sale.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fb15105bfd0fed3db765d0eae16edbd25475c928f45a7e72bd284b84a8ae687e +size 41212 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Sedan_In_Sale.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Sedan_In_Sale.uasset new file mode 100644 index 00000000..a6255d1f --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Sedan_In_Sale.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b191acfc967f86709bbc7d6d58c042f5882acb287216a86ca457348ab8b7a5c1 +size 37138 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Truck_In_Sale.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Truck_In_Sale.uasset new file mode 100644 index 00000000..ba60bba2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/CarsInSale/T_Truck_In_Sale.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:606bb3a686ae7830efb183af6c68d81a8512088b7e6f2add986a723920b1a0e7 +size 39560 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_EmptyBg.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_EmptyBg.uasset new file mode 100644 index 00000000..373783a3 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_EmptyBg.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5d59b309e63ab15a2208552ac1935c26f020ede0b96f002b4d864d27c312992c +size 13970 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_FillGasBg.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_FillGasBg.uasset new file mode 100644 index 00000000..02dbe5e9 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_FillGasBg.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9d18e48fc4eb43a5911efcdffee5af1bbcdc2e13e85129d4ece933209f0f5525 +size 18908 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left.uasset new file mode 100644 index 00000000..34e090e9 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f65585c43837232d49f4214898292f8c6fc9a5172132120b155acdb45ebdeadd +size 11669 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left_Bottom.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left_Bottom.uasset new file mode 100644 index 00000000..dcedbbcd --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left_Bottom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9e0a992b18b10babc61c40af6a0eecd166b5903b5ea23c1fb360399ff4e1a95c +size 12277 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left_Top.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left_Top.uasset new file mode 100644 index 00000000..170da2ec --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Left_Top.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2f2f5659a8c7984da53b6bf079f9a0161126d0c0ceb43bb57b8e7dcf8309cbbe +size 11911 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid.uasset new file mode 100644 index 00000000..27d76bf2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6383fcb058463af6ed9ee57ae12776b3f055fb1ee1c92d2ff3a9de2adf904898 +size 11417 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid_Bottom.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid_Bottom.uasset new file mode 100644 index 00000000..6115b925 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid_Bottom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:074940c4c8f283e43b06ee236e132484130564fc2d286be2c79ec9e44be5c8d8 +size 12096 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid_Top.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid_Top.uasset new file mode 100644 index 00000000..beb3ce87 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Mid_Top.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b77d9de5a51f221bd505fde8c1264894fe1dd7b9ce5f5648d8e2479eaf165803 +size 11695 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Bottom.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Bottom.uasset new file mode 100644 index 00000000..55e0c2e3 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Bottom.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2bfca884c6768a1a78a589c2907f3af1cbce1567f8a1d8b0a6c86329b889f281 +size 12384 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Mid.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Mid.uasset new file mode 100644 index 00000000..b21ac0bf --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Mid.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ad5e8d977400aded1ae40463018aee531d98f872803d510490b3e8041a4edb66 +size 11915 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Top.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Top.uasset new file mode 100644 index 00000000..f791e7bb --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_Right_Top.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4793dcd1c056ee8437715ac91b3f22edfc4458ac4524b7e399f2a3019ae36ad9 +size 12045 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_StoreBg.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_StoreBg.uasset new file mode 100644 index 00000000..3b3d1bd6 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_StoreBg.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:90ea2f3796a2761c4276ad6d77a2c1b12f2a63eac0f840f0697cfa2376b228f8 +size 14070 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_SubcriptionBg.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_SubcriptionBg.uasset new file mode 100644 index 00000000..e1b22eb0 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/StoreBg/T_SubcriptionBg.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:346cd8a70fc917ccb4703baa604a7c97a70727f41aafaee4e3fda6f282cc1f2c +size 17716 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/T_Gas.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/T_Gas.uasset new file mode 100644 index 00000000..1cedad47 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/T_Gas.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:bdae5278ab15b163e9b80e8140e2772bd55d77620ec3ea01ca10989a9171eea7 +size 26255 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/T_Rectangle.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/T_Rectangle.uasset new file mode 100644 index 00000000..6eb02d84 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/T_Rectangle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:60744c29985b8e1cfb27c010c9a90714be19baaf734017de9d0e2d4a2da9aa23 +size 11615 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/T_SubscriptionButton.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/T_SubscriptionButton.uasset new file mode 100644 index 00000000..2221eb3a --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/T_SubscriptionButton.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:db9edce46942cf0c7260c7a94eec88c54f4be74f785d16122e668b6c757ed646 +size 13410 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/T_Subscription_Button.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/T_Subscription_Button.uasset new file mode 100644 index 00000000..d3e67afa --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/T_Subscription_Button.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:31bf4fca4bbd579cb81950f8d6c8d3a3a69f114a1bf453a4722fc81750f7b229 +size 13373 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Car.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Car.uasset new file mode 100644 index 00000000..a5fe7413 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Car.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ebb54a4782232eb7d80cc1c3f089dec53c3a5b60a64393f6dc24f92de444584 +size 26804 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_CarSelected.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_CarSelected.uasset new file mode 100644 index 00000000..87a6edd6 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_CarSelected.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a4600aa0ede892821bf57b1427001865de75c03ce32f10cad7704d5893ffe7cd +size 30258 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_TabSelected.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_TabSelected.uasset new file mode 100644 index 00000000..715fb861 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_TabSelected.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:250c06076b0cb9ebb05efc49db3862ddb4dcde6ad8a7e51137d70d8257882141 +size 11398 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_TabUnselected.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_TabUnselected.uasset new file mode 100644 index 00000000..b63bf96c --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_TabUnselected.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5aa7b13e4f00ff84b2c8c918fc506219d1c682ce5201975b3f5048788eadd887 +size 11435 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Vip_Star_Selected.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Vip_Star_Selected.uasset new file mode 100644 index 00000000..d9434b6c --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Vip_Star_Selected.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0036c1e4bc4f24b5188b32649d4c591a01d29cd44a56306a3774b68cd6cac8bf +size 27851 diff --git a/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Vip_Star_Unselected.uasset b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Vip_Star_Unselected.uasset new file mode 100644 index 00000000..11e8c196 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/Store/Tabs/T_Vip_Star_Unselected.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79d2a220c5a65f240dd4e6bf79e5445874d33aeef1378862a7bf89f95073c83f +size 19231 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_CoinBar.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_CoinBar.uasset new file mode 100644 index 00000000..0f36e219 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_CoinBar.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ed8c195d2cb1db1db8ffdea5e25747fe0fa799e8203b9e24db42148c4a5d6987 +size 15589 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_CoinGold.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_CoinGold.uasset new file mode 100644 index 00000000..b69d4396 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_CoinGold.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:55f2bcf59500549af611bcd8580ce94360a38a535be0d35dbd1793b4913f06ad +size 14042 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_CoinGold_Small.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_CoinGold_Small.uasset new file mode 100644 index 00000000..a9863868 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_CoinGold_Small.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9f2b0183f5cf7325abe7597a6eb21a228a86fce38db9ea360ed09d8289714583 +size 13861 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_Gear.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_Gear.uasset new file mode 100644 index 00000000..a650721a --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_Gear.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4e6a9d6d92209faf13c1f8c33a18038c13df4bf9abe1ba2e3ff381079d871110 +size 15043 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_LeaderboardsComplex.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_LeaderboardsComplex.uasset new file mode 100644 index 00000000..d527e742 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_LeaderboardsComplex.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:24fe8d5db58f1336460c00bc1d172f7323d8146c507244902e6f90fb5a0ea055 +size 12546 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_MassiveMultiplayer.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_MassiveMultiplayer.uasset new file mode 100644 index 00000000..b0c729fd --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_MassiveMultiplayer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2d48d6676782f7edf71fca2991474b366f93bc0662fa42f5a742ca6db5e40d48 +size 12768 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_RestorePurchase.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_RestorePurchase.uasset new file mode 100644 index 00000000..c25a1b1f --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_RestorePurchase.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:22b2d2e88e0a12030da07e8b9d698a9e85ad719d933deb514d2b087288d48fc3 +size 19659 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_Singleplayer.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_Singleplayer.uasset new file mode 100644 index 00000000..e8ff0c64 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_Singleplayer.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2fd02d61958299bd58113a2ec313bde72c31e75cda7283b40740141c04915d8 +size 12390 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_Triangle.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_Triangle.uasset new file mode 100644 index 00000000..90541255 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_Triangle.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:066d6b2a94d2a1cfe01428d46c13833cd118ae11024f51fc217bffbe6cae757b +size 11387 diff --git a/trivialkart/trivialkart_unreal/Content/UI/T_Trophy.uasset b/trivialkart/trivialkart_unreal/Content/UI/T_Trophy.uasset new file mode 100644 index 00000000..df33d1fe --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/UI/T_Trophy.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6870c4f1d5504b40b848e360e32ea0862166059eba12b7cf7e39c4f5710be25f +size 12097 From b6c966e334c111696c03a472658e5f4e51bbdfa2 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Mon, 22 Dec 2025 10:41:53 +0530 Subject: [PATCH 03/27] PGS Authentication Added PGS Authentication with login, status check and nickname function in the Game Instance. --- .../Config/DefaultEngine.ini | 146 +++++++++++++++++- .../trivialkart_unreal/Config/DefaultGame.ini | 7 + .../Blueprints/Game/BP_GameInstance.uasset | 3 + .../GameInstances/TrivialKartGameInstance.cpp | 58 +++++++ .../GameInstances/TrivialKartGameInstance.h | 31 ++++ .../TrivialKart_Unreal.Build.cs | 24 +-- 6 files changed, 256 insertions(+), 13 deletions(-) create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index eb1cfaba..5d9365bc 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -1,7 +1,7 @@ [/Script/EngineSettings.GameMapsSettings] -EditorStartupMap=/Game/Maps/TrivialKart_Map.TrivialKart_Map +EditorStartupMap=/Game/Maps/L_TrivialKart.L_TrivialKart LocalMapOptions= TransitionMap=None bUseSplitscreen=False @@ -10,10 +10,10 @@ ThreePlayerSplitscreenLayout=FavorTop FourPlayerSplitscreenLayout=Grid bShowAllPlayerWidgetsWhenSplitscreenDisabled=False bOffsetPlayerGamepadIds=False -GameInstanceClass=/Script/Engine.GameInstance -GameDefaultMap=/Game/Maps/TrivialKart_Map.TrivialKart_Map +GameInstanceClass=/Game/Blueprints/Game/BP_GameInstance.BP_GameInstance_C +GameDefaultMap=/Game/Maps/L_TrivialKart.L_TrivialKart ServerDefaultMap=/Engine/Maps/Entry.Entry -GlobalDefaultGameMode=/Script/Engine.GameModeBase +GlobalDefaultGameMode=/Game/Blueprints/Game/BP_GameMode.BP_GameMode_C GlobalDefaultServerGameMode=None [/Script/Engine.RendererSettings] @@ -277,3 +277,141 @@ ConnectionType=USBOnly bUseManualIPAddress=False ManualIPAddress= + +[CoreRedirects] ++ClassRedirects=(OldName="/Script/TrivialKart_Unreal.TrivalKartGameInstance",NewName="/Script/TrivialKart_Unreal.TrivialKartGameInstance") + +[/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] +PackageName=com.gamesamples.trivialkartunreal +StoreVersion=1 +StoreVersionOffsetArm64=0 +StoreVersionOffsetX8664=0 +ApplicationDisplayName= +VersionDisplayName=1.0 +MinSDKVersion=26 +TargetSDKVersion=35 +InstallLocation=InternalOnly +bEnableLint=False +bPackageDataInsideApk=True +bCreateAllPlatformsInstall=True +bDisableVerifyOBBOnStartUp=False +bForceSmallOBBFiles=False +bAllowLargeOBBFiles=False +bAllowPatchOBBFile=False +bAllowOverflowOBBFiles=False +bDontBundleLibrariesInAPK=False +bUseExternalFilesDir=False +bPublicLogFiles=True +Orientation=SensorLandscape +MinAspectRatio=0.000000 +MaxAspectRatio=2.400000 +bUseDisplayCutout=False +RoundedEdgeSafeZone=None +bAllowResizing=True +bSupportSizeChanges=True +bRestoreNotificationsOnReboot=False +bFullScreen=True +bEnableNewKeyboard=True +DepthBufferPreference=Default +bValidateTextureFormats=True +bForceCompressNativeLibs=False +bEnableAdvancedBinaryCompression=True +bEnableBundle=True +bEnableUniversalAPK=True +bBundleABISplit=True +bBundleLanguageSplit=True +bBundleDensitySplit=True +ExtraApplicationSettings= +ExtraActivitySettings= ++ExtraPermissions=android.permission.READ_EXTERNAL_STORAGE ++ExtraPermissions=android.permission.WRITE_EXTERNAL_STORAGE ++ExtraPermissions=android.permission.INTERNET +bAndroidVoiceEnabled=False +bRecordPermissionAtStartupEnabled=False +bEnableMulticastSupport=False +bPackageForMetaQuest=False +bRemoveOSIG=False +KeyStore=TrivialKartUnreal.keystore +KeyAlias=TrivialKartUnrealKey +KeyStorePassword=tkue123 +KeyPassword= +DebugKeyStore= +DebugKeyAlias= +DebugKeyStorePassword= +DebugKeyPassword= +bBuildForArm64=True +bBuildForX8664=False +bBuildForES31=True +bSupportsVulkan=True +bSupportsVulkanSM5=False +DebugVulkanLayerDirectory=(Path="") +bAndroidOpenGLSupportsBackbufferSampling=False +bForceEmulatorProfileSelectionInNonShippingBuilds=True +bDetectVulkanByDefault=True +bBuildWithHiddenSymbolVisibility=True +bCompressDebugSymbols=True +bDisableStackProtector=False +bDisableLibCppSharedDependencyValidation=False +bSaveSymbols=False +bStripShaderReflection=True +bEnableGooglePlaySupport=True +RequestCodeForPlayGamesActivities=80002 +PlayGamesClientId=77167366172-e6i9eid88h67tt2bikcco5vsaijk8nti.apps.googleusercontent.com +bForceRefreshToken=False +GamesAppID=77167366172 +bSupportAdMob=False +AdMobAppID= +TagForChildDirectedTreatment=TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED +TagForUnderAgeOfConsent=TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED +MaxAdContentRating=MAX_AD_CONTENT_RATING_G +AdMobAdUnitID= +GooglePlayLicenseKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9qc20XUDeFLH8t2hcAqxjmM4QiIZ/ca7iWpD184qoBnjedUmnM1cBSsfuu6OZzmcOfugAEEoxrKimg+WVdIn2z8HLtA3n9tERVI21dsOQgpGgPZoUqVFxp3BRviChJwlRscA9WduBU6lNoXmPDGRrfgt0blYOzZ+dx4IWmZhl+BDmcB6V6QKzKFFT6wW0gXGgwaBQavJW9bPDb8PrqAsDRI0ELsl0v4RGb8s4oil705Db9Vt+70afAb6VpiDll/skQsJ7ImabB09SRQEdJ5idavvhW2LlWt7Z0DmGJexx7vH2PszlKTD4Y8pi5mLXP7zL+NabOleo13ZMNugFaKaPwIDAQAB +GCMClientSenderID=77167366172 +bShowLaunchImage=True +bAllowIMU=False +bAllowControllers=True +bBlockAndroidKeysOnControllers=False +bControllersBlockDeviceFeedback=False +AudioSampleRate=44100 +AudioCallbackBufferFrameSize=1024 +AudioNumBuffersToEnqueue=4 +AudioMaxChannels=0 +AudioNumSourceWorkers=0 +SpatializationPlugin= +SourceDataOverridePlugin= +ReverbPlugin= +OcclusionPlugin= +CompressionOverrides=(bOverrideCompressionTimes=False,DurationThreshold=5.000000,MaxNumRandomBranches=0,SoundCueQualityIndex=0) +CacheSizeKB=65536 +MaxChunkSizeOverrideKB=0 +bResampleForDevice=False +SoundCueCookQualityIndex=-1 +MaxSampleRate=48000.000000 +HighSampleRate=32000.000000 +MedSampleRate=24000.000000 +LowSampleRate=12000.000000 +MinSampleRate=8000.000000 +CompressionQualityModifier=1.000000 +AutoStreamingThreshold=0.000000 +AndroidGraphicsDebugger=None +MaliGraphicsDebuggerPath=(Path="") +bEnableMaliPerfCounters=False +bMultiTargetFormat_ETC2=True +bMultiTargetFormat_DXT=True +bMultiTargetFormat_ASTC=True +TextureFormatPriority_ETC2=0.200000 +TextureFormatPriority_DXT=0.600000 +TextureFormatPriority_ASTC=0.900000 +bASTCUseRDO=False +SDKAPILevelOverride= +NDKAPILevelOverride= +BuildToolsOverride= +bStreamLandscapeMeshLODs=False +bEnableDomStorage=False + +[OnlineSubsystem] +DefaultPlatformService=GooglePlay + +[OnlineSubsystemGooglePlay.Store] +bSupportsInAppPurchasing=True + diff --git a/trivialkart/trivialkart_unreal/Config/DefaultGame.ini b/trivialkart/trivialkart_unreal/Config/DefaultGame.ini index a1fbeeff..d30ec3b4 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultGame.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultGame.ini @@ -4,3 +4,10 @@ CommonButtonAcceptKeyHandling=TriggerClick [/Script/EngineSettings.GeneralProjectSettings] ProjectID=C958FA925B4F85EF31EC53B627AD4809 + +[/Script/UnrealEd.ProjectPackagingSettings] +BuildConfiguration=PPBC_Shipping +ForDistribution=True +FullRebuild=True +IncludeDebugFiles=True + diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset new file mode 100644 index 00000000..659d4f19 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb0eaf08299a909806dc9dc5c7547cdd488125c12c27897cb1b9619a1b191c18 +size 5810 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp new file mode 100644 index 00000000..970a4ff1 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -0,0 +1,58 @@ +#include "GameInstances/TrivialKartGameInstance.h" + +#include "OnlineSubsystem.h" +#include "OnlineSubsystemUtils.h" +#include "Interfaces/OnlineIdentityInterface.h" + +DEFINE_LOG_CATEGORY(LogTemplateGameInstance); + +void UTrivialKartGameInstance::Init() +{ + Super::Init(); + InitiateAutoLogin(); +} + +void UTrivialKartGameInstance::InitiateAutoLogin() +{ + if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) + { + if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) + { + IdentityInterface->AutoLogin(0); + IdentityInterface->AddOnLoginCompleteDelegate_Handle(0, + FOnLoginCompleteDelegate::CreateUObject(this, + &UTrivialKartGameInstance::OnLoginCompleted)); + } + } +} + +bool UTrivialKartGameInstance::GetLoginStatus() const +{ + if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) + { + if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) + { + return IdentityInterface->GetLoginStatus(0) == ELoginStatus::LoggedIn; + } + } + return false; +} + +FString UTrivialKartGameInstance::GetPlayerName() const +{ + if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) + { + if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) + { + return IdentityInterface->GetPlayerNickname(0); + } + } + return FString(); +} + +void UTrivialKartGameInstance::OnLoginCompleted(int LocalUserNum, bool bWasSuccessful, + const FUniqueNetId& UserId, const FString& Error) const +{ + UE_LOG(LogTemplateGameInstance, Log, TEXT("Local User: %d of Unique ID: %s has logged in with Status: %s"), + LocalUserNum, *UserId.ToDebugString(), bWasSuccessful ? *Error : TEXT("Success")); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h new file mode 100644 index 00000000..18eb41b1 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h @@ -0,0 +1,31 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Kismet/BlueprintPlatformLibrary.h" +#include "TrivialKartGameInstance.generated.h" + +DECLARE_LOG_CATEGORY_EXTERN(LogTemplateGameInstance, Log, All); +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInstance +{ + GENERATED_BODY() + +public: + virtual void Init() override; + + UFUNCTION(BlueprintCallable, Category = "GameInstance|Authentication") + void InitiateAutoLogin(); + + UFUNCTION(BlueprintCallable, Category = "GameInstance|Authentication") + bool GetLoginStatus() const; + + UFUNCTION(BlueprintCallable, Category = "GameInstance|Authentication") + FString GetPlayerName() const; + +private: + void OnLoginCompleted(int I, bool bArg, const FUniqueNetId& UniqueNetId, const FString& String) const; + +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs index 1510e072..736783cf 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs @@ -6,16 +6,22 @@ public TrivialKart_Unreal(ReadOnlyTargetRules Target) : base(Target) { PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs; - PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "EnhancedInput" }); + PublicDependencyModuleNames.AddRange(new string[] { + "Core", + "CoreUObject", + "Engine", + "InputCore", + "EnhancedInput" + }); - PrivateDependencyModuleNames.AddRange(new string[] { }); - - // Uncomment if you are using Slate UI - // PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" }); + PrivateDependencyModuleNames.AddRange(new string[] { + "OnlineSubsystem", + "OnlineSubsystemUtils" + }); - // Uncomment if you are using online features - // PrivateDependencyModuleNames.Add("OnlineSubsystem"); - - // To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true + if (Target.Platform == UnrealTargetPlatform.Android) + { + DynamicallyLoadedModuleNames.Add("OnlineSubsystemGooglePlay"); + } } } From 571371ceac22a1779d21c286bb84edc2df3be359 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Tue, 20 Jan 2026 14:52:52 +0530 Subject: [PATCH 04/27] Achievements + IAP + HUD Added IAP and Achievements along with basic HUD Implementation --- .../Content/Blueprints/BP_GameInstance.uasset | 3 + .../Blueprints/Game/BP_GameMode.uasset | 3 + .../Content/Blueprints/Player/BP_HUD.uasset | 3 + .../Blueprints/Widgets/WBP_PlayBoard.uasset | 3 + .../Content/Maps/L_TrivialKart.umap | 2 +- .../Private/Actors/TrivialKartHUD.cpp | 37 +++++ .../GameInstances/TrivialKartGameInstance.cpp | 145 ++++++++++++++++-- .../Private/Widgets/PlayBoardWidget.cpp | 4 + .../Public/Actors/TrivialKartHUD.h | 38 +++++ .../GameInstances/TrivialKartGameInstance.h | 22 ++- .../Public/Widgets/PlayBoardWidget.h | 16 ++ .../TrivialKart_Unreal.uproject | 6 +- 12 files changed, 262 insertions(+), 20 deletions(-) create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/BP_GameInstance.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameMode.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_HUD.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/BP_GameInstance.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/BP_GameInstance.uasset new file mode 100644 index 00000000..a448c0f2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/BP_GameInstance.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:23b3a123feca6a5ae8b62128ee519f15c9aab0866a20bf8383c0de76264b2eac +size 2316 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameMode.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameMode.uasset new file mode 100644 index 00000000..669cfe92 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameMode.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1ad1ab5dc3467f1e78a3f7dc4f4a2bf85118f9f082ab139a3cc57c496c16e00c +size 20949 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_HUD.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_HUD.uasset new file mode 100644 index 00000000..8a284537 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_HUD.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e2f5b5bfdcec1d8791a430970959befee0ffc45daf3497711db63d2a04cf0ab8 +size 24784 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset new file mode 100644 index 00000000..1c85f074 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:881505b70ea15ac3f95361e472f9f91d4e4801202b74b0e3283c951d3fa15a87 +size 26118 diff --git a/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap b/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap index 1493f2f2..23b8bb94 100644 --- a/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap +++ b/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:7673b75dcffdaf781206f204bee75b0e8a328d719749e190b8fd5cbf27d5f875 +oid sha256:152774090c15da6eb9a07855591ed8ac4c65018aa07998ae7653204d0bde152a size 8628 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp new file mode 100644 index 00000000..d77a804c --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp @@ -0,0 +1,37 @@ +#include "Actors/TrivialKartHUD.h" + +#include "Blueprint/UserWidget.h" + +DEFINE_LOG_CATEGORY(LogTemplateHUD); + +void ATrivialKartHUD::BeginPlay() +{ + Super::BeginPlay(); + AddWidgetToScreen(EWidgetType::PlayBoard); +} + +void ATrivialKartHUD::AddWidgetToScreen(const EWidgetType WidgetType, int32 ZOrder) +{ + if (!WidgetTemplates.Contains(WidgetType)) + { + UE_LOG(LogTemplateHUD, Warning, TEXT("Widget template does not exits")); + return; + } + const TWeakObjectPtr CurrentWidget = CreateWidget(GetOwningPlayerController(), + WidgetTemplates[WidgetType]); + if (CurrentWidget.IsValid()) + { + CurrentWidget->AddToViewport(ZOrder); + ActiveWidgets.Emplace(WidgetType, CurrentWidget); + } +} + +UUserWidget* ATrivialKartHUD::GetWidgetOfType(const EWidgetType WidgetType) +{ + if (!ActiveWidgets.Contains(WidgetType)) + { + UE_LOG(LogTemplateHUD, Warning, TEXT("Active widget does not exits")); + return nullptr; + } + return ActiveWidgets[WidgetType].Get(); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp index 970a4ff1..be3bece9 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -2,7 +2,9 @@ #include "OnlineSubsystem.h" #include "OnlineSubsystemUtils.h" +#include "Interfaces/OnlineAchievementsInterface.h" #include "Interfaces/OnlineIdentityInterface.h" +#include "Interfaces/OnlinePurchaseInterface.h" DEFINE_LOG_CATEGORY(LogTemplateGameInstance); @@ -14,45 +16,154 @@ void UTrivialKartGameInstance::Init() void UTrivialKartGameInstance::InitiateAutoLogin() { - if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) + if (const IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(GetWorld())) { - if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) - { - IdentityInterface->AutoLogin(0); - IdentityInterface->AddOnLoginCompleteDelegate_Handle(0, - FOnLoginCompleteDelegate::CreateUObject(this, - &UTrivialKartGameInstance::OnLoginCompleted)); - } + IdentityInterface->AutoLogin(0); + IdentityInterface->AddOnLoginCompleteDelegate_Handle(0, + FOnLoginCompleteDelegate::CreateUObject(this, + &UTrivialKartGameInstance::OnLoginCompleted)); } } bool UTrivialKartGameInstance::GetLoginStatus() const { - if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) + if (const IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(GetWorld())) { - if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) - { - return IdentityInterface->GetLoginStatus(0) == ELoginStatus::LoggedIn; - } + return IdentityInterface->GetLoginStatus(0) == ELoginStatus::LoggedIn; } return false; } FString UTrivialKartGameInstance::GetPlayerName() const +{ + if (const IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(GetWorld())) + { + return IdentityInterface->GetPlayerNickname(0); + } + return FString(); +} + +void UTrivialKartGameInstance::AddAchievementProgress(const float Progress, const FString& AchievementName, + const FString& AchievementID) +{ + if (AchievementName.IsEmpty() && AchievementID.IsEmpty()) + return; + if (const IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(GetWorld()); + IdentityInterface.IsValid()) + { + if (const IOnlineAchievementsPtr AchievementsInterface = + Online::GetAchievementsInterface(GetWorld()); AchievementsInterface.IsValid()) + { + FOnlineAchievement CurrentAchievement; + AchievementsInterface->GetCachedAchievement(*IdentityInterface->GetUniquePlayerId(0),AchievementID, CurrentAchievement); + if (CurrentAchievement.Progress < 100.0) + { + const float CurrentProgress = CurrentAchievement.Progress + Progress; + const FOnlineAchievementsWritePtr AchievementPtr = MakeShareable(new FOnlineAchievementsWrite()); + AchievementPtr->SetFloatStat(AchievementName, CurrentProgress); + FOnlineAchievementsWriteRef AchievementRef = AchievementPtr.ToSharedRef(); + AchievementsInterface->WriteAchievements(*IdentityInterface->GetUniquePlayerId(0), + AchievementRef); + } + } + } +} + +void UTrivialKartGameInstance::StartPurchasing(FOnlineStoreOfferRef PurchaseItem, int32 Quantity) { if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) { if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) { - return IdentityInterface->GetPlayerNickname(0); + if (const IOnlinePurchasePtr PurchaseInterface = + Subsystem->GetPurchaseInterface(); PurchaseInterface.IsValid()) + { + if (PurchaseInterface->IsAllowedToPurchase(*IdentityInterface->GetUniquePlayerId(0))) + { + FPurchaseCheckoutRequest CheckoutRequest; + + // Use the product ID from the Google Play Console (OfferId). + // Quantity is 1 for consumables, or can be 0 or 1 for non-consumables depending on platform and use. + CheckoutRequest.AddPurchaseOffer( + "", + PurchaseItem->OfferId, + Quantity, + StoreListItemIDs[PurchaseItem->OfferId] + ); + PurchaseInterface->Checkout(*IdentityInterface->GetUniquePlayerId(0), + CheckoutRequest, + FOnPurchaseCheckoutComplete::CreateUObject(this, &UTrivialKartGameInstance::OnCheckoutComplete)); + } + } } } - return FString(); } -void UTrivialKartGameInstance::OnLoginCompleted(int LocalUserNum, bool bWasSuccessful, - const FUniqueNetId& UserId, const FString& Error) const +void UTrivialKartGameInstance::OnLoginCompleted(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, + const FString& Error) { UE_LOG(LogTemplateGameInstance, Log, TEXT("Local User: %d of Unique ID: %s has logged in with Status: %s"), LocalUserNum, *UserId.ToDebugString(), bWasSuccessful ? *Error : TEXT("Success")); + if (bWasSuccessful) + { + if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) + { + if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) + { + if (const IOnlineAchievementsPtr AchievementsInterface = + Subsystem->GetAchievementsInterface()) + { + AchievementsInterface->QueryAchievements(*IdentityInterface->GetUniquePlayerId(0), + FOnQueryAchievementsCompleteDelegate::CreateUObject(this, + &UTrivialKartGameInstance::OnQueryAchievementsCompleted)); + } + if (const IOnlineStoreV2Ptr StoreInterface = Subsystem->GetStoreV2Interface()) + { + TArray StoreListItemKeys; + StoreListItemIDs.GetKeys(StoreListItemKeys); + StoreInterface->QueryOffersById(*IdentityInterface->GetUniquePlayerId(0), StoreListItemKeys, + FOnQueryOnlineStoreOffersComplete::CreateUObject(this, &UTrivialKartGameInstance::OnQueryOnlineStoreOfferCompleted)); + } + } + } + } +} + +void UTrivialKartGameInstance::OnQueryAchievementsCompleted(const FUniqueNetId& UniqueNetId, bool bWasSuccessful) +{ + UE_LOG(LogTemplateGameInstance, Log, TEXT("Achievements Cached for User: %s has "), *UniqueNetId.ToString(), bWasSuccessful ? TEXT("Succeeded") : TEXT("Failed")); } + +void UTrivialKartGameInstance::OnQueryOnlineStoreOfferCompleted(bool bWasSuccessful, + const TArray& OfferIds, const FString& Error) +{ + if (bWasSuccessful) + { + if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) + { + if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) + { + if (const IOnlineStoreV2Ptr StoreInterface = Subsystem->GetStoreV2Interface()) + { + StoreInterface->GetOffers(StoreOffers); + } + } + } + } +} + +void UTrivialKartGameInstance::OnCheckoutComplete(const FOnlineError& OnlineError, + const TSharedRef& PurchaseReceipt) +{ + if (!OnlineError.WasSuccessful()) + return; + if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) + { + if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) + { + // The Purchase Token is passed as the ReceiptId to tell the platform which purchase to finalize (consume/acknowledge). + Subsystem->GetPurchaseInterface()->FinalizePurchase(*IdentityInterface->GetUniquePlayerId(0), PurchaseReceipt->TransactionId); + } + } +} + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp new file mode 100644 index 00000000..370bda77 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp @@ -0,0 +1,4 @@ +#include "Widgets/PlayBoardWidget.h" + + + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h new file mode 100644 index 00000000..107672e7 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h @@ -0,0 +1,38 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/HUD.h" +#include "TrivialKartHUD.generated.h" + + +DECLARE_LOG_CATEGORY_EXTERN(LogTemplateHUD, Log, All); + +UENUM(BlueprintType) +enum class EWidgetType : uint8 +{ + None, + PlayBoard +}; +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API ATrivialKartHUD : public AHUD +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere) + TMap> WidgetTemplates; + + UPROPERTY() + TMap> ActiveWidgets; + +public: + virtual void BeginPlay() override; + + void AddWidgetToScreen(const EWidgetType WidgetType, int ZOrder = 0); + + UUserWidget* GetWidgetOfType(const EWidgetType WidgetType); + + +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h index 18eb41b1..6c0d197e 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h @@ -1,9 +1,12 @@ #pragma once #include "CoreMinimal.h" +#include "Interfaces/OnlineExternalUIInterface.h" +#include "Interfaces/OnlineStoreInterfaceV2.h" #include "Kismet/BlueprintPlatformLibrary.h" #include "TrivialKartGameInstance.generated.h" +class FPurchaseReceipt; DECLARE_LOG_CATEGORY_EXTERN(LogTemplateGameInstance, Log, All); /** * @@ -25,7 +28,24 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst UFUNCTION(BlueprintCallable, Category = "GameInstance|Authentication") FString GetPlayerName() const; + void AddAchievementProgress(const float Progress, const FString& AchievementName, const FString& AchievementID); + void StartPurchasing(FOnlineStoreOfferRef PurchaseItem, int32 Quantity); + +protected: + //A map for ID and if they are Consumable Purchased + UPROPERTY(EditAnywhere) + TMap StoreListItemIDs; + + TArray StoreOffers; + private: - void OnLoginCompleted(int I, bool bArg, const FUniqueNetId& UniqueNetId, const FString& String) const; + void OnLoginCompleted(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, + const FString& Error); + + void OnQueryAchievementsCompleted(const FUniqueNetId& UniqueNetId, bool bWasSuccessful); + + void OnQueryOnlineStoreOfferCompleted(bool bWasSuccessful, const TArray& OfferIds, const FString& Error); + + void OnCheckoutComplete(const FOnlineError& OnlineError, const TSharedRef& PurchaseReceipt); }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h new file mode 100644 index 00000000..644afce5 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h @@ -0,0 +1,16 @@ +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "PlayBoardWidget.generated.h" + +class UTextBlock; +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API UPlayBoardWidget : public UUserWidget +{ + GENERATED_BODY() + +}; diff --git a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject index 50d86cfb..a0069640 100644 --- a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject +++ b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject @@ -7,7 +7,11 @@ { "Name": "TrivialKart_Unreal", "Type": "Runtime", - "LoadingPhase": "Default" + "LoadingPhase": "Default", + "AdditionalDependencies": [ + "Engine", + "UMG" + ] } ], "Plugins": [ From 349da7e4b8cd157974f9f2896f85bf6307c97f7e Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Tue, 20 Jan 2026 16:13:09 +0530 Subject: [PATCH 05/27] PlayBoard Widget + HUD Widget Removal Added PlayBoard widget with button interactions and Widget Removal function in HUD --- .../Content/Blueprints/Player/BP_HUD.uasset | 4 +- .../Blueprints/Widgets/WBP_PlayBoard.uasset | 4 +- .../Private/Actors/TrivialKartHUD.cpp | 12 ++++ .../Private/Widgets/PlayBoardWidget.cpp | 56 +++++++++++++++++++ .../Public/Actors/TrivialKartHUD.h | 7 ++- .../Public/Widgets/PlayBoardWidget.h | 26 +++++++++ 6 files changed, 104 insertions(+), 5 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_HUD.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_HUD.uasset index 8a284537..aa7fea21 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_HUD.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_HUD.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:e2f5b5bfdcec1d8791a430970959befee0ffc45daf3497711db63d2a04cf0ab8 -size 24784 +oid sha256:3ee70b255c4699e5f9d5f2ab8987513216316abfee8e425124267acc00ab3632 +size 25327 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset index 1c85f074..7877de88 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:881505b70ea15ac3f95361e472f9f91d4e4801202b74b0e3283c951d3fa15a87 -size 26118 +oid sha256:abf618066eaf5ca256e4f4524de2f0675e40daa62519fe1c7093eb417095e759 +size 46968 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp index d77a804c..0594ce42 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp @@ -26,6 +26,18 @@ void ATrivialKartHUD::AddWidgetToScreen(const EWidgetType WidgetType, int32 ZOrd } } +void ATrivialKartHUD::RemoveWidgetFromScreen(const EWidgetType WidgetType) +{ + if (!ActiveWidgets.Contains(WidgetType)) + { + UE_LOG(LogTemplateHUD, Warning, TEXT("Widget is not on Screen")); + return; + } + ActiveWidgets[WidgetType]->RemoveFromParent(); + ActiveWidgets.Remove(WidgetType); + +} + UUserWidget* ATrivialKartHUD::GetWidgetOfType(const EWidgetType WidgetType) { if (!ActiveWidgets.Contains(WidgetType)) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp index 370bda77..5da584ac 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp @@ -1,4 +1,60 @@ #include "Widgets/PlayBoardWidget.h" +#include "Actors/TrivialKartHUD.h" +#include "Components/Button.h" +void UPlayBoardWidget::NativeConstruct() +{ + Super::NativeConstruct(); + GarageButton->OnClicked.AddUniqueDynamic(this, &ThisClass::OnGarageButtonClicked); + PGSButton->OnClicked.AddUniqueDynamic(this, &ThisClass::OnPGSButtonClicked); + StoreButton->OnClicked.AddUniqueDynamic(this, &ThisClass::OnStoreButtonClicked); +} + +void UPlayBoardWidget::NativeDestruct() +{ + GarageButton->OnClicked.RemoveDynamic(this, &ThisClass::OnGarageButtonClicked); + PGSButton->OnClicked.RemoveDynamic(this, &ThisClass::OnPGSButtonClicked); + StoreButton->OnClicked.RemoveDynamic(this, &ThisClass::OnStoreButtonClicked); + Super::NativeDestruct(); +} + +void UPlayBoardWidget::OnGarageButtonClicked() +{ + if (TWeakObjectPtr PlayerController = GetOwningPlayer(); PlayerController.IsValid()) + { + if (const TWeakObjectPtr CurrentHUD = Cast(PlayerController->GetHUD()); + CurrentHUD.IsValid()) + { + CurrentHUD->AddWidgetToScreen(EWidgetType::Garage); + CurrentHUD->RemoveWidgetFromScreen(EWidgetType::PlayBoard); + } + } +} + +void UPlayBoardWidget::OnPGSButtonClicked() +{ + if (TWeakObjectPtr PlayerController = GetOwningPlayer(); PlayerController.IsValid()) + { + if (const TWeakObjectPtr CurrentHUD = Cast(PlayerController->GetHUD()); + CurrentHUD.IsValid()) + { + CurrentHUD->AddWidgetToScreen(EWidgetType::PGS); + CurrentHUD->RemoveWidgetFromScreen(EWidgetType::PlayBoard); + } + } +} + +void UPlayBoardWidget::OnStoreButtonClicked() +{ + if (TWeakObjectPtr PlayerController = GetOwningPlayer(); PlayerController.IsValid()) + { + if (const TWeakObjectPtr CurrentHUD = Cast(PlayerController->GetHUD()); + CurrentHUD.IsValid()) + { + CurrentHUD->AddWidgetToScreen(EWidgetType::Store); + CurrentHUD->RemoveWidgetFromScreen(EWidgetType::PlayBoard); + } + } +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h index 107672e7..10b40e11 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h @@ -11,7 +11,10 @@ UENUM(BlueprintType) enum class EWidgetType : uint8 { None, - PlayBoard + PlayBoard, + Garage, + PGS, + Store }; /** * @@ -32,6 +35,8 @@ class TRIVIALKART_UNREAL_API ATrivialKartHUD : public AHUD void AddWidgetToScreen(const EWidgetType WidgetType, int ZOrder = 0); + void RemoveWidgetFromScreen(const EWidgetType WidgetType); + UUserWidget* GetWidgetOfType(const EWidgetType WidgetType); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h index 644afce5..d27045b0 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h @@ -4,7 +4,9 @@ #include "Blueprint/UserWidget.h" #include "PlayBoardWidget.generated.h" +class UProgressBar; class UTextBlock; +class UButton; /** * */ @@ -13,4 +15,28 @@ class TRIVIALKART_UNREAL_API UPlayBoardWidget : public UUserWidget { GENERATED_BODY() + UPROPERTY(meta=(BindWidget)) + TObjectPtr GarageButton; + UPROPERTY(meta=(BindWidget)) + TObjectPtr PGSButton; + UPROPERTY(meta=(BindWidget)) + TObjectPtr StoreButton; + UPROPERTY(meta=(BindWidget)) + TObjectPtr DistanceText; + UPROPERTY(meta=(BindWidget)) + TObjectPtr CoinText; + UPROPERTY(meta=(BindWidget)) + TObjectPtr FuelBar; + +public: + virtual void NativeConstruct() override; + virtual void NativeDestruct() override; + +private: + UFUNCTION() + void OnGarageButtonClicked(); + UFUNCTION() + void OnPGSButtonClicked(); + UFUNCTION() + void OnStoreButtonClicked(); }; From 6ea1d6c63809fdb880ca186aeb0711fa6554a6cf Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Thu, 22 Jan 2026 22:18:27 +0530 Subject: [PATCH 06/27] Gameplay Kart Added Kart Movement with Player States and Player Controller --- .../Items/TileSets/T_Bush_TileSet.uasset | 3 + .../Items/TileSets/T_GrassMid_TileSet.uasset | 3 + .../Items/TileSets/T_Grass_1_TileSet.uasset | 3 + .../TileSets/T_Green_Land_TileSet.uasset | 3 + .../TileSets/T_RoadRampLong_SE_TileSet.uasset | 3 + .../Items/TileSets/T_Rock_TileSet.uasset | 3 + .../Items/TileSets/T_SignRight_TileSet.uasset | 3 + .../Background/TileMaps/TM_TrivialKart.uasset | 3 + .../TileSets/T_BlueDesert_TileSet.uasset | 3 + .../TileSets/T_BlueGrass_TileSet.uasset | 3 + .../TileSets/T_BlueLand_TileSet.uasset | 3 + .../TileSets/T_BlueShroom_TileSet.uasset | 3 + .../TileSets/T_ColoredDesert_TileSet.uasset | 3 + .../TileSets/T_ColoredGrass_TileSet.uasset | 3 + .../TileSets/T_ColoredLand_TileSet.uasset | 3 + .../TileSets/T_ColoredShroom_TileSet.uasset | 3 + .../Blueprints/Game/BP_GameMode.uasset | 4 +- .../Content/Blueprints/Player/BP_Kart.uasset | 3 + .../Player/BP_PlayerController.uasset | 3 + .../Blueprints/Player/BP_PlayerState.uasset | 3 + .../Blueprints/Widgets/WBP_Garage.uasset | 3 + .../Content/Blueprints/Widgets/WBP_PGS.uasset | 3 + .../Blueprints/Widgets/WBP_PlayBoard.uasset | 4 +- .../Blueprints/Widgets/WBP_Store.uasset | 3 + .../Content/Input/Actions/IA_Move.uasset | 3 + .../Content/Input/IMC_Default.uasset | 3 + .../Content/Maps/L_TrivialKart.umap | 4 +- .../Private/Actors/KartPawn.cpp | 106 ++++++++++++++++++ .../Private/Actors/TrivialKartHUD.cpp | 1 - .../TrivialKartPlayerController.cpp | 19 ++++ .../Private/Infos/TrivialKartPlayerState.cpp | 68 +++++++++++ .../Private/Widgets/GarageWidget.cpp | 5 + .../Private/Widgets/PGSWidget.cpp | 5 + .../Private/Widgets/PlayBoardWidget.cpp | 12 ++ .../Private/Widgets/StoreWidget.cpp | 5 + .../Public/Actors/KartPawn.h | 56 +++++++++ .../Controllers/TrivialKartPlayerController.h | 23 ++++ .../Public/Infos/TrivialKartPlayerState.h | 32 ++++++ .../Public/Widgets/GarageWidget.h | 17 +++ .../Public/Widgets/PGSWidget.h | 17 +++ .../Public/Widgets/PlayBoardWidget.h | 4 + .../Public/Widgets/StoreWidget.h | 17 +++ .../TrivialKart_Unreal.Build.cs | 3 +- 43 files changed, 466 insertions(+), 8 deletions(-) create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Bush_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_GrassMid_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Grass_1_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Green_Land_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_RoadRampLong_SE_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Rock_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_SignRight_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileMaps/TM_TrivialKart.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueDesert_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueGrass_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueLand_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueShroom_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredDesert_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredGrass_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredLand_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredShroom_TileSet.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_Kart.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerController.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Input/Actions/IA_Move.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Input/IMC_Default.uasset create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Controllers/TrivialKartPlayerController.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Controllers/TrivialKartPlayerController.h create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Bush_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Bush_TileSet.uasset new file mode 100644 index 00000000..860afff7 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Bush_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:056f109feb3822ea6e840bf257c34c86baba594a77229e56e91a82c8316b5dd1 +size 9995 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_GrassMid_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_GrassMid_TileSet.uasset new file mode 100644 index 00000000..bbc3835e --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_GrassMid_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6ffe2ff5214e31eb080310c79b43b60a14bafa051f22ba667380fbc28afabc1d +size 6005 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Grass_1_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Grass_1_TileSet.uasset new file mode 100644 index 00000000..f8ee9acb --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Grass_1_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5718e53e3ee8bb43d501ec47c4b21fecb69700adb48ca5491999a03a16984ae3 +size 12526 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Green_Land_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Green_Land_TileSet.uasset new file mode 100644 index 00000000..c129d8d8 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Green_Land_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dbec116379f2a49ba9869309e98016d19c20782896d70cf7c25a795500bae5b0 +size 28210 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_RoadRampLong_SE_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_RoadRampLong_SE_TileSet.uasset new file mode 100644 index 00000000..dff7a2e0 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_RoadRampLong_SE_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d121c6f94bf1bd45477eabc6ef10cf3e1fecbdeaded17f4ae5ed23b136e42ab4 +size 13070 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Rock_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Rock_TileSet.uasset new file mode 100644 index 00000000..c82a15e7 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_Rock_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e15acd6572010cc7fac9aae17f171f181a09ca7dc225934851038ea90ea22a5d +size 10022 diff --git a/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_SignRight_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_SignRight_TileSet.uasset new file mode 100644 index 00000000..ce191fb3 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/Items/TileSets/T_SignRight_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cff03b8be0c8b6412a56248d9250561fbbc4b20b5de40796a65d119c3dd3b8b1 +size 10536 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileMaps/TM_TrivialKart.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileMaps/TM_TrivialKart.uasset new file mode 100644 index 00000000..064a1364 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileMaps/TM_TrivialKart.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:994a36d7efdb999429cae70059c912216f37a74b9d5b127a3dcf1cc3dcf84325 +size 1010492 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueDesert_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueDesert_TileSet.uasset new file mode 100644 index 00000000..0eb307a5 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueDesert_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:eda41375944b417b8455cfca64e029f62044c3af367918616a8c4c180ba7e409 +size 522490 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueGrass_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueGrass_TileSet.uasset new file mode 100644 index 00000000..7f9c02ac --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueGrass_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5f947c55f9f59d4e94b280cad5d12ab6678e58beb611d2d1ad3bf4057fb840b1 +size 4969 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueLand_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueLand_TileSet.uasset new file mode 100644 index 00000000..75db5b82 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueLand_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d80294004e530380bc87587669d5a12345e8e3348295b43999d5224ab07dd445 +size 522344 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueShroom_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueShroom_TileSet.uasset new file mode 100644 index 00000000..06e537c8 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_BlueShroom_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6e2aedc2c348423b1ebf4304be5f6d96367881841c8aa15274ccb5f9bff727f6 +size 522552 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredDesert_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredDesert_TileSet.uasset new file mode 100644 index 00000000..2b66e9eb --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredDesert_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fefe4b9b8f26dcd5387de523cb73f567ee07cfc4b350d0bde48399b442848a8 +size 523036 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredGrass_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredGrass_TileSet.uasset new file mode 100644 index 00000000..8459b389 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredGrass_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5ebaf70451a88060a59c80ea5a492d4de426c0917bd53a3a2e3295e744bfe319 +size 523314 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredLand_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredLand_TileSet.uasset new file mode 100644 index 00000000..14d00618 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredLand_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1582f8efb0307b091eeea47a8eaeb23cb6847be5661b5dd8e00c7caaa07aa990 +size 522672 diff --git a/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredShroom_TileSet.uasset b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredShroom_TileSet.uasset new file mode 100644 index 00000000..70f468f0 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Background/TileSets/T_ColoredShroom_TileSet.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a46c7b78931b7089bbf3f721e3aff769f6e14be88d5c47eed1a3c32c4cd8ef82 +size 523356 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameMode.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameMode.uasset index 669cfe92..d06b392f 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameMode.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameMode.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:1ad1ab5dc3467f1e78a3f7dc4f4a2bf85118f9f082ab139a3cc57c496c16e00c -size 20949 +oid sha256:b1b5049278967c70392a9905b8a96a2766f5a35d56612f1506b2a282ad809110 +size 21568 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_Kart.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_Kart.uasset new file mode 100644 index 00000000..0c19cf50 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_Kart.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5b7872193c553932ae8607d726a28c41c7197a67949e7fb29dc7d57542601db3 +size 25327 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerController.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerController.uasset new file mode 100644 index 00000000..48878d0e --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerController.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:94626df155bbcfaacc7ac57180d7dacd90b4298fd1eeeaea685121945c3715f9 +size 20802 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset new file mode 100644 index 00000000..c49d58a3 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:9fd6a3a3b8045c41daaff5db4e9f37e22a8dd718da65dec0ef5ba49bcbb30aee +size 20936 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset new file mode 100644 index 00000000..e8bbb386 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d35920dce25dd76989540bf2757188b544207173800aab20d3247bc7da2b8db7 +size 19541 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset new file mode 100644 index 00000000..f2f37b28 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:aa0ddbcb414a4df0d14ecbd4bb1defcdcaa1f13a65880fb685759c1b67ec6518 +size 21741 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset index 7877de88..98d96c5e 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:abf618066eaf5ca256e4f4524de2f0675e40daa62519fe1c7093eb417095e759 -size 46968 +oid sha256:75083340e52aff70aa050fa376229ac50614cd5d0b8c93f2900626aae5ac5201 +size 63055 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset new file mode 100644 index 00000000..63e4ccd4 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:96cd82c2626e4c92f5a51311ad956568b4c80ef70aedf53d0d3e764e01d42bfe +size 21769 diff --git a/trivialkart/trivialkart_unreal/Content/Input/Actions/IA_Move.uasset b/trivialkart/trivialkart_unreal/Content/Input/Actions/IA_Move.uasset new file mode 100644 index 00000000..622af973 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Input/Actions/IA_Move.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:03f5deba46adeee841a36240209f8702feb6e85313d9b68ec90474a331395271 +size 1346 diff --git a/trivialkart/trivialkart_unreal/Content/Input/IMC_Default.uasset b/trivialkart/trivialkart_unreal/Content/Input/IMC_Default.uasset new file mode 100644 index 00000000..5fcb2d49 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Input/IMC_Default.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1702b1e260aec8ba756ca32da386292c2cec378f198638c018145d59fce1a27 +size 2963 diff --git a/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap b/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap index 23b8bb94..d8a1e4df 100644 --- a/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap +++ b/trivialkart/trivialkart_unreal/Content/Maps/L_TrivialKart.umap @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:152774090c15da6eb9a07855591ed8ac4c65018aa07998ae7653204d0bde152a -size 8628 +oid sha256:6eed57c3906e801199d0ce334957baaed7e40a311ab15cfe9389c178f6107bd3 +size 72426 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp new file mode 100644 index 00000000..1cc7d70f --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp @@ -0,0 +1,106 @@ +#include "Actors/KartPawn.h" + +#include "EnhancedInputComponent.h" +#include "PaperCharacter.h" +#include "PaperFlipbookComponent.h" +#include "Camera/CameraComponent.h" +#include "Components/BoxComponent.h" +#include "GameFramework/FloatingPawnMovement.h" +#include "GameFramework/PawnMovementComponent.h" +#include "GameFramework/PlayerStart.h" +#include "GameFramework/SpringArmComponent.h" +#include "Infos/TrivialKartPlayerState.h" +#include "Kismet/GameplayStatics.h" + +// Sets default values +AKartPawn::AKartPawn() +{ + // Set this pawn to call Tick() every frame. You can turn this off to improve performance if you don't need it. + PrimaryActorTick.bCanEverTick = false; + + CollisionComponent = CreateDefaultSubobject(TEXT("CollisionComponent")); + CollisionComponent->SetCollisionProfileName(UCollisionProfile::Pawn_ProfileName); + CollisionComponent->InitBoxExtent(FVector(100.0f, 32.0f, 50.0f)); + + Sprite = CreateDefaultSubobject(TEXT("SpriteComponent")); + if (Sprite) + { + Sprite->AlwaysLoadOnClient = true; + Sprite->AlwaysLoadOnServer = true; + Sprite->bOwnerNoSee = false; + Sprite->bAffectDynamicIndirectLighting = true; + Sprite->PrimaryComponentTick.TickGroup = TG_PrePhysics; + Sprite->SetupAttachment(CollisionComponent); + static FName CollisionProfileName(TEXT("CharacterMesh")); + Sprite->SetCollisionProfileName(CollisionProfileName); + Sprite->SetGenerateOverlapEvents(false); + } + + SpringArm = CreateDefaultSubobject(TEXT("SpringArmComponent")); + SpringArm->SetupAttachment(RootComponent); + SpringArm->TargetArmLength = 400.0f; + SpringArm->SocketOffset = FVector(400.0f, 400.0f, 0.0f); + SpringArm->bUsePawnControlRotation = true; + + Camera = CreateDefaultSubobject(TEXT("CameraComponent")); + Camera->SetupAttachment(SpringArm, USpringArmComponent::SocketName); + Camera->SetRelativeRotation(FRotator(0.0f, -90.0f, 0.0f)); + Camera->bUsePawnControlRotation = false; + Camera->SetProjectionMode(ECameraProjectionMode::Orthographic); + Camera->SetOrthoWidth(400.0f); + +} + +// Called when the game starts or when spawned +void AKartPawn::BeginPlay() +{ + Super::BeginPlay(); + +} + +void AKartPawn::NotifyActorBeginOverlap(AActor* OtherActor) +{ + Super::NotifyActorBeginOverlap(OtherActor); + if (OtherActor->ActorHasTag("Finish")) + { + if (TWeakObjectPtr CurrentActor = + UGameplayStatics::GetActorOfClass(GetWorld(), APlayerStart::StaticClass()); + CurrentActor.IsValid()) + { + + SetActorLocation(CurrentActor->GetActorLocation()); + } + } +} + +// Called to bind functionality to input +void AKartPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) +{ + Super::SetupPlayerInputComponent(PlayerInputComponent); + + if (UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerInputComponent)) + { + // Moving + EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AKartPawn::Move); + } +} + +void AKartPawn::Move(const FInputActionValue& Value) +{ + if (GetController() != nullptr) + { + if (TWeakObjectPtr CurrentPlayerState = + Cast(GetPlayerState()); CurrentPlayerState.IsValid()) + { + if (CurrentPlayerState->GetFuel() <= 0.0f) + return; + float MoveAxisVector = Value.Get(); + AddActorLocalOffset(FVector(MoveAxisVector * MoveSpeed * GetWorld()->DeltaTimeSeconds, 0.0f, 0.0f)); + + CurrentPlayerState->ConsumeFuel(FuelConsumptionRate); + const float Distance = MoveSpeed/1000.0f; + CurrentPlayerState->AddDistance(Distance); + } + } +} + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp index 0594ce42..e3330d68 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp @@ -35,7 +35,6 @@ void ATrivialKartHUD::RemoveWidgetFromScreen(const EWidgetType WidgetType) } ActiveWidgets[WidgetType]->RemoveFromParent(); ActiveWidgets.Remove(WidgetType); - } UUserWidget* ATrivialKartHUD::GetWidgetOfType(const EWidgetType WidgetType) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Controllers/TrivialKartPlayerController.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Controllers/TrivialKartPlayerController.cpp new file mode 100644 index 00000000..225693bf --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Controllers/TrivialKartPlayerController.cpp @@ -0,0 +1,19 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Controllers/TrivialKartPlayerController.h" + +#include "EnhancedInputSubsystems.h" + +void ATrivialKartPlayerController::SetupInputComponent() +{ + Super::SetupInputComponent(); + if (IsLocalPlayerController()) + { + // Add Input Mapping Contexts + if (UEnhancedInputLocalPlayerSubsystem* Subsystem = ULocalPlayer::GetSubsystem(GetLocalPlayer())) + { + Subsystem->AddMappingContext(DefaultMappingContext, 0); + } + } +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp new file mode 100644 index 00000000..0053e65d --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp @@ -0,0 +1,68 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Infos/TrivialKartPlayerState.h" + +#include "Actors/TrivialKartHUD.h" +#include "Widgets/PlayBoardWidget.h" + +void ATrivialKartPlayerState::BeginPlay() +{ + Super::BeginPlay(); + + Fuel = 100.0f; + Distance = 0.0f; + + UpdateFuel(); + UpdateDistance(); +} + +void ATrivialKartPlayerState::ConsumeFuel(const float FuelConsumption) +{ + Fuel -= FuelConsumption; + UpdateFuel(); +} + +void ATrivialKartPlayerState::AddDistance(const float DistanceTravelled) +{ + Distance += DistanceTravelled; + UpdateDistance(); +} + +float ATrivialKartPlayerState::GetFuel() const +{ + return Fuel; +} + +void ATrivialKartPlayerState::UpdateFuel() +{ + if (TWeakObjectPtr CurrentController = GetPlayerController(); CurrentController.IsValid()) + { + if (TWeakObjectPtr CurrentHUD = Cast( + GetPlayerController()->GetHUD()); CurrentHUD.IsValid()) + { + if (TWeakObjectPtr Widget = Cast( + CurrentHUD->GetWidgetOfType(EWidgetType::PlayBoard)); Widget.IsValid()) + { + const float FuelPercentage = Fuel / 100.0f; + Widget->UpdateFuelBar(FuelPercentage); + } + } + } +} + +void ATrivialKartPlayerState::UpdateDistance() +{ + if (TWeakObjectPtr CurrentController = GetPlayerController(); CurrentController.IsValid()) + { + if (TWeakObjectPtr CurrentHUD = Cast( + GetPlayerController()->GetHUD()); CurrentHUD.IsValid()) + { + if (TWeakObjectPtr Widget = Cast( + CurrentHUD->GetWidgetOfType(EWidgetType::PlayBoard)); Widget.IsValid()) + { + Widget->UpdateDistanceText(Distance); + } + } + } +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp new file mode 100644 index 00000000..9b975937 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Widgets/GarageWidget.h" + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp new file mode 100644 index 00000000..4903122e --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Widgets/PGSWidget.h" + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp index 5da584ac..822e375d 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp @@ -2,6 +2,8 @@ #include "Actors/TrivialKartHUD.h" #include "Components/Button.h" +#include "Components/ProgressBar.h" +#include "Components/TextBlock.h" void UPlayBoardWidget::NativeConstruct() @@ -58,3 +60,13 @@ void UPlayBoardWidget::OnStoreButtonClicked() } } } + +void UPlayBoardWidget::UpdateFuelBar(const float FuelBarPercentage) const +{ + FuelBar->SetPercent(FuelBarPercentage); +} + +void UPlayBoardWidget::UpdateDistanceText(const float Distance) const +{ + DistanceText->SetText(FText::FromString(FString::FromInt(Distance))); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp new file mode 100644 index 00000000..b72f6c4c --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp @@ -0,0 +1,5 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Widgets/StoreWidget.h" + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h new file mode 100644 index 00000000..8f4c44e2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h @@ -0,0 +1,56 @@ +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/Pawn.h" +#include "KartPawn.generated.h" + +struct FInputActionValue; +class UBoxComponent; +class UInputAction; +class UPaperFlipbookComponent; +class UCameraComponent; +class USpringArmComponent; + +UCLASS() +class TRIVIALKART_UNREAL_API AKartPawn : public APawn +{ + GENERATED_BODY() + +private: + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + TObjectPtr CollisionComponent; + + UPROPERTY(Category = Character, VisibleAnywhere, BlueprintReadOnly, meta = (AllowPrivateAccess = "true")) + TObjectPtr Sprite; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + TObjectPtr SpringArm; + + UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category="Components", meta = (AllowPrivateAccess = "true")) + TObjectPtr Camera; + + UPROPERTY(EditAnywhere, Category ="Input|Input Mappings") + TObjectPtr MoveAction; + + UPROPERTY(EditAnywhere, Category ="Car|Movement") + float MoveSpeed; + + UPROPERTY(EditAnywhere, Category ="Car|Movement") + float FuelConsumptionRate; + +public: + // Sets default values for this pawn's properties + AKartPawn(); + + // Called when the game starts or when spawned + virtual void BeginPlay() override; + + virtual void NotifyActorBeginOverlap(AActor* OtherActor) override; + + // Called to bind functionality to input + virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; + +protected: + virtual void Move(const FInputActionValue& Value); + +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Controllers/TrivialKartPlayerController.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Controllers/TrivialKartPlayerController.h new file mode 100644 index 00000000..1d2bbc7c --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Controllers/TrivialKartPlayerController.h @@ -0,0 +1,23 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/PlayerController.h" +#include "TrivialKartPlayerController.generated.h" + +class UInputMappingContext; +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API ATrivialKartPlayerController : public APlayerController +{ + GENERATED_BODY() + + UPROPERTY(EditAnywhere, Category ="Input|Input Mappings") + TObjectPtr DefaultMappingContext; + +public: + virtual void SetupInputComponent() override; +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h new file mode 100644 index 00000000..bbc53258 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h @@ -0,0 +1,32 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/PlayerState.h" +#include "TrivialKartPlayerState.generated.h" + +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState +{ + GENERATED_BODY() + + float Fuel; + + float Distance; + +public: + void BeginPlay() override; + + void ConsumeFuel(const float FuelConsumption); + void AddDistance(const float DistanceTravelled); + + float GetFuel() const; + +private: + void UpdateFuel(); + void UpdateDistance(); +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h new file mode 100644 index 00000000..09d29669 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h @@ -0,0 +1,17 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "GarageWidget.generated.h" + +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API UGarageWidget : public UUserWidget +{ + GENERATED_BODY() + +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h new file mode 100644 index 00000000..f4d6b347 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h @@ -0,0 +1,17 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "PGSWidget.generated.h" + +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API UPGSWidget : public UUserWidget +{ + GENERATED_BODY() + +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h index d27045b0..48b118a2 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h @@ -39,4 +39,8 @@ class TRIVIALKART_UNREAL_API UPlayBoardWidget : public UUserWidget void OnPGSButtonClicked(); UFUNCTION() void OnStoreButtonClicked(); + +public: + void UpdateFuelBar(const float FuelBarPercentage) const; + void UpdateDistanceText(const float Distance) const; }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h new file mode 100644 index 00000000..cc31fcdd --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h @@ -0,0 +1,17 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "StoreWidget.generated.h" + +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API UStoreWidget : public UUserWidget +{ + GENERATED_BODY() + +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs index 736783cf..51f499f5 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs @@ -11,7 +11,8 @@ public TrivialKart_Unreal(ReadOnlyTargetRules Target) : base(Target) "CoreUObject", "Engine", "InputCore", - "EnhancedInput" + "EnhancedInput", + "Paper2D" }); PrivateDependencyModuleNames.AddRange(new string[] { From e27816bfd29ac5b6568d5bf82dcc560af6f1634a Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 01:58:00 +0530 Subject: [PATCH 07/27] Added Store + PGS + Garage UI --- .../Config/DefaultEngine.ini | 2 + .../Blueprints/Widgets/WBP_Garage.uasset | 4 +- .../Content/Blueprints/Widgets/WBP_PGS.uasset | 4 +- .../Blueprints/Widgets/WBP_PlayBoard.uasset | 4 +- .../Blueprints/Widgets/WBP_Store.uasset | 4 +- .../Widgets/WB_PGSLayoutText.uasset | 3 + .../Widgets/WB_SelectableItem.uasset | 3 + .../Private/Widgets/GarageWidget.cpp | 66 ++++++++++ .../Private/Widgets/PGSLayoutText.cpp | 11 ++ .../Private/Widgets/PGSWidget.cpp | 114 ++++++++++++++++++ .../Private/Widgets/SelectableItem.cpp | 12 ++ .../Private/Widgets/StoreWidget.cpp | 85 +++++++++++++ .../Public/Widgets/GarageWidget.h | 30 +++++ .../Public/Widgets/PGSLayoutText.h | 23 ++++ .../Public/Widgets/PGSWidget.h | 43 +++++++ .../Public/Widgets/SelectableItem.h | 28 +++++ .../Public/Widgets/StoreWidget.h | 40 ++++++ .../TrivialKart_Unreal.Build.cs | 4 +- 18 files changed, 471 insertions(+), 9 deletions(-) create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WB_PGSLayoutText.uasset create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WB_SelectableItem.uasset create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSLayoutText.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSLayoutText.h create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index 5d9365bc..c831c371 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -280,6 +280,8 @@ ManualIPAddress= [CoreRedirects] +ClassRedirects=(OldName="/Script/TrivialKart_Unreal.TrivalKartGameInstance",NewName="/Script/TrivialKart_Unreal.TrivialKartGameInstance") ++PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.PGSLayoutText.Widget",NewName="/Script/TrivialKart_Unreal.PGSLayoutText.PGSText") ++PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.StoreWidget.LevelCheckBox",NewName="/Script/TrivialKart_Unreal.StoreWidget.CoinCheckBox") [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] PackageName=com.gamesamples.trivialkartunreal diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset index e8bbb386..08881a48 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:d35920dce25dd76989540bf2757188b544207173800aab20d3247bc7da2b8db7 -size 19541 +oid sha256:5b69f5663fd5408ad1ad7e5175f6c62b88069a3cf7376e1ba927d8ecd79ad475 +size 46047 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset index f2f37b28..5cfa47b2 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:aa0ddbcb414a4df0d14ecbd4bb1defcdcaa1f13a65880fb685759c1b67ec6518 -size 21741 +oid sha256:befcd092f3afe1f7cd37d53e93b1674f626296ed60ce6acf1a874a37067a51f1 +size 57181 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset index 98d96c5e..7ba64043 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:75083340e52aff70aa050fa376229ac50614cd5d0b8c93f2900626aae5ac5201 -size 63055 +oid sha256:264be07d11a77e56572fca1c73968f9fda2cd151fcb38d4cbb2b7fe21a286f0e +size 63105 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset index 63e4ccd4..7b1c0ebc 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:96cd82c2626e4c92f5a51311ad956568b4c80ef70aedf53d0d3e764e01d42bfe -size 21769 +oid sha256:72cce5d11f9230ac6aeda3fdd1ec96275679794af4d2368a55e99d5b46513f47 +size 247461 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WB_PGSLayoutText.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WB_PGSLayoutText.uasset new file mode 100644 index 00000000..aea3b615 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WB_PGSLayoutText.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:00b96d5ab575c7ecf52e3b288a6ff531812a51ce51030dbd72041ce6ddcfce8c +size 26286 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WB_SelectableItem.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WB_SelectableItem.uasset new file mode 100644 index 00000000..6a7737f2 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WB_SelectableItem.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:241a6fe86b1fed60e0155882b35db1e64b5feb318e84ff1144face27741e71f7 +size 30419 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp index 9b975937..d19e3e6c 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp @@ -3,3 +3,69 @@ #include "Widgets/GarageWidget.h" +#include "Actors/TrivialKartHUD.h" +#include "Components/Button.h" +#include "Components/CheckBox.h" +#include "Components/WidgetSwitcher.h" + +void UGarageWidget::NativeConstruct() +{ + Super::NativeConstruct(); + + BackButton->OnClicked.AddUniqueDynamic(this, &UGarageWidget::OnBackButtonClicked); + CheckBoxes.Empty(); + CheckBoxes.Add(KartCheckBox); + CheckBoxes.Add(LevelCheckBox); + KartCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UGarageWidget::OnKartBoxStateChanged); + LevelCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UGarageWidget::OnLevelBoxStateChange); +} + +void UGarageWidget::NativeDestruct() +{ + BackButton->OnClicked.RemoveDynamic(this, &UGarageWidget::OnBackButtonClicked); + Super::NativeDestruct(); +} + +void UGarageWidget::OnBackButtonClicked() +{ + if (TWeakObjectPtr PlayerController = GetOwningPlayer(); PlayerController.IsValid()) + { + if (const TWeakObjectPtr CurrentHUD = Cast(PlayerController->GetHUD()); + CurrentHUD.IsValid()) + { + CurrentHUD->AddWidgetToScreen(EWidgetType::PlayBoard); + CurrentHUD->RemoveWidgetFromScreen(EWidgetType::Garage); + } + } +} + +void UGarageWidget::SetCheckBoxState(bool bIsChecked, UCheckBox* CheckBox, int ActiveWidgetIndex) +{ + if (CheckBox == nullptr) + return; + if (bIsChecked) + { + ContentSwitcher->SetActiveWidgetIndex(ActiveWidgetIndex); + for (auto CurrentCheckBox : CheckBoxes) + { + if (CurrentCheckBox != CheckBox) + { + CurrentCheckBox->SetCheckedState(ECheckBoxState::Unchecked); + } + } + } + else + { + CheckBox->SetCheckedState(ECheckBoxState::Checked); + } +} + +void UGarageWidget::OnKartBoxStateChanged(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, KartCheckBox, 0); +} + +void UGarageWidget::OnLevelBoxStateChange(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, LevelCheckBox, 1); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSLayoutText.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSLayoutText.cpp new file mode 100644 index 00000000..c5f2462d --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSLayoutText.cpp @@ -0,0 +1,11 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Widgets/PGSLayoutText.h" + +#include "Components/TextBlock.h" + +void UPGSLayoutText::SetPGSText(const FString& Property, const FString& Value) +{ + PGSText->SetText(FText::FromString(Property + " : " + Value)); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp index 4903122e..9d722c64 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp @@ -3,3 +3,117 @@ #include "Widgets/PGSWidget.h" +#include "OnlineSubsystem.h" +#include "OnlineSubsystemUtils.h" +#include "Actors/TrivialKartHUD.h" +#include "Components/Button.h" +#include "Components/CheckBox.h" +#include "Components/ScrollBox.h" +#include "Components/VerticalBox.h" +#include "Components/WidgetSwitcher.h" +#include "GameInstances/TrivialKartGameInstance.h" +#include "Interfaces/OnlineAchievementsInterface.h" +#include "Widgets/PGSLayoutText.h" + +void UPGSWidget::NativeConstruct() +{ + Super::NativeConstruct(); + BackButton->OnClicked.AddUniqueDynamic(this, &UPGSWidget::OnBackButtonClicked); + CheckBoxes.Empty(); + CheckBoxes.Add(AuthenticationCheckBox); + CheckBoxes.Add(AchievementsCheckBox); + AuthenticationCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UPGSWidget::OnAuthCheckBoxStateChanged); + AchievementsCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UPGSWidget::OnAchievementBoxStateChange); + if (TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + FString AuthStatus = Instance->GetLoginStatus() ? FString("Logged In") : FString("Logged Out"); + if (auto PGSAuthStatusText = Cast( + CreateWidget(this, PGSTextTemplate))) + { + PGSAuthStatusText->SetPGSText("Auth Status", AuthStatus); + AuthBox->AddChild(PGSAuthStatusText); + } + if (auto PGSUsernameText = Cast( + CreateWidget(this, PGSTextTemplate))) + { + PGSUsernameText->SetPGSText("Username", Instance->GetPlayerName()); + AuthBox->AddChild(PGSUsernameText); + } + } + if (const IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(GetWorld()); + IdentityInterface.IsValid()) + { + if (const IOnlineAchievementsPtr AchievementsInterface = + Online::GetAchievementsInterface(GetWorld()); AchievementsInterface.IsValid()) + { + TArray Achievements; + if (AchievementsInterface->GetCachedAchievements( + *IdentityInterface->GetUniquePlayerId(0), Achievements) + == EOnlineCachedResult::Success) + { + for (auto Achievement : Achievements) + { + if (auto PGSText = Cast( + CreateWidget(this, PGSTextTemplate))) + { + PGSText->SetPGSText(Achievement.Id, FString::FromInt(Achievement.Progress)); + AchievementsBox->AddChild(PGSText); + } + } + } + } + } +} + +void UPGSWidget::NativeDestruct() +{ + BackButton->OnClicked.RemoveDynamic(this, &UPGSWidget::OnBackButtonClicked); + AuthenticationCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UPGSWidget::OnAuthCheckBoxStateChanged); + AchievementsCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UPGSWidget::OnAchievementBoxStateChange); + Super::NativeDestruct(); +} + +void UPGSWidget::OnBackButtonClicked() +{ + if (TWeakObjectPtr PlayerController = GetOwningPlayer(); PlayerController.IsValid()) + { + if (const TWeakObjectPtr CurrentHUD = Cast(PlayerController->GetHUD()); + CurrentHUD.IsValid()) + { + CurrentHUD->AddWidgetToScreen(EWidgetType::PlayBoard); + CurrentHUD->RemoveWidgetFromScreen(EWidgetType::PGS); + } + } +} + +void UPGSWidget::SetCheckBoxState(bool bIsChecked, UCheckBox* CheckBox, int ActiveWidgetIndex) +{ + if (CheckBox == nullptr) + return; + if (bIsChecked) + { + ContentSwitcher->SetActiveWidgetIndex(ActiveWidgetIndex); + for (auto CurrentCheckBox : CheckBoxes) + { + if (CurrentCheckBox != CheckBox) + { + CurrentCheckBox->SetCheckedState(ECheckBoxState::Unchecked); + } + } + } + else + { + CheckBox->SetCheckedState(ECheckBoxState::Checked); + } +} + +void UPGSWidget::OnAuthCheckBoxStateChanged(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, AuthenticationCheckBox, 0); +} + +void UPGSWidget::OnAchievementBoxStateChange(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, AchievementsCheckBox, 1); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp new file mode 100644 index 00000000..b304843a --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp @@ -0,0 +1,12 @@ +// Fill out your copyright notice in the Description page of Project Settings. + + +#include "Widgets/SelectableItem.h" + +#include "Components/Button.h" + +void USelectableItem::NativePreConstruct() +{ + Super::NativePreConstruct(); + SelectionButton->SetStyle(SelectionButtonStyle); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp index b72f6c4c..a6568609 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp @@ -3,3 +3,88 @@ #include "Widgets/StoreWidget.h" +#include "Actors/TrivialKartHUD.h" +#include "Components/Button.h" +#include "Components/CheckBox.h" +#include "Components/WidgetSwitcher.h" + +void UStoreWidget::NativeConstruct() +{ + Super::NativeConstruct(); + + BackButton->OnClicked.AddUniqueDynamic(this, &UStoreWidget::OnBackButtonClicked); + CheckBoxes.Empty(); + CheckBoxes.Add(FuelCheckBox); + CheckBoxes.Add(CoinCheckBox); + CheckBoxes.Add(CarCheckBox); + CheckBoxes.Add(SubscriptionCheckBox); + FuelCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UStoreWidget::OnFuelBoxStateChanged); + CoinCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UStoreWidget::OnCoinBoxStateChange); + CarCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UStoreWidget::OnCarBoxStateChange); + SubscriptionCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UStoreWidget::OnSubscriptionBoxStateChange); +} + +void UStoreWidget::NativeDestruct() +{ + BackButton->OnClicked.RemoveDynamic(this, &UStoreWidget::OnBackButtonClicked); + FuelCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UStoreWidget::OnFuelBoxStateChanged); + CoinCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UStoreWidget::OnCoinBoxStateChange); + CarCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UStoreWidget::OnCarBoxStateChange); + SubscriptionCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UStoreWidget::OnSubscriptionBoxStateChange); + CheckBoxes.Empty(); + Super::NativeDestruct(); +} + +void UStoreWidget::OnBackButtonClicked() +{ + if (TWeakObjectPtr PlayerController = GetOwningPlayer(); PlayerController.IsValid()) + { + if (const TWeakObjectPtr CurrentHUD = Cast(PlayerController->GetHUD()); + CurrentHUD.IsValid()) + { + CurrentHUD->AddWidgetToScreen(EWidgetType::PlayBoard); + CurrentHUD->RemoveWidgetFromScreen(EWidgetType::Store); + } + } +} + +void UStoreWidget::SetCheckBoxState(bool bIsChecked, UCheckBox* CheckBox, int ActiveWidgetIndex) +{ + if (CheckBox == nullptr) + return; + if (bIsChecked) + { + ContentSwitcher->SetActiveWidgetIndex(ActiveWidgetIndex); + for (auto CurrentCheckBox : CheckBoxes) + { + if (CurrentCheckBox != CheckBox) + { + CurrentCheckBox->SetCheckedState(ECheckBoxState::Unchecked); + } + } + } + else + { + CheckBox->SetCheckedState(ECheckBoxState::Checked); + } +} + +void UStoreWidget::OnFuelBoxStateChanged(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, FuelCheckBox, 0); +} + +void UStoreWidget::OnCoinBoxStateChange(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, CoinCheckBox, 1); +} + +void UStoreWidget::OnCarBoxStateChange(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, CarCheckBox, 2); +} + +void UStoreWidget::OnSubscriptionBoxStateChange(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, SubscriptionCheckBox, 3); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h index 09d29669..1dca89be 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h @@ -6,6 +6,9 @@ #include "Blueprint/UserWidget.h" #include "GarageWidget.generated.h" +class UWidgetSwitcher; +class UCheckBox; +class UButton; /** * */ @@ -14,4 +17,31 @@ class TRIVIALKART_UNREAL_API UGarageWidget : public UUserWidget { GENERATED_BODY() + UPROPERTY(meta=(BindWidget)) + TObjectPtr BackButton; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr KartCheckBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr LevelCheckBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr ContentSwitcher; + +protected: + UPROPERTY() + TArray CheckBoxes; +public: + void NativeConstruct() override; + void NativeDestruct() override; + +private: + UFUNCTION() + void OnBackButtonClicked(); + void SetCheckBoxState(bool bIsChecked, UCheckBox* CheckBox, int ActiveWidgetIndex); + UFUNCTION() + void OnKartBoxStateChanged(bool bIsChecked); + UFUNCTION() + void OnLevelBoxStateChange(bool bIsChecked); }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSLayoutText.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSLayoutText.h new file mode 100644 index 00000000..f3f20eea --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSLayoutText.h @@ -0,0 +1,23 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "PGSLayoutText.generated.h" + +class UTextBlock; +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API UPGSLayoutText : public UUserWidget +{ + GENERATED_BODY() + + UPROPERTY(meta=(BindWidget)) + TObjectPtr PGSText; + +public: + void SetPGSText(const FString& Property, const FString& Value); +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h index f4d6b347..5cfafafb 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h @@ -4,8 +4,15 @@ #include "CoreMinimal.h" #include "Blueprint/UserWidget.h" +#include "Components/TextBlock.h" #include "PGSWidget.generated.h" +class UVerticalBox; +class UPGSLayoutText; +class UScrollBox; +class UWidgetSwitcher; +class UCheckBox; +class UButton; /** * */ @@ -14,4 +21,40 @@ class TRIVIALKART_UNREAL_API UPGSWidget : public UUserWidget { GENERATED_BODY() + UPROPERTY(meta=(BindWidget)) + TObjectPtr BackButton; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr AuthenticationCheckBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr AchievementsCheckBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr ContentSwitcher; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr AuthBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr AchievementsBox; + + UPROPERTY(EditAnywhere) + TSubclassOf PGSTextTemplate; + +protected: + UPROPERTY() + TArray CheckBoxes; +public: + void NativeConstruct() override; + void NativeDestruct() override; + +private: + UFUNCTION() + void OnBackButtonClicked(); + void SetCheckBoxState(bool bIsChecked, UCheckBox* CheckBox, int ActiveWidgetIndex); + UFUNCTION() + void OnAuthCheckBoxStateChanged(bool bIsChecked); + UFUNCTION() + void OnAchievementBoxStateChange(bool bIsChecked); }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h new file mode 100644 index 00000000..95c8470e --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h @@ -0,0 +1,28 @@ +// Fill out your copyright notice in the Description page of Project Settings. + +#pragma once + +#include "CoreMinimal.h" +#include "Blueprint/UserWidget.h" +#include "SelectableItem.generated.h" + +class UButtonWidgetStyle; +class UButton; +class SButton; +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API USelectableItem : public UUserWidget +{ + GENERATED_BODY() + + UPROPERTY(meta=(BindWidget)) + TObjectPtr SelectionButton; + + UPROPERTY(EditAnywhere) + FButtonStyle SelectionButtonStyle; + +public: + void NativePreConstruct(); +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h index cc31fcdd..b0360892 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h @@ -6,6 +6,9 @@ #include "Blueprint/UserWidget.h" #include "StoreWidget.generated.h" +class UWidgetSwitcher; +class UCheckBox; +class UButton; /** * */ @@ -14,4 +17,41 @@ class TRIVIALKART_UNREAL_API UStoreWidget : public UUserWidget { GENERATED_BODY() + UPROPERTY(meta=(BindWidget)) + TObjectPtr BackButton; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr FuelCheckBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr CoinCheckBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr CarCheckBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr SubscriptionCheckBox; + + UPROPERTY(meta=(BindWidget)) + TObjectPtr ContentSwitcher; + +protected: + UPROPERTY() + TArray CheckBoxes; +public: + void NativeConstruct() override; + void NativeDestruct() override; + +private: + UFUNCTION() + void OnBackButtonClicked(); + void SetCheckBoxState(bool bIsChecked, UCheckBox* CheckBox, int ActiveWidgetIndex); + UFUNCTION() + void OnFuelBoxStateChanged(bool bIsChecked); + UFUNCTION() + void OnCoinBoxStateChange(bool bIsChecked); + UFUNCTION() + void OnCarBoxStateChange(bool bIsChecked); + UFUNCTION() + void OnSubscriptionBoxStateChange(bool bIsChecked); }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs index 51f499f5..cbe60d64 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs @@ -12,7 +12,9 @@ public TrivialKart_Unreal(ReadOnlyTargetRules Target) : base(Target) "Engine", "InputCore", "EnhancedInput", - "Paper2D" + "Paper2D", + "Slate", + "SlateCore" }); PrivateDependencyModuleNames.AddRange(new string[] { From c61b7c222794069fefc5985df4d3297db32e3af3 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 02:14:31 +0530 Subject: [PATCH 08/27] Achievements Examples Added three achievements example --- .../GameInstances/TrivialKartGameInstance.cpp | 4 ++++ .../Private/Infos/TrivialKartPlayerState.cpp | 17 +++++++++++++++++ .../GameInstances/TrivialKartGameInstance.h | 6 ++++++ .../Public/Infos/TrivialKartPlayerState.h | 15 +++++++++++++++ 4 files changed, 42 insertions(+) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp index be3bece9..bb26a678 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -132,6 +132,10 @@ void UTrivialKartGameInstance::OnLoginCompleted(int32 LocalUserNum, bool bWasSuc void UTrivialKartGameInstance::OnQueryAchievementsCompleted(const FUniqueNetId& UniqueNetId, bool bWasSuccessful) { UE_LOG(LogTemplateGameInstance, Log, TEXT("Achievements Cached for User: %s has "), *UniqueNetId.ToString(), bWasSuccessful ? TEXT("Succeeded") : TEXT("Failed")); + if (bWasSuccessful) + { + AddAchievementProgress(20, LogInAchievementID, LogInAchievementName); + } } void UTrivialKartGameInstance::OnQueryOnlineStoreOfferCompleted(bool bWasSuccessful, diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp index 0053e65d..cbee00dd 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp @@ -4,6 +4,7 @@ #include "Infos/TrivialKartPlayerState.h" #include "Actors/TrivialKartHUD.h" +#include "GameInstances/TrivialKartGameInstance.h" #include "Widgets/PlayBoardWidget.h" void ATrivialKartPlayerState::BeginPlay() @@ -21,12 +22,28 @@ void ATrivialKartPlayerState::ConsumeFuel(const float FuelConsumption) { Fuel -= FuelConsumption; UpdateFuel(); + if (Fuel <= 0.0f) + { + if (TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + Instance->AddAchievementProgress(100, FuelAchievementName, FuelAchievementID); + } + } } void ATrivialKartPlayerState::AddDistance(const float DistanceTravelled) { Distance += DistanceTravelled; UpdateDistance(); + if (Distance >= DistanceAchievementThreshold) + { + if (TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + Instance->AddAchievementProgress(100, DistanceAchievementID, DistanceAchievementName); + } + } } float ATrivialKartPlayerState::GetFuel() const diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h index 6c0d197e..d67c7c39 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h @@ -38,6 +38,12 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst TArray StoreOffers; + UPROPERTY(EditAnywhere) + FString LogInAchievementName; + + UPROPERTY(EditAnywhere) + FString LogInAchievementID; + private: void OnLoginCompleted(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h index bbc53258..4187160e 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h @@ -18,6 +18,21 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState float Distance; + UPROPERTY(EditAnywhere) + FString FuelAchievementName; + + UPROPERTY(EditAnywhere) + FString FuelAchievementID; + + UPROPERTY(EditAnywhere) + FString DistanceAchievementName; + + UPROPERTY(EditAnywhere) + FString DistanceAchievementID; + + UPROPERTY(EditAnywhere) + float DistanceAchievementThreshold; + public: void BeginPlay() override; From 652e8752205530a960d0bbbaf19be27cdbe567ed Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 02:26:07 +0530 Subject: [PATCH 09/27] Removed Console Credentials --- trivialkart/trivialkart_unreal/Config/DefaultEngine.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index c831c371..fb6e500d 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -358,17 +358,17 @@ bSaveSymbols=False bStripShaderReflection=True bEnableGooglePlaySupport=True RequestCodeForPlayGamesActivities=80002 -PlayGamesClientId=77167366172-e6i9eid88h67tt2bikcco5vsaijk8nti.apps.googleusercontent.com +PlayGamesClientId= bForceRefreshToken=False -GamesAppID=77167366172 +GamesAppID= bSupportAdMob=False AdMobAppID= TagForChildDirectedTreatment=TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED TagForUnderAgeOfConsent=TAG_FOR_UNDER_AGE_OF_CONSENT_UNSPECIFIED MaxAdContentRating=MAX_AD_CONTENT_RATING_G AdMobAdUnitID= -GooglePlayLicenseKey=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9qc20XUDeFLH8t2hcAqxjmM4QiIZ/ca7iWpD184qoBnjedUmnM1cBSsfuu6OZzmcOfugAEEoxrKimg+WVdIn2z8HLtA3n9tERVI21dsOQgpGgPZoUqVFxp3BRviChJwlRscA9WduBU6lNoXmPDGRrfgt0blYOzZ+dx4IWmZhl+BDmcB6V6QKzKFFT6wW0gXGgwaBQavJW9bPDb8PrqAsDRI0ELsl0v4RGb8s4oil705Db9Vt+70afAb6VpiDll/skQsJ7ImabB09SRQEdJ5idavvhW2LlWt7Z0DmGJexx7vH2PszlKTD4Y8pi5mLXP7zL+NabOleo13ZMNugFaKaPwIDAQAB -GCMClientSenderID=77167366172 +GooglePlayLicenseKey= +GCMClientSenderID= bShowLaunchImage=True bAllowIMU=False bAllowControllers=True From 8811e5ae11dd68be1d4c36107649f68949e16c16 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 12:26:07 +0530 Subject: [PATCH 10/27] Update trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp Replaced Name and ID Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp index cbee00dd..0ac9f4a9 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp @@ -41,7 +41,7 @@ void ATrivialKartPlayerState::AddDistance(const float DistanceTravelled) if (TWeakObjectPtr Instance = Cast(GetGameInstance()); Instance.IsValid()) { - Instance->AddAchievementProgress(100, DistanceAchievementID, DistanceAchievementName); +Instance->AddAchievementProgress(100, DistanceAchievementName, DistanceAchievementID); } } } From ec0a6ad37aa1db539fdbbbc0fd554d14d4c6f947 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 12:28:44 +0530 Subject: [PATCH 11/27] Update trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp Added Log property Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../Private/GameInstances/TrivialKartGameInstance.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp index bb26a678..704a1436 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -131,7 +131,7 @@ void UTrivialKartGameInstance::OnLoginCompleted(int32 LocalUserNum, bool bWasSuc void UTrivialKartGameInstance::OnQueryAchievementsCompleted(const FUniqueNetId& UniqueNetId, bool bWasSuccessful) { - UE_LOG(LogTemplateGameInstance, Log, TEXT("Achievements Cached for User: %s has "), *UniqueNetId.ToString(), bWasSuccessful ? TEXT("Succeeded") : TEXT("Failed")); +UE_LOG(LogTemplateGameInstance, Log, TEXT("Achievements Cached for User: %s has %s"), *UniqueNetId.ToString(), bWasSuccessful ? TEXT("Succeeded") : TEXT("Failed")); if (bWasSuccessful) { AddAchievementProgress(20, LogInAchievementID, LogInAchievementName); From 5bd46c5b705cf86475ad6280f018f41b0f682c70 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:57:33 +0530 Subject: [PATCH 12/27] Update trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp Added float precision Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp index 9d722c64..4c1d15dc 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp @@ -57,7 +57,7 @@ void UPGSWidget::NativeConstruct() if (auto PGSText = Cast( CreateWidget(this, PGSTextTemplate))) { - PGSText->SetPGSText(Achievement.Id, FString::FromInt(Achievement.Progress)); +PGSText->SetPGSText(Achievement.Id, FString::Printf(TEXT("%.1f"), Achievement.Progress)); AchievementsBox->AddChild(PGSText); } } From 6374185324d3468366445db554c5c1b12e0d4835 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 14:58:11 +0530 Subject: [PATCH 13/27] Update trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp Rounding up Distance values Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp index 822e375d..0390f86b 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp @@ -68,5 +68,5 @@ void UPlayBoardWidget::UpdateFuelBar(const float FuelBarPercentage) const void UPlayBoardWidget::UpdateDistanceText(const float Distance) const { - DistanceText->SetText(FText::FromString(FString::FromInt(Distance))); +DistanceText->SetText(FText::FromString(FString::FromInt(FMath::RoundToInt(Distance)))); } From cf7d37b9f84668a043228fadbf1ca5b128bc358d Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:06:13 +0530 Subject: [PATCH 14/27] Basic Refactor --- trivialkart/trivialkart_unreal/Config/DefaultEngine.ini | 6 +++--- .../TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp | 2 ++ .../TrivialKart_Unreal/Public/Widgets/SelectableItem.h | 2 +- .../TrivialKart_Unreal.uproject.DotSettings.user | 2 ++ 4 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index fb6e500d..73e48c6e 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -333,9 +333,9 @@ bRecordPermissionAtStartupEnabled=False bEnableMulticastSupport=False bPackageForMetaQuest=False bRemoveOSIG=False -KeyStore=TrivialKartUnreal.keystore -KeyAlias=TrivialKartUnrealKey -KeyStorePassword=tkue123 +KeyStore= +KeyAlias= +KeyStorePassword= KeyPassword= DebugKeyStore= DebugKeyAlias= diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp index d19e3e6c..9a16ab8a 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp @@ -23,6 +23,8 @@ void UGarageWidget::NativeConstruct() void UGarageWidget::NativeDestruct() { BackButton->OnClicked.RemoveDynamic(this, &UGarageWidget::OnBackButtonClicked); + KartCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UGarageWidget::OnKartBoxStateChanged); + LevelCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UGarageWidget::OnLevelBoxStateChange); Super::NativeDestruct(); } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h index 95c8470e..7b37aa4f 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h @@ -24,5 +24,5 @@ class TRIVIALKART_UNREAL_API USelectableItem : public UUserWidget FButtonStyle SelectionButtonStyle; public: - void NativePreConstruct(); + void NativePreConstruct() override; }; diff --git a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user new file mode 100644 index 00000000..403c4817 --- /dev/null +++ b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user @@ -0,0 +1,2 @@ + + ForceIncluded \ No newline at end of file From 5a99003ee16bb101bdb7edd1fe42f70e57e13d57 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:14:38 +0530 Subject: [PATCH 15/27] Update trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp index e3330d68..d846ecdf 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp @@ -14,7 +14,7 @@ void ATrivialKartHUD::AddWidgetToScreen(const EWidgetType WidgetType, int32 ZOrd { if (!WidgetTemplates.Contains(WidgetType)) { - UE_LOG(LogTemplateHUD, Warning, TEXT("Widget template does not exits")); +UE_LOG(LogTemplateHUD, Warning, TEXT("Widget template does not exist")); return; } const TWeakObjectPtr CurrentWidget = CreateWidget(GetOwningPlayerController(), From 75ebb2cce07c61baef819c3599ab7a24f6d61a28 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:15:38 +0530 Subject: [PATCH 16/27] Update trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp index d846ecdf..ea72ed4d 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp @@ -41,7 +41,7 @@ UUserWidget* ATrivialKartHUD::GetWidgetOfType(const EWidgetType WidgetType) { if (!ActiveWidgets.Contains(WidgetType)) { - UE_LOG(LogTemplateHUD, Warning, TEXT("Active widget does not exits")); +UE_LOG(LogTemplateHUD, Warning, TEXT("Active widget does not exist")); return nullptr; } return ActiveWidgets[WidgetType].Get(); From db0afa8611ef7500a9af67db21deb9632d67acd2 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:18:58 +0530 Subject: [PATCH 17/27] Update trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- .../Private/GameInstances/TrivialKartGameInstance.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp index 704a1436..63f72a83 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -102,8 +102,8 @@ void UTrivialKartGameInstance::StartPurchasing(FOnlineStoreOfferRef PurchaseItem void UTrivialKartGameInstance::OnLoginCompleted(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error) { - UE_LOG(LogTemplateGameInstance, Log, TEXT("Local User: %d of Unique ID: %s has logged in with Status: %s"), - LocalUserNum, *UserId.ToDebugString(), bWasSuccessful ? *Error : TEXT("Success")); +UE_LOG(LogTemplateGameInstance, Log, TEXT("Local User: %d of Unique ID: %s has logged in with Status: %s"), + LocalUserNum, *UserId.ToDebugString(), bWasSuccessful ? TEXT("Success") : *Error); if (bWasSuccessful) { if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) From b0e24e6b521d7d0645809a8cd1b7097a4982ec8e Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:21:06 +0530 Subject: [PATCH 18/27] Fixed Distance Calculation --- .../Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp index 1cc7d70f..dc46d9c6 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp @@ -98,7 +98,7 @@ void AKartPawn::Move(const FInputActionValue& Value) AddActorLocalOffset(FVector(MoveAxisVector * MoveSpeed * GetWorld()->DeltaTimeSeconds, 0.0f, 0.0f)); CurrentPlayerState->ConsumeFuel(FuelConsumptionRate); - const float Distance = MoveSpeed/1000.0f; + const float Distance = FMath::Abs(MoveAxisVector * MoveSpeed * GetWorld()->DeltaTimeSeconds)/100; CurrentPlayerState->AddDistance(Distance); } } From 8b8d6c99892ad6ac4371036e875aa587009629d6 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 15:39:35 +0530 Subject: [PATCH 19/27] Added Events for UI Update --- .../Private/Infos/TrivialKartPlayerState.cpp | 35 +++++-------------- .../Private/Widgets/PGSWidget.cpp | 2 +- .../Private/Widgets/PlayBoardWidget.cpp | 18 +++++++++- .../Public/Infos/TrivialKartPlayerState.h | 7 ++++ 4 files changed, 33 insertions(+), 29 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp index 0ac9f4a9..75b32b91 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp @@ -3,9 +3,7 @@ #include "Infos/TrivialKartPlayerState.h" -#include "Actors/TrivialKartHUD.h" #include "GameInstances/TrivialKartGameInstance.h" -#include "Widgets/PlayBoardWidget.h" void ATrivialKartPlayerState::BeginPlay() { @@ -51,35 +49,18 @@ float ATrivialKartPlayerState::GetFuel() const return Fuel; } +float ATrivialKartPlayerState::GetDistance() const +{ + return Distance; +} + void ATrivialKartPlayerState::UpdateFuel() { - if (TWeakObjectPtr CurrentController = GetPlayerController(); CurrentController.IsValid()) - { - if (TWeakObjectPtr CurrentHUD = Cast( - GetPlayerController()->GetHUD()); CurrentHUD.IsValid()) - { - if (TWeakObjectPtr Widget = Cast( - CurrentHUD->GetWidgetOfType(EWidgetType::PlayBoard)); Widget.IsValid()) - { - const float FuelPercentage = Fuel / 100.0f; - Widget->UpdateFuelBar(FuelPercentage); - } - } - } + const float FuelPercentage = Fuel / 100.0f; + OnFuelUpdated.ExecuteIfBound(FuelPercentage); } void ATrivialKartPlayerState::UpdateDistance() { - if (TWeakObjectPtr CurrentController = GetPlayerController(); CurrentController.IsValid()) - { - if (TWeakObjectPtr CurrentHUD = Cast( - GetPlayerController()->GetHUD()); CurrentHUD.IsValid()) - { - if (TWeakObjectPtr Widget = Cast( - CurrentHUD->GetWidgetOfType(EWidgetType::PlayBoard)); Widget.IsValid()) - { - Widget->UpdateDistanceText(Distance); - } - } - } + OnDistanceUpdated.ExecuteIfBound(Distance); } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp index 4c1d15dc..e5f0b472 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp @@ -57,7 +57,7 @@ void UPGSWidget::NativeConstruct() if (auto PGSText = Cast( CreateWidget(this, PGSTextTemplate))) { -PGSText->SetPGSText(Achievement.Id, FString::Printf(TEXT("%.1f"), Achievement.Progress)); + PGSText->SetPGSText(Achievement.Id, FString::Printf(TEXT("%.1f"), Achievement.Progress)); AchievementsBox->AddChild(PGSText); } } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp index 0390f86b..706127d9 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp @@ -4,6 +4,7 @@ #include "Components/Button.h" #include "Components/ProgressBar.h" #include "Components/TextBlock.h" +#include "Infos/TrivialKartPlayerState.h" void UPlayBoardWidget::NativeConstruct() @@ -12,6 +13,15 @@ void UPlayBoardWidget::NativeConstruct() GarageButton->OnClicked.AddUniqueDynamic(this, &ThisClass::OnGarageButtonClicked); PGSButton->OnClicked.AddUniqueDynamic(this, &ThisClass::OnPGSButtonClicked); StoreButton->OnClicked.AddUniqueDynamic(this, &ThisClass::OnStoreButtonClicked); + + if (TWeakObjectPtr PlayerState = Cast(GetOwningPlayerState()); PlayerState.IsValid()) + { + PlayerState->OnFuelUpdated.BindUObject(this, &UPlayBoardWidget::UpdateFuelBar); + PlayerState->OnDistanceUpdated.BindUObject(this, &UPlayBoardWidget::UpdateDistanceText); + const float FuelPercentage = PlayerState->GetFuel() / 100.0f; + UpdateFuelBar(FuelPercentage); + UpdateDistanceText(PlayerState->GetDistance()); + } } void UPlayBoardWidget::NativeDestruct() @@ -19,6 +29,12 @@ void UPlayBoardWidget::NativeDestruct() GarageButton->OnClicked.RemoveDynamic(this, &ThisClass::OnGarageButtonClicked); PGSButton->OnClicked.RemoveDynamic(this, &ThisClass::OnPGSButtonClicked); StoreButton->OnClicked.RemoveDynamic(this, &ThisClass::OnStoreButtonClicked); + + if (TWeakObjectPtr PlayerState = Cast(GetOwningPlayerState()); PlayerState.IsValid()) + { + PlayerState->OnFuelUpdated.Unbind(); + PlayerState->OnDistanceUpdated.Unbind(); + } Super::NativeDestruct(); } @@ -68,5 +84,5 @@ void UPlayBoardWidget::UpdateFuelBar(const float FuelBarPercentage) const void UPlayBoardWidget::UpdateDistanceText(const float Distance) const { -DistanceText->SetText(FText::FromString(FString::FromInt(FMath::RoundToInt(Distance)))); + DistanceText->SetText(FText::FromString(FString::FromInt(FMath::RoundToInt(Distance)))); } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h index 4187160e..3593bfed 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h @@ -6,6 +6,9 @@ #include "GameFramework/PlayerState.h" #include "TrivialKartPlayerState.generated.h" +DECLARE_DELEGATE_OneParam(FDistanceUpdated, const float); +DECLARE_DELEGATE_OneParam(FFuelUpdated, const float); + /** * */ @@ -40,6 +43,10 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState void AddDistance(const float DistanceTravelled); float GetFuel() const; + float GetDistance() const; + + FDistanceUpdated OnDistanceUpdated; + FFuelUpdated OnFuelUpdated; private: void UpdateFuel(); From f9f34c987c0a32d19baa8898abb40a5f5bbffc6f Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 21:50:22 +0530 Subject: [PATCH 20/27] Added IAP Calls to purchase button and Purchase Callback as WeakLamda --- .../Blueprints/Widgets/WBP_PlayBoard.uasset | 4 +- .../GameInstances/TrivialKartGameInstance.cpp | 72 +++++++++---------- .../Private/Infos/TrivialKartPlayerState.cpp | 25 +++++++ .../Private/Widgets/PlayBoardWidget.cpp | 7 ++ .../Private/Widgets/SelectableItem.cpp | 29 ++++++++ .../GameInstances/TrivialKartGameInstance.h | 7 +- .../Public/Infos/TrivialKartPlayerState.h | 15 +++- .../Public/Widgets/PlayBoardWidget.h | 5 +- .../Public/Widgets/SelectableItem.h | 21 ++++++ 9 files changed, 142 insertions(+), 43 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset index 7ba64043..7a577aab 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PlayBoard.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:264be07d11a77e56572fca1c73968f9fda2cd151fcb38d4cbb2b7fe21a286f0e -size 63105 +oid sha256:0689914868b14d825eb3bf5746e9921ee170ee0f5f20d2ef9e02f0089b95e50b +size 47049 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp index 63f72a83..c898dbed 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -69,30 +69,48 @@ void UTrivialKartGameInstance::AddAchievementProgress(const float Progress, cons } } -void UTrivialKartGameInstance::StartPurchasing(FOnlineStoreOfferRef PurchaseItem, int32 Quantity) +void UTrivialKartGameInstance::StartPurchasing(const FUniqueOfferId& PurchaseItemID, int32 Quantity) { if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) { if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) { - if (const IOnlinePurchasePtr PurchaseInterface = - Subsystem->GetPurchaseInterface(); PurchaseInterface.IsValid()) + if (const IOnlineStoreV2Ptr StoreV2Interface = Subsystem->GetStoreV2Interface()) { - if (PurchaseInterface->IsAllowedToPurchase(*IdentityInterface->GetUniquePlayerId(0))) + if (const TSharedPtr CurrentOrder = StoreV2Interface->GetOffer(PurchaseItemID); + CurrentOrder.IsValid()) { - FPurchaseCheckoutRequest CheckoutRequest; + if (const IOnlinePurchasePtr PurchaseInterface = + Subsystem->GetPurchaseInterface(); PurchaseInterface.IsValid()) + { + if (PurchaseInterface->IsAllowedToPurchase(*IdentityInterface->GetUniquePlayerId(0))) + { + FPurchaseCheckoutRequest CheckoutRequest; - // Use the product ID from the Google Play Console (OfferId). - // Quantity is 1 for consumables, or can be 0 or 1 for non-consumables depending on platform and use. - CheckoutRequest.AddPurchaseOffer( - "", - PurchaseItem->OfferId, - Quantity, - StoreListItemIDs[PurchaseItem->OfferId] - ); - PurchaseInterface->Checkout(*IdentityInterface->GetUniquePlayerId(0), - CheckoutRequest, - FOnPurchaseCheckoutComplete::CreateUObject(this, &UTrivialKartGameInstance::OnCheckoutComplete)); + // Use the product ID from the Google Play Console (OfferId). + CheckoutRequest.AddPurchaseOffer( + "", + CurrentOrder->OfferId, + Quantity, + StoreListItemIDs[CurrentOrder->OfferId] + ); + PurchaseInterface->Checkout(*IdentityInterface->GetUniquePlayerId(0), + CheckoutRequest, + FOnPurchaseCheckoutComplete::CreateWeakLambda(this, + [this, Subsystem, IdentityInterface, PurchaseItemID, Quantity] + (const FOnlineError& OnlineError, const TSharedRef& PurchaseReceipt) + { + if (!OnlineError.WasSuccessful()) + return; + if (OnPurchaseReceived.IsBound()) + { + OnPurchaseReceived.Broadcast(PurchaseItemID, Quantity); + } + // The Purchase Token is passed as the ReceiptId to tell the platform which purchase to finalize (consume/acknowledge). + Subsystem->GetPurchaseInterface()->FinalizePurchase(*IdentityInterface->GetUniquePlayerId(0), PurchaseReceipt->TransactionId); + })); + } + } } } } @@ -145,29 +163,11 @@ void UTrivialKartGameInstance::OnQueryOnlineStoreOfferCompleted(bool bWasSuccess { if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) { - if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) + if (const IOnlineStoreV2Ptr StoreInterface = Subsystem->GetStoreV2Interface()) { - if (const IOnlineStoreV2Ptr StoreInterface = Subsystem->GetStoreV2Interface()) - { - StoreInterface->GetOffers(StoreOffers); - } + StoreInterface->GetOffers(StoreOffers); } } } } -void UTrivialKartGameInstance::OnCheckoutComplete(const FOnlineError& OnlineError, - const TSharedRef& PurchaseReceipt) -{ - if (!OnlineError.WasSuccessful()) - return; - if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) - { - if (const IOnlineIdentityPtr IdentityInterface = Subsystem->GetIdentityInterface()) - { - // The Purchase Token is passed as the ReceiptId to tell the platform which purchase to finalize (consume/acknowledge). - Subsystem->GetPurchaseInterface()->FinalizePurchase(*IdentityInterface->GetUniquePlayerId(0), PurchaseReceipt->TransactionId); - } - } -} - diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp index 75b32b91..44dce124 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp @@ -14,6 +14,22 @@ void ATrivialKartPlayerState::BeginPlay() UpdateFuel(); UpdateDistance(); + + if (TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + CoinPurchaseHandle = Instance->OnPurchaseReceived.AddUObject(this, &ATrivialKartPlayerState::OnPurchaseReceived); + } +} + +void ATrivialKartPlayerState::EndPlay(const EEndPlayReason::Type EndPlayReason) +{ + if (TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + Instance->OnPurchaseReceived.Remove(CoinPurchaseHandle); + } + Super::EndPlay(EndPlayReason); } void ATrivialKartPlayerState::ConsumeFuel(const float FuelConsumption) @@ -64,3 +80,12 @@ void ATrivialKartPlayerState::UpdateDistance() { OnDistanceUpdated.ExecuteIfBound(Distance); } + +void ATrivialKartPlayerState::OnPurchaseReceived(const FString& PurchaseItemID, int Quantity) +{ + if (PurchaseItemID == CoinItemID) + { + CoinCount += Quantity; + OnCoinUpdated.ExecuteIfBound(CoinCount); + } +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp index 706127d9..f589ad54 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp @@ -18,6 +18,7 @@ void UPlayBoardWidget::NativeConstruct() { PlayerState->OnFuelUpdated.BindUObject(this, &UPlayBoardWidget::UpdateFuelBar); PlayerState->OnDistanceUpdated.BindUObject(this, &UPlayBoardWidget::UpdateDistanceText); + PlayerState->OnCoinUpdated.BindUObject(this, &UPlayBoardWidget::UpdateCoinText); const float FuelPercentage = PlayerState->GetFuel() / 100.0f; UpdateFuelBar(FuelPercentage); UpdateDistanceText(PlayerState->GetDistance()); @@ -34,6 +35,7 @@ void UPlayBoardWidget::NativeDestruct() { PlayerState->OnFuelUpdated.Unbind(); PlayerState->OnDistanceUpdated.Unbind(); + PlayerState->OnCoinUpdated.Unbind(); } Super::NativeDestruct(); } @@ -86,3 +88,8 @@ void UPlayBoardWidget::UpdateDistanceText(const float Distance) const { DistanceText->SetText(FText::FromString(FString::FromInt(FMath::RoundToInt(Distance)))); } + +void UPlayBoardWidget::UpdateCoinText(const int Quantity) const +{ + CoinText->SetText(FText::FromString(FString::FromInt(Quantity))); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp index b304843a..06f0e4c7 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp @@ -4,9 +4,38 @@ #include "Widgets/SelectableItem.h" #include "Components/Button.h" +#include "GameInstances/TrivialKartGameInstance.h" void USelectableItem::NativePreConstruct() { Super::NativePreConstruct(); SelectionButton->SetStyle(SelectionButtonStyle); } + +void USelectableItem::NativeConstruct() +{ + Super::NativeConstruct(); + SelectionButton->OnClicked.AddUniqueDynamic(this, &USelectableItem::OnSelectionButtonClicked); +} + +void USelectableItem::NativeDestruct() +{ + SelectionButton->OnClicked.RemoveDynamic(this, &USelectableItem::OnSelectionButtonClicked); + Super::NativeDestruct(); +} + +void USelectableItem::OnSelectionButtonClicked() +{ + switch (SelectionOperationType) + { + case ESelectableOperationType::Purchase: + { + if (const TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + Instance->StartPurchasing(PurchaseID, PurchaseQuantity); + } + } + break; + } +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h index d67c7c39..a61d2b79 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h @@ -6,6 +6,7 @@ #include "Kismet/BlueprintPlatformLibrary.h" #include "TrivialKartGameInstance.generated.h" +DECLARE_MULTICAST_DELEGATE_TwoParams(FOnPurchase, const FUniqueOfferId&, const int); class FPurchaseReceipt; DECLARE_LOG_CATEGORY_EXTERN(LogTemplateGameInstance, Log, All); /** @@ -17,6 +18,8 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst GENERATED_BODY() public: + FOnPurchase OnPurchaseReceived; + virtual void Init() override; UFUNCTION(BlueprintCallable, Category = "GameInstance|Authentication") @@ -29,7 +32,7 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst FString GetPlayerName() const; void AddAchievementProgress(const float Progress, const FString& AchievementName, const FString& AchievementID); - void StartPurchasing(FOnlineStoreOfferRef PurchaseItem, int32 Quantity); + void StartPurchasing(const FString& OfferID, const int32 Quantity); protected: //A map for ID and if they are Consumable Purchased @@ -52,6 +55,4 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst void OnQueryOnlineStoreOfferCompleted(bool bWasSuccessful, const TArray& OfferIds, const FString& Error); - void OnCheckoutComplete(const FOnlineError& OnlineError, const TSharedRef& PurchaseReceipt); - }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h index 3593bfed..49dd4a89 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h @@ -8,6 +8,7 @@ DECLARE_DELEGATE_OneParam(FDistanceUpdated, const float); DECLARE_DELEGATE_OneParam(FFuelUpdated, const float); +DECLARE_DELEGATE_OneParam(FCoinUpdated, const int); /** * @@ -21,6 +22,8 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState float Distance; + int CoinCount; + UPROPERTY(EditAnywhere) FString FuelAchievementName; @@ -36,8 +39,14 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState UPROPERTY(EditAnywhere) float DistanceAchievementThreshold; + UPROPERTY(EditAnywhere) + FString CoinItemID; + + FDelegateHandle CoinPurchaseHandle; + public: - void BeginPlay() override; + virtual void BeginPlay() override; + virtual void EndPlay(const EEndPlayReason::Type EndPlayReason) override; void ConsumeFuel(const float FuelConsumption); void AddDistance(const float DistanceTravelled); @@ -47,8 +56,12 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState FDistanceUpdated OnDistanceUpdated; FFuelUpdated OnFuelUpdated; + FCoinUpdated OnCoinUpdated; private: void UpdateFuel(); void UpdateDistance(); + + UFUNCTION() + void OnPurchaseReceived(const FString& PurchaseItemID, int Quantity); }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h index 48b118a2..052f2614 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h @@ -40,7 +40,10 @@ class TRIVIALKART_UNREAL_API UPlayBoardWidget : public UUserWidget UFUNCTION() void OnStoreButtonClicked(); -public: + UFUNCTION() void UpdateFuelBar(const float FuelBarPercentage) const; + UFUNCTION() void UpdateDistanceText(const float Distance) const; + UFUNCTION() + void UpdateCoinText(const int Quantity) const; }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h index 7b37aa4f..1e187c86 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h @@ -6,6 +6,13 @@ #include "Blueprint/UserWidget.h" #include "SelectableItem.generated.h" + +UENUM() +enum class ESelectableOperationType : uint8 +{ + None, + Purchase +}; class UButtonWidgetStyle; class UButton; class SButton; @@ -23,6 +30,20 @@ class TRIVIALKART_UNREAL_API USelectableItem : public UUserWidget UPROPERTY(EditAnywhere) FButtonStyle SelectionButtonStyle; + UPROPERTY(EditAnywhere) + ESelectableOperationType SelectionOperationType; + + UPROPERTY(EditAnywhere) + FString PurchaseID; + + UPROPERTY(EditAnywhere) + int PurchaseQuantity; + public: void NativePreConstruct() override; + void NativeConstruct() override; + void NativeDestruct() override; + + UFUNCTION() + void OnSelectionButtonClicked(); }; From aaa6fe7f7dc129a96d52a556334c76d0b23f68f0 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Fri, 23 Jan 2026 22:27:35 +0530 Subject: [PATCH 21/27] Added Virtual Keyword for missing functions --- .../Content/Blueprints/Widgets/WBP_PGS.uasset | 4 ++-- .../Private/Widgets/PGSWidget.cpp | 22 +++++++++++++------ .../Public/Widgets/GarageWidget.h | 4 ++-- .../Public/Widgets/PGSWidget.h | 12 ++++++++-- .../Public/Widgets/SelectableItem.h | 6 ++--- .../Public/Widgets/StoreWidget.h | 4 ++-- ...ivialKart_Unreal.uproject.DotSettings.user | 1 + 7 files changed, 35 insertions(+), 18 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset index 5cfa47b2..18832aeb 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:befcd092f3afe1f7cd37d53e93b1674f626296ed60ce6acf1a874a37067a51f1 -size 57181 +oid sha256:8f72eaeebce3fed3f5d99bda0785c24da2fbdf8950844cd90155d1bfbe5d9d03 +size 64843 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp index e5f0b472..fca558d0 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp @@ -22,23 +22,25 @@ void UPGSWidget::NativeConstruct() CheckBoxes.Empty(); CheckBoxes.Add(AuthenticationCheckBox); CheckBoxes.Add(AchievementsCheckBox); + CheckBoxes.Add(LeaderboardCheckBox); AuthenticationCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UPGSWidget::OnAuthCheckBoxStateChanged); AchievementsCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UPGSWidget::OnAchievementBoxStateChange); + LeaderboardCheckBox->OnCheckStateChanged.AddUniqueDynamic(this, &UPGSWidget::OnLeaderboardBoxStateChange); if (TWeakObjectPtr Instance = Cast(GetGameInstance()); Instance.IsValid()) { - FString AuthStatus = Instance->GetLoginStatus() ? FString("Logged In") : FString("Logged Out"); - if (auto PGSAuthStatusText = Cast( + const FString AuthStatus = Instance->GetLoginStatus() ? FString("Logged In") : FString("Logged Out"); + if (const auto PgsAuthStatusText = Cast( CreateWidget(this, PGSTextTemplate))) { - PGSAuthStatusText->SetPGSText("Auth Status", AuthStatus); - AuthBox->AddChild(PGSAuthStatusText); + PgsAuthStatusText->SetPGSText("Auth Status", AuthStatus); + AuthBox->AddChildToVerticalBox(PgsAuthStatusText); } - if (auto PGSUsernameText = Cast( + if (const auto PgsUsernameText = Cast( CreateWidget(this, PGSTextTemplate))) { - PGSUsernameText->SetPGSText("Username", Instance->GetPlayerName()); - AuthBox->AddChild(PGSUsernameText); + PgsUsernameText->SetPGSText("Username", Instance->GetPlayerName()); + AuthBox->AddChildToVerticalBox(PgsUsernameText); } } if (const IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(GetWorld()); @@ -71,6 +73,7 @@ void UPGSWidget::NativeDestruct() BackButton->OnClicked.RemoveDynamic(this, &UPGSWidget::OnBackButtonClicked); AuthenticationCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UPGSWidget::OnAuthCheckBoxStateChanged); AchievementsCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UPGSWidget::OnAchievementBoxStateChange); + LeaderboardCheckBox->OnCheckStateChanged.RemoveDynamic(this, &UPGSWidget::OnLeaderboardBoxStateChange); Super::NativeDestruct(); } @@ -117,3 +120,8 @@ void UPGSWidget::OnAchievementBoxStateChange(bool bIsChecked) { SetCheckBoxState(bIsChecked, AchievementsCheckBox, 1); } + +void UPGSWidget::OnLeaderboardBoxStateChange(bool bIsChecked) +{ + SetCheckBoxState(bIsChecked, LeaderboardCheckBox, 2); +} diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h index 1dca89be..d293d837 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h @@ -33,8 +33,8 @@ class TRIVIALKART_UNREAL_API UGarageWidget : public UUserWidget UPROPERTY() TArray CheckBoxes; public: - void NativeConstruct() override; - void NativeDestruct() override; + virtual void NativeConstruct() override; + virtual void NativeDestruct() override; private: UFUNCTION() diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h index 5cfafafb..ad56cffa 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h @@ -30,6 +30,9 @@ class TRIVIALKART_UNREAL_API UPGSWidget : public UUserWidget UPROPERTY(meta=(BindWidget)) TObjectPtr AchievementsCheckBox; + UPROPERTY(meta=(BindWidget)) + TObjectPtr LeaderboardCheckBox; + UPROPERTY(meta=(BindWidget)) TObjectPtr ContentSwitcher; @@ -39,6 +42,9 @@ class TRIVIALKART_UNREAL_API UPGSWidget : public UUserWidget UPROPERTY(meta=(BindWidget)) TObjectPtr AchievementsBox; + UPROPERTY(meta=(BindWidget)) + TObjectPtr LeaderboardBox; + UPROPERTY(EditAnywhere) TSubclassOf PGSTextTemplate; @@ -46,8 +52,8 @@ class TRIVIALKART_UNREAL_API UPGSWidget : public UUserWidget UPROPERTY() TArray CheckBoxes; public: - void NativeConstruct() override; - void NativeDestruct() override; + virtual void NativeConstruct() override; + virtual void NativeDestruct() override; private: UFUNCTION() @@ -57,4 +63,6 @@ class TRIVIALKART_UNREAL_API UPGSWidget : public UUserWidget void OnAuthCheckBoxStateChanged(bool bIsChecked); UFUNCTION() void OnAchievementBoxStateChange(bool bIsChecked); + UFUNCTION() + void OnLeaderboardBoxStateChange(bool bIsChecked); }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h index 1e187c86..aa4e39a9 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h @@ -40,9 +40,9 @@ class TRIVIALKART_UNREAL_API USelectableItem : public UUserWidget int PurchaseQuantity; public: - void NativePreConstruct() override; - void NativeConstruct() override; - void NativeDestruct() override; + virtual void NativePreConstruct() override; + virtual void NativeConstruct() override; + virtual void NativeDestruct() override; UFUNCTION() void OnSelectionButtonClicked(); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h index b0360892..b09e49a3 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h @@ -39,8 +39,8 @@ class TRIVIALKART_UNREAL_API UStoreWidget : public UUserWidget UPROPERTY() TArray CheckBoxes; public: - void NativeConstruct() override; - void NativeDestruct() override; + virtual void NativeConstruct() override; + virtual void NativeDestruct() override; private: UFUNCTION() diff --git a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user index 403c4817..332680fd 100644 --- a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user +++ b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user @@ -1,2 +1,3 @@  + ForceIncluded ForceIncluded \ No newline at end of file From db0d85b55eec1eb6dd455523e2d675b91efeff1f Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Wed, 28 Jan 2026 17:12:12 +0530 Subject: [PATCH 22/27] License + Local Save + Cursor Enabled --- .../Config/DefaultEngine.ini | 1 + .../trivialkart_unreal/Config/DefaultGame.ini | 1 + .../Blueprints/Game/BP_GameInstance.uasset | 4 +- .../Blueprints/Game/BP_SaveGame.uasset | 3 + .../Content/Blueprints/Player/BP_Kart.uasset | 4 +- .../Blueprints/Widgets/WBP_Garage.uasset | 4 +- .../Content/Blueprints/Widgets/WBP_PGS.uasset | 4 +- .../Blueprints/Widgets/WBP_Store.uasset | 4 +- .../Source/TrivialKart_Unreal.Target.cs | 17 +++ .../Private/Actors/KartPawn.cpp | 41 ++++++- .../Private/Actors/TrivialKartHUD.cpp | 19 ++- .../TrivialKartPlayerController.cpp | 21 +++- .../GameInstances/TrivialKartGameInstance.cpp | 46 +++++++- .../Private/Infos/TrivialKartPlayerState.cpp | 88 +++++++++++++- .../Private/Objects/TrivialKartSaveGame.cpp | 19 +++ .../Private/Widgets/GarageWidget.cpp | 16 ++- .../Private/Widgets/PGSLayoutText.cpp | 17 ++- .../Private/Widgets/PGSWidget.cpp | 17 ++- .../Private/Widgets/PlayBoardWidget.cpp | 18 +++ .../Private/Widgets/SelectableItem.cpp | 109 +++++++++++++++++- .../Private/Widgets/StoreWidget.cpp | 17 ++- .../Public/Actors/KartPawn.h | 23 ++++ .../Public/Actors/TrivialKartHUD.h | 17 +++ .../Controllers/TrivialKartPlayerController.h | 19 ++- .../GameInstances/TrivialKartGameInstance.h | 33 +++++- .../Public/Infos/TrivialKartPlayerState.h | 29 ++++- .../Public/Objects/TrivialKartSaveGame.h | 41 +++++++ .../Public/Widgets/GarageWidget.h | 16 ++- .../Public/Widgets/PGSLayoutText.h | 17 ++- .../Public/Widgets/PGSWidget.h | 17 ++- .../Public/Widgets/PlayBoardWidget.h | 17 +++ .../Public/Widgets/SelectableItem.h | 45 +++++++- .../Public/Widgets/StoreWidget.h | 17 ++- .../TrivialKart_Unreal.Build.cs | 17 +++ .../TrivialKart_Unreal/TrivialKart_Unreal.cpp | 17 +++ .../TrivialKart_Unreal/TrivialKart_Unreal.h | 17 +++ .../Source/TrivialKart_UnrealEditor.Target.cs | 17 +++ ...ivialKart_Unreal.uproject.DotSettings.user | 4 +- 38 files changed, 776 insertions(+), 57 deletions(-) create mode 100644 trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_SaveGame.uasset create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Objects/TrivialKartSaveGame.cpp create mode 100644 trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Objects/TrivialKartSaveGame.h diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index 73e48c6e..701a7eca 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -282,6 +282,7 @@ ManualIPAddress= +ClassRedirects=(OldName="/Script/TrivialKart_Unreal.TrivalKartGameInstance",NewName="/Script/TrivialKart_Unreal.TrivialKartGameInstance") +PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.PGSLayoutText.Widget",NewName="/Script/TrivialKart_Unreal.PGSLayoutText.PGSText") +PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.StoreWidget.LevelCheckBox",NewName="/Script/TrivialKart_Unreal.StoreWidget.CoinCheckBox") ++EnumRedirects=(OldName="/Script/TrivialKart_Unreal.ECoinPurchaseObject",NewName="/Script/TrivialKart_Unreal.EPurchaseObject") [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] PackageName=com.gamesamples.trivialkartunreal diff --git a/trivialkart/trivialkart_unreal/Config/DefaultGame.ini b/trivialkart/trivialkart_unreal/Config/DefaultGame.ini index d30ec3b4..fce179d1 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultGame.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultGame.ini @@ -4,6 +4,7 @@ CommonButtonAcceptKeyHandling=TriggerClick [/Script/EngineSettings.GeneralProjectSettings] ProjectID=C958FA925B4F85EF31EC53B627AD4809 +CopyrightNotice= [/Script/UnrealEd.ProjectPackagingSettings] BuildConfiguration=PPBC_Shipping diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset index 659d4f19..8e2fd309 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:cb0eaf08299a909806dc9dc5c7547cdd488125c12c27897cb1b9619a1b191c18 -size 5810 +oid sha256:52f7b8893fcfc642e137ea5a8f2ce3e991874491bfd6de83d7397bb58393c17e +size 6008 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_SaveGame.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_SaveGame.uasset new file mode 100644 index 00000000..249b0482 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_SaveGame.uasset @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:4378ab14a406ea06056d24db1cb4b344ec80babd85e0ebe0e31ee0f6e18f804f +size 5882 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_Kart.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_Kart.uasset index 0c19cf50..3784725c 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_Kart.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_Kart.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b7872193c553932ae8607d726a28c41c7197a67949e7fb29dc7d57542601db3 -size 25327 +oid sha256:a59e5e1f90e1b2214b703de2e83516fb873631681da2b272c874ee145878ed95 +size 25986 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset index 08881a48..e9bc7450 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Garage.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:5b69f5663fd5408ad1ad7e5175f6c62b88069a3cf7376e1ba927d8ecd79ad475 -size 46047 +oid sha256:20d4230448d1efb93fba20f250de32697b8e488d458e961d753f4a5ea8430659 +size 73870 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset index 18832aeb..669de8fc 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_PGS.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8f72eaeebce3fed3f5d99bda0785c24da2fbdf8950844cd90155d1bfbe5d9d03 -size 64843 +oid sha256:d17b8be2a0c97b3fd74db57c22fd5f847f386dadfd18097985f60963a87d4ca8 +size 47649 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset index 7b1c0ebc..e98c18f5 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:72cce5d11f9230ac6aeda3fdd1ec96275679794af4d2368a55e99d5b46513f47 -size 247461 +oid sha256:edbe0628a5007acc628d2dd05b4ca47eb2befc2918bb5f37a83f6f3b928e7d94 +size 257968 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal.Target.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal.Target.cs index 8331bcf2..f7b68a32 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal.Target.cs +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal.Target.cs @@ -1,3 +1,20 @@ +/* + * Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + using UnrealBuildTool; using System.Collections.Generic; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp index dc46d9c6..fde2b759 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp @@ -1,16 +1,32 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #include "Actors/KartPawn.h" #include "EnhancedInputComponent.h" -#include "PaperCharacter.h" #include "PaperFlipbookComponent.h" #include "Camera/CameraComponent.h" #include "Components/BoxComponent.h" -#include "GameFramework/FloatingPawnMovement.h" -#include "GameFramework/PawnMovementComponent.h" #include "GameFramework/PlayerStart.h" #include "GameFramework/SpringArmComponent.h" +#include "GameInstances/TrivialKartGameInstance.h" #include "Infos/TrivialKartPlayerState.h" #include "Kismet/GameplayStatics.h" +#include "Objects/TrivialKartSaveGame.h" // Sets default values AKartPawn::AKartPawn() @@ -55,7 +71,14 @@ AKartPawn::AKartPawn() void AKartPawn::BeginPlay() { Super::BeginPlay(); - + if (const TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + if (TWeakObjectPtr Save = Instance->LoadGame(); Save.IsValid()) + { + SwitchCar(Save->ActiveCarType); + } + } } void AKartPawn::NotifyActorBeginOverlap(AActor* OtherActor) @@ -79,12 +102,20 @@ void AKartPawn::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent) Super::SetupPlayerInputComponent(PlayerInputComponent); if (UEnhancedInputComponent* EnhancedInputComponent = Cast(PlayerInputComponent)) - { + { // Moving EnhancedInputComponent->BindAction(MoveAction, ETriggerEvent::Triggered, this, &AKartPawn::Move); } } +void AKartPawn::SwitchCar(const FString& CarName) +{ + if (CarTypes.Contains(CarName)) + { + Sprite->SetFlipbook(CarTypes[CarName]); + } +} + void AKartPawn::Move(const FInputActionValue& Value) { if (GetController() != nullptr) diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp index ea72ed4d..30262ae5 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/TrivialKartHUD.cpp @@ -1,3 +1,20 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #include "Actors/TrivialKartHUD.h" #include "Blueprint/UserWidget.h" @@ -41,7 +58,7 @@ UUserWidget* ATrivialKartHUD::GetWidgetOfType(const EWidgetType WidgetType) { if (!ActiveWidgets.Contains(WidgetType)) { -UE_LOG(LogTemplateHUD, Warning, TEXT("Active widget does not exist")); + UE_LOG(LogTemplateHUD, Warning, TEXT("Active widget does not exist")); return nullptr; } return ActiveWidgets[WidgetType].Get(); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Controllers/TrivialKartPlayerController.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Controllers/TrivialKartPlayerController.cpp index 225693bf..7c0322e3 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Controllers/TrivialKartPlayerController.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Controllers/TrivialKartPlayerController.cpp @@ -1,10 +1,29 @@ -// Fill out your copyright notice in the Description page of Project Settings. +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "Controllers/TrivialKartPlayerController.h" #include "EnhancedInputSubsystems.h" +ATrivialKartPlayerController::ATrivialKartPlayerController() +{ + bShowMouseCursor = true; +} + void ATrivialKartPlayerController::SetupInputComponent() { Super::SetupInputComponent(); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp index c898dbed..ea72e82d 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -1,3 +1,20 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #include "GameInstances/TrivialKartGameInstance.h" #include "OnlineSubsystem.h" @@ -5,6 +22,8 @@ #include "Interfaces/OnlineAchievementsInterface.h" #include "Interfaces/OnlineIdentityInterface.h" #include "Interfaces/OnlinePurchaseInterface.h" +#include "Kismet/GameplayStatics.h" +#include "Objects/TrivialKartSaveGame.h" DEFINE_LOG_CATEGORY(LogTemplateGameInstance); @@ -69,7 +88,7 @@ void UTrivialKartGameInstance::AddAchievementProgress(const float Progress, cons } } -void UTrivialKartGameInstance::StartPurchasing(const FUniqueOfferId& PurchaseItemID, int32 Quantity) +void UTrivialKartGameInstance::StartPurchasing(const FUniqueOfferId& PurchaseItemID, int32 Quantity, bool bIsConsumable) { if (const IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld())) { @@ -92,7 +111,7 @@ void UTrivialKartGameInstance::StartPurchasing(const FUniqueOfferId& PurchaseIte "", CurrentOrder->OfferId, Quantity, - StoreListItemIDs[CurrentOrder->OfferId] + bIsConsumable ); PurchaseInterface->Checkout(*IdentityInterface->GetUniquePlayerId(0), CheckoutRequest, @@ -117,6 +136,23 @@ void UTrivialKartGameInstance::StartPurchasing(const FUniqueOfferId& PurchaseIte } } +UTrivialKartSaveGame* UTrivialKartGameInstance::LoadGame() +{ + SaveGameInstance = Cast(UGameplayStatics::LoadGameFromSlot("TrivialKart", 0)); + if (!IsValid(SaveGameInstance)) + { + SaveGameInstance = Cast(UGameplayStatics::CreateSaveGameObject(SaveGameTemplate)); + } + return SaveGameInstance; +} + +void UTrivialKartGameInstance::SaveGame(UTrivialKartSaveGame* SaveData) +{ + if (!IsValid(SaveData)) + return; + UGameplayStatics::SaveGameToSlot(SaveData, "TrivialKart", 0); +} + void UTrivialKartGameInstance::OnLoginCompleted(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error) { @@ -137,9 +173,7 @@ UE_LOG(LogTemplateGameInstance, Log, TEXT("Local User: %d of Unique ID: %s has l } if (const IOnlineStoreV2Ptr StoreInterface = Subsystem->GetStoreV2Interface()) { - TArray StoreListItemKeys; - StoreListItemIDs.GetKeys(StoreListItemKeys); - StoreInterface->QueryOffersById(*IdentityInterface->GetUniquePlayerId(0), StoreListItemKeys, + StoreInterface->QueryOffersById(*IdentityInterface->GetUniquePlayerId(0), StoreListItemIDs, FOnQueryOnlineStoreOffersComplete::CreateUObject(this, &UTrivialKartGameInstance::OnQueryOnlineStoreOfferCompleted)); } } @@ -149,7 +183,7 @@ UE_LOG(LogTemplateGameInstance, Log, TEXT("Local User: %d of Unique ID: %s has l void UTrivialKartGameInstance::OnQueryAchievementsCompleted(const FUniqueNetId& UniqueNetId, bool bWasSuccessful) { -UE_LOG(LogTemplateGameInstance, Log, TEXT("Achievements Cached for User: %s has %s"), *UniqueNetId.ToString(), bWasSuccessful ? TEXT("Succeeded") : TEXT("Failed")); + UE_LOG(LogTemplateGameInstance, Log, TEXT("Achievements Cached for User: %s has %s"), *UniqueNetId.ToString(), bWasSuccessful ? TEXT("Succeeded") : TEXT("Failed")); if (bWasSuccessful) { AddAchievementProgress(20, LogInAchievementID, LogInAchievementName); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp index 44dce124..18dff91d 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp @@ -1,23 +1,42 @@ -// Fill out your copyright notice in the Description page of Project Settings. +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "Infos/TrivialKartPlayerState.h" #include "GameInstances/TrivialKartGameInstance.h" +#include "Objects/TrivialKartSaveGame.h" void ATrivialKartPlayerState::BeginPlay() { Super::BeginPlay(); - Fuel = 100.0f; + Refuel(); Distance = 0.0f; - UpdateFuel(); UpdateDistance(); if (TWeakObjectPtr Instance = Cast(GetGameInstance()); Instance.IsValid()) { + if (TWeakObjectPtr Save = Instance->LoadGame(); Save.IsValid()) + { + CarsOwned = Save->CarsOwned; + CoinCount = Save->CurrentCoins; + } CoinPurchaseHandle = Instance->OnPurchaseReceived.AddUObject(this, &ATrivialKartPlayerState::OnPurchaseReceived); } } @@ -55,7 +74,33 @@ void ATrivialKartPlayerState::AddDistance(const float DistanceTravelled) if (TWeakObjectPtr Instance = Cast(GetGameInstance()); Instance.IsValid()) { -Instance->AddAchievementProgress(100, DistanceAchievementName, DistanceAchievementID); + Instance->AddAchievementProgress(100, DistanceAchievementName, DistanceAchievementID); + } + } +} + +void ATrivialKartPlayerState::ConsumeCoins(const int CoinsUsed) +{ + CoinCount -= CoinsUsed; + if (CoinCount <= 0) + { + CoinCount = 0; + } + UpdateCoin(); +} + +void ATrivialKartPlayerState::AddCarToInventory(const FString& CarID) +{ + if (CarsOwned.Contains(CarID)) + return; + CarsOwned.Add(CarID); + if (TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + if (TWeakObjectPtr Save = Instance->LoadGame(); Save.IsValid()) + { + Save->CarsOwned = CarsOwned; + Instance->SaveGame(Save.Get()); } } } @@ -70,6 +115,25 @@ float ATrivialKartPlayerState::GetDistance() const return Distance; } +int ATrivialKartPlayerState::GetCoinCount() const +{ + return CoinCount; +} + +void ATrivialKartPlayerState::Refuel() +{ + Fuel = 100.0f; + UpdateFuel(); +} + +#if UE_EDITOR +void ATrivialKartPlayerState::AddCoins(int CoinQuantity) +{ + CoinCount += CoinQuantity; + UpdateCoin(); +} +#endif + void ATrivialKartPlayerState::UpdateFuel() { const float FuelPercentage = Fuel / 100.0f; @@ -81,11 +145,25 @@ void ATrivialKartPlayerState::UpdateDistance() OnDistanceUpdated.ExecuteIfBound(Distance); } +void ATrivialKartPlayerState::UpdateCoin() +{ + OnCoinUpdated.ExecuteIfBound(CoinCount); + if (TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + if (TWeakObjectPtr Save = Instance->LoadGame(); Save.IsValid()) + { + Save->CurrentCoins = CoinCount; + Instance->SaveGame(Save.Get()); + } + } +} + void ATrivialKartPlayerState::OnPurchaseReceived(const FString& PurchaseItemID, int Quantity) { if (PurchaseItemID == CoinItemID) { CoinCount += Quantity; - OnCoinUpdated.ExecuteIfBound(CoinCount); + UpdateCoin(); } } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Objects/TrivialKartSaveGame.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Objects/TrivialKartSaveGame.cpp new file mode 100644 index 00000000..98531a14 --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Objects/TrivialKartSaveGame.cpp @@ -0,0 +1,19 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +#include "Objects/TrivialKartSaveGame.h" + diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp index 9a16ab8a..39bf3210 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/GarageWidget.cpp @@ -1,4 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "Widgets/GarageWidget.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSLayoutText.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSLayoutText.cpp index c5f2462d..7b2faa64 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSLayoutText.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSLayoutText.cpp @@ -1,5 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. - +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "Widgets/PGSLayoutText.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp index fca558d0..ea35e032 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PGSWidget.cpp @@ -1,5 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. - +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "Widgets/PGSWidget.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp index f589ad54..38a192b2 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/PlayBoardWidget.cpp @@ -1,3 +1,20 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #include "Widgets/PlayBoardWidget.h" #include "Actors/TrivialKartHUD.h" @@ -22,6 +39,7 @@ void UPlayBoardWidget::NativeConstruct() const float FuelPercentage = PlayerState->GetFuel() / 100.0f; UpdateFuelBar(FuelPercentage); UpdateDistanceText(PlayerState->GetDistance()); + UpdateCoinText(PlayerState->GetCoinCount()); } } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp index 06f0e4c7..7e21b556 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/SelectableItem.cpp @@ -1,10 +1,26 @@ -// Fill out your copyright notice in the Description page of Project Settings. - +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "Widgets/SelectableItem.h" +#include "Actors/KartPawn.h" #include "Components/Button.h" #include "GameInstances/TrivialKartGameInstance.h" +#include "Infos/TrivialKartPlayerState.h" +#include "Objects/TrivialKartSaveGame.h" void USelectableItem::NativePreConstruct() { @@ -16,6 +32,27 @@ void USelectableItem::NativeConstruct() { Super::NativeConstruct(); SelectionButton->OnClicked.AddUniqueDynamic(this, &USelectableItem::OnSelectionButtonClicked); + if (const TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + if (TWeakObjectPtr Save = Instance->LoadGame(); Save.IsValid()) + { + bool bIsOwned = Save->CarsOwned.Contains(CarType); + switch (SelectionOperationType) + { + case ESelectableOperationType::CoinPurchase: + { + SetIsEnabled(!bIsOwned); + } + break; + case ESelectableOperationType::ObjectSelection: + { + SetVisibility(bIsOwned ? ESlateVisibility::Visible : ESlateVisibility::Collapsed); + } + break; + } + } + } } void USelectableItem::NativeDestruct() @@ -28,12 +65,76 @@ void USelectableItem::OnSelectionButtonClicked() { switch (SelectionOperationType) { - case ESelectableOperationType::Purchase: + case ESelectableOperationType::InAppPurchase: { +#if UE_EDITOR + switch (PurchaseObject) + { + case EPurchaseObject::Coin: + if (PurchaseObject == EPurchaseObject::Coin) + { + if (const TWeakObjectPtr PlayerState = Cast(GetOwningPlayerState()); + PlayerState.IsValid()) + { + PlayerState->AddCoins(PurchaseQuantity); + } + } + break; + } +#endif if (const TWeakObjectPtr Instance = Cast(GetGameInstance()); Instance.IsValid()) { - Instance->StartPurchasing(PurchaseID, PurchaseQuantity); + Instance->StartPurchasing(PurchaseID, PurchaseQuantity, bIsConsumable); + } + } + break; + case ESelectableOperationType::CoinPurchase: + { + if (const TWeakObjectPtr PlayerState = Cast(GetOwningPlayerState()); + PlayerState.IsValid()) + { + if (PlayerState->GetCoinCount() >= CoinQuantity) + { + switch (PurchaseObject) + { + case EPurchaseObject::Car: + { + if (CarType.IsEmpty()) + return; + PlayerState->AddCarToInventory(CarType); + SetIsEnabled(false); + } + break; + case EPurchaseObject::Fuel: + { + PlayerState->Refuel(); + } + break; + } + PlayerState->ConsumeCoins(CoinQuantity); + } + } + } + break; + case ESelectableOperationType::ObjectSelection: + { + if (IsValid(GetOwningPlayer())) + { + if (TWeakObjectPtr Pawn = Cast(GetOwningPlayer()->GetPawn()); + Pawn.IsValid()) + { + Pawn->SwitchCar(CarType); + if (const TWeakObjectPtr Instance = Cast(GetGameInstance()); + Instance.IsValid()) + { + if (TWeakObjectPtr Save = Instance->LoadGame(); Save.IsValid()) + { + Save->ActiveCarType = CarType; + Instance->SaveGame(Save.Get()); + } + } + } } } break; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp index a6568609..91fd105c 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Widgets/StoreWidget.cpp @@ -1,5 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. - +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #include "Widgets/StoreWidget.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h index 8f4c44e2..87af2912 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h @@ -1,9 +1,27 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #pragma once #include "CoreMinimal.h" #include "GameFramework/Pawn.h" #include "KartPawn.generated.h" +class UPaperFlipbook; struct FInputActionValue; class UBoxComponent; class UInputAction; @@ -38,6 +56,9 @@ class TRIVIALKART_UNREAL_API AKartPawn : public APawn UPROPERTY(EditAnywhere, Category ="Car|Movement") float FuelConsumptionRate; + UPROPERTY(EditAnywhere, Category ="Car") + TMap CarTypes; + public: // Sets default values for this pawn's properties AKartPawn(); @@ -50,6 +71,8 @@ class TRIVIALKART_UNREAL_API AKartPawn : public APawn // Called to bind functionality to input virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override; + void SwitchCar(const FString& CarName); + protected: virtual void Move(const FInputActionValue& Value); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h index 10b40e11..2e488483 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/TrivialKartHUD.h @@ -1,3 +1,20 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #pragma once #include "CoreMinimal.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Controllers/TrivialKartPlayerController.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Controllers/TrivialKartPlayerController.h index 1d2bbc7c..6d011734 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Controllers/TrivialKartPlayerController.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Controllers/TrivialKartPlayerController.h @@ -1,5 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. - +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once #include "CoreMinimal.h" @@ -19,5 +32,7 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerController : public APlayerContro TObjectPtr DefaultMappingContext; public: + ATrivialKartPlayerController(); + virtual void SetupInputComponent() override; }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h index a61d2b79..82f245b7 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h @@ -1,3 +1,20 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #pragma once #include "CoreMinimal.h" @@ -6,6 +23,8 @@ #include "Kismet/BlueprintPlatformLibrary.h" #include "TrivialKartGameInstance.generated.h" +class USaveGame; +class UTrivialKartSaveGame; DECLARE_MULTICAST_DELEGATE_TwoParams(FOnPurchase, const FUniqueOfferId&, const int); class FPurchaseReceipt; DECLARE_LOG_CATEGORY_EXTERN(LogTemplateGameInstance, Log, All); @@ -32,12 +51,14 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst FString GetPlayerName() const; void AddAchievementProgress(const float Progress, const FString& AchievementName, const FString& AchievementID); - void StartPurchasing(const FString& OfferID, const int32 Quantity); + void StartPurchasing(const FString& OfferID, const int32 Quantity, bool bIsConsumable); + + UTrivialKartSaveGame* LoadGame(); + void SaveGame(UTrivialKartSaveGame* SaveData); protected: - //A map for ID and if they are Consumable Purchased UPROPERTY(EditAnywhere) - TMap StoreListItemIDs; + TArray StoreListItemIDs; TArray StoreOffers; @@ -47,6 +68,12 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst UPROPERTY(EditAnywhere) FString LogInAchievementID; + UPROPERTY(EditAnywhere) + TSubclassOf SaveGameTemplate; + + UPROPERTY() + UTrivialKartSaveGame* SaveGameInstance; + private: void OnLoginCompleted(int32 LocalUserNum, bool bWasSuccessful, const FUniqueNetId& UserId, const FString& Error); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h index 49dd4a89..b7c8bb15 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h @@ -1,4 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once @@ -24,6 +38,9 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState int CoinCount; + UPROPERTY(EditAnywhere) + TArray CarsOwned; + UPROPERTY(EditAnywhere) FString FuelAchievementName; @@ -50,17 +67,27 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState void ConsumeFuel(const float FuelConsumption); void AddDistance(const float DistanceTravelled); + void ConsumeCoins(const int CoinsUsed); + void AddCarToInventory(const FString& CarID); float GetFuel() const; float GetDistance() const; + int GetCoinCount() const; + + void Refuel(); FDistanceUpdated OnDistanceUpdated; FFuelUpdated OnFuelUpdated; FCoinUpdated OnCoinUpdated; +#if UE_EDITOR + void AddCoins(int CoinQuantity); +#endif + private: void UpdateFuel(); void UpdateDistance(); + void UpdateCoin(); UFUNCTION() void OnPurchaseReceived(const FString& PurchaseItemID, int Quantity); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Objects/TrivialKartSaveGame.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Objects/TrivialKartSaveGame.h new file mode 100644 index 00000000..44d3fb9f --- /dev/null +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Objects/TrivialKartSaveGame.h @@ -0,0 +1,41 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include "CoreMinimal.h" +#include "GameFramework/SaveGame.h" +#include "TrivialKartSaveGame.generated.h" + +/** + * + */ +UCLASS() +class TRIVIALKART_UNREAL_API UTrivialKartSaveGame : public USaveGame +{ + GENERATED_BODY() + +public: + UPROPERTY(EditAnywhere) + int CurrentCoins; + + UPROPERTY(EditAnywhere) + TArray CarsOwned; + + UPROPERTY(EditAnywhere) + FString ActiveCarType; + +}; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h index d293d837..b880011d 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/GarageWidget.h @@ -1,4 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSLayoutText.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSLayoutText.h index f3f20eea..f16de245 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSLayoutText.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSLayoutText.h @@ -1,5 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. - +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once #include "CoreMinimal.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h index ad56cffa..500a3ed5 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PGSWidget.h @@ -1,5 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. - +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once #include "CoreMinimal.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h index 052f2614..6bdc11cf 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/PlayBoardWidget.h @@ -1,3 +1,20 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #pragma once #include "CoreMinimal.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h index aa4e39a9..393dd662 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/SelectableItem.h @@ -1,4 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once @@ -11,7 +25,18 @@ UENUM() enum class ESelectableOperationType : uint8 { None, - Purchase + InAppPurchase, + CoinPurchase, + ObjectSelection, +}; + +UENUM() +enum class EPurchaseObject : uint8 +{ + None, + Fuel, + Car, + Coin }; class UButtonWidgetStyle; class UButton; @@ -33,12 +58,24 @@ class TRIVIALKART_UNREAL_API USelectableItem : public UUserWidget UPROPERTY(EditAnywhere) ESelectableOperationType SelectionOperationType; - UPROPERTY(EditAnywhere) + UPROPERTY(EditAnywhere, meta = (EditCondition = "SelectionOperationType == ESelectableOperationType::InAppPurchase", EditConditionHides)) FString PurchaseID; - UPROPERTY(EditAnywhere) + UPROPERTY(EditAnywhere, meta = (EditCondition = "SelectionOperationType == ESelectableOperationType::InAppPurchase", EditConditionHides)) int PurchaseQuantity; + UPROPERTY(EditAnywhere, meta = (EditCondition = "SelectionOperationType == ESelectableOperationType::InAppPurchase", EditConditionHides)) + bool bIsConsumable; + + UPROPERTY(EditAnywhere, meta = (EditCondition = "SelectionOperationType == ESelectableOperationType::CoinPurchase", EditConditionHides)) + int CoinQuantity; + + UPROPERTY(EditAnywhere) + EPurchaseObject PurchaseObject; + + UPROPERTY(EditAnywhere, meta = (EditCondition = "PurchaseObject == EPurchaseObject::Car", EditConditionHides)) + FString CarType; + public: virtual void NativePreConstruct() override; virtual void NativeConstruct() override; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h index b09e49a3..547c5ad4 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Widgets/StoreWidget.h @@ -1,5 +1,18 @@ -// Fill out your copyright notice in the Description page of Project Settings. - +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ #pragma once #include "CoreMinimal.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs index cbe60d64..cb147ee5 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.Build.cs @@ -1,3 +1,20 @@ +/* + * Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + using UnrealBuildTool; public class TrivialKart_Unreal : ModuleRules diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.cpp index 3f8aca82..cb197a12 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.cpp @@ -1,3 +1,20 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #include "TrivialKart_Unreal.h" #include "Modules/ModuleManager.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.h index fe82abe0..053b0d5a 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/TrivialKart_Unreal.h @@ -1,3 +1,20 @@ +/* +* Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + #pragma once #include "CoreMinimal.h" diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_UnrealEditor.Target.cs b/trivialkart/trivialkart_unreal/Source/TrivialKart_UnrealEditor.Target.cs index ba2d2f12..eba0a3eb 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_UnrealEditor.Target.cs +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_UnrealEditor.Target.cs @@ -1,3 +1,20 @@ +/* + * Copyright 2026 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + using UnrealBuildTool; using System.Collections.Generic; diff --git a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user index 332680fd..27de2fe4 100644 --- a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user +++ b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user @@ -1,3 +1,5 @@  ForceIncluded - ForceIncluded \ No newline at end of file + ForceIncluded + ForceIncluded + ForceIncluded \ No newline at end of file From f10a131f4e24583f8253475c02d965c6160af9ae Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Wed, 28 Jan 2026 21:12:42 +0530 Subject: [PATCH 23/27] Create README.md --- trivialkart/trivialkart_unreal/README.md | 139 +++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 trivialkart/trivialkart_unreal/README.md diff --git a/trivialkart/trivialkart_unreal/README.md b/trivialkart/trivialkart_unreal/README.md new file mode 100644 index 00000000..67252cc0 --- /dev/null +++ b/trivialkart/trivialkart_unreal/README.md @@ -0,0 +1,139 @@ +# TrivialKart Unreal + +A sample game demonstrating the use of Google Play technologies on Android with **Unreal Engine**. + +This version of TrivialKart demonstrates: + +* **Play Games Services (v2)**: For sign-in, achievements. +* **In-App Purchases (IAP)**. + +--- + +## Pre-requisites + +* **Unreal Engine**: Version 5.4 or higher (Recommended). +* **Android Studio**: Properly configured for the specific version of Unreal Engine being used. +* **Google Play Games Unreal Plugin**: Ensure the official plugin is enabled. + +### Pre-requisites for enabling Google Play features +* Google Play developer account. +* A configured project in the [Google Play Console](https://play.google.com/apps/publish). + +--- + +## Getting started + +1. Clone the repository and navigate to `trivialkart/trivialkart_unreal`. +2. Right-click `TrivialKart.uproject` and select **Generate Visual Studio project files**. +3. Open the `.sln` file in Visual Studio (or the `.uproject` in Unreal Editor). +4. Open the `L_TrivialKart` found in `Content/Maps`. + +By default, Google Play features are simulated or disabled unless the Google Play plugin is active and configured with a valid App ID. + +--- + +## Overview + +In TrivialKart, the player has a vehicle which they can drive by tapping on it. +Driving the car uses gas. When the car runs out of gas, to continue driving, +more must be purchased using in-game currency. If the player runs out of +in-game currency, they may buy more via in-app purchases. +In-game currency is an example of a consumable purchase that may be repeated. + +The game has different cars available for unlock. One car is purchasable using +in-game currency; other cars require unlocking via in-app purchase. +These unlocks are permanent one-time purchases. + +The game features: +* **Consumable Purchases**: Coin packs. + +--- + +## Enabling In-App Purchases + +### 1. Google Play Console Setup +1. Go to the [Google Play Developer Console](https://play.google.com/apps/publish) +and create a new application. +2. Navigate to `Monetise with Play -> Monetisation Setup` +Copy the Base64-encoded public key text in the `Licensing` area. You will need +to use this key when configuring IAP. + +### 2. Project Configuration +1. In Unreal Editor, go to **Project Settings > Platforms > Android**. +2. Under **Google Play Services**: + * Enable **Support Google Play Services**. + * Copy your **License Key** from the Play Console into the **Google Play License Key** field. +3. Under **Advanced APK Packaging**, ensure your **Package Name** matches the Console. + +### Setting up the purchase items in Google Play + +*Note:* you must upload a build to Google Play to be able to create your +in-app purchasing items in the Google Play Developer Console Console. + +1. Return to the Google Play Developer Console. +2. Under `Monetize -> Products -> In-app products`, create the following +in-app products: + | Product ID | Price| + | :---: | :---: | + | five_coins | $0.99 | + | ten_coins | $1.99 | + |twenty_coints | $2.49 | + |fifty_coins | $4.99 | + +4. Publish your build to the testing channel. It may take up to a few hours to +process the build. Running a build before processing complete can result in +errors such as Google Play reporting that "this version of the application is +not enabled for in-app billing". +5. Add tester accounts to your game. This will allow you to test purchases and +subscriptions without being charged. Test accounts also have greatly reduced +subscription periods, allowing for easier testing of subscription features. + +--- + +## Enabling Play Games Services + +### 1. Set Up LogIn Credentioals +1. Go to the [Google Play Developer Console](https://play.google.com/apps/publish) +and create a new application. +2. Navigate to `Grow Users -> Play Games Services -> Setup and Management -> Configurations` +3. Generate a Game server credentials by making a credential of type Web Application. +5. Go to **Google Play Services** in **Unreal Engine** via `Project Settings -> Android -> Google Play Services` +6. Copy your **Crednetials** from the Play Console into the **Google Play Games Oauth Client ID Register for Game Server** field. + + + +### 2. Define Achievements +In the Play Games Services section of your Play Console entry +for your app, access the **Achievements** sections +to add the following achievements: + +**Achievements** +Name: `tk_achievement_drive` +Description: `Drive a while` +Initial State: `Revealed` +Incremental: `Unchecked` +Points: `5` + +Name: `tk_achievement_fuel` +Description: `Empty the fuel tank` +Initial State: `Revealed` +Incremental: `Unchecked` +Points: `5` + +Name: `tk_achievement_login` +Description: `LogIn 5 times` +Initial State: `Revealed` +Incremental: `Checked` +Points: `5` + +--- + +## Support + +If you've found any errors or bugs in this sample game, please +[file an issue](https://github.com/android/games-samples/issues). + +--- + +## Graphical Asset Credits +Assets provided by [Kenney.nl](https://kenney.nl/) under [Creative Commons Zero](https://creativecommons.org/publicdomain/zero/1.0/). From 38f70a15baa2a2c7b8708760f0e7d3fd957e1af4 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Wed, 28 Jan 2026 21:19:47 +0530 Subject: [PATCH 24/27] Console IDs for Achievements and IAP --- trivialkart/trivialkart_unreal/Config/DefaultEngine.ini | 6 ++++++ .../Content/Blueprints/Game/BP_GameInstance.uasset | 4 ++-- .../Content/Blueprints/Player/BP_PlayerState.uasset | 4 ++-- .../Content/Blueprints/Widgets/WBP_Store.uasset | 4 ++-- .../Private/GameInstances/TrivialKartGameInstance.cpp | 2 +- .../Private/Infos/TrivialKartPlayerState.cpp | 2 +- .../Public/Infos/TrivialKartPlayerState.h | 2 +- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index 701a7eca..5528c7d4 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -283,6 +283,9 @@ ManualIPAddress= +PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.PGSLayoutText.Widget",NewName="/Script/TrivialKart_Unreal.PGSLayoutText.PGSText") +PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.StoreWidget.LevelCheckBox",NewName="/Script/TrivialKart_Unreal.StoreWidget.CoinCheckBox") +EnumRedirects=(OldName="/Script/TrivialKart_Unreal.ECoinPurchaseObject",NewName="/Script/TrivialKart_Unreal.EPurchaseObject") ++PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.TrivialKartPlayerState.CoinItemID",NewName="/Script/TrivialKart_Unreal.TrivialKartPlayerState.CoinOfferIDs") ++PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.TrivialKartPlayerState.CoinOfferId",NewName="/Script/TrivialKart_Unreal.TrivialKartPlayerState.CoinOfferIDs") ++PropertyRedirects=(OldName="/Script/TrivialKart_Unreal.TrivialKartPlayerState.CoinOfferID",NewName="/Script/TrivialKart_Unreal.TrivialKartPlayerState.CoinOfferIDs") [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] PackageName=com.gamesamples.trivialkartunreal @@ -362,6 +365,9 @@ RequestCodeForPlayGamesActivities=80002 PlayGamesClientId= bForceRefreshToken=False GamesAppID= ++AchievementMap=(Name="LogIn",AchievementID="tk_achievement_login") ++AchievementMap=(Name="Drive",AchievementID="tk_achievement_drive") ++AchievementMap=(Name="EmptyTank",AchievementID="tk_achievement_fuel") bSupportAdMob=False AdMobAppID= TagForChildDirectedTreatment=TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset index 8e2fd309..994963a2 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:52f7b8893fcfc642e137ea5a8f2ce3e991874491bfd6de83d7397bb58393c17e -size 6008 +oid sha256:f9c66052c45063bf7bfd1b5d4f9b86ec4c81fa6af08304b35409a34a8fad1c7c +size 6298 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset index c49d58a3..6188318e 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9fd6a3a3b8045c41daaff5db4e9f37e22a8dd718da65dec0ef5ba49bcbb30aee -size 20936 +oid sha256:2f80413b1988261fab677bd37c2442aeb4f3c6b3b5023caebf15196475ba9a21 +size 21792 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset index e98c18f5..14b91a45 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Widgets/WBP_Store.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:edbe0628a5007acc628d2dd05b4ca47eb2befc2918bb5f37a83f6f3b928e7d94 -size 257968 +oid sha256:19001b06c0f6cceeb2ca498a5a71355c6f6654934412fd5f599cc11d5d26779c +size 259630 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp index ea72e82d..3413611e 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -186,7 +186,7 @@ void UTrivialKartGameInstance::OnQueryAchievementsCompleted(const FUniqueNetId& UE_LOG(LogTemplateGameInstance, Log, TEXT("Achievements Cached for User: %s has %s"), *UniqueNetId.ToString(), bWasSuccessful ? TEXT("Succeeded") : TEXT("Failed")); if (bWasSuccessful) { - AddAchievementProgress(20, LogInAchievementID, LogInAchievementName); + AddAchievementProgress(20, LogInAchievementName, LogInAchievementID); } } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp index 18dff91d..c168d1f7 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp @@ -161,7 +161,7 @@ void ATrivialKartPlayerState::UpdateCoin() void ATrivialKartPlayerState::OnPurchaseReceived(const FString& PurchaseItemID, int Quantity) { - if (PurchaseItemID == CoinItemID) + if (CoinOfferIDs.Contains(PurchaseItemID)) { CoinCount += Quantity; UpdateCoin(); diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h index b7c8bb15..cbfc0e7e 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h @@ -57,7 +57,7 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState float DistanceAchievementThreshold; UPROPERTY(EditAnywhere) - FString CoinItemID; + TArray CoinOfferIDs; FDelegateHandle CoinPurchaseHandle; From 85fd16fd57cdd202aab8ef919f6817321b3eea6c Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Thu, 29 Jan 2026 12:57:52 +0530 Subject: [PATCH 25/27] Removed Default Touch Interface --- trivialkart/trivialkart_unreal/Config/DefaultInput.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/trivialkart/trivialkart_unreal/Config/DefaultInput.ini b/trivialkart/trivialkart_unreal/Config/DefaultInput.ini index a919105d..bd574f99 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultInput.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultInput.ini @@ -78,7 +78,7 @@ FOVScale=0.011110 DoubleClickTime=0.200000 DefaultPlayerInputClass=/Script/EnhancedInput.EnhancedPlayerInput DefaultInputComponentClass=/Script/EnhancedInput.EnhancedInputComponent -DefaultTouchInterface=/Engine/MobileResources/HUD/DefaultVirtualJoysticks.DefaultVirtualJoysticks +DefaultTouchInterface=None -ConsoleKeys=Tilde +ConsoleKeys=Tilde From 494e41f046c6b417f5334802e3255a303fafa738 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Thu, 29 Jan 2026 15:49:36 +0530 Subject: [PATCH 26/27] Added Default Achievement Name and Function Refactor --- .../trivialkart_unreal/Config/DefaultEngine.ini | 10 +++++----- .../Content/Blueprints/Game/BP_GameInstance.uasset | 4 ++-- .../Content/Blueprints/Player/BP_PlayerState.uasset | 4 ++-- .../Content/Input/Actions/IA_Move.uasset | 4 ++-- .../TrivialKart_Unreal/Private/Actors/KartPawn.cpp | 7 +++---- .../Private/GameInstances/TrivialKartGameInstance.cpp | 9 ++++----- .../Private/Infos/TrivialKartPlayerState.cpp | 4 ++-- .../Source/TrivialKart_Unreal/Public/Actors/KartPawn.h | 2 +- .../Public/GameInstances/TrivialKartGameInstance.h | 5 +---- .../Public/Infos/TrivialKartPlayerState.h | 3 --- .../TrivialKart_Unreal.uproject.DotSettings.user | 3 ++- 11 files changed, 24 insertions(+), 31 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index 5528c7d4..8b51ef3a 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -289,7 +289,7 @@ ManualIPAddress= [/Script/AndroidRuntimeSettings.AndroidRuntimeSettings] PackageName=com.gamesamples.trivialkartunreal -StoreVersion=1 +StoreVersion=3 StoreVersionOffsetArm64=0 StoreVersionOffsetX8664=0 ApplicationDisplayName= @@ -337,7 +337,7 @@ bRecordPermissionAtStartupEnabled=False bEnableMulticastSupport=False bPackageForMetaQuest=False bRemoveOSIG=False -KeyStore= +KeyStore=TrivialKartUnreal.keystore KeyAlias= KeyStorePassword= KeyPassword= @@ -365,9 +365,9 @@ RequestCodeForPlayGamesActivities=80002 PlayGamesClientId= bForceRefreshToken=False GamesAppID= -+AchievementMap=(Name="LogIn",AchievementID="tk_achievement_login") -+AchievementMap=(Name="Drive",AchievementID="tk_achievement_drive") -+AchievementMap=(Name="EmptyTank",AchievementID="tk_achievement_fuel") ++AchievementMap=(Name="tk_achievement_login",AchievementID="CgkInKCivJ8CEAIQAw") ++AchievementMap=(Name="tk_achievement_drive",AchievementID="CgkInKCivJ8CEAIQBA") ++AchievementMap=(Name="tk_achievement_fuel",AchievementID="CgkInKCivJ8CEAIQBQ") bSupportAdMob=False AdMobAppID= TagForChildDirectedTreatment=TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset index 994963a2..01a86015 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Game/BP_GameInstance.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f9c66052c45063bf7bfd1b5d4f9b86ec4c81fa6af08304b35409a34a8fad1c7c -size 6298 +oid sha256:63a8bacb087158afbc4d870be19304fcd71d4a5b7f9a77f5ab0ab5d6fe362098 +size 6311 diff --git a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset index 6188318e..f661082a 100644 --- a/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset +++ b/trivialkart/trivialkart_unreal/Content/Blueprints/Player/BP_PlayerState.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:2f80413b1988261fab677bd37c2442aeb4f3c6b3b5023caebf15196475ba9a21 -size 21792 +oid sha256:153a5aca4be5a547f7564798cec0236c5402203031cc13a25bd43ccf13816684 +size 21806 diff --git a/trivialkart/trivialkart_unreal/Content/Input/Actions/IA_Move.uasset b/trivialkart/trivialkart_unreal/Content/Input/Actions/IA_Move.uasset index 622af973..decb1741 100644 --- a/trivialkart/trivialkart_unreal/Content/Input/Actions/IA_Move.uasset +++ b/trivialkart/trivialkart_unreal/Content/Input/Actions/IA_Move.uasset @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:03f5deba46adeee841a36240209f8702feb6e85313d9b68ec90474a331395271 -size 1346 +oid sha256:78ad6154e4d0c164b63529444cab52dd804143c9508737ed0f83edafda5e7cbf +size 1150 diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp index fde2b759..c52ff7a2 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Actors/KartPawn.cpp @@ -116,7 +116,7 @@ void AKartPawn::SwitchCar(const FString& CarName) } } -void AKartPawn::Move(const FInputActionValue& Value) +void AKartPawn::Move() { if (GetController() != nullptr) { @@ -125,11 +125,10 @@ void AKartPawn::Move(const FInputActionValue& Value) { if (CurrentPlayerState->GetFuel() <= 0.0f) return; - float MoveAxisVector = Value.Get(); - AddActorLocalOffset(FVector(MoveAxisVector * MoveSpeed * GetWorld()->DeltaTimeSeconds, 0.0f, 0.0f)); + AddActorLocalOffset(FVector(MoveSpeed * GetWorld()->DeltaTimeSeconds, 0.0f, 0.0f)); CurrentPlayerState->ConsumeFuel(FuelConsumptionRate); - const float Distance = FMath::Abs(MoveAxisVector * MoveSpeed * GetWorld()->DeltaTimeSeconds)/100; + const float Distance = FMath::Abs(MoveSpeed * GetWorld()->DeltaTimeSeconds)/100; CurrentPlayerState->AddDistance(Distance); } } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp index 3413611e..f22e9def 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/GameInstances/TrivialKartGameInstance.cpp @@ -62,10 +62,9 @@ FString UTrivialKartGameInstance::GetPlayerName() const return FString(); } -void UTrivialKartGameInstance::AddAchievementProgress(const float Progress, const FString& AchievementName, - const FString& AchievementID) +void UTrivialKartGameInstance::AddAchievementProgress(const float Progress, const FString& AchievementName) { - if (AchievementName.IsEmpty() && AchievementID.IsEmpty()) + if (AchievementName.IsEmpty()) return; if (const IOnlineIdentityPtr IdentityInterface = Online::GetIdentityInterface(GetWorld()); IdentityInterface.IsValid()) @@ -74,7 +73,7 @@ void UTrivialKartGameInstance::AddAchievementProgress(const float Progress, cons Online::GetAchievementsInterface(GetWorld()); AchievementsInterface.IsValid()) { FOnlineAchievement CurrentAchievement; - AchievementsInterface->GetCachedAchievement(*IdentityInterface->GetUniquePlayerId(0),AchievementID, CurrentAchievement); + AchievementsInterface->GetCachedAchievement(*IdentityInterface->GetUniquePlayerId(0), AchievementName, CurrentAchievement); if (CurrentAchievement.Progress < 100.0) { const float CurrentProgress = CurrentAchievement.Progress + Progress; @@ -186,7 +185,7 @@ void UTrivialKartGameInstance::OnQueryAchievementsCompleted(const FUniqueNetId& UE_LOG(LogTemplateGameInstance, Log, TEXT("Achievements Cached for User: %s has %s"), *UniqueNetId.ToString(), bWasSuccessful ? TEXT("Succeeded") : TEXT("Failed")); if (bWasSuccessful) { - AddAchievementProgress(20, LogInAchievementName, LogInAchievementID); + AddAchievementProgress(20, LogInAchievementName); } } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp index c168d1f7..b7d791be 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Private/Infos/TrivialKartPlayerState.cpp @@ -60,7 +60,7 @@ void ATrivialKartPlayerState::ConsumeFuel(const float FuelConsumption) if (TWeakObjectPtr Instance = Cast(GetGameInstance()); Instance.IsValid()) { - Instance->AddAchievementProgress(100, FuelAchievementName, FuelAchievementID); + Instance->AddAchievementProgress(100, FuelAchievementName); } } } @@ -74,7 +74,7 @@ void ATrivialKartPlayerState::AddDistance(const float DistanceTravelled) if (TWeakObjectPtr Instance = Cast(GetGameInstance()); Instance.IsValid()) { - Instance->AddAchievementProgress(100, DistanceAchievementName, DistanceAchievementID); + Instance->AddAchievementProgress(100, DistanceAchievementName); } } } diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h index 87af2912..48525fb1 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Actors/KartPawn.h @@ -74,6 +74,6 @@ class TRIVIALKART_UNREAL_API AKartPawn : public APawn void SwitchCar(const FString& CarName); protected: - virtual void Move(const FInputActionValue& Value); + virtual void Move(); }; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h index 82f245b7..36641ab4 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/GameInstances/TrivialKartGameInstance.h @@ -50,7 +50,7 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst UFUNCTION(BlueprintCallable, Category = "GameInstance|Authentication") FString GetPlayerName() const; - void AddAchievementProgress(const float Progress, const FString& AchievementName, const FString& AchievementID); + void AddAchievementProgress(const float Progress, const FString& AchievementName); void StartPurchasing(const FString& OfferID, const int32 Quantity, bool bIsConsumable); UTrivialKartSaveGame* LoadGame(); @@ -65,9 +65,6 @@ class TRIVIALKART_UNREAL_API UTrivialKartGameInstance : public UPlatformGameInst UPROPERTY(EditAnywhere) FString LogInAchievementName; - UPROPERTY(EditAnywhere) - FString LogInAchievementID; - UPROPERTY(EditAnywhere) TSubclassOf SaveGameTemplate; diff --git a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h index cbfc0e7e..b4573c2b 100644 --- a/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h +++ b/trivialkart/trivialkart_unreal/Source/TrivialKart_Unreal/Public/Infos/TrivialKartPlayerState.h @@ -44,9 +44,6 @@ class TRIVIALKART_UNREAL_API ATrivialKartPlayerState : public APlayerState UPROPERTY(EditAnywhere) FString FuelAchievementName; - UPROPERTY(EditAnywhere) - FString FuelAchievementID; - UPROPERTY(EditAnywhere) FString DistanceAchievementName; diff --git a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user index 27de2fe4..2d5c57b5 100644 --- a/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user +++ b/trivialkart/trivialkart_unreal/TrivialKart_Unreal.uproject.DotSettings.user @@ -2,4 +2,5 @@ ForceIncluded ForceIncluded ForceIncluded - ForceIncluded \ No newline at end of file + ForceIncluded + ForceIncluded \ No newline at end of file From bcd664c81cfc5840750b7879c2b40892429c5b60 Mon Sep 17 00:00:00 2001 From: Rahul Kumar Sharma <47045074+RKS13D@users.noreply.github.com> Date: Thu, 29 Jan 2026 15:53:42 +0530 Subject: [PATCH 27/27] SetUp DefaultEngine.ini to default values --- trivialkart/trivialkart_unreal/Config/DefaultEngine.ini | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini index 8b51ef3a..2c953e89 100644 --- a/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini +++ b/trivialkart/trivialkart_unreal/Config/DefaultEngine.ini @@ -337,7 +337,7 @@ bRecordPermissionAtStartupEnabled=False bEnableMulticastSupport=False bPackageForMetaQuest=False bRemoveOSIG=False -KeyStore=TrivialKartUnreal.keystore +KeyStore= KeyAlias= KeyStorePassword= KeyPassword= @@ -365,9 +365,9 @@ RequestCodeForPlayGamesActivities=80002 PlayGamesClientId= bForceRefreshToken=False GamesAppID= -+AchievementMap=(Name="tk_achievement_login",AchievementID="CgkInKCivJ8CEAIQAw") -+AchievementMap=(Name="tk_achievement_drive",AchievementID="CgkInKCivJ8CEAIQBA") -+AchievementMap=(Name="tk_achievement_fuel",AchievementID="CgkInKCivJ8CEAIQBQ") ++AchievementMap=(Name="tk_achievement_login",AchievementID="") ++AchievementMap=(Name="tk_achievement_drive",AchievementID="") ++AchievementMap=(Name="tk_achievement_fuel",AchievementID="") bSupportAdMob=False AdMobAppID= TagForChildDirectedTreatment=TAG_FOR_CHILD_DIRECTED_TREATMENT_UNSPECIFIED