| OLD | NEW |
| 1 part of game; | 1 part of game; |
| 2 | 2 |
| 3 const double _steeringThreshold = 0.0; | 3 const double _steeringThreshold = 0.0; |
| 4 const double _steeringMax = 150.0; | 4 const double _steeringMax = 150.0; |
| 5 | 5 |
| 6 // Random generator | 6 // Random generator |
| 7 Math.Random _rand = new Math.Random(); | 7 Math.Random _rand = new Math.Random(); |
| 8 | 8 |
| 9 const double _gameSizeWidth = 1024.0; | 9 const double _gameSizeWidth = 1024.0; |
| 10 const double _gameSizeHeight = 1024.0; | 10 const double _gameSizeHeight = 1024.0; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 35 bool _fire; | 35 bool _fire; |
| 36 | 36 |
| 37 Node _gameLayer; | 37 Node _gameLayer; |
| 38 | 38 |
| 39 Ship _ship; | 39 Ship _ship; |
| 40 List<Asteroid> _asteroids = []; | 40 List<Asteroid> _asteroids = []; |
| 41 List<Laser> _lasers = []; | 41 List<Laser> _lasers = []; |
| 42 StarField _starField; | 42 StarField _starField; |
| 43 Nebula _nebula; | 43 Nebula _nebula; |
| 44 | 44 |
| 45 GameDemoWorld(ImageMap images) : super.withSize(new Size(_gameSizeWidth, _game
SizeHeight)) { | 45 GameDemoWorld(ImageMap images) : super(new Size(_gameSizeWidth, _gameSizeHeigh
t)) { |
| 46 | 46 |
| 47 // Fetch images | 47 // Fetch images |
| 48 _imgBg = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian
.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/resources-auto/Burn
Texture.png"]; | 48 _imgBg = images["https://raw.githubusercontent.com/slembcke/GalacticGuardian
.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/resources-auto/Burn
Texture.png"]; |
| 49 _imgAsteroid = images["https://raw.githubusercontent.com/slembcke/GalacticGu
ardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resou
rces-auto/asteroid_big_002.png"]; | 49 _imgAsteroid = images["https://raw.githubusercontent.com/slembcke/GalacticGu
ardian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resou
rces-auto/asteroid_big_002.png"]; |
| 50 _imgShip = images["https://raw.githubusercontent.com/slembcke/GalacticGuardi
an.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources
-auto/GG_blueship_Lv3.png"]; | 50 _imgShip = images["https://raw.githubusercontent.com/slembcke/GalacticGuardi
an.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources
-auto/GG_blueship_Lv3.png"]; |
| 51 _imgLaser = images["https://raw.githubusercontent.com/slembcke/GalacticGuard
ian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resource
s-auto/laserBlue.png"]; | 51 _imgLaser = images["https://raw.githubusercontent.com/slembcke/GalacticGuard
ian.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resource
s-auto/laserBlue.png"]; |
| 52 _imgStar = images["https://raw.githubusercontent.com/slembcke/GalacticGuardi
an.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources
-auto/laserFlashPurple.png"]; | 52 _imgStar = images["https://raw.githubusercontent.com/slembcke/GalacticGuardi
an.spritebuilder/GDC/Packages/SpriteBuilder%20Resources.sbpack/Sprites/resources
-auto/laserFlashPurple.png"]; |
| 53 _imgNebula = images["https://raw.githubusercontent.com/slembcke/GalacticGuar
dian.spritebuilder/GDC/Source/Resources/NebulaClouds.png"]; | 53 _imgNebula = images["https://raw.githubusercontent.com/slembcke/GalacticGuar
dian.spritebuilder/GDC/Source/Resources/NebulaClouds.png"]; |
| 54 | 54 |
| 55 _gameLayer = new Node(); | 55 _gameLayer = new Node(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 74 // Add nebula | 74 // Add nebula |
| 75 addNebula(); | 75 addNebula(); |
| 76 | 76 |
| 77 userInteractionEnabled = true; | 77 userInteractionEnabled = true; |
| 78 handleMultiplePointers = true; | 78 handleMultiplePointers = true; |
| 79 } | 79 } |
| 80 | 80 |
| 81 // Methods for adding game objects | 81 // Methods for adding game objects |
| 82 | 82 |
| 83 void addBackground() { | 83 void addBackground() { |
| 84 Sprite sprtBg = new Sprite.withImage(_imgBg); | 84 Sprite sprtBg = new Sprite(_imgBg); |
| 85 sprtBg.size = new Size(_gameSizeWidth, _gameSizeHeight); | 85 sprtBg.size = new Size(_gameSizeWidth, _gameSizeHeight); |
| 86 sprtBg.pivot = Point.origin; | 86 sprtBg.pivot = Point.origin; |
| 87 _gameLayer.addChild(sprtBg); | 87 _gameLayer.addChild(sprtBg); |
| 88 } | 88 } |
| 89 | 89 |
| 90 void addAsteroid(AsteroidSize size, [Point pos]) { | 90 void addAsteroid(AsteroidSize size, [Point pos]) { |
| 91 Asteroid asteroid = new Asteroid.withImage(_imgAsteroid, size); | 91 Asteroid asteroid = new Asteroid.withImage(_imgAsteroid, size); |
| 92 asteroid.zPosition = 1.0; | 92 asteroid.zPosition = 1.0; |
| 93 if (pos != null) asteroid.position = pos; | 93 if (pos != null) asteroid.position = pos; |
| 94 _gameLayer.addChild(asteroid); | 94 _gameLayer.addChild(asteroid); |
| (...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 double _radius; | 289 double _radius; |
| 290 | 290 |
| 291 double get radius { | 291 double get radius { |
| 292 if (_radius != null) return _radius; | 292 if (_radius != null) return _radius; |
| 293 if (_asteroidSize == AsteroidSize.small) _radius = _smlAsteroidRadius; | 293 if (_asteroidSize == AsteroidSize.small) _radius = _smlAsteroidRadius; |
| 294 else if (_asteroidSize == AsteroidSize.medium) _radius = _medAsteroidRadius; | 294 else if (_asteroidSize == AsteroidSize.medium) _radius = _medAsteroidRadius; |
| 295 else if (_asteroidSize == AsteroidSize.large) _radius = _lrgAsteroidRadius; | 295 else if (_asteroidSize == AsteroidSize.large) _radius = _lrgAsteroidRadius; |
| 296 return _radius; | 296 return _radius; |
| 297 } | 297 } |
| 298 | 298 |
| 299 Asteroid.withImage(Image img, AsteroidSize this._asteroidSize) : super.withIma
ge(img) { | 299 Asteroid.withImage(Image img, AsteroidSize this._asteroidSize) : super(img) { |
| 300 size = new Size(radius * 2.0, radius * 2.0); | 300 size = new Size(radius * 2.0, radius * 2.0); |
| 301 position = new Point(_gameSizeWidth * _rand.nextDouble(), _gameSizeHeight *
_rand.nextDouble()); | 301 position = new Point(_gameSizeWidth * _rand.nextDouble(), _gameSizeHeight *
_rand.nextDouble()); |
| 302 rotation = 360.0 * _rand.nextDouble(); | 302 rotation = 360.0 * _rand.nextDouble(); |
| 303 | 303 |
| 304 _movementVector = new Point(_rand.nextDouble() * _maxAsteroidSpeed * 2 - _ma
xAsteroidSpeed, | 304 _movementVector = new Point(_rand.nextDouble() * _maxAsteroidSpeed * 2 - _ma
xAsteroidSpeed, |
| 305 _rand.nextDouble() * _maxAsteroidSpeed * 2 - _ma
xAsteroidSpeed); | 305 _rand.nextDouble() * _maxAsteroidSpeed * 2 - _ma
xAsteroidSpeed); |
| 306 | 306 |
| 307 userInteractionEnabled = true; | 307 userInteractionEnabled = true; |
| 308 } | 308 } |
| 309 | 309 |
| 310 bool handleEvent(SpriteBoxEvent event) { | 310 bool handleEvent(SpriteBoxEvent event) { |
| 311 if (event.type == "pointerdown") { | 311 if (event.type == "pointerdown") { |
| 312 colorOverlay = new Color(0x99ff0000); | 312 colorOverlay = new Color(0x99ff0000); |
| 313 } | 313 } |
| 314 else if (event.type == "pointerup") { | 314 else if (event.type == "pointerup") { |
| 315 colorOverlay = null; | 315 colorOverlay = null; |
| 316 } | 316 } |
| 317 return false; | 317 return false; |
| 318 } | 318 } |
| 319 } | 319 } |
| 320 | 320 |
| 321 class Ship extends Sprite { | 321 class Ship extends Sprite { |
| 322 Vector2 _movementVector; | 322 Vector2 _movementVector; |
| 323 double _rotationTarget; | 323 double _rotationTarget; |
| 324 | 324 |
| 325 Ship.withImage(Image img) : super.withImage(img) { | 325 Ship.withImage(Image img) : super(img) { |
| 326 _movementVector = new Vector2.zero(); | 326 _movementVector = new Vector2.zero(); |
| 327 rotation = _rotationTarget = 270.0; | 327 rotation = _rotationTarget = 270.0; |
| 328 | 328 |
| 329 // Create sprite | 329 // Create sprite |
| 330 size = new Size(_shipRadius * 2.0, _shipRadius * 2.0); | 330 size = new Size(_shipRadius * 2.0, _shipRadius * 2.0); |
| 331 position = new Point(_gameSizeWidth/2.0, _gameSizeHeight/2.0); | 331 position = new Point(_gameSizeWidth/2.0, _gameSizeHeight/2.0); |
| 332 } | 332 } |
| 333 | 333 |
| 334 void thrust(double x, double y) { | 334 void thrust(double x, double y) { |
| 335 _rotationTarget = convertRadians2Degrees(Math.atan2(y, x)); | 335 _rotationTarget = convertRadians2Degrees(Math.atan2(y, x)); |
| 336 Vector2 directionVector = new Vector2(x, y).normalize(); | 336 Vector2 directionVector = new Vector2(x, y).normalize(); |
| 337 _movementVector.addScaled(directionVector, 1.0); | 337 _movementVector.addScaled(directionVector, 1.0); |
| 338 } | 338 } |
| 339 | 339 |
| 340 void move() { | 340 void move() { |
| 341 position = new Point(position.x + _movementVector[0], position.y + _movement
Vector[1]); | 341 position = new Point(position.x + _movementVector[0], position.y + _movement
Vector[1]); |
| 342 _movementVector.scale(0.9); | 342 _movementVector.scale(0.9); |
| 343 | 343 |
| 344 rotation = dampenRotation(rotation, _rotationTarget, 0.1); | 344 rotation = dampenRotation(rotation, _rotationTarget, 0.1); |
| 345 } | 345 } |
| 346 } | 346 } |
| 347 | 347 |
| 348 class Laser extends Sprite { | 348 class Laser extends Sprite { |
| 349 int _frameCount = 0; | 349 int _frameCount = 0; |
| 350 Point _movementVector; | 350 Point _movementVector; |
| 351 double radius = 10.0; | 351 double radius = 10.0; |
| 352 | 352 |
| 353 Laser.withImage(Image img, Ship ship) : super.withImage(img) { | 353 Laser.withImage(Image img, Ship ship) : super(img) { |
| 354 size = new Size(20.0, 20.0); | 354 size = new Size(20.0, 20.0); |
| 355 position = ship.position; | 355 position = ship.position; |
| 356 rotation = ship.rotation + 90.0; | 356 rotation = ship.rotation + 90.0; |
| 357 transferMode = TransferMode.plus; | 357 transferMode = TransferMode.plus; |
| 358 double rotRadians = convertDegrees2Radians(rotation); | 358 double rotRadians = convertDegrees2Radians(rotation); |
| 359 _movementVector = pointMult(new Point(Math.sin(rotRadians), -Math.cos(rotRad
ians)), 10.0); | 359 _movementVector = pointMult(new Point(Math.sin(rotRadians), -Math.cos(rotRad
ians)), 10.0); |
| 360 _movementVector = new Point(_movementVector.x + ship._movementVector[0], _mo
vementVector.y + ship._movementVector[1]); | 360 _movementVector = new Point(_movementVector.x + ship._movementVector[0], _mo
vementVector.y + ship._movementVector[1]); |
| 361 } | 361 } |
| 362 | 362 |
| 363 void move() { | 363 void move() { |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 429 _starPositions[i] = new Point(xPos, yPos); | 429 _starPositions[i] = new Point(xPos, yPos); |
| 430 } | 430 } |
| 431 } | 431 } |
| 432 } | 432 } |
| 433 | 433 |
| 434 class Nebula extends Node { | 434 class Nebula extends Node { |
| 435 | 435 |
| 436 Nebula.withImage(Image img) { | 436 Nebula.withImage(Image img) { |
| 437 for (int i = 0; i < 2; i++) { | 437 for (int i = 0; i < 2; i++) { |
| 438 for (int j = 0; j < 2; j++) { | 438 for (int j = 0; j < 2; j++) { |
| 439 Sprite sprt = new Sprite.withImage(img); | 439 Sprite sprt = new Sprite(img); |
| 440 sprt.pivot = Point.origin; | 440 sprt.pivot = Point.origin; |
| 441 sprt.position = new Point(i * _gameSizeWidth - _gameSizeWidth, j * _game
SizeHeight - _gameSizeHeight); | 441 sprt.position = new Point(i * _gameSizeWidth - _gameSizeWidth, j * _game
SizeHeight - _gameSizeHeight); |
| 442 addChild(sprt); | 442 addChild(sprt); |
| 443 } | 443 } |
| 444 } | 444 } |
| 445 } | 445 } |
| 446 } | 446 } |
| 447 | 447 |
| 448 // Convenience methods | 448 // Convenience methods |
| 449 | 449 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 469 double dy = a.y - b.y; | 469 double dy = a.y - b.y; |
| 470 if (dx < 0.0) dx = -dx; | 470 if (dx < 0.0) dx = -dx; |
| 471 if (dy < 0.0) dy = -dy; | 471 if (dy < 0.0) dy = -dy; |
| 472 if (dx > dy) { | 472 if (dx > dy) { |
| 473 return dx + dy/2.0; | 473 return dx + dy/2.0; |
| 474 } | 474 } |
| 475 else { | 475 else { |
| 476 return dy + dx/2.0; | 476 return dy + dx/2.0; |
| 477 } | 477 } |
| 478 } | 478 } |
| OLD | NEW |