Advertisement
Guest User

Untitled

a guest
Oct 18th, 2017
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.21 KB | None | 0 0
  1. void carica_tessere_da_file()
  2. {
  3.     string zero="0.png";
  4.     string novanta="90.png";
  5.     string centoottanta="180.png";
  6.     string duecentosettanta="270.png";
  7.     vector<string> nome_angolazione;
  8.     nome_angolazione.push_back(zero); //0
  9.     nome_angolazione.push_back(novanta); //1
  10.     nome_angolazione.push_back(centoottanta); //2
  11.     nome_angolazione.push_back(duecentosettanta); //3
  12.  
  13.     boost::filesystem::directory_iterator end;
  14.     boost::filesystem::path percorso_Tessere("Tessere"); //crea indirizzo statico c:\.....Tessere
  15.     boost::filesystem::directory_iterator iteratore_cartelle_Tessere(percorso_Tessere); //crea un iteratore nell'indirizzo dato (c:\...Tessere)
  16.     int contatore_tessere = 0;
  17.     while (iteratore_cartelle_Tessere != end) //continua ad iterare finchè l'iteratore non troverà niente e quindi sarà uguale ad un iteratore vuoto (.size() ==0 si può dire)
  18.     {
  19.         Tessere_editor t;
  20.         MATTEO_BITMAP m_b;
  21.         Parametri_Tessera Tessera_x;
  22.         for (int i = 0; i < 4; i++)
  23.         {
  24.             t.angolatura.push_back(0);
  25.             t.immagini_in_varie_angolature.push_back(m_b);
  26.         }
  27.         boost::filesystem::path percorso_cartella_Tessere = *iteratore_cartelle_Tessere; //crea un nuovo indirizzo che punta all'indirizzo corrente dell'iteratore, e quindi: c:\...Tessere\cartella
  28.         boost::filesystem::directory_iterator file_Tessere(percorso_cartella_Tessere);//crea un nuovo iteratore associato all'indirizzo precedentemente creato
  29.         string nome = percorso_cartella_Tessere.stem().string();
  30.         t.nome = nome;
  31.         while (file_Tessere != end) //continua ad iterare finchè non finisco i file della cartella
  32.         {
  33.             boost::filesystem::path percorso_file_Tessere = *file_Tessere;
  34.  
  35.             if (is_regular_file(percorso_file_Tessere) && percorso_file_Tessere.extension() == ".png") //se ne trova una .png
  36.             {
  37.                 for (size_t i = 0; i < 4; i++)
  38.                 {
  39.                     string nome_1 = nome + " " + nome_angolazione[i];
  40.                     if (nome_1 == percorso_file_Tessere.stem().string() + ".png")
  41.                     {
  42.                         switch (i)
  43.                         {
  44.                         case 0: //0
  45.                             t.angolatura[0] = 0;
  46.                             t.immagini_in_varie_angolature[0].re_inizializza(0, 0, MATTEO_BITMAP::CARICA, percorso_file_Tessere.string().c_str());
  47.                             break;
  48.                         case 1: //90
  49.                             t.angolatura[1] = 90;
  50.                             t.immagini_in_varie_angolature[1].re_inizializza(0, 0, MATTEO_BITMAP::CARICA, percorso_file_Tessere.string().c_str());
  51.                             break;
  52.                         case 2: //180
  53.                             t.angolatura[2] = 180;
  54.                             t.immagini_in_varie_angolature[2].re_inizializza(0, 0, MATTEO_BITMAP::CARICA, percorso_file_Tessere.string().c_str());
  55.                             break;
  56.                         case 3: //270
  57.                             t.angolatura[3] = 270;
  58.                             t.immagini_in_varie_angolature[3].re_inizializza(0, 0, MATTEO_BITMAP::CARICA, percorso_file_Tessere.string().c_str());
  59.                             break;
  60.                         }
  61.                     }
  62.                     nome_1.clear();
  63.                 }
  64.             }
  65.             else if (is_regular_file(percorso_file_Tessere) && percorso_file_Tessere.extension() == ".txt")
  66.             {
  67.                 ifstream leggi = ifstream(percorso_file_Tessere.string());
  68.                 int numero_letto = 0;
  69.                 leggi >> numero_letto;
  70.                 while (numero_letto != -1) //codice di fine lettura zone
  71.                 {
  72.                     Tessera_x.n_zona.push_back(numero_letto);
  73.                     leggi >> numero_letto; Tessera_x.x_zona.push_back(numero_letto);
  74.                     leggi >> numero_letto; Tessera_x.y_zona.push_back(numero_letto);
  75.                     leggi >> numero_letto; Tessera_x.x_dim_zona.push_back(numero_letto);
  76.                     leggi >> numero_letto; Tessera_x.y_dim_zona.push_back(numero_letto);
  77.                     leggi >> numero_letto;
  78.                     if (numero_letto == 0)
  79.                         Tessera_x.cercabile.push_back(false);
  80.                     else
  81.                         Tessera_x.cercabile.push_back(true);
  82.                     vector<bool> fusione;
  83.                     for (int i = 0; i < 4; i++)
  84.                     {
  85.                         leggi >> numero_letto;
  86.                         if (numero_letto == 0) //false
  87.                             fusione.push_back(false);
  88.                         else
  89.                             fusione.push_back(true);
  90.                     }
  91.                     Tessera_x.direzione_fusione.push_back(fusione);
  92.                     leggi >> numero_letto; Tessera_x.fila_della_zona.push_back(numero_letto);
  93.                     fusione.clear(); //lo uso anche per vedere se ci sono mura nelle sue 4 direzioni
  94.                     for (int i = 0; i < 4; i++)
  95.                     {
  96.                         leggi >> numero_letto;
  97.                         if (numero_letto == 0) //false
  98.                             fusione.push_back(false);
  99.                         else
  100.                             fusione.push_back(true);
  101.                     }
  102.                     Tessera_x.direzione_mura.push_back(fusione);
  103.  
  104.                     leggi >> numero_letto;
  105.                 }
  106.                 leggi >> numero_letto;
  107.                 while (numero_letto != -1) //codice di fine lettura porte
  108.                 {
  109.                     Tessera_x.x_porta.push_back(numero_letto);
  110.                     leggi >> numero_letto; Tessera_x.y_porta.push_back(numero_letto);
  111.                     vector<int> zone_porte;
  112.                     leggi >> numero_letto; zone_porte.push_back(numero_letto);
  113.                     leggi >> numero_letto; zone_porte.push_back(numero_letto);
  114.                     Tessera_x.zone_porta.push_back(zone_porte);
  115.                     leggi >> numero_letto;
  116.                 }
  117.                 leggi >> numero_letto;
  118.                 while (numero_letto != -2) //Codice di fine lettura tombini e anche del file
  119.                 {
  120.                     Tessera_x.zone_tombini.push_back(numero_letto);
  121.                     leggi >> numero_letto;
  122.                 }
  123.             }
  124.             file_Tessere++; //incrementa l'iteratore per cercare il prossimo file
  125.         }
  126.         t.parametri_per_angolatura.push_back(Tessera_x); //parametri 0 gradi
  127.                                                          //creo copia di parametri 0, li ruoto di 90 con la funzione e li push back                      
  128.         aggiungi_parametri_ruotati_di_oggetto_tessere_editor
  129.         (t.parametri_per_angolatura[0], Tessera_x, t.immagini_in_varie_angolature[0].height);
  130.         t.parametri_per_angolatura.push_back(Tessera_x);
  131.         //90 gradi a dx l'oggetto già ruotato di 90 --> 180
  132.         aggiungi_parametri_ruotati_di_oggetto_tessere_editor
  133.         (Tessera_x, Tessera_x, t.immagini_in_varie_angolature[0].height);
  134.         t.parametri_per_angolatura.push_back(Tessera_x);
  135.         //90 gradi a dx l'oggetto già ruotato di 180 --> 270
  136.         aggiungi_parametri_ruotati_di_oggetto_tessere_editor
  137.         (Tessera_x, Tessera_x, t.immagini_in_varie_angolature[0].height);
  138.         t.parametri_per_angolatura.push_back(Tessera_x);
  139.  
  140.         stato.Elenco_Tessere.push_back(t);
  141.         iteratore_cartelle_Tessere++; //incrementa l'iteratore per cercare la prossima cartella
  142.         contatore_tessere++;
  143.     }
  144.     Tessere_editor vuota;
  145.     vuota.nome = "VUOTA";
  146.     MATTEO_BITMAP m_b(0, 0, MATTEO_BITMAP::CARICA, "Immagini/segnalini/Tessera_vuota_editor.png");
  147.  
  148.     for (int i = 0; i < 4; i++)
  149.     {
  150.         vuota.immagini_in_varie_angolature.push_back(m_b);
  151.     }
  152.     stato.Elenco_Tessere.push_back(vuota);
  153.  
  154. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement