DirectOuput Framework R2
DirectOutput framework R2 for virtual pinball cabinets
Go to:
Overview 
 All Classes Namespaces Files Functions Variables Enumerations Enumerator Properties Events Macros Pages
Table.cs
Go to the documentation of this file.
1 using System;
2 using System.IO;
3 using System.Text;
4 using System.Xml.Serialization;
5 using DirectOutput.FX;
6 
7 using DirectOutput.General.BitmapHandling;
8 
9 
13 namespace DirectOutput.Table
14 {
15 
19  public class Table
20  {
21  #region Properties
22 
23 
24 
25 
26  public TableElementList TableElements { get; set; }
27 
34  [XmlIgnoreAttribute]
35  public Pinball Pinball { get; private set; }
36 
37 
38  private FastImageList _Bitmaps=new FastImageList();
39 
46  [XmlIgnoreAttribute]
47  public FastImageList Bitmaps
48  {
49  get { return _Bitmaps; }
50  private set { _Bitmaps = value; }
51  }
52 
53 
54  #region TableName
55  private string _TableName;
60  public string TableName
61  {
62  get { return _TableName; }
63  set
64  {
65  if (_TableName != value)
66  {
67  _TableName = value;
68  if (TableNameChanged != null)
69  {
70  TableNameChanged(this, new EventArgs());
71  }
72  }
73  }
74  }
78  public event EventHandler<EventArgs> TableNameChanged;
79  #endregion
80 
81  #region RomName
82  private string _RomName;
87  [XmlIgnoreAttribute]
88  public string RomName
89  {
90  get { return _RomName; }
91  set
92  {
93  if (_RomName != value)
94  {
95  _RomName = value;
96  if (RomNameChanged != null)
97  {
98  RomNameChanged(this, new EventArgs());
99  }
100  }
101  }
102  }
106  public event EventHandler<EventArgs> RomNameChanged;
107  #endregion
108 
115  [XmlIgnoreAttribute]
116  public string TableFilename { get; set; }
117 
124  [XmlIgnoreAttribute]
125  public string TableConfigurationFilename { get; set; }
126 
127 
128  private bool _AddLedControlConfig=false;
129 
136  public bool AddLedControlConfig
137  {
138  get { return _AddLedControlConfig; }
139  set { _AddLedControlConfig = value; }
140  }
141 
142 
143  private TableConfigSourceEnum _ConfigurationSource=TableConfigSourceEnum.Unknown;
144 
151  [XmlIgnoreAttribute]
152  public TableConfigSourceEnum ConfigurationSource
153  {
154  get { return _ConfigurationSource; }
155  set { _ConfigurationSource = value; }
156  }
157 
158 
159 
160 
161  private EffectList _Effects;
165  public EffectList Effects
166  {
167  get { return _Effects; }
168  set { _Effects = value; }
169  }
170 
171  private AssignedEffectList _AssignedStaticEffects;
179  public AssignedEffectList AssignedStaticEffects
180  {
181  get
182  {
183  return _AssignedStaticEffects;
184  }
185  set
186  {
187  _AssignedStaticEffects = value;
188  }
189  }
190 
191  #endregion
192 
193 
194 
195 
196  public void UpdateTableElement(TableElementData Data)
197  {
198  TableElements.UpdateState(Data.TableElementType, Data.Number, Data.Value);
199  }
200 
201 
205  public void TriggerStaticEffects()
206  {
207  AssignedStaticEffects.Trigger(new TableElementData(TableElementTypeEnum.Unknown,0,1));
208  }
209 
214  public void Init(Pinball Pinball)
215  {
216  this.Pinball = Pinball;
217  Effects.Init(this);
218 
219  TableElements.InitAssignedEffects(this);
220  AssignedStaticEffects.Init(this);
221  }
222 
226  public void Finish()
227  {
228  AssignedStaticEffects.Finish();
229  TableElements.FinishAssignedEffects();
230  Effects.Finish();
231  Pinball = null;
232  }
233 
234 
235  #region Serialization
236 
241  public string GetConfigXml()
242  {
243  string Xml = "";
244  using (MemoryStream ms = new MemoryStream())
245  {
246  new XmlSerializer(typeof(Table)).Serialize(ms, this);
247  ms.Position = 0;
248 
249  using (StreamReader sr = new StreamReader(ms, Encoding.Default))
250  {
251  Xml = sr.ReadToEnd();
252 
253  }
254 
255  }
256  return Xml;
257  }
258 
259 
264  public void SaveConfigXmlFile(string FileName)
265  {
266  GetConfigXml().WriteToFile(FileName);
267  }
268 
269 
275  public static Table GetTableFromConfigXmlFile(string FileName)
276  {
277  string Xml;
278 
279  try
280  {
281  Xml = General.FileReader.ReadFileToString(FileName);
282 
283 
284 
285  }
286  catch (Exception E)
287  {
288  Log.Exception("Could not read Table Config file {0}".Build(FileName), E);
289  throw new Exception("Could not read Table Config file {0}".Build(FileName), E);
290  }
291  return GetTableFromConfigXml(Xml);
292  }
293 
299  public static Table GetTableFromConfigXmlFile(FileInfo TableConfigFile)
300  {
301  return GetTableFromConfigXmlFile(TableConfigFile.FullName);
302  }
303 
309  public static Table GetTableFromConfigXml(string ConfigXml)
310  {
311 
312  try
313  {
314  byte[] xmlBytes = Encoding.Default.GetBytes(ConfigXml);
315  using (MemoryStream ms = new MemoryStream(xmlBytes))
316  {
317  Table T = (Table)new XmlSerializer(typeof(Table)).Deserialize(ms);
318  T.ConfigurationSource = TableConfigSourceEnum.TableConfigurationFile;
319  return T;
320  }
321  }
322  catch (Exception E)
323  {
324 
325  Exception Ex= new Exception("Could not deserialize Table config from XML Data",E);
326  Ex.Data.Add("XMLData", ConfigXml);
327  Log.Exception(Ex);
328  throw Ex;
329  }
330  }
331  #endregion
332 
333 
334 
338  public Table()
339  {
340  Effects = new FX.EffectList();
341  TableElements = new TableElementList();
342  AssignedStaticEffects = new AssignedEffectList();
343  }
344 
345 
346 
347  }
348 }