#if ENABLE_MONO && (DEVELOPMENT_BUILD || UNITY_EDITOR)
using UnityEngine;
using UnityEngine.UI;
namespace SingularityGroup.HotReload {
internal class ConnectionDialog : MonoBehaviour {
[Header("UI controls")]
public Button buttonHide;
[Header("Information")]
public Text textSummary;
public Text textSuggestion;
void Start() {
buttonHide.onClick.AddListener(Hide);
}
public int pendingPatches = 0;
public int patchesApplied = 0;
private void Awake() {
SyncPatchCounts();
}
bool SyncPatchCounts() {
var changed = false;
if (pendingPatches != CodePatcher.I.PendingPatches.Count) {
pendingPatches = CodePatcher.I.PendingPatches.Count;
changed = true;
}
if (patchesApplied != CodePatcher.I.PatchesApplied) {
patchesApplied = CodePatcher.I.PatchesApplied;
changed = true;
}
return changed;
}
/// One of the constants
public void SetSummary(string summary = ConnectionSummary.Connected) {
if (textSummary != null) textSummary.text = summary;
isConnected = summary == ConnectionSummary.Connected;
}
private bool isConnected = false;
// assumes that auto-pair already tried for several seconds
void Update() {
textSuggestion.enabled = isConnected;
if (SyncPatchCounts()) {
textSuggestion.text = $"Patches: {pendingPatches} pending, {patchesApplied} applied";
}
}
/// hide this dialog
void Hide() {
gameObject.SetActive(false); // this should disable the Update loop?
}
}
///
/// The connection between device and Hot Reload can be summarized in a few words.
///
///
/// The summary may be shown for less than a second, as the connection can change without warning.
/// Therefore, we use short and simple messages.
///
internal static class ConnectionSummary {
public const string Cancelled = "Cancelled";
public const string Connecting = "Connecting ...";
public const string Handshaking = "Handshaking ...";
public const string DifferencesFound = "Differences found";
public const string Connected = "Connected!";
// reconnecting can be shown for a long time, so a longer message is okay
public const string TryingToReconnect = "Trying to reconnect ...";
public const string Disconnected = "Disconnected";
}
}
#endif