/* * Engine Alpha ist eine anfängerorientierte 2D-Gaming Engine. * * Copyright (c) 2011 - 2014 Michael Andonie and contributors. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package ea.compat; import ea.NoExternalUse; import ea.internal.util.Logger; import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; /** * Der Compat-Dateimanager implementiert die alten Methoden zum Laden von Dateien, um den * Dateimanager übersichtlicher zu halten - gleichzeitig aber alte Dateien weiterhin korrekt zu * laden zu können. * * @author Niklas Keller, Michael Andonie */ @NoExternalUse public class CompatDateiManager { /** * Liest eine <code>.eaa</code>-String-Array-Datei ein. * * @param pfad * Der Dateipfad, der sowohl das Verzeichnis wie auch den Dateinamen angibt. * <p/> * Dieser sollte mit <code>.eaa</code> enden. Wenn nicht, wird dies automatisch angehängt. * * @return Array, das eingelesen wurde oder <code>null</code>, wenn ein Fehler aufgetreten ist. */ @NoExternalUse public static String[] stringArrayEinlesen (String pfad) { BufferedReader reader = null; String[] ret; try { // init String line; reader = new BufferedReader(new FileReader(pfad)); line = reader.readLine(); // check type info if (line.compareTo("typ:String") != 0) { Logger.error("Die geladene .eaa-Datei beschreibt kein String-Array oder ist beschädigt!"); reader.close(); return null; } // parse array length line = reader.readLine(); int length = Integer.valueOf(line.split(":")[1]); // parse file data ret = new String[length]; for (int i = 0; i < length; i++) { line = reader.readLine(); String[] split = line.split(":", 2); String erg; switch (split[1]) { case "%%": erg = null; break; case "~~": erg = ""; break; default: erg = split[1]; break; } ret[i] = erg; } return ret; } catch (IOException e) { Logger.error("Fehler beim Lesen der Datei. Existiert die Datei mit diesem Namen wirklich?\n" + pfad); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } /** * Liest eine <code>.eaa</code>-int-Array-Datei ein. * * @param pfad * Der Dateipfad, der sowohl das Verzeichnis wie auch den Dateinamen angibt. * <p/> * Dieser sollte mit <code>.eaa</code> enden. Wenn nicht, wird dies automatisch angehängt. * * @return Array, das eingelesen wurde oder <code>null</code>, wenn ein Fehler aufgetreten ist. */ @NoExternalUse public static int[] integerArrayEinlesen (String pfad) { BufferedReader reader = null; int[] ret; try { // init String line; reader = new BufferedReader(new FileReader(pfad)); line = reader.readLine(); // check type info if (line.compareTo("typ:Integer") != 0) { Logger.error("Die geladene .eaa-Datei beschreibt kein int-Array oder ist beschädigt!"); return null; } // parse array length line = reader.readLine(); int length = Integer.valueOf(line.split(":")[1]); // parse file data ret = new int[length]; for (int i = 0; i < length; i++) { line = reader.readLine(); ret[i] = Integer.valueOf(line.split(":")[1]); } return ret; } catch (IOException e) { Logger.error("Fehler beim Lesen der Datei. Existiert die Datei mit diesem Namen wirklich?\n" + pfad); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } } return null; } }