/** * Copyright (C) 2002-2012 The FreeCol Team * * This file is part of FreeCol. * * FreeCol 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 2 of the License, or * (at your option) any later version. * * FreeCol 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 FreeCol. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.freecol.common.io; import java.io.File; import java.io.IOException; import net.sf.freecol.FreeCol; import net.sf.freecol.common.resources.ResourceMapping; /** * A Total Conversion (TC). */ public class FreeColTcFile extends FreeColModFile { public static final String DIRECTORY = "rules"; /** * Opens the given file for reading. * * @param file The file to load. * @throws IOException if thrown while opening the file. */ public FreeColTcFile(final File file) throws IOException { super(file); } /** * Opens the file with the given name for reading. * * @param id The id of the TC to load. * @throws IOException if thrown while opening the file. */ public FreeColTcFile(final String id) throws IOException { super(new File(getRulesDirectory(), id)); } /** * {@inheritDoc} */ @Override public ResourceMapping getResourceMapping() { ResourceMapping result; try { if (getParent() != null) { final FreeColTcFile parentTcData = new FreeColTcFile(getParent()); result = parentTcData.getResourceMapping(); } else { result = new ResourceMapping(); } result.addAll(super.getResourceMapping()); } catch (IOException e) { throw new RuntimeException(e); } return result; } /** * File endings that are supported for this type of data file. * @return An array of: ".ftc" and ".zip". */ @Override protected String[] getFileEndings() { return new String[] {".ftc", ".zip"}; } /* Don't attempt this before specification handling is sorted out. public ResourceMapping getDefaultResourceMapping() throws Exception { Specification.createSpecification(getSpecificationInputStream()); ResourceMapping map = new ResourceMapping(); String key, value, keyPrefix, urlPrefix, urlSuffix, roleId, shortId; // resources urlPrefix = "resources/images/bonus/"; for (ResourceType resourceType : Specification.getSpecification().getResourceTypeList()) { key = resourceType.getId() + ".image"; value = urlPrefix + getShortId(resourceType).toLowerCase() + ".png"; map.add(key, ResourceFactory.createResource(getURI(value))); } // units String[][] attackAnimations = new String[][] { { ".attack.w.animation", "-attack-left.sza" }, { ".attack.e.animation", "-attack-right.sza" } }; urlPrefix = "resources/images/units/"; for (UnitType unitType : Specification.getSpecification().getUnitTypeList()) { keyPrefix = unitType.getId() + "."; shortId = getShortId(unitType); urlSuffix = "/" + shortId + ".png"; for (Role role : Role.values()) { // role images roleId = role.getId(); key = keyPrefix + roleId + ".image"; value = urlPrefix + roleId + urlSuffix; map.add(key, ResourceFactory.createResource(getURI(value))); // attack animations for (String[] animation : attackAnimations) { key = keyPrefix + roleId + animation[0]; value = urlPrefix + roleId + "/" + shortId + animation[1]; map.add(key, ResourceFactory.createResource(getURI(value))); } } } return map; } */ public static File getRulesDirectory() { System.out.println("FreeColTcFile.getRulesDirectory()"); System.out.println("Datadir=" + FreeCol.getDataDirectory()); System.out.println("TcFiledDir=" + FreeCol.getDataDirectory() + "/" + DIRECTORY); return new File(FreeCol.getDataDirectory(), DIRECTORY); } }