Index: sky/examples/game/lib/spritesheet.dart |
diff --git a/sky/examples/game/lib/spritesheet.dart b/sky/examples/game/lib/spritesheet.dart |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7437cd87da5350d063da0c1d13d1dbadce2b0dc5 |
--- /dev/null |
+++ b/sky/examples/game/lib/spritesheet.dart |
@@ -0,0 +1,61 @@ |
+ part of sprites; |
jackson
2015/06/23 22:09:43
check indentation here
|
+ |
+class SpriteSheet { |
+ |
+ Image _image; |
+ Map<String, Texture> _textures; |
jackson
2015/06/23 21:56:54
You should be able to initialize this here.
|
+ |
+ SpriteSheet(this._image, String jsonDefinition) { |
+ assert(_image != null); |
+ assert(jsonDefinition != null); |
+ |
+ _textures = new Map(); |
+ |
+ JsonDecoder decoder = new JsonDecoder(); |
+ Map file = decoder.convert(jsonDefinition); |
+ assert(file != null); |
+ |
+ List frames = file["frames"]; |
+ |
+ for (Map frameInfo in frames) { |
+ String fileName = frameInfo["filename"]; |
+ Rect frame = _readJsonRect(frameInfo["frame"]); |
+ bool rotated = frameInfo["rotated"]; |
+ bool trimmed = frameInfo["trimmed"]; |
+ Rect spriteSourceSize = _readJsonRect(frameInfo["spriteSourceSize"]); |
+ Size sourceSize = _readJsonSize(frameInfo["sourceSize"]); |
+ Point pivot = _readJsonPoint(frameInfo["pivot"]); |
+ |
+ var texture = new Texture._fromSpriteFrame(_image, fileName, sourceSize, rotated, trimmed, frame, |
+ spriteSourceSize, pivot); |
+ _textures[fileName] = texture; |
+ } |
+ } |
+ |
+ Rect _readJsonRect(Map data) { |
+ num x = data["x"]; |
+ num y = data["y"]; |
+ num w = data["w"]; |
+ num h = data["h"]; |
+ |
+ return new Rect.fromLTRB(x.toDouble(), y.toDouble(), (x + w).toDouble(), (y + h).toDouble()); |
+ } |
+ |
+ Size _readJsonSize(Map data) { |
+ num w = data["w"]; |
+ num h = data["h"]; |
+ |
+ return new Size(w.toDouble(), h.toDouble()); |
+ } |
+ |
+ Point _readJsonPoint(Map data) { |
+ num x = data["x"]; |
+ num y = data["y"]; |
+ |
+ return new Point(x.toDouble(), y.toDouble()); |
+ } |
+ |
+ Image get image => _image; |
+ |
+ Texture operator [](String fileName) => _textures[fileName]; |
+} |