/**
* SPACE: cykla genom verktygen.
* mouseClick: anvä aktivt verktyg.
* Verktyg:
* Q,A: Höj / sänk marken.
* W,S: Mer/mindre brännbart vegetation.
* F: Starta brand.
* N: Nytt landskap.
*/
ForestFire fire;
final int FIRE=0, RAISE_GROUND=1, LOWER_GROUND=2, MORE_FUEL=3, LESS_FUEL=4, NEW_TERRAIN=5;
int tool = FIRE;
PFont font;
//-------------------------
void setup(){
size(200,210);
font = loadFont("Silkscreen-8.vlw");
textFont( font );
fire = new ForestFire(width,width);
frameRate(30);
}
//-------------------------
void draw(){
background(0);
fire.update();
fire.visualize();
if(mousePressed && mouseY=0 && mouseY>=0){
if(tool==FIRE) fire.startFire(mouseX,mouseY);
if(tool==RAISE_GROUND) fire.modifyTerrain(mouseX,mouseY,5);
if(tool==LOWER_GROUND) fire.modifyTerrain(mouseX,mouseY,-5);
if(tool==MORE_FUEL) fire.modifyFlammability(mouseX,mouseY,0.01);
if(tool==LESS_FUEL) fire.modifyFlammability(mouseX,mouseY,-0.01);
if(tool==NEW_TERRAIN) fire = new ForestFire(width,width);
}
colorMode(RGB,255);
textAlign(CENTER);
fill(255);
text( toolName() ,width/2, height-2);
}
//-------------------------
void keyPressed(){
if(key=='f') tool = FIRE;
if(key=='q') tool = RAISE_GROUND;
if(key=='a') tool = LOWER_GROUND;
if(key=='w') tool = MORE_FUEL;
if(key=='s') tool = LESS_FUEL;
if(key=='s') tool = LESS_FUEL;
if(key=='n') tool = NEW_TERRAIN;
if(key==' ') tool = (tool+1)%6;
}
//-------------------------
String toolName(){
if(tool==FIRE) return "start fire";
if(tool==RAISE_GROUND) return "raise terrain";
if(tool==LOWER_GROUND) return "lower terrain";
if(tool==MORE_FUEL) return "increase flammability";
if(tool==LESS_FUEL) return "decrease flammability";
if(tool==NEW_TERRAIN) return "randomize new forest";
return "";
}
//#########################