Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { LegacyRendererOptions } from '@kaggle-environments/core';

const ENERGY_TEXT = 'CGRWLPFDM A';
const WIDTH = 750;
const HEIGHT = 700;
Expand All @@ -13,38 +15,9 @@ const posY = (index: number, len: number) => {
return center + (height * (2 * index + 1 - len)) / len;
};

interface RendererOptions {
step: number;
width: number;
height: number;
parent: HTMLElement;
steps: Array<Array<any>>;
replay: {
name: string;
version: string;
steps: Array<any>;
configuration: Record<string, any>;
info: Record<string, any>;
};
agents: Array<any>;
playerNames: string[];

setCurrentStep: (step: number) => void;
setPlaying: (playing: boolean) => void;

unstable_replayerControls?: {
step: number;
setStep: (step: number) => void;
play: (continuing?: boolean) => void;
pause: () => void;
setPlaying: (playing: boolean) => void;
[key: string]: any;
};
}

export function renderer(options: RendererOptions) {
export function renderer(options: LegacyRendererOptions) {
const step = options.step;
const visList = options.steps[0][0].visualize;
const visList = (options.steps as any)[0][0].visualize;
const players = [options.playerNames[0] || 'Player 0', options.playerNames[1] || 'Player 1'];

let canvas = options.parent.querySelector('canvas');
Expand Down Expand Up @@ -93,7 +66,9 @@ export function renderer(options: RendererOptions) {
button.addEventListener('click', () => {
for (let i = 0; i < visList.length; i++) {
for (let j = 0; j < 2; j++) {
visList[i].current.players[j].ramainingTime = options.steps[i][j].observation.remainingOverageTime;
visList[i].current.players[j].ramainingTime = (options.steps as any)[i][
j
].observation.remainingOverageTime;
}
}
visList[0].ps = players;
Expand All @@ -106,7 +81,7 @@ export function renderer(options: RendererOptions) {
const form = document.createElement('form');
form.method = 'POST';
form.action = 'https://ptcgvis.heroz.jp/Visualizer/Replay/';
if (options.replay.info.EpisodeId == null) {
if (options?.replay?.info?.EpisodeId == null) {
form.action += k;
} else {
form.action += options.replay.info.EpisodeId + '/' + k;
Expand All @@ -127,7 +102,7 @@ export function renderer(options: RendererOptions) {
ctx.fillStyle = '#fff';
ctx.font = '30px sans-serif';
ctx.fillText('No visualizer data.', 10, 100);
const error = options.steps[0][0].error;
const error = (options.steps as any)[0][0].error;
if (error) {
ctx.fillText(error, 10, 150);
}
Expand Down
13 changes: 13 additions & 0 deletions kaggle_environments/envs/halite/visualizer/default/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Halite Visualizer</title>
</head>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>
22 changes: 22 additions & 0 deletions kaggle_environments/envs/halite/visualizer/default/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
{
"name": "@kaggle-environments/halite-visualizer",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"dev-with-replay": "cross-env VITE_REPLAY_FILE=./replays/test-replay.json vite",
"build": "tsc && vite build",
"preview": "vite preview"
},
"devDependencies": {
"cross-env": "^10.1.0",
"typescript": "^5.0.0",
"vite": "^5.0.0"
},
"dependencies": {
"@kaggle-environments/core": "workspace:*",
"htm": "^3.1.1",
"preact": "^10.13.2"
}
}

Large diffs are not rendered by default.

Loading
Loading