Ram Search/Watch - context menu will show Unfreeze instead of Freeze if highlighting a frozen address

This commit is contained in:
andres.delikat 2011-08-07 04:19:49 +00:00
parent 6a69022568
commit c8a4a14021
3 changed files with 89 additions and 7 deletions

View File

@ -252,6 +252,18 @@ namespace BizHawk.MultiClient
Global.MainForm.UpdateCheatStatus();
}
public void Remove(MemoryDomain domain, int address)
{
for (int x = 0; x < cheatList.Count; x++)
{
if (cheatList[x].domain == domain && cheatList[x].address == address)
{
MemoryPulse.Remove(domain, address);
cheatList.Remove(cheatList[x]);
}
}
}
public void Add(Cheat c)
{
cheatList.Add(c);

View File

@ -1821,6 +1821,33 @@ namespace BizHawk.MultiClient
FreezeAddress();
}
private void UnfreezeAddress()
{
ListView.SelectedIndexCollection indexes = SearchListView.SelectedIndices;
if (indexes.Count > 0)
{
for (int i = 0; i < indexes.Count; i++)
{
switch (searchList[indexes[i]].type)
{
case atype.BYTE:
Global.CheatList.Remove(Domain, searchList[indexes[i]].address);
break;
case atype.WORD:
Global.CheatList.Remove(Domain, searchList[indexes[i]].address);
Global.CheatList.Remove(Domain, searchList[indexes[i]].address + 1);
break;
case atype.DWORD:
Global.CheatList.Remove(Domain, searchList[indexes[i]].address);
Global.CheatList.Remove(Domain, searchList[indexes[i]].address + 1);
Global.CheatList.Remove(Domain, searchList[indexes[i]].address + 2);
Global.CheatList.Remove(Domain, searchList[indexes[i]].address + 3);
break;
}
}
}
}
private void FreezeAddress()
{
ListView.SelectedIndexCollection indexes = SearchListView.SelectedIndices;
@ -1915,6 +1942,22 @@ namespace BizHawk.MultiClient
{
for (int x = 0; x < contextMenuStrip1.Items.Count; x++)
contextMenuStrip1.Items[x].Visible = true;
if (indexes.Count == 1)
{
if (Global.CheatList.IsActiveCheat(Domain, searchList[indexes[0]].address))
{
contextMenuStrip1.Items[6].Text = "&Unfreeze address";
contextMenuStrip1.Items[6].Image =
BizHawk.MultiClient.Properties.Resources.Unfreeze;
}
else
{
contextMenuStrip1.Items[6].Text = "&Freeze address";
contextMenuStrip1.Items[6].Image =
BizHawk.MultiClient.Properties.Resources.Freeze;
}
}
}
}
@ -1935,7 +1978,10 @@ namespace BizHawk.MultiClient
private void freezeAddressToolStripMenuItem1_Click(object sender, EventArgs e)
{
FreezeAddress();
if (sender.ToString().Contains("Unfreeze"))
UnfreezeAddress();
else
FreezeAddress();
}
private void CheckDomainMenuItems()

View File

@ -1033,10 +1033,9 @@ namespace BizHawk.MultiClient
if (indexes.Count == 1)
{
/*
if (Global.CheatList.IsActiveCheat(Domain, watchList[indexes[0]].address))
{
contextMenuStrip1.Items[4].Text = "Unfreeze address";
contextMenuStrip1.Items[4].Text = "&Unfreeze address";
contextMenuStrip1.Items[4].Image =
BizHawk.MultiClient.Properties.Resources.Unfreeze;
}
@ -1046,7 +1045,6 @@ namespace BizHawk.MultiClient
contextMenuStrip1.Items[4].Image =
BizHawk.MultiClient.Properties.Resources.Freeze;
}
*/ //TODO: When Unfreeze is implemented
}
}
@ -1177,11 +1175,10 @@ namespace BizHawk.MultiClient
private void freezeToolStripMenuItem_Click(object sender, EventArgs e)
{
/*
if (sender.ToString().Contains("Unfreeze"))
UnfreezeAddress();
else
FreezeAddress();
*/
FreezeAddress();
}
private int WORDGetLowerByte(int value)
@ -1269,6 +1266,33 @@ namespace BizHawk.MultiClient
}
}
private void UnfreezeAddress()
{
ListView.SelectedIndexCollection indexes = WatchListView.SelectedIndices;
if (indexes.Count > 0)
{
for (int i = 0; i < indexes.Count; i++)
{
switch (watchList[indexes[i]].type)
{
case atype.BYTE:
Global.CheatList.Remove(Domain, watchList[indexes[i]].address);
break;
case atype.WORD:
Global.CheatList.Remove(Domain, watchList[indexes[i]].address);
Global.CheatList.Remove(Domain, watchList[indexes[i]].address + 1);
break;
case atype.DWORD:
Global.CheatList.Remove(Domain, watchList[indexes[i]].address);
Global.CheatList.Remove(Domain, watchList[indexes[i]].address + 1);
Global.CheatList.Remove(Domain, watchList[indexes[i]].address + 2);
Global.CheatList.Remove(Domain, watchList[indexes[i]].address + 3);
break;
}
}
}
}
private void freezeAddressToolStripMenuItem_Click(object sender, EventArgs e)
{
FreezeAddress();