/[RomCheater]/trunk/RomCheater.RVACalculator/RVACalculatorDockControl.cs
ViewVC logotype

Diff of /trunk/RomCheater.RVACalculator/RVACalculatorDockControl.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 667 by william, Mon Jun 17 03:32:25 2013 UTC revision 668 by william, Mon Jun 17 04:49:09 2013 UTC
# Line 21  using System.Text; Line 21  using System.Text;
21  using System.Windows.Forms;  using System.Windows.Forms;
22  using WeifenLuo.WinFormsUI.Docking;  using WeifenLuo.WinFormsUI.Docking;
23  using RomCheater.Logging;  using RomCheater.Logging;
24    using System.IO;
25    using System.Runtime.Serialization.Formatters.Binary;
26    
27  namespace RomCheater.RVACalculator  namespace RomCheater.RVACalculator
28  {  {
# Line 85  namespace RomCheater.RVACalculator Line 87  namespace RomCheater.RVACalculator
87    
88          private void btnSave_Click(object sender, EventArgs e)          private void btnSave_Click(object sender, EventArgs e)
89          {          {
90                DialogResult result = CheatSaver.ShowDialog();
91                if (result != DialogResult.OK) { return; }
92    
93                
94                ICheatList list = new ICheatList();
95                list.RVA = txtRVA.ToUInt32();
96                List<ICheatEntry> cheats = new List<ICheatEntry>();
97                foreach (ListViewItem li in lstCheats.Items)
98                {
99                    cheats.Add(new ICheatEntry(li.Text, Convert.ToUInt32(li.SubItems[1].Text, 16)));
100                }
101    
102                list.Cheats = cheats;
103    
104                try
105                {
106                    using (FileStream fs = new FileStream(CheatSaver.FileName, FileMode.Create, FileAccess.ReadWrite, FileShare.Read))
107                    {
108                        try
109                        {
110                            BinaryFormatter bin = new BinaryFormatter();
111                            bin.Serialize(fs, list);
112                        }
113                        catch (Exception ex)
114                        {
115                            logger.Error.WriteLine("Failed to save file: {0}", CheatSaver.FileName);
116                            logger.VerboseError.WriteLine(ex.ToString());
117                            MessageBox.Show(string.Format("Failed to save: '{0}'", new FileInfo(CheatSaver.FileName).Name), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
118                        }
119                    }
120                    MessageBox.Show(string.Format("Successfully saved file: '{0}'", new FileInfo(CheatSaver.FileName).Name), "", MessageBoxButtons.OK, MessageBoxIcon.Information);
121                }
122                catch (Exception ex)
123                {
124                    logger.Error.WriteLine("Failed to save file: {0}", CheatSaver.FileName);
125                    logger.VerboseError.WriteLine(ex.ToString());
126                    MessageBox.Show(string.Format("Failed to save: '{0}'", new FileInfo(CheatSaver.FileName).Name), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
127                }
128          }          }
129    
130          private void btnLoad_Click(object sender, EventArgs e)          private void btnLoad_Click(object sender, EventArgs e)
131          {          {
132                DialogResult result = CheatLoader.ShowDialog();
133                if (result != DialogResult.OK) { return; }
134                try
135                {
136                    using (FileStream fs = new FileStream(CheatLoader.FileName, FileMode.Open, FileAccess.Read, FileShare.Read))
137                    {
138                        try
139                        {
140                            BinaryFormatter bin = new BinaryFormatter();
141                            var list = (ICheatList)bin.Deserialize(fs);
142    
143                            txtRVA.Value = list.RVA;
144                            result = MessageBox.Show("Clear existing Cheats?", "", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button3);
145                            if (result == System.Windows.Forms.DialogResult.Cancel)
146                            {
147                                // assume abort of load
148                                logger.Warn.WriteLine("Abored processing of file (by user request): {0}", CheatLoader.FileName);
149                                fs.Close();
150                                return;
151                            }
152                            if (result == DialogResult.Yes)
153                            {
154                                lstCheats.Items.Clear();
155                            }
156                            foreach (var cheat in list.Cheats)
157                            {
158                                ListViewItem li = new ListViewItem(cheat.CheatName);
159                                li.SubItems.Add(new ListViewItem.ListViewSubItem(li, string.Format("0x{0:x8}", cheat.CheatAddress)));
160                                uint physical = cheat.CheatAddress + list.RVA;
161                                li.SubItems.Add(new ListViewItem.ListViewSubItem(li, string.Format("0x{0:x8}", physical)));
162                                lstCheats.Items.Add(li);
163                            }
164                            btnRefresh.PerformClick(); // do any needed refreshing
165                        }
166                        catch (Exception ex)
167                        {
168                            logger.Error.WriteLine("Failed to load file: {0}", CheatLoader.FileName);
169                            logger.VerboseError.WriteLine(ex.ToString());
170                            MessageBox.Show(string.Format("Failed to open: '{0}'", new FileInfo(CheatLoader.FileName).Name), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
171                        }
172                    }
173                    MessageBox.Show(string.Format("Successfully opened file: '{0}'", new FileInfo(CheatLoader.FileName).Name), "", MessageBoxButtons.OK, MessageBoxIcon.Information);
174                }
175                catch (Exception ex)
176                {
177                    logger.Error.WriteLine("Failed to load file: {0}", CheatLoader.FileName);
178                    logger.VerboseError.WriteLine(ex.ToString());
179                    MessageBox.Show(string.Format("Failed to open: '{0}'", new FileInfo(CheatLoader.FileName).Name), "", MessageBoxButtons.OK, MessageBoxIcon.Error);
180                }
181          }          }
182    
183          private void btnRefresh_Click(object sender, EventArgs e)          private void btnRefresh_Click(object sender, EventArgs e)
# Line 118  namespace RomCheater.RVACalculator Line 205  namespace RomCheater.RVACalculator
205              ////txtRVA.ResumeLayout();              ////txtRVA.ResumeLayout();
206          }          }
207    
208            [Serializable]
209            private struct ICheatEntry
210            {
211                public ICheatEntry(string name, uint address)
212                {
213                    CheatName = name;
214                    CheatAddress = address;
215                }
216                public string CheatName;
217                public uint CheatAddress;
218            }
219            [Serializable]
220            private struct ICheatList
221            {
222                public uint RVA;
223                public List<ICheatEntry> Cheats;
224            }
225    
226      }      }
227  }  }

Legend:
Removed from v.667  
changed lines
  Added in v.668

  ViewVC Help
Powered by ViewVC 1.1.22