85 lines
1.6 KiB
JavaScript
85 lines
1.6 KiB
JavaScript
|
canvas.style.width = 500;
|
||
|
canvas.style.height = 500;
|
||
|
canvas.width = parseInt(canvas.style.width)*2;
|
||
|
canvas.height = parseInt(canvas.style.height)*2;
|
||
|
|
||
|
PEEP_STATE_COLORS[2] = "#8b9dc3";
|
||
|
|
||
|
var initData = {
|
||
|
"contagion":1/4,
|
||
|
"peeps":[[199,165,1],[292,165,1],[146,251,1],[347,251,1],[202,333,1],[297,334,1]],
|
||
|
"connections":[[4,2],[2,0],[0,1],[1,3],[3,5],[5,4]]
|
||
|
}
|
||
|
_makeUncuttable(initData.connections);
|
||
|
|
||
|
// Add peeps!
|
||
|
loadNetwork(initData);
|
||
|
|
||
|
// Update
|
||
|
update();
|
||
|
|
||
|
// SHOW CONTAGION UI
|
||
|
showContagionUI();
|
||
|
|
||
|
/////////////////////
|
||
|
// TEST EVERY PEEP //
|
||
|
/////////////////////
|
||
|
|
||
|
var PEEP_TO_INFECT = 0;
|
||
|
var lastCount = 0;
|
||
|
function _startSimulation(){
|
||
|
PEEP_TO_INFECT = 0;
|
||
|
peeps[PEEP_TO_INFECT].infect();
|
||
|
peeps[PEEP_TO_INFECT]._hack_TESTED = true;
|
||
|
lastCount = 1;
|
||
|
}
|
||
|
function _stopSimulation(){
|
||
|
peeps.forEach(function(peep){
|
||
|
peep._hack_TESTED = false;
|
||
|
});
|
||
|
}
|
||
|
function _stepSimulation(){
|
||
|
|
||
|
_infectPeople();
|
||
|
|
||
|
// Did count stay the same?
|
||
|
var countStayedTheSame = (lastCount == _numPeopleInfected());
|
||
|
lastCount = _numPeopleInfected();
|
||
|
|
||
|
// If so, yay, next round
|
||
|
if(countStayedTheSame){
|
||
|
PEEP_TO_INFECT++;
|
||
|
lastCount = 1;
|
||
|
if(peeps[PEEP_TO_INFECT]){
|
||
|
SIM_STEP = 0;
|
||
|
_resetToBeforeSimStarted();
|
||
|
var peep = peeps[PEEP_TO_INFECT];
|
||
|
peep.infect();
|
||
|
peep._hack_TESTED = true;
|
||
|
}else{
|
||
|
YOU_ARE_WINNER = true;
|
||
|
}
|
||
|
}else{
|
||
|
|
||
|
// If everyone's infected, FAIL.
|
||
|
var everyoneIsInfected = (_numPeopleInfected()==6);
|
||
|
if(everyoneIsInfected){
|
||
|
setTimeout(function(){
|
||
|
alert("Alas, everyone's infected!");
|
||
|
_stopSim();
|
||
|
},500);
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
}
|
||
|
|
||
|
function _numPeopleInfected(){
|
||
|
var count = 0;
|
||
|
peeps.forEach(function(peep){
|
||
|
if(peep.state==2) count++;
|
||
|
});
|
||
|
return count;
|
||
|
}
|
||
|
|