2017-09-24 22:23:22 +00:00
|
|
|
module TK.SpaceTac.UI {
|
2017-10-08 21:25:24 +00:00
|
|
|
/**
|
|
|
|
* Router to other views
|
|
|
|
*
|
|
|
|
* It will go to the expected view, by examining the current game session.
|
|
|
|
*
|
|
|
|
* If needed, it will go back to the asset loading state.
|
|
|
|
*/
|
2018-05-15 14:57:45 +00:00
|
|
|
export class Router extends BaseView {
|
2015-03-12 00:00:00 +00:00
|
|
|
create() {
|
2018-05-15 14:57:45 +00:00
|
|
|
super.create();
|
|
|
|
|
|
|
|
let session = this.session;
|
2015-03-12 00:00:00 +00:00
|
|
|
|
2017-10-09 22:59:49 +00:00
|
|
|
if (session.getBattle()) {
|
2015-03-12 00:00:00 +00:00
|
|
|
// A battle is raging, go to it
|
2018-05-15 14:57:45 +00:00
|
|
|
this.goToState("battle", AssetLoadingRange.BATTLE, { player: session.player, battle: session.getBattle() });
|
2017-02-05 22:03:35 +00:00
|
|
|
} else if (session.hasUniverse()) {
|
2017-10-09 22:59:49 +00:00
|
|
|
// Campaign mode
|
2017-05-31 23:11:29 +00:00
|
|
|
if (session.isFleetCreated()) {
|
|
|
|
// Go to the universe map
|
2018-05-15 14:57:45 +00:00
|
|
|
this.goToState("universe", AssetLoadingRange.CAMPAIGN, { player: session.player, universe: session.universe });
|
2017-10-09 22:59:49 +00:00
|
|
|
} else if (session.isIntroViewed()) {
|
|
|
|
// Build initial fleet
|
|
|
|
this.goToState("creation", AssetLoadingRange.CAMPAIGN);
|
2017-05-31 23:11:29 +00:00
|
|
|
} else {
|
2017-10-09 22:59:49 +00:00
|
|
|
// Show intro
|
2017-10-08 21:25:24 +00:00
|
|
|
this.goToState("intro", AssetLoadingRange.CAMPAIGN);
|
2017-05-31 23:11:29 +00:00
|
|
|
}
|
2017-02-05 22:03:35 +00:00
|
|
|
} else {
|
2017-10-09 22:59:49 +00:00
|
|
|
// No battle, no campaign, go back to menu to decide what to do
|
2017-10-08 21:25:24 +00:00
|
|
|
this.goToState("mainmenu", AssetLoadingRange.MENU);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-05-15 14:57:45 +00:00
|
|
|
goToState(name: string, asset_range: AssetLoadingRange, data?: object) {
|
2017-10-08 21:25:24 +00:00
|
|
|
if (AssetLoading.isRangeLoaded(this.game, asset_range)) {
|
2018-05-15 14:57:45 +00:00
|
|
|
this.scene.start(name, data);
|
2017-10-08 21:25:24 +00:00
|
|
|
} else {
|
2018-05-15 14:57:45 +00:00
|
|
|
this.scene.start("loading", { range: asset_range });
|
2015-03-12 00:00:00 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|