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