JSFiddle - React, Tailwind, and code Playground
by Daedalus
JavaScript
let inits = [{
state: 'alive',
name: 'test1',
roll: 5,
next: false
}, {
state: 'alive',
name: 'test2',
roll: 10,
next: false
}, {
state: 'ko',
name: 'test3',
roll: 55,
next: false
}, {
state: 'alive',
name: 'test4',
roll: 15,
next: false
}, {
state: 'alive',
name: 'test5',
roll: 5,
next: false
}];
inits.sort((a, b) => b.roll - a.roll);
console.clear();
console.log(inits);
function next() {
let nextInits = inits.filter(init => init.state === 'alive').filter(init => init.next);
let nextInit;
if (nextInits.length === 1) {
nextInit = nextInits[0];
} else if (nextInits.length === 0) {
nextInit = inits[0];
} else {
nextInit = inits[0];
}
let index = inits.indexOf(nextInit);
if (typeof inits[index] !== 'undefined') {
inits[index].next = false;
if (typeof inits[index + 1] === 'undefined') {
if (typeof inits[0] !== 'undefined') {
inits[0].next = true;
console.log('starting from top, new round');
}
} else {
if (inits[index + 1].state !== 'alive') {
next();
} else {
inits[index + 1].next = true;
}
}
console.log(inits[index].name, inits[index].roll);
}
}
next();
next();
next();
next();
/*console.log('test6 pushed');
inits.push({
state: 'alive',
name: 'test6',
roll: 60,
next: false
});
inits.sort((a, b) => b.roll - a.roll);*/
next();
next();
next();
next();
next();
next();