]> git.llucax.com Git - z.facultad/75.07/algowars.git/blob - src/test/Serializacion.pas
Import inicial después del "/var incident". :(
[z.facultad/75.07/algowars.git] / src / test / Serializacion.pas
1 unit Serializacion;\r
2 \r
3 interface\r
4 \r
5 uses\r
6   Espacio,\r
7   Nave,\r
8   NaveEnemiga,\r
9   NavePropia,\r
10   NavesEnemigas,\r
11   Meteorito,\r
12   Armas,\r
13   Vectores,\r
14   Vista,\r
15   Tipos,\r
16   Coordenadas,\r
17   Filtro,\r
18   ObjetoVolador,\r
19 \r
20   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,\r
21   StdCtrls;\r
22 \r
23 type\r
24   TForm1 = class(TForm)\r
25     gbSalida: TGroupBox;\r
26     mmSalida: TMemo;\r
27     Button1: TButton;\r
28     procedure FormCreate(Sender: TObject);\r
29   private\r
30     { Private declarations }\r
31   public\r
32     { Public declarations }\r
33   end;\r
34 \r
35 var\r
36   Form1: TForm1;\r
37 \r
38 implementation\r
39 \r
40 uses\r
41   RegExpr;\r
42 \r
43 {$R *.DFM}\r
44 \r
45 procedure TForm1.FormCreate(Sender: TObject);\r
46 var\r
47   v:  cVector;\r
48   c:  cCoordenadas;\r
49   ov: cObjetoVolador;\r
50   l:  cLaser;\r
51   m:  cMisil;\r
52   md: cMisilDirigido;\r
53   f:  cFiltro;\r
54   n:  cNave;\r
55   ne: cNaveEnemiga;\r
56   np: cNavePesada;\r
57   nl: cNaveLiviana;\r
58   ni: cNaveEspia;\r
59   nr: cNavePropia;\r
60   r:  TRegExpr;\r
61 begin\r
62   r := TRegExpr.create;\r
63   mmSalida.Lines.LoadFromFile( 'serializado.eaw' );\r
64   mmSalida.Lines.Insert( 0, ' -- Cargando Archivo: "serializado.eaw"... --' );\r
65   mmSalida.Lines.Append( ' -- Archivo Cargado. --' );\r
66   mmSalida.Lines.Append( ' -- Deserializando... --' );\r
67   r.Expression := '<vector>\s*(.+)\s*</vector>';\r
68   if r.Exec( mmSalida.Lines.Text ) then\r
69     v  := cVector.crearDeSerializado( r.Match[1] );\r
70   r.Expression := '<coordenadas>\s*(.+)\s*</coordenadas>';\r
71   if r.Exec( mmSalida.Lines.Text ) then\r
72     c  := cCoordenadas.crearDeSerializado( r.Match[1] );\r
73   r.Expression := '<ObjetoVolador>\s*(.+)\s*</ObjetoVolador>';\r
74   if r.Exec( mmSalida.Lines.Text ) then\r
75     ov := cObjetoVolador.crearDeSerializado( r.Match[1] );\r
76   r.Expression := '<laser>\s*(.+)\s*</laser>';\r
77   if r.Exec( mmSalida.Lines.Text ) then\r
78     l  := cLaser.crearDeSerializado( r.Match[1] );\r
79   r.Expression := '<misil>\s*(.+)\s*</misil>';\r
80   if r.Exec( mmSalida.Lines.Text ) then\r
81     m  := cMisil.crearDeSerializado( r.Match[1] );\r
82   r.Expression := '<misildirigido>\s*(.+)\s*</misildirigido>';\r
83   if r.Exec( mmSalida.Lines.Text ) then\r
84     md := cMisilDirigido.crearDeSerializado( r.Match[1] );\r
85   r.Expression := '<filtro>\s*(.+)\s*</filtro>';\r
86   if r.Exec( mmSalida.Lines.Text ) then\r
87     f := cFiltro.crearDeSerializado( r.Match[1] );\r
88   r.Expression := '<nave>\s*(.+)\s*</nave>';\r
89   if r.Exec( mmSalida.Lines.Text ) then\r
90     n := cNave.crearDeSerializado( r.Match[1] );\r
91   r.Expression := '<naveenemiga>\s*(.+)\s*</naveenemiga>';\r
92   if r.Exec( mmSalida.Lines.Text ) then\r
93     ne := cNaveEnemiga.crearDeSerializado( r.Match[1] );\r
94   r.Expression := '<navepesada>\s*(.+)\s*</navepesada>';\r
95   if r.Exec( mmSalida.Lines.Text ) then\r
96     np := cNavePesada.crearDeSerializado( r.Match[1] );\r
97   r.Expression := '<naveliviana>\s*(.+)\s*</naveliviana>';\r
98   if r.Exec( mmSalida.Lines.Text ) then\r
99     nl := cNaveLiviana.crearDeSerializado( r.Match[1] );\r
100   r.Expression := '<naveespia>\s*(.+)\s*</naveespia>';\r
101   if r.Exec( mmSalida.Lines.Text ) then\r
102     ni := cNaveEspia.crearDeSerializado( r.Match[1] );\r
103   r.Expression := '<navepropia>\s*(.+)\s*</navepropia>';\r
104   if r.Exec( mmSalida.Lines.Text ) then\r
105     nr := cNavePropia.crearDeSerializado( r.Match[1] );\r
106   if md.mGetObjetivo <> nil then\r
107     if l.mGetID = md.mGetObjetivo.mGetID then begin\r
108       mmSalida.Lines.Append( 'Objetivo del Misil Dirigido = Laser. Eliminando la copia...' );\r
109       ov.free;\r
110       ov := md.mGetObjetivo;\r
111     end;\r
112   if f.mGetObservador <> nil then\r
113     if m.mGetID = f.mGetObservador.mGetID then begin\r
114       mmSalida.Lines.Append( 'Observador del Filtro = Misil. Eliminando la copia...' );\r
115       m.free;\r
116       m := f.mGetObservador as cMisil;\r
117     end;\r
118 {  mmSalida.Lines.Append( 'Vector: ' + v.mGetDebugInfo( DI_MAXI ) );\r
119   mmSalida.Lines.Append( 'Coordenadas: ' + c.mGetDebugInfo( DI_MAXI ) );\r
120   mmSalida.Lines.Append( 'Objeto Volador: ' + ov.mGetDebugInfo( DI_MAXI ) );\r
121   mmSalida.Lines.Append( 'Laser: ' + l.mGetDebugInfo( DI_MAXI ) );\r
122   mmSalida.Lines.Append( 'Misil: ' + m.mGetDebugInfo( DI_MAXI ) );\r
123   mmSalida.Lines.Append( 'Misil Dirigido: ' + md.mGetDebugInfo( DI_MAXI ) );\r
124 }  mmSalida.Lines.Append( ' -- Terminado. --' );\r
125 {  mmSalida.Lines.Append( ' -- Cambiando Valores. --' );\r
126   v.free;\r
127   c.free;\r
128   ov.free;\r
129   l.free;\r
130   m.free;\r
131   md.free;\r
132   v  := cVector.create( 1, 2, -1 );\r
133   c  := cCoordenadas.create;\r
134   ov := cObjetoVolador.create( v );\r
135   l  := cLaser.create;\r
136   m  := cMisil.create;\r
137   md := cMisilDirigido.create( ov );\r
138   mmSalida.Lines.Append( 'Vector: ' + v.mGetDebugInfo( DI_MAXI ) );\r
139   mmSalida.Lines.Append( 'Coordenadas: ' + c.mGetDebugInfo( DI_MAXI ) );\r
140   mmSalida.Lines.Append( 'Objeto Volador: ' + ov.mGetDebugInfo( DI_MAXI ) );\r
141   mmSalida.Lines.Append( 'Laser: ' + l.mGetDebugInfo( DI_MAXI ) );\r
142   mmSalida.Lines.Append( 'Misil: ' + m.mGetDebugInfo( DI_MAXI ) );\r
143   mmSalida.Lines.Append( 'Misil Dirigido: ' + md.mGetDebugInfo( DI_MAXI ) );\r
144   mmSalida.Lines.Append( ' -- Terminado. --' );\r
145 }  mmSalida.Lines.Append( ' -- Serializando. --' );\r
146   mmSalida.Lines.Append( '<vector>' + v.mSerializar + '</vector>');\r
147   mmSalida.Lines.Append( '<coordenadas>' + c.mSerializar + '</coordenadas>' );\r
148   mmSalida.Lines.Append( '<ObjetoVolador>' + ov.mSerializar + '</ObjetoVolador>');\r
149   mmSalida.Lines.Append( '<laser>' + l.mSerializar + '</laser>');\r
150   mmSalida.Lines.Append( '<misil>' + m.mSerializar + '</misil>' );\r
151   mmSalida.Lines.Append( '<misildirigido>' + md.mSerializar + '</misildirigido>');\r
152   mmSalida.Lines.Append( '<filtro>' + f.mSerializar + '</filtro>');\r
153   mmSalida.Lines.Append( '<nave>' + n.mSerializar + '</nave>');\r
154   mmSalida.Lines.Append( '<naveenemiga>' + ne.mSerializar + '</naveenemiga>');\r
155   mmSalida.Lines.Append( '<navepesada>' + np.mSerializar + '</navepesada>');\r
156   mmSalida.Lines.Append( '<naveliviana>' + nl.mSerializar + '</naveliviana>');\r
157   mmSalida.Lines.Append( '<naveespia>' + ni.mSerializar + '</naveespia>');\r
158   mmSalida.Lines.Append( '<navepropia>' + nr.mSerializar + '</navepropia>');\r
159   mmSalida.Lines.Append( ' -- Terminado. --' );\r
160   v.free;\r
161   c.free;\r
162   ov.free;\r
163   r.free;\r
164 end;\r
165 \r
166 end.\r