From 5aa3da1ab402d1ab9b41a977637f36ae5ac9e475 Mon Sep 17 00:00:00 2001 From: "Tommy C. Li" Date: Wed, 30 Dec 2015 16:26:08 -0800 Subject: [PATCH] Make image loading errors no longer crash. --- .../rpgboss/model/resource/ImageResource.scala | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/core/src/main/scala/rpgboss/model/resource/ImageResource.scala b/core/src/main/scala/rpgboss/model/resource/ImageResource.scala index 8ecf842a..d3ddb184 100644 --- a/core/src/main/scala/rpgboss/model/resource/ImageResource.scala +++ b/core/src/main/scala/rpgboss/model/resource/ImageResource.scala @@ -87,9 +87,20 @@ trait TiledImageResource[T, MT <: AnyRef] extends ImageResource[T, MT] { trait ImageResource[T, MT <: AnyRef] extends Resource[T, MT] with RpgGdxAsset[Texture] { - // TODO: Refactor or eliminate this method, since it's unpredictable - lazy val img = Option(ImageIO.read(newDataStream)) getOrElse { - throw ResourceException("Can't load image: %s".format(name)) + + /** + * Always returns a non-null BufferedImage. Returns a placeholder image on + * error. + */ + lazy val img: BufferedImage = { + val stream = newDataStream + if (stream == null) { + ImageResource.errorTile + } else { + Option(ImageIO.read(stream)) getOrElse { + ImageResource.errorTile + } + } } }