Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(951)

Unified Diff: sky/examples/game/lib/game_demo_world.dart

Issue 1204783003: Adds basic sprite sheet support to sprites (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Adds basic sprite sheet support to sprites (fixed issues) Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sky/examples/game/lib/game_demo_world.dart
diff --git a/sky/examples/game/lib/game_demo_world.dart b/sky/examples/game/lib/game_demo_world.dart
index 605a08faaee62f4cff8d5001fda4c7971e2f7f17..17bf3564441fc0afd123609a3360cf67b2ed2200 100644
--- a/sky/examples/game/lib/game_demo_world.dart
+++ b/sky/examples/game/lib/game_demo_world.dart
@@ -22,13 +22,10 @@ const int _numStarsInStarField = 150;
class GameDemoWorld extends NodeWithSize {
// Images
- Image _imgBg;
- Image _imgAsteroid;
- Image _imgShip;
- Image _imgLaser;
- Image _imgStar;
Image _imgNebula;
+ SpriteSheet _spriteSheet;
+
// Inputs
double _joystickX = 0.0;
double _joystickY = 0.0;
@@ -42,15 +39,10 @@ class GameDemoWorld extends NodeWithSize {
StarField _starField;
Nebula _nebula;
- GameDemoWorld(ImageMap images) : super(new Size(_gameSizeWidth, _gameSizeHeight)) {
+ GameDemoWorld(ImageMap images, this._spriteSheet) : super(new Size(_gameSizeWidth, _gameSizeHeight)) {
// Fetch images
- _imgBg = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/resources-auto/BurnTexture.png"];
- _imgAsteroid = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources-auto/asteroid_big_002.png"];
- _imgShip = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources-auto/GG_blueship_Lv3.png"];
- _imgLaser = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources-auto/laserBlue.png"];
- _imgStar = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources-auto/laserFlashPurple.png"];
- _imgNebula = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian.spritebuilder/GDC/Source/Resources/NebulaClouds.png"];
+ _imgNebula = images["res/nebula.png"];
_gameLayer = new Node();
this.addChild(_gameLayer);
@@ -67,7 +59,7 @@ class GameDemoWorld extends NodeWithSize {
addShip();
// Add starfield
- _starField = new StarField.withImage(_imgStar, _numStarsInStarField);
+ _starField = new StarField(_spriteSheet["star.png"], _numStarsInStarField);
_starField.zPosition = -2.0;
addChild(_starField);
@@ -79,16 +71,9 @@ class GameDemoWorld extends NodeWithSize {
}
// Methods for adding game objects
-
- void addBackground() {
- Sprite sprtBg = new Sprite(_imgBg);
- sprtBg.size = new Size(_gameSizeWidth, _gameSizeHeight);
- sprtBg.pivot = Point.origin;
- _gameLayer.addChild(sprtBg);
- }
void addAsteroid(AsteroidSize size, [Point pos]) {
- Asteroid asteroid = new Asteroid.withImage(_imgAsteroid, size);
+ Asteroid asteroid = new Asteroid(_spriteSheet["asteroid_big_1.png"], size);
asteroid.zPosition = 1.0;
if (pos != null) asteroid.position = pos;
_gameLayer.addChild(asteroid);
@@ -96,14 +81,14 @@ class GameDemoWorld extends NodeWithSize {
}
void addShip() {
- Ship ship = new Ship.withImage(_imgShip);
+ Ship ship = new Ship(_spriteSheet["ship.png"]);
ship.zPosition = 10.0;
_gameLayer.addChild(ship);
_ship = ship;
}
void addLaser() {
- Laser laser = new Laser.withImage(_imgLaser, _ship);
+ Laser laser = new Laser(_spriteSheet["laser.png"], _ship);
laser.zPosition = 8.0;
_lasers.add(laser);
_gameLayer.addChild(laser);
@@ -296,7 +281,7 @@ class Asteroid extends Sprite {
return _radius;
}
- Asteroid.withImage(Image img, AsteroidSize this._asteroidSize) : super(img) {
+ Asteroid(Texture img, AsteroidSize this._asteroidSize) : super(img) {
size = new Size(radius * 2.0, radius * 2.0);
position = new Point(_gameSizeWidth * _rand.nextDouble(), _gameSizeHeight * _rand.nextDouble());
rotation = 360.0 * _rand.nextDouble();
@@ -322,7 +307,7 @@ class Ship extends Sprite {
Vector2 _movementVector;
double _rotationTarget;
- Ship.withImage(Image img) : super(img) {
+ Ship(Texture img) : super(img) {
_movementVector = new Vector2.zero();
rotation = _rotationTarget = 270.0;
@@ -350,7 +335,7 @@ class Laser extends Sprite {
Point _movementVector;
double radius = 10.0;
- Laser.withImage(Image img, Ship ship) : super(img) {
+ Laser(Texture img, Ship ship) : super(img) {
size = new Size(20.0, 20.0);
position = ship.position;
rotation = ship.rotation + 90.0;
@@ -369,13 +354,13 @@ class Laser extends Sprite {
// Background starfield
class StarField extends Node {
- Image _img;
+ Texture _img;
int _numStars;
List<Point> _starPositions;
List<double> _starScales;
List<double> _opacity;
- StarField.withImage(Image this._img, int this._numStars) {
+ StarField(this._img, this._numStars) {
_starPositions = [];
_starScales = [];
_opacity = [];
@@ -392,8 +377,8 @@ class StarField extends Node {
Paint paint = new Paint();
paint.setTransferMode(TransferMode.plus);
- double baseScaleX = 32.0/_img.width;
- double baseScaleY = 32.0/_img.height;
+ double baseScaleX = 32.0/_img.size.width;
eseidel 2015/06/23 23:22:31 I thought our style was to have spaces around oper
+ double baseScaleY = 32.0/_img.size.height;
// Draw each star
for (int i = 0; i < _numStars; i++) {
@@ -406,7 +391,7 @@ class StarField extends Node {
canvas.translate(pos.x, pos.y);
canvas.scale(baseScaleX*scale, baseScaleY*scale);
- canvas.drawImage(_img, 0.0, 0.0, paint);
+ canvas.drawImageRect(_img.image, _img.frame, _img.spriteSourceSize, paint);
canvas.restore();
}
@@ -436,7 +421,7 @@ class Nebula extends Node {
Nebula.withImage(Image img) {
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 2; j++) {
- Sprite sprt = new Sprite(img);
+ Sprite sprt = new Sprite.fromImage(img);
sprt.pivot = Point.origin;
sprt.position = new Point(i * _gameSizeWidth - _gameSizeWidth, j * _gameSizeHeight - _gameSizeHeight);
addChild(sprt);

Powered by Google App Engine
This is Rietveld 408576698