Hex Editor - space bar toggles an address as frozen/unfrozen

This commit is contained in:
adelikat 2012-03-09 01:24:46 +00:00
parent f48de28581
commit f0de9366ec
3 changed files with 93 additions and 0 deletions

View File

@ -114,6 +114,17 @@ namespace BizHawk.MultiClient
return false;
}
public void RemoveCheat(MemoryDomain d, int address)
{
for (int x = 0; x < cheatList.Count; x++)
{
if (cheatList[x].address == address && cheatList[x].domain.Name == d.Name)
{
cheatList.Remove(cheatList[x]);
}
}
}
public string GetCheatsPath()
{
string path;

View File

@ -149,6 +149,18 @@ namespace BizHawk.MultiClient
CheatListView.Refresh();
}
public void RemoveCheat(Cheat c)
{
Changes();
Global.CheatList.RemoveCheat(c.domain, c.address);
Global.RenderPanel.AddMessage("Cheat removed.");
if (!this.IsHandleCreated || this.IsDisposed) return;
DisplayCheatsList();
CheatListView.Refresh();
}
public void LoadCheatFromRecent(string file)
{
bool z = true;

View File

@ -552,6 +552,73 @@ namespace BizHawk.MultiClient
return -1; //Negative = no address highlighted
}
private bool IsFrozen(int address)
{
return Global.CheatList.IsActiveCheat(Domain, address);
}
private void ToggleFreeze()
{
int address = GetHighlightedAddress();
if (IsFrozen(address))
{
UnFreezeAddress();
}
else
{
FreezeAddress();
}
}
private void UnFreezeAddress()
{
int address = GetHighlightedAddress();
if (address >= 0)
{
Cheat c = new Cheat();
c.address = address;
c.value = Domain.PeekByte(address);
c.domain = Domain;
Global.MainForm.Cheats1.RemoveCheat(c);
switch (Global.Config.HexEditorDataSize)
{
default:
case 1:
break;
case 2:
Cheat c2 = new Cheat();
c2.address = address + 1;
c2.domain = Domain;
c2.value = Domain.PeekByte(address + 1);
c2.Enable();
Global.MainForm.Cheats1.RemoveCheat(c2);
break;
case 4:
Cheat c42 = new Cheat();
c42.address = address + 1;
c42.domain = Domain;
c42.value = Domain.PeekByte(address + 1);
c42.Enable();
Global.MainForm.Cheats1.RemoveCheat(c42);
Cheat c43 = new Cheat();
c43.address = address + 2;
c43.domain = Domain;
c43.value = Domain.PeekByte(address + 2);
c43.Enable();
Global.MainForm.Cheats1.RemoveCheat(c43);
Cheat c44 = new Cheat();
c44.address = address + 3;
c44.domain = Domain;
c44.value = Domain.PeekByte(address + 3);
c44.Enable();
Global.MainForm.Cheats1.RemoveCheat(c44);
break;
}
}
MemoryViewerBox.Refresh();
}
private void FreezeAddress()
{
int address = GetHighlightedAddress();
@ -885,6 +952,9 @@ namespace BizHawk.MultiClient
DecrementAddress();
UpdateValues();
break;
case Keys.Space:
ToggleFreeze();
break;
}
}