1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
|
#include "CModel.h"
#include <QFile> //Pour enregistrer dans une fichier (texte ou binaire)
#include <QDataStream> //Pour enregistrer dans un fichier binaire spécialement
#include <QList>
#include <iostream>
#include "CDataPlanete.h"
using namespace std;
CModel::CModel()
{
indexCourant = -1;
//////////////////Recuperation du fichier:
QFile monFichier(FILENAME);
monFichier.open(QIODevice::ReadOnly);//en binaire par défaut
QDataStream input(&monFichier);
CDataSoleil soleil_tmp;
CDataPlanete planete_tmp;
CDataSatellite vecteurSatellites;
//CDataSatellite satellite_tmp;
input >>soleil_tmp.tailleSoleil
>>soleil_tmp.luminositeSoleil
>>soleil_tmp.textureSoleil
>>soleil_tmp.VitessePlanete;
//>>vitesse;
soleil = soleil_tmp;
while (!input.atEnd())
{
input >>planete_tmp.nomPlanete
>>planete_tmp.taillePlanete
>>planete_tmp.distancePlanete
>>planete_tmp.anneePlanete
>>planete_tmp.rotationPlanete
>>planete_tmp.inclinaisonPlanete
>>planete_tmp.orbitePlanete
>>planete_tmp.texturePlanete //Satellites...
>>planete_tmp.presenceSatellites
>>planete_tmp.nombreSatellites
>>planete_tmp.presenceAnneau
>>planete_tmp.pourcentageMinTailleSatellites
>>planete_tmp.pourcentageMaxTailleSatellites
>>planete_tmp.pourcentageMinDistanceSatellites
>>planete_tmp.pourcentageMaxDistanceSatellites
>>planete_tmp.pourcentageMinAnneeSatellites
>>planete_tmp.pourcentageMaxAnneeSatellites
>>planete_tmp.pourcentageMinOrbiteSatellites
>>planete_tmp.pourcentageMaxOrbiteSatellites
>>planete_tmp.textureSatellites
>>planete_tmp.textureAnneau
>>planete_tmp.pourcentageRayonAnneau
>>planete_tmp.pourcentageLargeurAnneau
>>planete_tmp.vecteurSatellites;
for(int j=0;j<planete_tmp.nombreSatellites;j++)
{
CDataSatellite listSat;
input <<planete_tmp.vecteurSatellites.at(j).tailleSatellite
<<planete_tmp.vecteurSatellites.at(j).distanceSatellite
<<planete_tmp.vecteurSatellites.at(j).anneeSatellite
<<planete_tmp.vecteurSatellites.at(j).rotationSatellite
<<planete_tmp.vecteurSatellites.at(j).inclinaisonSatellite
<<planete_tmp.vecteurSatellites.at(j).orbiteSatellite;
planete_tmp.vecteurSatellites.push_back(listSat);
}
liste_planetes.append(planete_tmp);
}
monFichier.close();
/////////////////////////////////////////////
if (liste_planetes.size() > 0)
indexCourant = 0;
}
CModel::~CModel()
{
//////////////////Sauvegarde du fichier:
QFile monFichier(FILENAME);
monFichier.open(QIODevice::WriteOnly);//en binaire par défaut
QDataStream output(&monFichier);
output <<soleil.tailleSoleil
<<soleil.VitessePlanete
<<soleil.luminositeSoleil
<<soleil.textureSoleil;
for (int i = 0;i < liste_planetes.size(); ++i)
{
output <<liste_planetes.at(i).nomPlanete
<<liste_planetes.at(i).taillePlanete
<<liste_planetes.at(i).distancePlanete
<<liste_planetes.at(i).anneePlanete
<<liste_planetes.at(i).rotationPlanete
<<liste_planetes.at(i).inclinaisonPlanete
<<liste_planetes.at(i).orbitePlanete
<<liste_planetes.at(i).texturePlanete //Satellites...
<<liste_planetes.at(i).presenceSatellites
<<liste_planetes.at(i).nombreSatellites
<<liste_planetes.at(i).presenceAnneau
<<liste_planetes.at(i).pourcentageMinTailleSatellites
<<liste_planetes.at(i).pourcentageMaxTailleSatellites
<<liste_planetes.at(i).pourcentageMinDistanceSatellites
<<liste_planetes.at(i).pourcentageMaxDistanceSatellites
<<liste_planetes.at(i).pourcentageMinAnneeSatellites
<<liste_planetes.at(i).pourcentageMaxAnneeSatellites
<<liste_planetes.at(i).pourcentageMinOrbiteSatellites
<<liste_planetes.at(i).pourcentageMaxOrbiteSatellites
<<liste_planetes.at(i).textureSatellites
<<liste_planetes.at(i).textureAnneau
<<liste_planetes.at(i).pourcentageRayonAnneau
<<liste_planetes.at(i).pourcentageLargeurAnneau;
//<<liste_planetes.at(i).vitesse;
for(int j=0;j<liste_planetes.at(i).nombreSatellites;j++)
{
output <<liste_planetes.at(i).vecteurSatellites[j].tailleSatellite
<<liste_planetes.at(i).vecteurSatellites[j].distanceSatellite
<<liste_planetes.at(i).vecteurSatellites[j].anneeSatellite
<<liste_planetes.at(i).vecteurSatellites[j].rotationSatellite
<<liste_planetes.at(i).vecteurSatellites[j].inclinaisonSatellite
<<liste_planetes.at(i).vecteurSatellites[j].orbiteSatellite;
}
}
monFichier.close(); |
Partager