Skip to content

Instantly share code, notes, and snippets.

@Dev-Owl
Created December 19, 2019 12:18
Show Gist options
  • Save Dev-Owl/9159d66583d73ca990cdba1e0f9f22c8 to your computer and use it in GitHub Desktop.
Save Dev-Owl/9159d66583d73ca990cdba1e0f9f22c8 to your computer and use it in GitHub Desktop.
Manager for views in maze ball game
import 'dart:ui';
import 'package:mazeball/Views/base/baseView.dart';
import 'package:mazeball/Views/mainMenuBackground.dart';
import 'package:mazeball/Views/optionBackground.dart';
import 'package:mazeball/Views/playingView.dart';
import 'package:mazeball/game.dart';
import 'base/viewSwtichMessage.dart';
class ViewManager {
List<BaseView> views;
final MazeBallGame game;
BaseView get activeView =>
views.firstWhere((view) => view.active, orElse: () {
return null;
});
ViewManager(this.game) {
_generateViews();
}
void _generateViews() {
if (views == null) {
views = List();
views.add(PlayingView(GameView.Playing, this));
views.add(MainMenuBackground(GameView.MainMenuBackground, this));
views.add(OptionBackgroundView(GameView.Options, this));
}
}
void changeView(GameView nextView,{ViewSwitchMessage message}) {
activeView?.moveToBackground(message: message);
var nextActiveView =
views.firstWhere((view) => view.view == nextView, orElse: () {
return null;
});
nextActiveView?.setActive(message: message);
activeView?.active = false;
nextActiveView?.active = true;
}
void render(Canvas c) {
activeView?.render(c);
}
void update(double t) {
activeView?.update(t);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment