11import * as config from '../config.js'
2- import { Drawer } from '../core/Drawer.js'
32import { ErrorLog } from '../core/ErrorLog.js'
43import { demo as defaultDemo } from '../demo.js'
54import Parser from './lib/Parser.js'
5+ import './player.js'
6+
7+ const createCGPlayer = ( opts ) => {
8+ return window [ 'cg-player' ] . default ( {
9+ ...opts ,
10+ localStorageKey : 'ngStorage-gameParams' ,
11+ src : './player.html' ,
12+ libraries : {
13+ PIXI4 : './lib/pixi4.js'
14+ }
15+ } )
16+ }
617
718/* global fetch, angular, $, XMLHttpRequest */
819
9- function PlayerCtrl ( $scope , $timeout , $interval , $filter , drawerFactory , gameManagerFactory , $localStorage ) {
20+ function PlayerCtrl ( $scope , $timeout , $interval , $filter , $element ) {
1021 'ngInject'
1122 const ctrl = this
23+ let cgPlayer = null
1224 let player = null
1325 let lastWidth
1426 let currentFrame = null
1527
16- let playerLoadedPromise = new Promise ( ( resolve ) => {
17- $scope . playerLoaded = function ( playerApi ) {
18- ctrl . playerApi = playerApi
19- resolve ( playerApi )
20- }
21- } )
22-
23- $scope . gameParams = $localStorage . $default ( {
24- gameParams : { }
25- } )
2628 $scope . loadGame = loadGame
2729 $scope . selectReplay = selectReplay
2830 $scope . viewReplay = viewReplay
@@ -57,14 +59,32 @@ function PlayerCtrl ($scope, $timeout, $interval, $filter, drawerFactory, gameMa
5759
5860 /// //////////////
5961
60- function init ( ) {
61- drawerFactory . createDrawer ( Drawer ) . then ( drawer => {
62- $scope . drawer = drawer
63- fetchGame ( ) . then ( data => {
64- ctrl . data = data
65- loadGame ( )
66- } )
62+ async function init ( ) {
63+ cgPlayer = createCGPlayer ( {
64+ viewerUrl : '/core/Drawer.js'
6765 } )
66+ cgPlayer . on ( 'parsedGameInfo' , onParsedGameInfo )
67+ cgPlayer . createIframe ( $element . find ( '.cg-player-sandbox' ) [ 0 ] )
68+ cgPlayer . setOptions ( {
69+ showConsole : false ,
70+ showRankings : false ,
71+ showSmallRankings : false ,
72+ asyncRendering : true ,
73+ shareable : false ,
74+ showReplayPrompt : false
75+ } )
76+ fetchGame ( ) . then ( data => {
77+ ctrl . data = data
78+ loadGame ( )
79+ } )
80+ }
81+
82+ function onParsedGameInfo ( gameInfo ) {
83+ $scope . playerColors = { }
84+ gameInfo . agents . forEach ( function ( agent ) {
85+ $scope . playerColors [ agent . index ] = agent . color
86+ } )
87+ cgPlayer . off ( 'parsedGameInfo' , onParsedGameInfo )
6888 }
6989
7090 function loadGame ( ) {
@@ -83,12 +103,8 @@ function PlayerCtrl ($scope, $timeout, $interval, $filter, drawerFactory, gameMa
83103 ctrl . gameInfo = convertFrameFormat ( ctrl . data )
84104 $scope . agents = { ...ctrl . data . agents }
85105
86- ctrl . gameManager = gameManagerFactory . createGameManagerFromGameInfo ( $scope . drawer , ctrl . gameInfo , true )
87- ctrl . gameManager . subscribe ( onUpdate )
88-
89- return playerLoadedPromise . then ( playerApi => {
90- playerApi . initReplay ( ctrl . gameManager )
91- } )
106+ cgPlayer . sendFrames ( ctrl . gameInfo )
107+ cgPlayer . subscribe ( onUpdate )
92108 }
93109
94110 function onUpdate ( frame , progress , playing , isSubFrame , isTurnBased , atEnd ) {
@@ -170,7 +186,6 @@ function PlayerCtrl ($scope, $timeout, $interval, $filter, drawerFactory, gameMa
170186 let result = null
171187 try {
172188 const json = JSON . parse ( this . responseText )
173- json . agents . forEach ( agent => { agent . color = Drawer . playerColors [ agent . index ] } )
174189 result = json
175190 } catch ( e ) {
176191 console . error ( e )
@@ -211,8 +226,18 @@ function PlayerCtrl ($scope, $timeout, $interval, $filter, drawerFactory, gameMa
211226 }
212227
213228 function viewReplay ( ) {
214- drawerFactory . createDrawer ( Drawer , ctrl . introReplayData ) . then ( drawer => {
215- $scope . replayDrawer = drawer
229+ const cgPlayerReplay = createCGPlayer ( {
230+ viewerUrl : '/core/Drawer.js' ,
231+ customDemo : ctrl . introReplayData
232+ } )
233+ cgPlayerReplay . createIframe ( $element . find ( '.cg-player-sandbox-replay' ) [ 0 ] )
234+ cgPlayerReplay . setOptions ( {
235+ showConsole : false ,
236+ showRankings : false ,
237+ showSmallRankings : false ,
238+ asyncRendering : true ,
239+ shareable : false ,
240+ showReplayPrompt : false
216241 } )
217242 $scope . showViewReplayPopup = true
218243 }
@@ -326,7 +351,7 @@ function PlayerCtrl ($scope, $timeout, $interval, $filter, drawerFactory, gameMa
326351 }
327352}
328353
329- angular . module ( 'player' )
354+ angular . module ( 'player' , [ 'ngStorage' ] )
330355 . controller ( 'PlayerCtrl' , PlayerCtrl )
331356 . directive ( 'resizeHandle' , function ( $localStorage ) {
332357 'ngInject'
0 commit comments