Make Asteroids.apk use background music from its bundle This was the last instance of loading assets off of Github. @abarth
diff --git a/examples/game/README.md b/examples/game/README.md index 029c193..3492069 100644 --- a/examples/game/README.md +++ b/examples/game/README.md
@@ -1,2 +1,4 @@ -Assets for this game are taken from Galactic Guardian: -https://github.com/slembcke/GalacticGuardian.spritebuilder \ No newline at end of file +Assets for this game are from Galactic Guardian: +https://github.com/slembcke/GalacticGuardian.spritebuilder +And are used under MIT license: +https://github.com/slembcke/GalacticGuardian.spritebuilder/pull/2
diff --git a/examples/game/assets/temp_music.aac b/examples/game/assets/temp_music.aac new file mode 100644 index 0000000..934fb54 --- /dev/null +++ b/examples/game/assets/temp_music.aac Binary files differ
diff --git a/examples/game/lib/main.dart b/examples/game/lib/main.dart index d18fe06..6a28fab 100644 --- a/examples/game/lib/main.dart +++ b/examples/game/lib/main.dart
@@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +import 'dart:async'; + import 'package:sky/mojo/asset_bundle.dart'; import 'package:sky/theme/colors.dart' as colors; import 'package:sky/rendering/object.dart'; @@ -24,40 +26,48 @@ final AssetBundle _bundle = _initBundle(); -ImageMap _loader; +ImageMap _imageMap; SpriteSheet _spriteSheet; SpriteSheet _spriteSheetUI; GameDemoApp _app; Map<String,SoundEffect> _sounds = {}; main() async { - _loader = new ImageMap(_bundle); + _imageMap = new ImageMap(_bundle); - await _loader.load([ + // Use a list to wait on all loads in parallel just before starting the app. + List loads = []; + + loads.add(_imageMap.load([ 'assets/nebula.png', 'assets/sprites.png', 'assets/starfield.png', 'assets/game_ui.png', - ]); + ])); + // TODO(eseidel): These load in serial which is bad for startup! String json = await _bundle.loadString('assets/sprites.json'); - _spriteSheet = new SpriteSheet(_loader['assets/sprites.png'], json); + _spriteSheet = new SpriteSheet(_imageMap['assets/sprites.png'], json); json = await _bundle.loadString('assets/game_ui.json'); - _spriteSheetUI = new SpriteSheet(_loader["assets/game_ui.png"], json); + _spriteSheetUI = new SpriteSheet(_imageMap['assets/game_ui.png'], json); _app = new GameDemoApp(); - _sounds["explosion"] = new SoundEffect(_bundle.load('assets/explosion.wav')); - _sounds["laser"] = new SoundEffect(_bundle.load('assets/laser.wav')); + // TODO(eseidel): SoundEffect doesn't really do anything except hold a future. + _sounds['explosion'] = new SoundEffect(_bundle.load('assets/explosion.wav')); + _sounds['laser'] = new SoundEffect(_bundle.load('assets/laser.wav')); - await _sounds["explosion"].load(); - await _sounds["laser"].load(); + loads.addAll([ + _sounds['explosion'].load(), + _sounds['laser'].load(), + ]); SoundTrackPlayer stPlayer = SoundTrackPlayer.sharedInstance(); - SoundTrack music = await stPlayer.load('https://github.com/slembcke/GalacticGuardian.spritebuilder/raw/GDC/Source/Resources/TempMusic.aac'); + SoundTrack music = await stPlayer.load(_bundle.load('assets/temp_music.aac')); stPlayer.play(music); + await Future.wait(loads); runApp(_app); } @@ -111,7 +121,7 @@ _game = new GameDemoWorld( _app, navigator, - _loader, + _imageMap, _spriteSheet, _spriteSheetUI, _sounds, @@ -121,8 +131,8 @@ ); navigator.pushNamed('/game'); }, - texture: _spriteSheetUI["btn_play_up.png"], - textureDown: _spriteSheetUI["btn_play_down.png"], + texture: _spriteSheetUI['btn_play_up.png'], + textureDown: _spriteSheetUI['btn_play_down.png'], width: 128.0, height: 128.0 ), @@ -231,7 +241,7 @@ class MainScreenBackground extends NodeWithSize { MainScreenBackground() : super(new Size(1024.0, 1024.0)) { - Sprite sprtBackground = new Sprite.fromImage(_loader["assets/starfield.png"]); + Sprite sprtBackground = new Sprite.fromImage(_imageMap['assets/starfield.png']); sprtBackground.position = new Point(512.0, 512.0); addChild(sprtBackground);
diff --git a/examples/game/lib/sound.dart b/examples/game/lib/sound.dart index b217090..b5ff1d9 100644 --- a/examples/game/lib/sound.dart +++ b/examples/game/lib/sound.dart
@@ -170,16 +170,13 @@ MediaServiceProxy _mediaService; - Future<SoundTrack> load(String url) async { + Future<SoundTrack> load(Future<MojoDataPipeConsumer> pipe) async { // Create media player SoundTrack soundTrack = new SoundTrack(); soundTrack._player = new MediaPlayerProxy.unbound(); _mediaService.ptr.createPlayer(soundTrack._player); - // Load and prepare - UrlResponse response = await fetchUrl(url); - await soundTrack._player.ptr.prepare(response.body); - + await soundTrack._player.ptr.prepare(await pipe); return soundTrack; }
diff --git a/examples/game/lib/sprites.dart b/examples/game/lib/sprites.dart index 8735554..e26bb45 100644 --- a/examples/game/lib/sprites.dart +++ b/examples/game/lib/sprites.dart
@@ -11,11 +11,9 @@ import 'dart:sky'; import 'package:mojo/core.dart'; -import 'package:mojo/mojo/url_response.mojom.dart'; import 'package:sky/animation/curves.dart'; import 'package:sky/base/scheduler.dart' as scheduler; import 'package:sky/mojo/asset_bundle.dart'; -import 'package:sky/mojo/net/fetch.dart'; import 'package:sky/mojo/shell.dart' as shell; import 'package:sky/rendering/box.dart'; import 'package:sky/rendering/object.dart';
diff --git a/examples/game/sky.yaml b/examples/game/sky.yaml index d88daaa3..df02f36 100644 --- a/examples/game/sky.yaml +++ b/examples/game/sky.yaml
@@ -9,3 +9,4 @@ - assets/laser.wav - assets/levelup.wav - assets/pickup.wav + - assets/temp_music.aac