Chromium Code Reviews| 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]; |
| +} |