// Near Infinity - An Infinity Engine Browser and Editor // Copyright (C) 2001 - 2005 Jon Olav Hauglid // See LICENSE.txt for license information package org.infinity.resource.are.viewer; import java.util.List; import org.infinity.datatype.ResourceRef; import org.infinity.resource.ResourceFactory; import org.infinity.resource.are.AreResource; /** * Manages map transition layer objects. */ public class LayerTransition extends BasicLayer<LayerObjectTransition> { private static final String AvailableFmt = "Map transitions: %1$d"; public LayerTransition(AreResource are, AreaViewer viewer) { super(are, ViewerConstants.LayerType.TRANSITION, viewer); loadLayer(false); } @Override public int loadLayer(boolean forced) { if (forced || !isInitialized()) { close(); List<LayerObjectTransition> list = getLayerObjects(); if (hasAre()) { AreResource are = getAre(); for (int i = 0; i < LayerObjectTransition.FieldName.length; i++) { ResourceRef ref = (ResourceRef)are.getAttribute(LayerObjectTransition.FieldName[i]); if (ref != null && !ref.getResourceName().isEmpty() && !"None".equalsIgnoreCase(ref.getResourceName())) { AreResource destAre = null; try { destAre = new AreResource(ResourceFactory.getResourceEntry(ref.getResourceName())); } catch (Exception e) { e.printStackTrace(); } if (destAre != null) { LayerObjectTransition obj = new LayerObjectTransition(are, destAre, i, getViewer().getRenderer()); setListeners(obj); list.add(obj); } } } setInitialized(true); } return list.size(); } return 0; } @Override public String getAvailability() { int cnt = getLayerObjectCount(); return String.format(AvailableFmt, cnt); } }