package lilWorld; import java.util.ArrayList; import java.util.List; import processing.core.PApplet; import processing.core.PVector; public class DrifterSystem { Drifter temp; Creeper tempC; Drifter d; ListallDrifters; PApplet parent; int creatureNo; float G = 0.1f; int size1; int size2; float crPlus = 0; float forceVal = 12; DrifterSystem(PApplet p, int n, int s1, int s2) { allDrifters = new ArrayList(); parent= p; creatureNo = n; size1 = s1; size2 = s2; for(int i = 0;i < creatureNo; i++) { PVector a = new PVector(0.0f,0.0f); PVector v = new PVector(parent.random(-3,3),parent.random(-3,3)); PVector l = new PVector(parent.random(parent.width),parent.random(parent.height/4)); Drifter c = new Drifter(l, a, v, (int)parent.random(size1,size2), parent); System.out.println("new creature here " + i); //System.out.println(c.graphicsNum + "THIS IS THE NUMBER"); allDrifters.add((Drifter) c); } } public void pushDrifters() { for (int i = 0; i < allDrifters.size(); i++) { d = allDrifters.get(i); // pick a creeper //System.out.println(c.getClass().toString()); for(int j = 0; j magnitude * direction temp.applyForce(dir); d.startTime(500); temp.startTime(500); } else { //System.out.println("repelling!"); //System.out.println(c.loc+" "+temp.loc+" should be different"); PVector dir = PVector.sub(d.loc,temp.loc); // Calculate direction of force float dist = dir.mag(); // Distance between objects dir.normalize(); // Normalize to between 0 and 1 dist = parent.constrain(dist,10,100); // Keep distance within a reasonable range float force = -1 * forceVal * G / (dist * dist); // Repelling force is inversely proportional to distance dir.mult(force); // Get force vector --> magnitude * direction temp.applyForce(dir); //temp.changeColor(); //d.changeColor(); //d.startTime(500); //temp.startTime(500); } } } } } } } public void moveAllDrifters() { for(int i = 0;i < allDrifters.size(); i++) { temp = allDrifters.get(i); temp.move(); } } public void showAllDrifters() { for(int i = 0;i < allDrifters.size(); i++) { //System.out.println("HERE"); d = allDrifters.get(i); // pick a drifter d.show(); } } public void makeBabies(PVector location) { int numberOfBabies = (int) parent.random(0, Vars.drifterBabies); System.out.println(numberOfBabies+" BABIES BABIES!"); for(int i = 0; id.endOfTimeToBeEaten) { System.out.println("YUM YUM"); d.size+=5; d.changeColor(); d.babyTime = true; other.allCreepers.remove(j); } } } } }