diff --git a/html5/images/sprite_invader_killed.png b/html5/images/sprite_invader_killed.png
new file mode 100644
index 0000000..f1af99c
Binary files /dev/null and b/html5/images/sprite_invader_killed.png differ
diff --git a/html5/images/sprite_invader_pending.png b/html5/images/sprite_invader_pending.png
new file mode 100644
index 0000000..c90922c
Binary files /dev/null and b/html5/images/sprite_invader_pending.png differ
diff --git a/html5/images/sprite_invader_ready.png b/html5/images/sprite_invader_ready.png
new file mode 100644
index 0000000..87338e3
Binary files /dev/null and b/html5/images/sprite_invader_ready.png differ
diff --git a/html5/kubeinvaders.js b/html5/kubeinvaders.js
index 8ba7b84..f14ffa4 100644
--- a/html5/kubeinvaders.js
+++ b/html5/kubeinvaders.js
@@ -46,8 +46,6 @@ var random_code = (Math.random() + 1).toString(36).substring(7);
// nodes list from kubernetes
var nodes = [];
-var mergeNodesAndPods = [];
-
// Hash of aliens related to pods or nodes
var aliens = [];
var aliensWidth = 40;
@@ -664,11 +662,19 @@ function getPods() {
if (chaos_pods) {
var oReq = new XMLHttpRequest();
oReq.onload = function () {
- json_parsed = JSON.parse(this.responseText);
+ new_pods = JSON.parse(this.responseText)["items"];
+
+ // Pod might just be killed in game, but not terminated in k8s yet.
+ for (i=0; i alien.name == new_pods[i].name && alien.status == "killed")) {
+ new_pods[i].status = "killed";
+ }
+ }
+
if (nodes && nodes.length > 0) {
- pods = json_parsed["items"].concat(nodes);
+ pods = new_pods.concat(nodes);
} else {
- pods = json_parsed["items"];
+ pods = new_pods;
}
};;
oReq.open("GET", k8s_url + "/kube/pods?action=list&namespace=" + namespace);
@@ -703,7 +709,7 @@ window.setInterval(function getKubeItems() {
getNodes();
getPods();
}
-}, 1000)
+}, 500)
function keyDownHandler(e) {
if (!modal_opened && game_mode_switch) {
@@ -800,14 +806,14 @@ function keyUpHandler(e) {
document.addEventListener("keydown", keyDownHandler, false);
document.addEventListener("keyup", keyUpHandler, false);
-function drawAlien(alienX, alienY, name) {
+function drawAlien(alienX, alienY, name, status) {
var image = new Image(); // Image constructor
- if (contains(nodes, name)) {
+ if (nodes.some((node) => node.name == name)) {
image.src = './images/k8s_node.png';
ctx.drawImage(image, alienX, alienY, 30, 40);
}
else {
- image.src = './images/sprite_invader.png';
+ image.src = `./images/sprite_invader_${status}.png`;
ctx.font = '8px pixel';
ctx.drawImage(image, alienX, alienY, 40, 40);
if (showPodName) {
@@ -831,14 +837,19 @@ function checkRocketAlienCollision() {
if(contains(rangeX, rocketX)) {
collisionDetected = true;
- aliens[i]["active"] = false;
- if (contains(nodes, aliens[i]["name"])) {
+ aliens[i]["status"] = "killed";
+ // Aliens might be updated before new pods are fetched
+ for (j=0; j node.name == aliens[i]["name"])) {
+ aliens[i]["active"] = false;
startChaosNode(aliens[i]["name"]);
- aliens[i]["name"] = "killed_pod";
}
else {
deletePods(aliens[i]["name"]);
- aliens[i]["name"] = "killed_pod";
}
return true;
}
@@ -974,7 +985,7 @@ window.setInterval(function draw() {
for (i=0; i