Skip to content

Commit af41525

Browse files
author
Julien Poulton
committed
Merge branch 'update-cg-player' into 'master'
[TECH] Use last version of cg-player See merge request codingame/game-engine!228
2 parents 6643548 + 124896d commit af41525

File tree

8 files changed

+181
-142
lines changed

8 files changed

+181
-142
lines changed

runner/src/main/java/com/codingame/gameengine/runner/Renderer.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import io.undertow.server.HttpHandler;
6060
import io.undertow.server.HttpServerExchange;
6161
import io.undertow.server.handlers.DisableCacheHandler;
62+
import io.undertow.server.handlers.SetHeaderHandler;
6263
import io.undertow.server.handlers.resource.FileResourceManager;
6364
import io.undertow.server.handlers.resource.Resource;
6465
import io.undertow.server.handlers.resource.ResourceHandler;
@@ -608,7 +609,7 @@ private void serveHTTP(List<Path> path) {
608609
.addHttpListener(port, "0.0.0.0")
609610
.setHandler(
610611
new DisableCacheHandler(
611-
Handlers.path(new ResourceHandler(mrs).addWelcomeFiles("test.html"))
612+
Handlers.path(new SetHeaderHandler(new ResourceHandler(mrs).addWelcomeFiles("test.html"), "Access-Control-Allow-Origin", "*"))
612613
.addPrefixPath(
613614
"/services/", new HttpHandler() {
614615
@Override

runner/src/main/resources/view/app.js

Lines changed: 54 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
11
import * as config from '../config.js'
2-
import {Drawer} from '../core/Drawer.js'
32
import {ErrorLog} from '../core/ErrorLog.js'
43
import {demo as defaultDemo} from '../demo.js'
54
import 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'

runner/src/main/resources/view/lib/pixi4.js

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

runner/src/main/resources/view/lib/player.js

Lines changed: 0 additions & 83 deletions
This file was deleted.

runner/src/main/resources/view/player.html

Lines changed: 90 additions & 0 deletions
Large diffs are not rendered by default.

runner/src/main/resources/view/player.js

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)