20 package net.sf.gridarta.model.gameobject;
22 import java.awt.Dimension;
23 import java.io.BufferedReader;
24 import java.io.IOException;
25 import java.io.InputStream;
26 import java.io.InputStreamReader;
27 import java.io.LineNumberReader;
28 import java.io.Reader;
35 import org.apache.log4j.Category;
36 import org.apache.log4j.Logger;
37 import org.jetbrains.annotations.NotNull;
55 public static final int Y_DIM = 16;
83 public void load(@NotNull
final ErrorView errorView, @NotNull
final URL url) {
87 try (InputStream inputStream = url.openStream()) {
89 try (BufferedReader bufferedReader =
new BufferedReader(reader)) {
90 try (LineNumberReader lnr =
new LineNumberReader(bufferedReader)) {
94 boolean hasErrors =
false;
96 final String inputLine = lnr.readLine();
97 if (inputLine ==
null) {
100 final String line = inputLine.trim();
101 if (line.isEmpty() || line.startsWith(
"#")) {
109 if (numbers.length != 2) {
114 final Dimension d =
new Dimension();
117 d.width = Integer.parseInt(numbers[0]);
118 }
catch (
final NumberFormatException ignored) {
125 d.height = Integer.parseInt(numbers[1]);
126 }
catch (
final NumberFormatException ignored) {
135 if (yp <
Y_DIM && !hasErrors) {
140 if (
LOG.isInfoEnabled()) {
141 LOG.info(
"Loaded multi-part position data from '" + url +
"'");
147 }
catch (
final IOException ex) {
161 public int getXOffset(
final int shapeID,
final int positionID) {
163 return entry ==
null ? 0 : entry.
getXOffset(positionID);
175 public int getYOffset(
final int shapeID,
final int positionID) {
177 return entry ==
null ? 0 : entry.
getYOffset(positionID);
187 return entry ==
null ? 0 : entry.
getWidth();
197 return entry ==
null ? 0 : entry.
getHeight();