using System;
using System.Collections.Generic;
using UnityEngine;
namespace RemoteTech
{
[KSPAddon(KSPAddon.Startup.EveryScene, false)]
public class RTDebugUnit : MonoBehaviour
{
private RemoteTech.UI.DebugWindow debugWindow = null;
public void Start()
{
#if DEBUG
this.debugWindow = new RemoteTech.UI.DebugWindow();
#endif
}
public void Update()
{
if ((Input.GetKeyDown(KeyCode.F11) || Input.GetKeyDown(KeyCode.F12)) && (HighLogic.LoadedSceneIsFlight || HighLogic.LoadedSceneHasPlanetarium))
{
if (Input.GetKeyDown(KeyCode.F11)){
Dump();
}
else {
if (this.debugWindow != null)
{
this.debugWindow.toggleWindow();
}
}
}
}
public void Dump()
{
var dump = new List();
dump.AddRange(DumpSatellites());
dump.Add(Environment.NewLine);
dump.AddRange(DumpAntennas());
dump.Add(Environment.NewLine);
dump.AddRange(DumpEdges());
dump.Add(Environment.NewLine);
dump.AddRange(DumpConnectionTests());
dump.Add(Environment.NewLine);
System.IO.File.WriteAllText(@"./rt_dump.txt", String.Join(Environment.NewLine, dump.ToArray()));
}
public String[] DumpSatellites()
{
var data = new List();
data.Add("NetworkManager contents: ");
int i = 0;
foreach (var s in RTCore.Instance.Network)
{
data.Add(String.Format(" {0}: {1}", i++, s));
}
return data.ToArray();
}
public String[] DumpAntennas()
{
var data = new List();
data.Add("AntennaManager contents: ");
int i = 0;
foreach (var a in RTCore.Instance.Antennas)
{
data.Add(String.Format(" {0}: {1}", i++, a));
}
return data.ToArray();
}
public String[] DumpEdges()
{
var data = new List();
data.Add("NetworkManager.Graph contents: ");
int i = 0;
foreach (var edge in RTCore.Instance.Network.Graph)
{
data.Add(String.Format(" {0}: {1}", i++, edge.Key));
int j = 0;
foreach (var target in edge.Value)
{
data.Add(String.Format(" {0}: {1}", j++, target));
}
}
return data.ToArray();
}
public String[] DumpConnectionTests()
{
var data = new List();
data.Add("Forced connection checks: ");
int i = 0;
foreach (var sat1 in RTCore.Instance.Network)
{
int j = 0;
foreach (var sat2 in RTCore.Instance.Network)
{
if (sat1 == sat2) continue;
data.Add(String.Format(" {0} -> {1}: {2}", i, j, NetworkManager.GetLink(sat1, sat2)));
j++;
}
i++;
}
return data.ToArray();
}
}
}