private void GUIUpdateTimer_Tick(object sender, EventArgs e)
{
if (Enabled != FormEnabled)
{
Enabled = FormEnabled;
if (FormEnabled)
{
Activate();
}
}
NTRConnection.SendHeartbeatPacket();
int LocalReadMax = (int)NTRConnection.ProgressReadMax, LocalRead = (int)NTRConnection.ProgressRead, LocalScanMax = (int)NTRConnection.ProgressScanMax, LocalScan = (int)NTRConnection.ProgressScan;
if (LocalReadMax > 0 && LocalRead >= 0 && LocalReadMax >= LocalRead)
{
ProgressBarMemoryRead.Maximum = LocalReadMax;
ProgressBarMemoryRead.Value = LocalRead;
}
else
{
ProgressBarMemoryRead.Maximum = ProgressBarMemoryRead.Value = 0;
}
if (LocalScanMax > 0 && LocalScan >= 0 && LocalScanMax >= LocalScan)
{
ProgressBarMemoryScan.Maximum = LocalScanMax;
ProgressBarMemoryScan.Value = LocalScan;
}
else
{
ProgressBarMemoryScan.Maximum = ProgressBarMemoryScan.Value = 0;
}
if (NTRConnection.IsProcessListUpdated)
{
NTRConnection.IsProcessListUpdated = false;
string CurrentProcess = Processes.SelectedValue == null ? null : Processes.SelectedValue.ToString();
Processes.Items.Clear();
Processes.Items.AddRange(NTRConnection.Processes.ToArray());
if (CurrentProcess != null && Processes.Items.Contains(CurrentProcess))
{
Processes.SelectedValue = CurrentProcess;
Processes.SelectedIndex = Processes.Items.IndexOf(CurrentProcess);
}
else if (!Processes.Items[0].ToString().Contains(','))
{
Processes.SelectedIndex = 0;
}
SetConnectedControls(true);
ControlEnabledButtonConnectDisconnect = true;
NTRConnection.SetCurrentOperationText = "";
}
if (NTRConnection.IsMemoryListUpdated)
{
NTRConnection.IsMemoryListUpdated = false;
string CurrentRange = MemoryRange.SelectedValue == null ? "All" : MemoryRange.SelectedValue.ToString();
MemoryRange.Items.Clear();
MemoryRange.Items.Add("All");
foreach (uint Start in NTRConnection.AddressSpaces.Keys)
{
MemoryRange.Items.Add(Utilities.GetStringFromByteArray(BitConverter.GetBytes(Start).Reverse().ToArray()) + "|" + Utilities.GetStringFromByteArray(BitConverter.GetBytes(NTRConnection.AddressSpaces[Start]).Reverse().ToArray()));
}
MemoryRange.Items.Add("Custom");
if (CurrentRange != null && MemoryRange.Items.Contains(CurrentRange))
{
MemoryRange.SelectedValue = CurrentRange;
MemoryRange.SelectedIndex = MemoryRange.Items.IndexOf(CurrentRange);
}
SetProcessSelectedControls(true);
SetConnectedControls(true);
NTRConnection.SetCurrentOperationText = "";
}
if (LastSearchCriteria != null && LastSearchCriteria.SearchValue != null)
{
LabelLastSearch.Text = "Last Search\n" + LastSearchCriteria.AddressesFound.Count + " results found for " + GetDisplayForByteArray(LastSearchCriteria.SearchValue);
if (SearchComplete)
{
ControlEnabledSearchButton = true;
if (LastSearchCriteria.AddressesFound.Count < Config.MaxValuesToDisplay)
{
ResultsGrid.Rows.Clear();
foreach (uint Address in LastSearchCriteria.AddressesFound.Keys)
{
int Row = ResultsGrid.Rows.Add();
ResultsGrid[0, Row].Value = Utilities.GetStringFromByteArray(BitConverter.GetBytes(Address).Reverse().ToArray());
ResultsGrid[1, Row].Value = GetDisplayForByteArray(LastSearchCriteria.AddressesFound[Address]);
}
}
NTRConnection.SetCurrentOperationText = "";
ComboDataType_SelectedValueChanged(null, null);
SearchComplete = false;
}
}
if (SetConnectText != null)
{
ButtonConnectDisconnect.Text = SetConnectText;
SetConnectText = null;
}
LabelCurrentOperation.Text = NTRConnection.SetCurrentOperationText;
LabelButtonState.Text = NTRConnection.SetCurrentOperationText2;
UpdateLockedControls();
if (NTRConnection.IsConnected)
{
if (LockValuesStopwatch.ElapsedMilliseconds > Config.LockValuesDelay)
{
for (int i = 0; i < ValuesGrid.Rows.Count; ++i)
{
if (ValuesGrid[0, i].Value is string)
{
if (GateSharkCodes.ContainsKey(i))
{
GateSharkCodes[i].Execute();
}
else
{
SetMemory(i);
}
}
}
LockValuesStopwatch.Restart();
}
}
if (ThreadEventDispatcher.FoundPointerAddress != null)
{
ValuesGrid[1, PointerSearchRow].Value = ThreadEventDispatcher.FoundPointerAddress;
ThreadEventDispatcher.FoundPointerAddress = null;
}
if (ThreadEventDispatcher.RefreshValueReturn.Count > 0)
{
MemoryDispatch MemoryDispatch;
while (ThreadEventDispatcher.RefreshValueReturn.TryDequeue(out MemoryDispatch))
{
ValuesGrid[1, MemoryDispatch.Row].ToolTipText = MemoryDispatch.ResolvedAddress;
ValuesGrid[2, MemoryDispatch.Row].Value = GetDisplayForByteArray(MemoryDispatch.Value, MemoryDispatch.Type);
}
}
if (ThreadEventDispatcher.ImportedCode != null)
{
int RowIndex = ValuesGrid.Rows.Add();
ValuesGrid[0, RowIndex].Value = null;
ValuesGrid[3, RowIndex].Value = "Raw";
ValuesGrid[1, RowIndex].Value = "GateShark";
ValuesGrid[2, RowIndex].Value = ThreadEventDispatcher.ImportedCode.ToString();
GateSharkCodes.Add(RowIndex, ThreadEventDispatcher.ImportedCode);
ThreadEventDispatcher.ImportedCode = null;
}
}