vegastrike  0.5.1.r1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
savegame.h
Go to the documentation of this file.
1 //#include "cmd/script/mission.h"
2 #ifndef __SAVEGAME_H
3 #define __SAVEGAME_H
4 
5 #include "gfx/vec.h"
6 
7 //WARNING, SAVE FILES ARE LIMITED TO MAXBUFFER SIZE !!! (LOOK IN NETWORKING/CONST.H)
8 
9 #include <string>
10 #include <set>
11 #include <vector>
12 #include "SharedPool.h"
13 
14 struct SavedUnits
15 {
16  StringPool::Reference filename;
17  int type;
18  StringPool::Reference faction;
19  SavedUnits( const char *filen, int typ, const char *fact )
20  {
21  faction = std::string( fact );
22  filename = std::string( filen );
23  type = typ;
24  }
25 };
26 class MissionFloatDat;
27 class MissionStringDat;
28 class SaveGame
29 {
30  SaveGame( const SaveGame& ) {} //not used!
31  std::string savestring;
32  std::string ForceStarSystem;
33  QVector PlayerLocation;
34  std::string last_pickled_data;
35  std::string last_written_pickled_data;
36  std::string outputsavegame;
37  std::string originalsystem;
38  std::string callsign;
39  std::string WriteMissionData();
40  void WriteMissionStringData( std::vector< char > &ret );
41  std::string WriteNewsData();
42  void ReadStardate( char* &buf );
43  void ReadNewsData( char* &buf, bool just_skip = false );
44  void ReadMissionData( char* &buf, bool select_data = false,
45  const std::set< std::string > &select_data_filter = std::set< std::string > () );
46  void ReadMissionStringData( char* &buf, bool select_data = false,
47  const std::set< std::string > &select_data_filter = std::set< std::string > () );
48  MissionStringDat *missionstringdata;
49  MissionFloatDat *missiondata;
50  std::string playerfaction;
51 public: ~SaveGame();
52  void ReloadPickledData();
53  const std::string& GetCallsign() const
54  {
55  return callsign;
56  }
57  void SetCallsign( const std::string &cs )
58  {
59  callsign = cs;
60  }
61 
63  std::vector< float >& getMissionData( const std::string &magic_number );
64 
66  const std::vector< float >& readMissionData( const std::string &magic_number ) const;
67 
69  unsigned int getMissionDataLength( const std::string &magic_number ) const;
70 
72  std::vector< std::string >& getMissionStringData( const std::string &magic_number );
73 
75  const std::vector< std::string >& readMissionStringData( const std::string &magic_number ) const;
76 
78  unsigned int getMissionStringDataLength( const std::string &magic_number ) const;
79 
80 
81  SaveGame( const std::string &pilotname );
82  void PurgeZeroStarships();
83  float GetSavedCredits();
84  void SetSavedCredits( float );
85  void SetPlayerLocation( const QVector &playerloc );
86  QVector GetPlayerLocation();
87  void SetStarSystem( std::string sys );
88  std::string GetStarSystem();
89  std::string GetOldStarSystem();
90  std::string GetPlayerFaction()
91  {
92  return playerfaction;
93  }
94  void SetPlayerFaction( std::string faction )
95  {
96  playerfaction = faction;
97  }
98  std::string WriteSavedUnit( SavedUnits *su );
99  std::string WriteSaveGame( const char *systemname,
100  const class QVector &Pos,
101  float credits,
102  std::vector< std::string >unitname,
103  int player_num,
104  std::string fact = "",
105  bool write = true );
106  std::string WritePlayerData( const QVector &FP,
107  std::vector< std::string >unitname,
108  const char *systemname,
109  float credits,
110  std::string fact = "" );
111  std::string WriteDynamicUniverse();
112  void ReadSavedPackets( char* &buf, bool commitfaction, bool skip_news = false, bool select_data = false,
113  const std::set< std::string > &select_data_filter = std::set< std::string > () );
115  void AddUnitToSave( const char *unitname, int type, const char *faction, long address );
116  void RemoveUnitFromSave( long address ); //cast it to a long
117  void SetOutputFileName( const std::string &filename );
118  void ParseSaveGame( const std::string &filename, std::string &ForceStarSystem, const std::string &originalstarsystem,
119  QVector &pos, bool &shouldupdatedfighter0pos, float &credits, std::vector< std::string > &originalunit,
120  int player_num,
121  const std::string &savestr = std::string(), bool read = true, bool commitFaction = true,
122  bool quick_read = false,
123  bool skip_news = false, bool select_data = false, const std::set< std::string > &select_data_filter =
124  std::set< std::string > () );
125  void LoadSavedMissions();
126 };
127 void WriteSaveGame( class Cockpit*cp, bool auto_save );
128 const std::string& GetCurrentSaveGame();
129 std::string SetCurrentSaveGame( std::string newname );
130 const std::string& GetSaveDir();
131 void CopySavedShips( std::string filename, int player_num, const std::vector< std::string > &starships, bool load );
132 #endif
133