riversong code showcase
This commit is contained in:
@@ -0,0 +1,101 @@
|
||||
using System;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Unity.Services.Analytics;
|
||||
using Unity.Services.Core;
|
||||
using UnityEngine;
|
||||
|
||||
namespace DanieleMarotta.RiversongCodeShowcase
|
||||
{
|
||||
public class UnityAnalyticsService : IAnalyticsService
|
||||
{
|
||||
private bool _canRecord;
|
||||
|
||||
public async UniTask InitializeAsync()
|
||||
{
|
||||
if (_canRecord) return;
|
||||
|
||||
try
|
||||
{
|
||||
if (UnityServices.State == ServicesInitializationState.Uninitialized) await UnityServices.InitializeAsync();
|
||||
|
||||
AnalyticsService.Instance.StartDataCollection();
|
||||
|
||||
_canRecord = true;
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
Debug.LogError($"Failed to initialize analytics. Analytics will be disabled.\n{exception}");
|
||||
}
|
||||
}
|
||||
|
||||
public void RecordSessionStarted(string sessionId)
|
||||
{
|
||||
if (!_canRecord) return;
|
||||
|
||||
var analyticsEvent = new SessionStartedAnalyticsEvent { SessionId = sessionId };
|
||||
|
||||
AnalyticsService.Instance.RecordEvent(analyticsEvent);
|
||||
}
|
||||
|
||||
public void RecordBuildingConstructionCompleted(string sessionId, string buildingName)
|
||||
{
|
||||
if (!_canRecord) return;
|
||||
|
||||
var analyticsEvent = new BuildingConstructionCompletedAnalyticsEvent
|
||||
{
|
||||
SessionId = sessionId,
|
||||
BuildingName = buildingName
|
||||
};
|
||||
|
||||
AnalyticsService.Instance.RecordEvent(analyticsEvent);
|
||||
}
|
||||
|
||||
public void RecordHouseUpgraded(string sessionId, string buildingName, int fromTier, int toTier)
|
||||
{
|
||||
if (!_canRecord) return;
|
||||
|
||||
var analyticsEvent = new HouseUpgradedAnalyticsEvent
|
||||
{
|
||||
SessionId = sessionId,
|
||||
BuildingName = buildingName,
|
||||
FromTier = fromTier,
|
||||
ToTier = toTier
|
||||
};
|
||||
|
||||
AnalyticsService.Instance.RecordEvent(analyticsEvent);
|
||||
}
|
||||
|
||||
public void RecordHeartbeat(string sessionId, int heartbeatIndex, float playtimeSeconds, int totalBuildingsPlaced, int population)
|
||||
{
|
||||
if (!_canRecord) return;
|
||||
|
||||
var analyticsEvent = new SessionHeartbeatAnalyticsEvent
|
||||
{
|
||||
SessionId = sessionId,
|
||||
HeartbeatIndex = heartbeatIndex,
|
||||
PlaytimeSeconds = playtimeSeconds,
|
||||
TotalBuildingsPlaced = totalBuildingsPlaced,
|
||||
Population = population
|
||||
};
|
||||
|
||||
AnalyticsService.Instance.RecordEvent(analyticsEvent);
|
||||
}
|
||||
|
||||
public void RecordDemoCompleted(string sessionId, float playtimeSeconds, int totalWeeks, int population, float happiness)
|
||||
{
|
||||
if (!_canRecord) return;
|
||||
|
||||
var analyticsEvent = new DemoCompletedAnalyticsEvent
|
||||
{
|
||||
SessionId = sessionId,
|
||||
PlaytimeSeconds = playtimeSeconds,
|
||||
TotalWeeks = totalWeeks,
|
||||
Population = population,
|
||||
Happiness = Mathf.Clamp01(happiness)
|
||||
};
|
||||
|
||||
AnalyticsService.Instance.RecordEvent(analyticsEvent);
|
||||
AnalyticsService.Instance.Flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user