diff --git a/CitizenClass.pde b/CitizenClass.pde index 7cc17c7..bc4c196 100644 --- a/CitizenClass.pde +++ b/CitizenClass.pde @@ -1,5 +1,5 @@ import java.lang.Double; -int i_citizenAmount = 10; +int i_citizenAmount = 20; int i_selectedCitizen; int i_femaleCount; @@ -42,24 +42,23 @@ void initCitizen() { citizen[i] = new Citizen(int(random(0, houses.size())), S_citizenNames[gender][int(random(0, S_citizenNames[gender].length))], gender, age); } for (int i = 0; i < citizen.length; i++) { - if (i != i_selectedCitizen) + if (i != i_selectedCitizen) //hacky to set citizen[0] to a specific place citizen[i].spawn(citizen[i].i_home); - else citizen[i].spawn(8, 8); - if (citizen[i].b_randomRun) citizen[i].goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height)), 10); //bad + //if (citizen[i].b_randomRun) citizen[i].goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height)), 10); //bad } selectCitizen(0); } void selectCitizen(int i) { - citizen[i_selectedCitizen].b_randomRun = true; - citizen[i_selectedCitizen].b_moving = true; + //citizen[i_selectedCitizen].b_randomRun = true; + //citizen[i_selectedCitizen].b_moving = true; citizen[i_selectedCitizen].b_selected = false; - if (!b_autoPlayAfterSelect) { - citizen[i].b_randomRun = false; - citizen[i].b_moving = false; - } + //if (!b_autoPlayAfterSelect) { + // citizen[i].b_randomRun = false; + // citizen[i].b_moving = false; + //} citizen[i].b_selected = true; i_selectedCitizen = i; } @@ -73,7 +72,7 @@ class Citizen extends Entity { float f_movementSpeed; float f_FOV = PI / 4.0; int i_visionDistance = 60; - boolean b_randomRun; + boolean b_randomRun = b_autoPlay; GraphNode startNode, endNode; int startNodeID, endNodeID; GraphNode[] rNodes; @@ -97,6 +96,8 @@ class Citizen extends Entity { c_selected = color(128, 50, 50); c_color = color(0, 0, 0); c_stroke = color(255, 255, 255); + + if (b_randomRun) goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height)), 10); //bad } //citizen kann "lookat" mit 180° winkel mit bullseye förmigen gradient welches die chance etwas zu bemerken darstellt //setFocus(entity) durch geräusche auch von objekten ausserhalb des sichtfeldes aufrufbar @@ -115,9 +116,9 @@ class Citizen extends Entity { void update() { f_angle = v2_direction.heading(); - - turn(); - + if (b_turning) { + turn(); + } if (b_moving) { //if rNodes.length > 0 move(); diff --git a/Entities.pde b/Entities.pde index abfd4ca..0535704 100644 --- a/Entities.pde +++ b/Entities.pde @@ -61,7 +61,7 @@ class Entity { void despawn() { b_linked = false; } - + void turnTo(float x, float y, float speed) { f_turnSpeed = speed; if (f_turnSpeed > 0) { @@ -86,7 +86,7 @@ class Entity { b_turning = false; } } - + void display() { pg_map.stroke(c_stroke); pg_map.fill(c_color); diff --git a/PathFinding.pde b/PathFinding.pde index fd2f544..e914f7b 100644 --- a/PathFinding.pde +++ b/PathFinding.pde @@ -19,29 +19,6 @@ void initPathFinding() { -//void mousePressed() { -// startNode = gs.getNodeAt(mouseX, mouseY, 0, 10.0f); -// if (startNode != null) -// selectMode = true; -//} - -//void mouseDragged() { -// if (selectMode) -// endNode = gs.getNodeAt(mouseX, mouseY, 0, 10.0f); -//} - -//void mouseReleased() { -// if (selectMode && endNode!= null && startNode != null && startNode != endNode) { -// start = startNode.id(); -// end = endNode.id(); -// usePathFinder(pathFinder); -// } -// selectMode = false; -// startNode = endNode = null; -//} - - - PImage img_nodes; void makeGraphFromImage(Graph g, PImage map, int tilesX, int tilesY, boolean allowDiagonals) { img_nodes.loadPixels(); diff --git a/UI.pde b/UI.pde index eea0550..b86aa7e 100644 --- a/UI.pde +++ b/UI.pde @@ -22,7 +22,7 @@ int i_uiOffsetX, i_uiOffsetY, i_uiOffsetStartX, i_uiOffsetStartY, i_initUiY; void drawUI() { //camera tracking - if (b_cameraFollow) { + if (b_cameraLock) { if (b_mapZoom) { i_mapOffsetX = width/2-int(citizen[i_selectedCitizen].f_xPos)/2; i_mapOffsetY = height/2-int(citizen[i_selectedCitizen].f_yPos)/2; @@ -71,12 +71,12 @@ void drawUI() { "Angle: " + citizen[i_selectedCitizen].f_angle, "Movement speed: " + round(citizen[i_selectedCitizen].f_movementSpeed*100), "Random Run: " + citizen[i_selectedCitizen].b_randomRun, - "Turning: " + citizen[i_selectedCitizen].b_turning, + "Turning: " + citizen[i_selectedCitizen].b_turning, " ", "Sunrise: " + S_sunrise, "Sunset: " + S_sunset, - "Autoplay: " + b_autoPlayAfterSelect, - "Locked Camera: " + b_cameraFollow, + "Autoplay: " + b_autoPlay, + "Locked Camera: " + b_cameraLock, "Debug Mode: " + b_debug, //"Velocity: ", //"Outside", @@ -102,21 +102,41 @@ void drawUI() { void buttonFunctions(int s) { switch (s) { case(0): - citizen[i_selectedCitizen].b_moving = !citizen[i_selectedCitizen].b_moving; - citizen[i_selectedCitizen].b_randomRun = !citizen[i_selectedCitizen].b_randomRun; - b_autoPlayAfterSelect = !b_autoPlayAfterSelect; + b_autoPlay = !b_autoPlay; + //citizen[i_selectedCitizen].b_randomRun = b_autoPlay; + //citizen[i_selectedCitizen].b_moving = b_autoPlay; + if (b_autoPlay) { + for (int i = 0; i < citizen.length; i++) { + if (!citizen[i].b_moving) { + if (citizen[i].nextNode == 0) { + citizen[i].goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height)), 10); + } else { + citizen[i].b_moving = true; + } + } + if (!citizen[i].b_randomRun) { + citizen[i].b_randomRun = true; + } + } + } else { + for (int i = 0; i < citizen.length; i++) { + citizen[i].b_moving = false; + citizen[i].b_randomRun = false; + citizen[i].b_turning = false; + } + } break; case(1): - b_cameraFollow = !b_cameraFollow; + b_cameraLock = !b_cameraLock; break; case(2): b_debug = !b_debug; - + //dirty - for(int i = 0; i < citizen.length; i++){ + for (int i = 0; i < citizen.length; i++) { citizen[i].c_stroke = color(int(!b_debug)*255); } - for(int i = 0; i < interactables.length; i++){ + for (int i = 0; i < interactables.length; i++) { interactables[i].c_stroke = color(int(!b_debug)*255); } break; @@ -194,24 +214,32 @@ void mousePressed() { } } } + if (!b_cameraLock) { + b_mouseChangeMapOffset = true; + i_mapOffsetStartX = mouseX - i_mapOffsetX; + i_mapOffsetStartY = mouseY - i_mapOffsetY; + } } } if (mouseButton == CENTER) { - if (!b_cameraFollow) { + if (!b_cameraLock) { b_mouseChangeMapOffset = true; i_mapOffsetStartX = mouseX - i_mapOffsetX; i_mapOffsetStartY = mouseY - i_mapOffsetY; } } if (mouseButton == RIGHT) { - // if(citizen[i_selectedCitizen].hover){ + // if(citizen[i_selectedCitizen].hover){ //} - if (!b_autoPlayAfterSelect) { - citizen[i_selectedCitizen].b_randomRun = false; - citizen[i_selectedCitizen].b_moving = false; - } + + + //if (!b_autoPlay) { + // citizen[i_selectedCitizen].b_randomRun = false; + // citizen[i_selectedCitizen].b_moving = false; + //} + citizen[i_selectedCitizen].goTo(constrain(i_mapViewToMap(mouseX, i_mapOffsetX), 0, pg_map.width), constrain(i_mapViewToMap(mouseY, i_mapOffsetY), 0, pg_map.height), 10); - citizen[i_selectedCitizen].turnTo(citizen[i_selectedCitizen].f_xPos-constrain(i_mapViewToMap(mouseX, i_mapOffsetX), 0, pg_map.width), citizen[i_selectedCitizen].f_yPos-constrain(i_mapViewToMap(mouseY, i_mapOffsetY), 0, pg_map.height),4); + citizen[i_selectedCitizen].turnTo(citizen[i_selectedCitizen].f_xPos-constrain(i_mapViewToMap(mouseX, i_mapOffsetX), 0, pg_map.width), citizen[i_selectedCitizen].f_yPos-constrain(i_mapViewToMap(mouseY, i_mapOffsetY), 0, pg_map.height), 4); } } int i_mapViewToMap(int mouse, int offset) { diff --git a/citizen.pde b/citizen.pde index 1b9adeb..5d781ab 100644 --- a/citizen.pde +++ b/citizen.pde @@ -7,11 +7,11 @@ boolean b_loadSun = false; //load sun from web-api instead of local json file (l int i_sMapReso = 8; //the higher the smaller the reso, 2 is best quality but takes some time to download -float f_walkSpeedMin = .05; -float f_walkSpeedMax = .1; +float f_walkSpeedMin = 1; +float f_walkSpeedMax = 2; -boolean b_cameraFollow = true; -boolean b_autoPlayAfterSelect = false; +boolean b_cameraLock = false; +boolean b_autoPlay = false; boolean b_controlEyeWithMouse; @@ -74,7 +74,7 @@ int i_mapLevelTransferC; void draw() { background(127); - clientCommunication(); + clientCommunication(); pg_map.beginDraw(); pg_map.background(127);