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);
|
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);
|
std::string getLevelPath(std::string name);
|
||||||
|
|
||||||
/**
|
|
||||||
* Récupère un jacob de fichier vers le niveau donné
|
|
||||||
*/
|
|
||||||
std::ofstream getLevelWriter(std::string name);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Démarre la musique de fond donnée
|
* Démarre la musique de fond donnée
|
||||||
|
|
|
@ -38,7 +38,19 @@ Level::Level(Manager& manager) : State(manager) {}
|
||||||
Level::~Level() {}
|
Level::~Level() {}
|
||||||
|
|
||||||
void Level::load(std::string filename) {
|
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
|
// vidage du niveau précédent et positionnement
|
||||||
// de la caméra au centre du niveau
|
// de la caméra au centre du niveau
|
||||||
|
@ -119,7 +131,19 @@ void Level::load(std::string filename) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Level::save(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")
|
// écriture de la signture du fichier ("BAR")
|
||||||
char signature[3] = {'B', 'A', 'R'};
|
char signature[3] = {'B', 'A', 'R'};
|
||||||
|
|
|
@ -73,40 +73,8 @@ sf::Font& ResourceManager::getFont(std::string name) {
|
||||||
return *fonts[name];
|
return *fonts[name];
|
||||||
}
|
}
|
||||||
|
|
||||||
std::ifstream ResourceManager::getLevelReader(std::string name) {
|
std::string ResourceManager::getLevelPath(std::string name) {
|
||||||
std::ifstream reader;
|
return resources_dir + SEP + "levels" + SEP + name;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceManager::playMusic(std::string name) {
|
void ResourceManager::playMusic(std::string name) {
|
||||||
|
|
Loading…
Reference in New Issue