Vegastrike 0.5.1 rc1  1.0
Original sources for Vegastrike Evolved
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
base_write_python.cpp
Go to the documentation of this file.
1 #include "base.h"
2 #ifdef BASE_MAKER
3 //#ifndef BASE_XML
4 #include <stdio.h>
5 
6 void BaseInterface::Room::Link::EndXML( FILE *fp )
7 {
8  VSFileSystem::vs_fprintf( fp, "room, '%s', %g, %g, %g, %g, '%s'", index.c_str(), x, y, wid, hei, text.c_str() );
9 }
10 
11 void BaseInterface::Room::Goto::EndXML( FILE *fp )
12 {
13  VSFileSystem::vs_fprintf( fp, "Base.Link (" );
14  Link::EndXML( fp );
15  VSFileSystem::vs_fprintf( fp, ", %d)\n", Goto::index );
16 }
17 
18 void BaseInterface::Room::Python::EndXML( FILE *fp )
19 {
20  VSFileSystem::vs_fprintf( fp, "Base.Python (" );
21  Link::EndXML( fp );
22  VSFileSystem::vs_fprintf( fp, ", '%s')\n", file.c_str() );
23 }
24 
25 void BaseInterface::Room::Talk::EndXML( FILE *fp )
26 {
27  char randstr[100];
28  sprintf( randstr, "NEW_SCRIPT_%d.py", (int) ( rand() ) );
29  VSFileSystem::vs_fprintf( fp, "Base.Python (" );
30  Link::EndXML( fp );
31  VSFileSystem::vs_fprintf( fp, ", '%s')\n", randstr );
32  FILE *py = VSFileSystem::vs_open( randstr, "wt" );
33  VSFileSystem::vs_fprintf( py, "import Base\nimport VS\nimport random\n\nrandnum=random.randrange(0,%d)\n", say.size() );
34  for (int i = 0; i < say.size(); i++) {
35  VSFileSystem::vs_fprintf( fp, "if (randnum==%d):\n", i );
36  for (int j = 0; j < say[i].size(); j++)
37  if (say[i][j] == '\n') {
38  say[i][j] = '\\';
39  static const char *ins = "n";
40  say[i].insert( j, ins );
41  }
42  VSFileSystem::vs_fprintf( fp, " Base.Message ('%s')\n", say[i].c_str() );
43  if ( !( soundfiles[i].empty() ) )
44  VSFileSystem::vs_fprintf( fp, " VS.playSound ('%s', (0,0,0), (0,0,0))\n", soundfiles[i].c_str() );
45  }
46  //obolete... creates a file that uses the Python function instead.
47 }
48 
49 void BaseInterface::Room::Launch::EndXML( FILE *fp )
50 {
51  VSFileSystem::vs_fprintf( fp, "Base.Launch (" );
52  Link::EndXML( fp );
53  VSFileSystem::vs_fprintf( fp, ")\n" );
54 }
55 void BaseInterface::Room::Eject::EndXML( FILE *fp )
56 {
57  VSFileSystem::vs_fprintf( fp, "Base.Eject (" );
58  Link::EndXML( fp );
59  VSFileSystem::vs_fprintf( fp, ")\n" );
60 }
61 
62 void BaseInterface::Room::Comp::EndXML( FILE *fp )
63 {
64  VSFileSystem::vs_fprintf( fp, "Base.Comp (" );
65  Link::EndXML( fp );
66  VSFileSystem::Write( ", '", 3, 1, fp );
67  for (int i = 0; i < modes.size(); i++) {
68  char *mode = NULL;
69  switch (modes[i])
70  {
72  mode = "Cargo";
73  break;
75  mode = "Upgrade";
76  break;
78  mode = "ShipDealer";
79  break;
81  mode = "Missions";
82  break;
83  case BaseComputer::NEWS:
84  mode = "News";
85  break;
86  case BaseComputer::INFO:
87  mode = "Info";
88  break;
89  }
90  if (mode)
91  VSFileSystem::vs_fprintf( fp, "%s ", mode );
92  if ( (i+1) == ( modes.size() ) )
93  VSFileSystem::vs_fprintf( fp, "'" );
94  }
95  VSFileSystem::vs_fprintf( fp, ")\n" );
96 }
97 
98 void BaseInterface::Room::BaseObj::EndXML( FILE *fp )
99 {
100 //Do nothing
101 }
102 
103 void BaseInterface::Room::BaseShip::EndXML( FILE *fp )
104 {
105  VSFileSystem::vs_fprintf( fp, "Base.Ship (room, '%s', (%lg,%lg,%lg), (%g, %g, %g), (%g, %g, %g))\n", index.c_str(),
106  mat.p.i, mat.p.j, mat.p.k,
107  mat.getR().i, mat.getR().j, mat.getR().k,
108  mat.getQ().i, mat.getQ().j, mat.getQ().k );
109 }
110 
111 void BaseInterface::Room::BaseVSSprite::EndXML( FILE *fp )
112 {
113  float x, y;
114  spr.GetPosition( x, y );
115  VSFileSystem::vs_fprintf( fp, "Base.Texture (room, '%s', '%s', %g, %g)\n", index.c_str(), texfile.c_str(), x, y );
116 }
117 
118 void BaseInterface::Room::EndXML( FILE *fp )
119 {
120  int i;
121  i = VSFileSystem::vs_fprintf( fp, "room = Base.Room ('%s')\n", deftext.c_str() );
122  for (i = 0; i < links.size(); i++)
123  if (links[i])
124  links[i]->EndXML( fp );
125  for (i = 0; i < objs.size(); i++)
126  if (objs[i])
127  objs[i]->EndXML( fp );
128  VSFileSystem::vs_fprintf( fp, "\n" );
129  fflush( fp );
130 }
131 
132 void BaseInterface::EndXML( FILE *fp )
133 {
134  VSFileSystem::vs_fprintf( fp, "import Base\n\n" );
135  for (int i = 0; i < rooms.size(); i++)
136  rooms[i]->EndXML( fp );
137 }
138 
139 //#endif
140 #endif
141