Correction erreur (fstream non-copiable et bug de déplacement ressource)
This commit is contained in:
		
							parent
							
								
									db9f1c1377
								
							
						
					
					
						commit
						15cc531be3
					
				|  | @ -43,14 +43,10 @@ public: | |||
|     sf::Font& getFont(std::string name); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère un lecteur de fichier vers le niveau donné | ||||
|      * Récupère le chemin vers le fichier du niveau portant le | ||||
|      * nom passé en argument | ||||
|      */ | ||||
|     std::ifstream getLevelReader(std::string name); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Récupère un jacob de fichier vers le niveau donné | ||||
|      */ | ||||
|     std::ofstream getLevelWriter(std::string name); | ||||
|     std::string getLevelPath(std::string name); | ||||
| 
 | ||||
|     /**
 | ||||
|      * Démarre la musique de fond donnée | ||||
|  |  | |||
|  | @ -38,7 +38,19 @@ Level::Level(Manager& manager) : State(manager) {} | |||
| Level::~Level() {} | ||||
| 
 | ||||
| void Level::load(std::string filename) { | ||||
|     std::ifstream file = getResourceManager().getLevelReader(filename); | ||||
|     std::ifstream file; | ||||
|     file.open( | ||||
|         getResourceManager().getLevelPath(filename), | ||||
|         std::ios::binary | std::ios::in | ||||
|     ); | ||||
| 
 | ||||
|     // on vérifie que le fichier ait correctement été ouvert en lecture
 | ||||
|     if (file.fail()) { | ||||
|         throw std::runtime_error( | ||||
|             "Impossible de charger le niveau \"" + name + "\" " + | ||||
|             "(" + std::string(strerror(errno)) + ")" | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     // vidage du niveau précédent et positionnement
 | ||||
|     // de la caméra au centre du niveau
 | ||||
|  | @ -119,7 +131,19 @@ void Level::load(std::string filename) { | |||
| } | ||||
| 
 | ||||
| void Level::save(std::string filename) { | ||||
|     std::ofstream file = getResourceManager().getLevelWriter(filename); | ||||
|     std::ofstream file; | ||||
|     file.open( | ||||
|         getResourceManager().getLevelPath(filename), | ||||
|         std::ios::binary | std::ios::out | ||||
|     ); | ||||
| 
 | ||||
|     // on vérifie que le fichier ait correctement été ouvert en lecture
 | ||||
|     if (file.fail()) { | ||||
|         throw std::runtime_error( | ||||
|             "Impossible d'enregistrer le niveau \"" + name + "\" " + | ||||
|             "(" + std::string(strerror(errno)) + ")" | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     // écriture de la signture du fichier ("BAR")
 | ||||
|     char signature[3] = {'B', 'A', 'R'}; | ||||
|  |  | |||
|  | @ -73,40 +73,8 @@ sf::Font& ResourceManager::getFont(std::string name) { | |||
|     return *fonts[name]; | ||||
| } | ||||
| 
 | ||||
| std::ifstream ResourceManager::getLevelReader(std::string name) { | ||||
|     std::ifstream reader; | ||||
|     reader.open( | ||||
|         resources_dir + SEP + "levels" + SEP + name, | ||||
|         std::ios::binary | std::ios::in | ||||
|     ); | ||||
| 
 | ||||
|     // on vérifie que le fichier ait correctement été ouvert en lecture
 | ||||
|     if (reader.fail()) { | ||||
|         throw std::runtime_error( | ||||
|             "Impossible de charger le niveau \"" + name + "\" " + | ||||
|             "(" + std::string(strerror(errno)) + ")" | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     return reader; | ||||
| } | ||||
| 
 | ||||
| std::ofstream ResourceManager::getLevelWriter(std::string name) { | ||||
|     std::ofstream writer; | ||||
|     writer.open( | ||||
|         resources_dir + SEP + "levels" + SEP + name, | ||||
|         std::ios::binary | std::ios::out | ||||
|     ); | ||||
| 
 | ||||
|     // on vérifie que le fichier ait correctement été ouvert en écriture
 | ||||
|     if (writer.fail()) { | ||||
|         throw std::runtime_error( | ||||
|             "Impossible d'écrire le niveau '" + name + "' " + | ||||
|             "(" + std::string(strerror(errno)) + ")" | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     return writer; | ||||
| std::string ResourceManager::getLevelPath(std::string name) { | ||||
|     return resources_dir + SEP + "levels" + SEP + name; | ||||
| } | ||||
| 
 | ||||
| void ResourceManager::playMusic(std::string name) { | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue