123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520 |
- import processing.video.*;
- import ddf.minim.*;
-
- PGraphics tram, street, keymaker, ste, deaths1, deaths2, gender, overdose;
- PImage tram_ph, street_ph, keymaker_ph, ste_ph, deaths1_ph, deaths2_ph, gender_ph, overdose_ph;
-
- PImage[] imgs = new PImage[3575];
- PImage[] gender_imgs = new PImage[12];
-
- //PImage[] imgs = new PImage[8];
- String[] listFileNames(String dir) {
- File file = new File(dir);
- if (file.isDirectory()) {
- String names[] = file.list();
- return names;
- } else {
- return null;
- }
- }
-
- String[] imagenames;
-
- boolean earthSaved;
- String earthText = "Click\nto Save\nthe Earth";
- PImage ste_frame;
- Minim m;
- AudioPlayer s1, s2;
- int overdoseTime = 150;
-
- Movie ste_mov;
-
- Movie street_mov, street_loop, keymaker_mov, tram_mov;
- Movie gender_mov;
- Projection[] projections = new Projection[8];
-
- int activeProjection;
-
- int resetTimer;
- int resetTime = 240000; //5 minutes in MS
- void startEnd() {
- if (millis() > resetTimer + resetTime) {
- reset();
- resetTimer = millis();
- }
- }
- void reset() {
- m.stop();
- m = new Minim(this);
- s1 = m.loadFile(dataPath("")+"/ste/sound.mp3", 1024);
- s2 = m.loadFile(dataPath("")+"/street/mwen_meer.mp3", 1024);
- tram_mov.stop();
- street_mov.stop();
- street_loop.stop();
- //gender_mov.stop();
- keymaker_mov.stop();
- keymaker_mov.play();
- keymaker_mov.jump(0);
- keymaker_mov.pause();
- streetLevel = 1;
- tramLife = true;
- overDoseLife = true;
- for (int i = 0; i < projections.length; i++) {
- projections[i].invisibility = 255;
- }
- earthSaved = false;
- earthText = "Click\nto Save\nthe Earth";
-
- projections[2].activate();
- level = 1;
- }
-
- int level = 0;
- int streetLevel = 1;
- void mouseClicked() {
- //projections[activeProjection].activate();
- }
- void mousePressed() {
- switch(level) {
- case(0):
- keymaker_mov.play();
- keymaker_mov.pause();
- projections[2].activate();
- level++;
- break;
- case(1):
- keymaker_mov.play();
- break;
- case(2):
- level++;
- break;
- case(3):
- s1.play();
- earthText = "Earth Saved";
- earthSaved = true;
- level++;
- break;
- case(4):
- projections[3].deactivate();
- street_mov.play();
- //street_mov.jump(50);
- projections[1].activate();
- s2.loop();
- level++;
- break;
- case(6):
- street_mov.play();
- break;
- case(7):
- projections[1].deactivate();
- s2.setVolume(0.8);
- level+=2;
- projections[4].activate();
- projections[5].activate();
- break;
- //case(8):
- //level++;
- //break;
- case(9):
- level++;
- projections[4].deactivate();
- projections[5].deactivate();
- tram_mov.play();
- tram_mov.pause();
- projections[0].activate();
- break;
- case(10):
- tram_mov.play();
- break;
- case(12):
- keymaker_mov.play();
- keymaker_mov.jump(0);
- keymaker_mov.pause();
- for (int i = 0; i < projections.length; i++) {
- projections[i].activate();
- }
- level++;
- break;
- case(13):
- reset();
- break;
-
- default:
- break;
- }
- resetTimer = millis();
- }
- void mouseReleased() {
- switch(level) {
- case(1):
- keymaker_mov.pause();
- if (keymaker_mov.time()>9.4) {
- keymaker_mov.stop();
- level+=2;
- projections[3].activate();
- ste_mov.loop();
- }
- break;
- case(6):
- if (street_mov.time() < 62.8) {
- street_mov.pause();
- } else {
- street_mov.stop();
- street_loop.loop();
- streetLevel = 2;
- level++;
- }
- break;
- case(10):
- if (!playTram) tram_mov.pause();
- break;
- default:
- break;
- }
- resetTimer = millis();
- }
-
- //VideoControl tramControl, streetControl, keymakerControl;
- //Projection tram, street, keymaker;
-
- void setup() {
- //size(1920, 1080);
- fullScreen();
- //pg_tram = createGraphics(540, 540);
- m = new Minim(this);
-
- imagenames = listFileNames(dataPath("") + "/ich");
- for (int i = 0; i < imgs.length; i++) {
- imgs[i] = loadImage(dataPath("") + "/ich/" + imagenames[i]);
- }
-
- street = createGraphics(540, 540);
- street_mov = new Movie(this, dataPath("") + "/street.mp4");
- street_loop = new Movie(this, dataPath("") + "/streetloop.mp4");
- s2 = m.loadFile(dataPath("")+"/street/mwen_meer.mp3", 1024);
-
- //street_mov.loop();
-
- keymaker = createGraphics(540, 540);
- keymaker_mov = new Movie(this, dataPath("") + "/keymaker.mp4");
- //street_mov.loop();
-
- tram = createGraphics(540, 540);
- tram_mov = new Movie(this, dataPath("") + "/tram.mp4");
-
-
- ste = createGraphics(540, 540);
- ste.beginDraw();
- ste.textAlign(CENTER);
- ste.imageMode(CENTER);
- ste.textSize(ste.width/7);
- ste.endDraw();
- s1 = m.loadFile(dataPath("")+"/ste/sound.mp3", 1024);
- ste_frame = loadImage(dataPath("") + "/ste/Golden-Round-Frame-PNG.png");
- ste_mov = new Movie(this, dataPath("") + "/ste/video.mp4");
-
-
- deaths1 = createGraphics(270, 270);
- deaths1.beginDraw();
- deaths1.noStroke();
- deaths1.endDraw();
-
- deaths2 = createGraphics(270, 270);
- deaths2.beginDraw();
- deaths2.noStroke();
- deaths2.endDraw();
-
-
-
-
- gender = createGraphics(270, 270);
- //gender_mov = new Movie(this, dataPath("") + "/gender.mp4");
- for (int i = 0; i < gender_imgs.length; i++) {
- gender_imgs[i] = loadImage(dataPath("") + "/gender/" + i + ".png");
- }
-
- overdose = createGraphics(270, 270);
- overdose.beginDraw();
- overdose.imageMode(CENTER);
- overdose.endDraw();
-
- projections[0] = new Projection(0, 0, 0, 540, 540, tram);
- projections[1] = new Projection(1, 540, 0, 540, 540, street);
- projections[2] = new Projection(2, 1080, 0, 540, 540, keymaker);
- projections[3] = new Projection(3, 0, 540, 540, 540, ste);
- projections[4] = new Projection(4, 540, 540, 270, 270, deaths1);
- projections[5] = new Projection(5, 810, 540, 270, 270, deaths2);
- projections[6] = new Projection(6, 540, 810, 270, 270, gender);
- projections[7] = new Projection(7, 810, 810, 270, 270, overdose);
-
-
- //tram_ph = loadImage(dataPath("") + "/placeholders/tram.png");
- //street_ph = loadImage(dataPath("") + "/placeholders/tram.png");
- //keymaker_ph = loadImage(dataPath("") + "/placeholders/keymaker.png");
- //ste_ph = loadImage(dataPath("") + "/placeholders/ste.png");
- deaths1_ph = loadImage(dataPath("") + "/placeholders/deaths1.png");
- deaths2_ph = loadImage(dataPath("") + "/placeholders/deaths2.png");
- gender_ph = loadImage(dataPath("") + "/placeholders/gender.png");
- overdose_ph = loadImage(dataPath("") + "/placeholders/overdose.png");
- //projections[3].activate();
-
- for (int i = 0; i < stars.length; i ++) {
- stars[i] = new Star(deaths1);
- stars2[i] = new Star(deaths2);
- }
-
-
- frameRate(30);
-
- keymaker_mov.play();
- keymaker_mov.pause();
- projections[2].activate();
- level++;
- }
-
- boolean pauseStreet;
- boolean playTram;
-
- boolean tramLife = true;
- double tramWait;
-
- boolean playOverDose;
- boolean overDoseLife = true;
- double overDoseWait;
-
- void overDoseCooldown() {
- if (overDoseLife) {
- overDoseWait = millis();
- overDoseLife = false;
- }
- if (millis() > overDoseWait + 15000) {
- playOverDose = false;
- level++;
- projections[7].deactivate();
- projections[6].activate();
- //gender_mov.play();
- //gender_mov.pause();
- }
- }
-
- void tramCooldown() {
- if (tramLife) {
- tramWait = millis();
- tramLife = false;
- }
- if (millis() > tramWait + 7000) {
- playTram = false;
- level++;
- projections[0].deactivate();
- projections[7].activate();
- playOverDose = true;
- }
- }
-
- void movieEvent(Movie m) {
- m.read();
- if (m == street_mov && m.time() > 53 && level == 5) {
- pauseStreet = true;
- }
- if (m == tram_mov && m.time() > 4 && level == 10) {
- playTram = true;
- }
- }
-
- /*
- if(level==5){
- if(street_mov.time() > 59){
- street_mov.pause();
- }
- }
- */
- float rotator;
- int randImgNo;
- int lag, previous;
- float imgSizeRatio = 0.0;
-
- int mousePrevious;
- void draw() {
- /*
- if (level == 12 || level == 13) {
- if (mouseX / 100 != mousePrevious) {
- float genderPos = map(mouseX, 0, width, 0, gender_mov.duration());
- gender_mov.play();
- gender_mov.jump(genderPos);
- gender_mov.pause();
- }
- mousePrevious = mouseX / 100;
- }
- */
-
-
- if (playTram) {
- tramCooldown();
- }
- if (playOverDose) {
- overDoseCooldown();
- }
- if (pauseStreet) {
- street_mov.jump(59.1);
- street_mov.pause();
- level++;
- pauseStreet = false;
- }
- background(0);
-
- // TRAM
- tram.beginDraw();
- tram.image(tram_mov, 0, 0, tram.width, tram.height);
- tram.endDraw();
-
- // STREET
- street.beginDraw();
- if (streetLevel == 1)
- street.image(street_mov, 0, 0, street.width, street.height);
- else if (streetLevel == 2)
- street.image(street_loop, 0, 0, street.width, street.height);
- street.endDraw();
-
- // KEYMAKER
- keymaker.beginDraw();
- keymaker.image(keymaker_mov, 0, 0, keymaker.width, keymaker.height);
- keymaker.endDraw();
-
- // SAVE THE EARTH
- ste.beginDraw();
- ste.clear();
- ste.image(ste_mov, ste.width/2, ste.height/2, ste.width/1.777, ste.height/1.777);
- ste.fill(255);
- if (earthSaved) {
- ste.pushMatrix();
- ste.translate(ste.width/2, ste.height/2);
- ste.rotate(rotator);
- ste.image(ste_frame, 0, 0, ste.width, ste.height);
- ste.popMatrix();
- rotator+=0.01;
- }
- int steY = ste.height/2-int(!earthSaved)*100;
- for (int x = -1; x < 2; x++) {
- ste.text(earthText, ste.width/2+x, steY);
- ste.text(earthText, ste.width/2, steY);
- }
- if (earthSaved) {
- ste.fill(250, 230, 80);
- }
- ste.text(earthText, ste.width/2, steY);
- //ste.text(earthText, ste.width/2, ste.height/2-int(!earthSaved)*100);
- ste.endDraw();
-
-
- // DEATHS 1
- deaths1.beginDraw();
- deaths1.background(255, 165, 15);
- paintStars();
- deaths1.endDraw();
-
- // DEATHS 2
- deaths2.beginDraw();
- deaths2.background(255, 165, 15);
- paintStars2();
- deaths2.endDraw();
-
- // GENDER
- gender.beginDraw();
- //gender.image(gender_mov, 0, 0, gender.width, gender.height);
- gender.image(gender_imgs[int(map(mouseX,0,width,0,gender_imgs.length))], 0, 0, gender.width, gender.height);
- gender.endDraw();
-
- // OVERDOSE
- int current = millis();
- int ellapsed = current - previous;
- previous = current;
- lag += ellapsed;
- while (lag >= overdoseTime) {
- randImgNo = (int)(Math.random()*imgs.length);
- lag -= overdoseTime;
- float minSize = min(imgs[randImgNo].width, imgs[randImgNo].height);
- imgSizeRatio = 270.0/minSize;
- }
-
- overdose.beginDraw();
- overdose.image(imgs[randImgNo], overdose.width/2, overdose.height/2, imgs[randImgNo].width*imgSizeRatio, imgs[randImgNo].height*imgSizeRatio);
- overdose.endDraw();
-
-
- // PROJECTION OVERLAYS
- for (int i = 0; i < projections.length; i++) {
- projections[i].update();
- projections[i].display();
- }
-
- startEnd();
- }
-
-
-
- int currentProjection;
- int activationTimer = 2000;
- class Projection {
- int id, x, y, w, h;
- boolean active;
- boolean deactivating;
- boolean wasActive;
- boolean spawned, activating;
- int flashBrightness = 255;
- int invisibility = 255;
- double activationTime;
- PGraphics pg;
- Projection(int id_, int x_, int y_, int w_, int h_, PGraphics pg_) {
- id = id_;
- x = x_;
- y = y_;
- w = w_;
- h = h_;
- pg = pg_;
- }
- void activate() {
- /*
- for (int i = id-1; i >= 0; i--) {
- projections[i].deactivate();
- }
- activeProjection++;
- if (activeProjection >= projections.length) {
- activeProjection = 0;
- }
- */
- activationTime = millis();
- flashBrightness = 255;
- activating = true;
- active = true;
- invisibility = 0;
- }
- void deactivate() {
- active = false;
- activating = false;
- deactivating = true;
- }
- void update() {
- if (activating) {
- flashBrightness -= 10;
- if (millis() > activationTime + activationTimer) {
- activating = false;
- }
- }
- if (deactivating) {
- invisibility +=5;
- if (invisibility >= 127) {
- deactivating = false;
- }
- }
- }
- void display() {
- //tint(255);
- image(pg, x, y, w, h);
- if (activating) {
- fill(255, flashBrightness);
- } else {
- fill(0, invisibility);
- }
- rect(x, y, w, h);
- }
- }
|