Commit 27181225 authored by Viktor Lidholt's avatar Viktor Lidholt

Fixes issues in demo game and adds heads up display

parent b26bae8a
...@@ -27,6 +27,7 @@ class GameDemoWorld extends NodeWithSize { ...@@ -27,6 +27,7 @@ class GameDemoWorld extends NodeWithSize {
sky.Image _imgNebula; sky.Image _imgNebula;
SpriteSheet _spriteSheet; SpriteSheet _spriteSheet;
SpriteSheet _spriteSheetUI;
Navigator _navigator; Navigator _navigator;
// Inputs // Inputs
...@@ -46,8 +47,10 @@ class GameDemoWorld extends NodeWithSize { ...@@ -46,8 +47,10 @@ class GameDemoWorld extends NodeWithSize {
int _numFrames = 0; int _numFrames = 0;
bool _isGameOver = false; bool _isGameOver = false;
GameDemoWorld(App app, this._navigator, ImageMap images, this._spriteSheet) : super(new Size(_gameSizeWidth, _gameSizeHeight)) { // Heads up display
Hud _hud;
GameDemoWorld(App app, this._navigator, ImageMap images, this._spriteSheet, this._spriteSheetUI) : super(new Size(_gameSizeWidth, _gameSizeHeight)) {
// Fetch images // Fetch images
_imgNebula = images["assets/nebula.png"]; _imgNebula = images["assets/nebula.png"];
...@@ -81,6 +84,10 @@ class GameDemoWorld extends NodeWithSize { ...@@ -81,6 +84,10 @@ class GameDemoWorld extends NodeWithSize {
userInteractionEnabled = true; userInteractionEnabled = true;
handleMultiplePointers = true; handleMultiplePointers = true;
_hud = new Hud(_spriteSheetUI);
_hud.zPosition = 1000.0;
addChild(_hud);
} }
// Methods for adding game objects // Methods for adding game objects
...@@ -585,6 +592,49 @@ class StarField extends Node { ...@@ -585,6 +592,49 @@ class StarField extends Node {
} }
} }
class Hud extends NodeWithSize {
SpriteSheet spriteSheetUI;
Sprite sprtBgScore;
Sprite sprtBgShield;
int _score = 0;
int get score => _score;
set score(int score) {
_score = score;
_updateHud();
}
Hud(this.spriteSheetUI) {
pivot = Point.origin;
sprtBgScore = new Sprite(spriteSheetUI["scoreboard.png"]);
sprtBgScore.pivot = Point.origin;
sprtBgScore.scale = 0.6;
addChild(sprtBgScore);
sprtBgShield = new Sprite(spriteSheetUI["bar_shield.png"]);
sprtBgShield.pivot = new Point(1.0, 0.0);
sprtBgShield.scale = 0.6;
addChild(sprtBgShield);
}
void spriteBoxPerformedLayout() {
// Set the size and position of HUD display
position = spriteBox.visibleArea.topLeft;
size = spriteBox.visibleArea.size;
// Position hud objects
sprtBgScore.position = new Point(20.0, 20.0);
sprtBgShield.position = new Point(size.width - 20.0, 20.0);
}
void _updateHud() {
}
}
class Nebula extends Node { class Nebula extends Node {
Nebula.withImage(sky.Image img) { Nebula.withImage(sky.Image img) {
......
...@@ -51,6 +51,7 @@ main() async { ...@@ -51,6 +51,7 @@ main() async {
class GameDemoApp extends App { class GameDemoApp extends App {
NavigationState _navigationState; NavigationState _navigationState;
GameDemoWorld _game;
void initState() { void initState() {
_navigationState = new NavigationState([ _navigationState = new NavigationState([
...@@ -84,16 +85,18 @@ class GameDemoApp extends App { ...@@ -84,16 +85,18 @@ class GameDemoApp extends App {
} }
Widget _buildGameScene(navigator, route) { Widget _buildGameScene(navigator, route) {
return new SpriteWidget( if (_game == null) _game = new GameDemoWorld(_app, navigator, _loader, _spriteSheet);
new GameDemoWorld(_app, navigator, _loader, _spriteSheet) return new SpriteWidget(_game);
);
} }
Widget _buildMainScene(navigator, route) { Widget _buildMainScene(navigator, route) {
return new Center( return new Center(
child: new RaisedButton( child: new RaisedButton(
child: new Text("Play"), child: new Text("Play"),
onPressed: () => navigator.pushNamed('/game') onPressed: () {
_game = new GameDemoWorld(_app, navigator, _loader, _spriteSheet, _spriteSheetUI);
navigator.pushNamed('/game');
}
) )
); );
} }
......
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