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

Unified Diff: samples/pop_pop_win/lib/pop_pop_win.dart

Issue 242443008: samples/pop_pop_win: now based on StageXL (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: tiny nit Created 6 years, 8 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
« no previous file with comments | « samples/pop_pop_win/lib/platform_target.dart ('k') | samples/pop_pop_win/lib/src/audio.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: samples/pop_pop_win/lib/pop_pop_win.dart
diff --git a/samples/pop_pop_win/lib/pop_pop_win.dart b/samples/pop_pop_win/lib/pop_pop_win.dart
index f1dd9fe72c17da48daf697f9517363c4ce0288b8..2dc816fc8b9a8700c7524351939890862bf02d2a 100644
--- a/samples/pop_pop_win/lib/pop_pop_win.dart
+++ b/samples/pop_pop_win/lib/pop_pop_win.dart
@@ -1,99 +1,95 @@
library pop_pop_win;
+import 'dart:async';
import 'dart:html';
-import 'dart:web_audio';
-import 'package:bot/bot.dart';
-import 'package:bot_web/bot_html.dart';
-import 'package:bot_web/bot_texture.dart';
-import 'package:pop_pop_win/src/canvas.dart';
-import 'package:pop_pop_win/platform_target.dart';
-import 'package:pop_pop_win/src/html.dart';
+import 'package:stagexl/stagexl.dart';
-import 'src/textures.dart';
-
-part 'src/pop_pop_win/audio.dart';
+import 'platform_target.dart';
+import 'src/audio.dart';
+import 'src/platform.dart';
+import 'src/stage.dart';
const String _ASSET_DIR = 'resources/';
-const String _TRANSPARENT_TEXTURE =
- '${_ASSET_DIR}images/transparent_animated.png';
-const String _OPAQUE_TEXTURE = '${_ASSET_DIR}images/dart_opaque_01.jpg';
-const String _TRANSPARENT_STATIC_TEXTURE =
- '${_ASSET_DIR}images/transparent_static.png';
-
-const int _LOADING_BAR_PX_WIDTH = 398;
-
-DivElement _loadingBar;
-ImageLoader _imageLoader;
-
-final _Audio _audio = new _Audio();
+const String _TRANSPARENT_TEXTURE = '${_ASSET_DIR}images/transparent.json';
+const String _OPAQUE_TEXTURE = '${_ASSET_DIR}images/opaque.json';
+const String _TRANSPARENT_STATIC_TEXTURE = '${_ASSET_DIR}images/static.json';
-void startGame(PlatformTarget platform) {
+Future startGame(PlatformTarget platform) {
initPlatform(platform);
- _loadingBar = querySelector('.sprite.loading_bar');
- _loadingBar.style.display = 'block';
- _loadingBar.style.width = '0';
+ var stage = new Stage(querySelector('#gameCanvas'), webGL: true,
+ color: 0xb4ad7f, frameRate: 60);
- _imageLoader = new ImageLoader([_TRANSPARENT_TEXTURE,
- _OPAQUE_TEXTURE]);
- _imageLoader.loaded.listen(_onLoaded);
- _imageLoader.progress.listen(_onProgress);
- _imageLoader.load();
-}
-
-void _onProgress(_) {
- int completedBytes = _imageLoader.completedBytes;
- int totalBytes = _imageLoader.totalBytes;
+ var renderLoop = new RenderLoop()
+ ..addStage(stage);
- completedBytes += _audio.completedBytes;
- totalBytes += _audio.totalBytes;
+ BitmapData.defaultLoadOptions.webp = true;
- var percent = completedBytes / totalBytes;
- if (percent == double.INFINITY) percent = 0;
- var percentClean = (percent * 1000).floor() / 10;
+ //have to load the loading bar first...
+ var resourceManager = new ResourceManager()
+ ..addTextureAtlas("static", "resources/images/static.json",
+ TextureAtlasFormat.JSON);
- var barWidth = percent * _LOADING_BAR_PX_WIDTH;
- _loadingBar.style.width = '${barWidth.toInt()}px';
+ return resourceManager.load()
+ .then((resMan) => _initialLoad(resMan, stage));
}
-void _onLoaded(_) {
- if (_imageLoader.state == ResourceLoader.StateLoaded && _audio.done) {
-
- //
- // load textures
- //
- var opaqueImage = _imageLoader.getResource(_OPAQUE_TEXTURE);
- var transparentImage = _imageLoader.getResource(_TRANSPARENT_TEXTURE);
-
- // already loaded. Used in CSS.
- var staticTransparentImage =
- new ImageElement(src: _TRANSPARENT_STATIC_TEXTURE);
-
- var textures = getTextures(transparentImage, opaqueImage,
- staticTransparentImage);
-
- var textureData = new TextureData(textures);
-
- // run the app
- querySelector('#loading').style.display = 'none';
- _runGame(textureData);
- }
+void _initialLoad(ResourceManager resourceManager, Stage stage) {
+ var atlas = resourceManager.getTextureAtlas('static');
+
+ var bar = new Gauge(atlas.getBitmapData('loading_bar'), Gauge.DIRECTION_RIGHT)
+ ..x = 51
+ ..y = 8
+ ..ratio = 0;
+
+ var loadingText = new Bitmap(atlas.getBitmapData('loading_text'))
+ ..x = 141
+ ..y = 10;
+
+ var loadingSprite = new Sprite()
+ ..addChild(new Bitmap(atlas.getBitmapData('loading_background')))
+ ..addChild(bar)
+ ..addChild(loadingText)
+ ..x = stage.sourceWidth ~/ 2 - 1008 ~/ 2
+ ..y = 400
+ ..scaleX = 2
+ ..scaleY = 2
+ ..addTo(stage);
+
+ resourceManager
+ ..addTextureAtlas('opaque', 'resources/images/opaque.json',
+ TextureAtlasFormat.JSON)
+ ..addTextureAtlas('animated', 'resources/images/animated.json',
+ TextureAtlasFormat.JSON);
+
+ resourceManager.addSoundSprite('audio', 'resources/audio/audio.json');
+
+ resourceManager.onProgress.listen((e) {
+ bar.ratio = resourceManager.finishedResources.length /
+ resourceManager.resources.length;
+ });
+
+ resourceManager.load().then((resMan) =>
+ _secondaryLoad(resMan, stage, loadingSprite));
}
-void _runGame(TextureData textureData) {
+void _secondaryLoad(ResourceManager resourceManager, Stage stage,
+ Sprite loadingSprite) {
+ var tween = stage.juggler.tween(loadingSprite, .5)
+ ..animate.alpha.to(0)
+ ..onComplete = () => stage.removeChild(loadingSprite);
+
_updateAbout();
targetPlatform.aboutChanged.listen((_) => _updateAbout());
- final size = targetPlatform.renderBig ? 16 : 7;
- final int m = (size * size * 0.15625).toInt();
-
- final CanvasElement gameCanvas = querySelector('#gameCanvas');
- gameCanvas.style.userSelect = 'none';
+ var size = targetPlatform.size;
+ var m = (size * size * 0.15625).toInt();
- final gameRoot = new GameRoot(size, size, m, gameCanvas, textureData);
+ GameAudio.initialize(resourceManager);
+ var gameRoot = new GameRoot(size, size, m, stage, resourceManager);
// disable touch events
window.onTouchMove.listen((args) => args.preventDefault());
@@ -105,13 +101,13 @@ void _runGame(TextureData textureData) {
titleClickedEvent.listen((args) => targetPlatform.toggleAbout(true));
}
-void _onPopupClick(MouseEvent args) {
+void _onPopupClick(args) {
if (args.toElement is! AnchorElement) {
targetPlatform.toggleAbout(false);
}
}
-void _onKeyDown(KeyboardEvent args) {
+void _onKeyDown(args) {
var keyEvent = new KeyEvent.wrap(args);
switch (keyEvent.keyCode) {
case KeyCode.ESC: // esc
« no previous file with comments | « samples/pop_pop_win/lib/platform_target.dart ('k') | samples/pop_pop_win/lib/src/audio.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698