class Events { private int timer, eventLength, eventType; private boolean eventRunning; Events() { timer = eventLength = eventType = 0; eventRunning = false; } void trigger(int e) { if ( eventRunning ) return; switch(e) { case 0: doDeathSwarm(); break; case 1: doPulserOverload(); break; case 2: doSkullZilla(); break; case 3: doBumpers(); break; case 4: doSuperSuck(); break; case 5: doUltraBlow(); break; default: println("Bad event code!"); return; } eventType = e; eventRunning = true; } void update() { if ( eventRunning && millis() - timer > eventLength ) { switch(eventType) { case 0: endDeathSwarm(); break; case 1: endPulserOverload(); break; case 2: endSkullZilla(); break; case 3: endBumpers(); break; case 4: endSuperSuck(); break; case 5: endUltraBlow(); break; } eventRunning = false; } if ( eventRunning ) { fill(255); switch(eventType) { case 0: text("Death Swarm!!", 10, 30); break; case 1: text("Pulser Overload!!", 10, 30); break; case 2: text("Skullzilla!!", 10, 30); break; case 3: text("Pinball!!", 10, 30); break; case 4: text("Super Suck!!", 10, 30); break; case 5: text("Ultra Blow!!", 10, 30); break; } noFill(); } } private void doDeathSwarm() { clearEnemies(); for (int i = 0; i < 10; i++) skulls.add( new Deathskull() ); timer = millis(); eventLength = 10000; } private void endDeathSwarm() { for (int i = 0; i < skulls.size(); i++) ((Deathskull)skulls.get(i)).kill(); skulls.clear(); } private void doPulserOverload() { clearEnemies(); for (int i = 0; i < 40; i++) { Pulser p = new Pulser(int(random(0, 3)), random(width), random(height)); p.setVelocity(random(-5, 5), random(-5, 5)); pulsers.add(p); } timer = millis(); eventLength = 5000; } private void endPulserOverload() { } private void doSkullZilla() { clearEnemies(); skulls.add(new Deathskull(5)); timer = millis(); eventLength = 10000; } private void endSkullZilla() { } private void doBumpers() { clearEnemies(); nest.hide(); bumpers.add( new Bumper(random(100, 250), random(100, 320), random(-PI/4, 0)) ); bumpers.add( new Bumper(random(400, 650), random(100, 320), random(-PI/12, PI/12)) ); bumpers.add( new Bumper(random(750, 900), random(100, 320), random(0, PI/4)) ); bumpers.add( new Bumper(random(100, 250), random(450, 700), random(-PI, -3*PI/4)) ); bumpers.add( new Bumper(random(400, 650), random(450, 700), random(-PI - PI/12, -PI + PI/12)) ); bumpers.add( new Bumper(random(750, 900), random(450, 700), random(-5*PI/4, -PI)) ); timer = millis(); eventLength = 20000; } private void endBumpers() { for (int i = 0; i < bumpers.size(); i++) ((Bumper)bumpers.get(i)).kill(); bumpers.clear(); } private void doSuperSuck() { pl.setSuckRadius( pl.radius() * 8 ); timer = millis(); eventLength = 20000; } private void endSuperSuck() { pl.setSuckRadius( pl.radius() * 4 ); } private void doUltraBlow() { pl.setBlowRadius( pl.radius() * 8 ); timer = millis(); eventLength = 20000; } private void endUltraBlow() { pl.setBlowRadius( pl.radius() * 4 ); } private void clearEnemies() { for (int i = 0; i < skulls.size(); i++) ((Deathskull)skulls.get(i)).kill(); skulls.clear(); for (int i = 0; i < suckers.size(); i++) ((Sucker)suckers.get(i)).kill(); suckers.clear(); for (int i = 0; i < blowers.size(); i++) ((Blower)blowers.get(i)).kill(); blowers.clear(); } }