Fixes? and side channels.

This commit is contained in:
2022-05-17 19:09:50 +07:00
parent b5aff44f79
commit e976a3fbff
18 changed files with 454 additions and 90 deletions

View File

@ -1,19 +1,29 @@
using System.IO;
using System;
using Unity.MLAgents.SideChannels;
using UnityEngine;
public class Logger
namespace Statistics
{
private const string Directory = "/Logs/";
private const string BaseName = "Log#";
public static void SaveLog<T>(T objToSerialize)
public class LoggerSideChannel : SideChannel
{
var dir = Application.persistentDataPath + Directory;
if (!System.IO.Directory.Exists(dir))
System.IO.Directory.CreateDirectory(dir);
public LoggerSideChannel()
{
ChannelId = new Guid("621f0a70-4f87-11ea-a6bf-784f4387d1f7");
}
var logName = BaseName + (System.IO.Directory.GetFiles(dir).Length + 1).ToString();
var json = JsonUtility.ToJson(objToSerialize);
File.WriteAllText(dir + logName, json);
public void SendLog(Log log)
{
using (var logOut = new OutgoingMessage())
{
logOut.WriteString(JsonUtility.ToJson(log));
QueueMessageToSend(logOut);
}
}
protected override void OnMessageReceived(IncomingMessage msg)
{
var receivedString = msg.ReadString();
Debug.Log("From Python : " + receivedString);
}
}
}

View File

@ -1,6 +1,8 @@
using UnityEngine;
using System;
using Statistics;
using UnityEngine;
internal class Log
public class Log
{
public int damageTakenByDefs = 0;
public int damageTakenByAtc = 0;
@ -13,7 +15,8 @@ internal class Log
public class StatisticManager : MonoBehaviour
{
private Log log = new Log();
private Log _log = new Log();
private LoggerSideChannel _myLoggerSideChannel;
private void Awake()
{
foreach (var npc in GameObject.FindObjectsOfType<NPC>())
@ -21,31 +24,32 @@ public class StatisticManager : MonoBehaviour
GlobalEventManager.OnCaptureFlag += RegisterWin;
GlobalEventManager.OnTimeLeft += RegisterTimeOut;
GameManager.OnResetScene += SendMessage;
}
private void RegisterDamage(int damage, Team team)
{
if (team == Team.Attackers)
log.damageTakenByAtc += damage;
_log.damageTakenByAtc += damage;
else
log.damageTakenByDefs += damage;
_log.damageTakenByDefs += damage;
}
private void RegisterWin(Team team)
{
if (team == Team.Attackers)
log.AtcWin += 1;
_log.AtcWin += 1;
else
log.DefWin += 1;
_log.DefWin += 1;
}
private void RegisterTimeOut()
{
log.TimeOuts += 1;
_log.TimeOuts += 1;
}
private void OnApplicationQuit()
private void SendMessage()
{
Logger.SaveLog<Log>(log);
_myLoggerSideChannel.SendLog(_log);
}
}