Commit b3947162 authored by Eric Seidel's avatar Eric Seidel

Make Asteroids.apk use background music from its bundle

This was the last instance of loading assets off of Github.

@abarth
parent ba7b9db5
Assets for this game are taken from Galactic Guardian: Assets for this game are from Galactic Guardian:
https://github.com/slembcke/GalacticGuardian.spritebuilder https://github.com/slembcke/GalacticGuardian.spritebuilder
\ No newline at end of file And are used under MIT license:
https://github.com/slembcke/GalacticGuardian.spritebuilder/pull/2
...@@ -2,6 +2,8 @@ ...@@ -2,6 +2,8 @@
// Use of this source code is governed by a BSD-style license that can be // Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file. // found in the LICENSE file.
import 'dart:async';
import 'package:sky/mojo/asset_bundle.dart'; import 'package:sky/mojo/asset_bundle.dart';
import 'package:sky/theme/colors.dart' as colors; import 'package:sky/theme/colors.dart' as colors;
import 'package:sky/rendering/object.dart'; import 'package:sky/rendering/object.dart';
...@@ -24,40 +26,48 @@ AssetBundle _initBundle() { ...@@ -24,40 +26,48 @@ AssetBundle _initBundle() {
final AssetBundle _bundle = _initBundle(); final AssetBundle _bundle = _initBundle();
ImageMap _loader; ImageMap _imageMap;
SpriteSheet _spriteSheet; SpriteSheet _spriteSheet;
SpriteSheet _spriteSheetUI; SpriteSheet _spriteSheetUI;
GameDemoApp _app; GameDemoApp _app;
Map<String,SoundEffect> _sounds = {}; Map<String,SoundEffect> _sounds = {};
main() async { main() async {
_loader = new ImageMap(_bundle); _imageMap = new ImageMap(_bundle);
// Use a list to wait on all loads in parallel just before starting the app.
List loads = [];
await _loader.load([ loads.add(_imageMap.load([
'assets/nebula.png', 'assets/nebula.png',
'assets/sprites.png', 'assets/sprites.png',
'assets/starfield.png', 'assets/starfield.png',
'assets/game_ui.png', 'assets/game_ui.png',
]); ]));
// TODO(eseidel): These load in serial which is bad for startup!
String json = await _bundle.loadString('assets/sprites.json'); 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'); 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(); _app = new GameDemoApp();
_sounds["explosion"] = new SoundEffect(_bundle.load('assets/explosion.wav')); // TODO(eseidel): SoundEffect doesn't really do anything except hold a future.
_sounds["laser"] = new SoundEffect(_bundle.load('assets/laser.wav')); _sounds['explosion'] = new SoundEffect(_bundle.load('assets/explosion.wav'));
_sounds['laser'] = new SoundEffect(_bundle.load('assets/laser.wav'));
await _sounds["explosion"].load(); loads.addAll([
await _sounds["laser"].load(); _sounds['explosion'].load(),
_sounds['laser'].load(),
]);
SoundTrackPlayer stPlayer = SoundTrackPlayer.sharedInstance(); 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); stPlayer.play(music);
await Future.wait(loads);
runApp(_app); runApp(_app);
} }
...@@ -111,7 +121,7 @@ class GameDemoApp extends App { ...@@ -111,7 +121,7 @@ class GameDemoApp extends App {
_game = new GameDemoWorld( _game = new GameDemoWorld(
_app, _app,
navigator, navigator,
_loader, _imageMap,
_spriteSheet, _spriteSheet,
_spriteSheetUI, _spriteSheetUI,
_sounds, _sounds,
...@@ -121,8 +131,8 @@ class GameDemoApp extends App { ...@@ -121,8 +131,8 @@ class GameDemoApp extends App {
); );
navigator.pushNamed('/game'); navigator.pushNamed('/game');
}, },
texture: _spriteSheetUI["btn_play_up.png"], texture: _spriteSheetUI['btn_play_up.png'],
textureDown: _spriteSheetUI["btn_play_down.png"], textureDown: _spriteSheetUI['btn_play_down.png'],
width: 128.0, width: 128.0,
height: 128.0 height: 128.0
), ),
...@@ -231,7 +241,7 @@ class _TextureButtonToken { ...@@ -231,7 +241,7 @@ class _TextureButtonToken {
class MainScreenBackground extends NodeWithSize { class MainScreenBackground extends NodeWithSize {
MainScreenBackground() : super(new Size(1024.0, 1024.0)) { 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); sprtBackground.position = new Point(512.0, 512.0);
addChild(sprtBackground); addChild(sprtBackground);
......
...@@ -170,16 +170,13 @@ class SoundTrackPlayer { ...@@ -170,16 +170,13 @@ class SoundTrackPlayer {
MediaServiceProxy _mediaService; MediaServiceProxy _mediaService;
Future<SoundTrack> load(String url) async { Future<SoundTrack> load(Future<MojoDataPipeConsumer> pipe) async {
// Create media player // Create media player
SoundTrack soundTrack = new SoundTrack(); SoundTrack soundTrack = new SoundTrack();
soundTrack._player = new MediaPlayerProxy.unbound(); soundTrack._player = new MediaPlayerProxy.unbound();
_mediaService.ptr.createPlayer(soundTrack._player); _mediaService.ptr.createPlayer(soundTrack._player);
// Load and prepare await soundTrack._player.ptr.prepare(await pipe);
UrlResponse response = await fetchUrl(url);
await soundTrack._player.ptr.prepare(response.body);
return soundTrack; return soundTrack;
} }
......
...@@ -11,11 +11,9 @@ import 'dart:typed_data'; ...@@ -11,11 +11,9 @@ import 'dart:typed_data';
import 'dart:sky'; import 'dart:sky';
import 'package:mojo/core.dart'; import 'package:mojo/core.dart';
import 'package:mojo/mojo/url_response.mojom.dart';
import 'package:sky/animation/curves.dart'; import 'package:sky/animation/curves.dart';
import 'package:sky/base/scheduler.dart' as scheduler; import 'package:sky/base/scheduler.dart' as scheduler;
import 'package:sky/mojo/asset_bundle.dart'; 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/mojo/shell.dart' as shell;
import 'package:sky/rendering/box.dart'; import 'package:sky/rendering/box.dart';
import 'package:sky/rendering/object.dart'; import 'package:sky/rendering/object.dart';
......
...@@ -9,3 +9,4 @@ assets: ...@@ -9,3 +9,4 @@ assets:
- assets/laser.wav - assets/laser.wav
- assets/levelup.wav - assets/levelup.wav
- assets/pickup.wav - assets/pickup.wav
- assets/temp_music.aac
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment