diff --git a/Buttons.pde b/Buttons.pde new file mode 100644 index 0000000..98c8097 --- /dev/null +++ b/Buttons.pde @@ -0,0 +1,230 @@ +int i_buttonCount = 7; +int i_debugButtonCount = 7; + + +int i_buttonId; + +Button buttons[] = new Button[i_buttonCount]; +DebugButton debugButtons[] = new DebugButton[i_debugButtonCount]; + +void initButtons() { + for (int i = 0; i < i_debugButtonCount; i++) { + debugButtons[i] = new DebugButton(i); + } + + debugButtons[0].setLabel("Autoplay"); + debugButtons[1].setLabel("Lock Camera"); + debugButtons[2].setLabel("Debug"); + debugButtons[3].setLabel("Control Eyes"); + debugButtons[4].setLabel("Houses Texts"); + debugButtons[5].setLabel("Pause Time"); + debugButtons[6].setLabel("Draw Nodes"); + + //id assigned by order of instantiation; centroid x, centroid y, w, h, corner, label, textsize, color + buttons[0] = new Button(i_windowW/2, 75, 200, 50, i_debugButtonCorner, "Nacht überspringen >>", 15, color(255, i_uiTransparency)); + + buttons[1] = new Button(i_iconX, i_iconY, i_iconW, i_iconH, i_iconCorner, "", 1, color(255, 0)); //help + buttons[2] = new Button(2*i_iconX, i_iconY, i_iconW, i_iconH, i_iconCorner, "", 1, color(255, 0));//spectate + buttons[3] = new Button(2*i_iconX, i_iconY, i_iconW, i_iconH, i_iconCorner, "", 1, color(255, 0));//control + buttons[4] = new Button(3*i_iconX, i_iconY, i_iconW, i_iconH, i_iconCorner, "", 1, color(255, 0));//magplus + buttons[5] = new Button(3*i_iconX, i_iconY, i_iconW, i_iconH, i_iconCorner, "", 1, color(255, 0));//magminus + buttons[2].b_active = false; + buttons[5].b_active = false; + + buttons[6] = new Button(i_windowW/2, i_windowH-180, 200, 50, i_debugButtonCorner, "Schließen", 15, color(190)); + + + buttons[6].b_active = false; +} + +boolean b_triggerButton; + +void buttonFunctions(int functionID, boolean debug) { + if (!debug) { + switch (functionID) { + case(0): + if (i_flexibleTime >= getFlexTime(23, 00)) i_days++; + setTime(6, 0); + break; + case(1): + showHelp(); + break; + case(2): + if (!b_triggerButton) { + buttons[2].b_active = false; + buttons[3].b_active = true; + spectate(); + buttonFunctions(5,false); + } + b_triggerButton = true; + break; + case(3): + if (!b_triggerButton) { + buttons[3].b_active = false; + buttons[2].b_active = true; + control(); + } + b_triggerButton = true; + break; + case(4): + if (!b_triggerButton) { + buttons[4].b_active = false; + buttons[5].b_active = true; + zoomIn(); + if (i_selectedCitizen == 0) selectCitizen((int)random(0, citizen.length)); + b_cameraLock = true; + } + b_triggerButton = true; + break; + case(5): + if (!b_triggerButton) { + buttons[4].b_active = true; + buttons[5].b_active = false; + zoomOut(); + //if(!b_control) selectCitizen(0); + b_cameraLock = false; + } + b_triggerButton = true; + break; + case(6): + b_showingHelp = false; + buttons[6].b_active = false; + break; + default: + break; + } + } else { + switch (functionID) { + case(0): + b_autoPlay = !b_autoPlay; + if (b_autoPlay) { + for (int i = 0; i < citizen.length; i++) { + if (!citizen[i].b_moving) { + if (citizen[i].nextNode == 0) { + b_makeThemGo = true; //toggles one random goTo per frame per citizen, turns itself off when finished + } 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_cameraLock = !b_cameraLock; + break; + case(2): + b_debug = !b_debug; + 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++) { + interactables[i].c_stroke = color(int(!b_debug)*255); + } + break; + case(3): + b_controlEyeWithMouse = !b_controlEyeWithMouse; + break; + case(4): + b_housesTexts = !b_housesTexts; + break; + case(5): + b_pauseTime = !b_pauseTime; + break; + case(6): + b_drawNodes = !b_drawNodes; + default: + break; + } + } +} + + +class DebugButton extends Button { + DebugButton(int id) { + i_id = id; + i_x = i_debugButtonMenuX + i_debugButtonMenuPadding; + i_y = i_debugButtonMenuY + i_debugButtonMenuPadding + (i_debugButtonPadding + i_debugButtonHeight) * i_id; + i_w = i_debugButtonWidth; + i_h = i_debugButtonHeight; + i_corner = i_debugButtonCorner; + i_textSize = i_debugTextSize; + i_debugButtonMenuButtonC++; + } +} + + +class Button { + int i_id, i_x, i_y, i_w, i_h, i_corner, i_labelX, i_labelY, i_textSize; + int i_clickMargin = 3; + String s_label; + color c_color = color(255, 155); + boolean b_active = true; + + boolean hover() { + if (b_active) return (mouseX > i_x - i_clickMargin && mouseX < i_x+i_w + i_clickMargin && mouseY > i_y - i_clickMargin && mouseY < i_y+i_h + i_clickMargin) ? true : false; + else return false; + } + /* + static Button buttonKeeper; + void f(){ + Button fuckGarbageCollection = new Button(); + } + public void holyShit(){ + buttonKeeper = this; + println("omg"); + } + */ + Button() { + //f(); + } + + + Button(int x, int y, int w, int h, int corner, String lab, int textsize, color col) { + i_id = i_buttonId; + i_buttonId++; + i_w = w; + i_h = h; + i_x = x - i_w/2; + i_y = y - i_h/2; + i_corner = corner; + i_textSize = textsize; + + s_label = lab; + textSize(i_textSize); + i_labelX = i_x + i_w/2 - (int)(textWidth(s_label) /2); + + c_color = col; + } + + void setLabel(String lab) { + s_label = lab; + textSize(i_textSize); + i_labelX = i_x + (i_w/2) - (int)(textWidth(s_label) /2); + } + + void click() { + if (b_active) { + buttonFunctions(i_id, this instanceof DebugButton); + } + } + //void keepAlive(){ + //} + void display() { + if (b_active) { + fill(c_color); + rect(i_x, i_y, i_w, i_h, i_corner); + fill(0, 255); + textSize(i_textSize); + text(s_label, i_labelX, i_y + i_h/2 + i_textSize/2.5); + } + } +} diff --git a/CitizenClass.pde b/CitizenClass.pde index e688e60..7cc22e2 100644 --- a/CitizenClass.pde +++ b/CitizenClass.pde @@ -69,6 +69,10 @@ class Citizen extends Entity { int i_age; int i_home; String s_currentAction; + + int i_maxNodeDistance = 100; //amount of steps to circle around x, y until it finds the nearest node, if none found, breaks path finding. what to do then is defined in rescuePath() + int i_spreadSteps = 10; + float f_movementSpeed; float f_FOV = PI / 4.0; int i_visionDistance = 80; @@ -96,14 +100,15 @@ class Citizen extends Entity { int pathAlgorithm = i_pathAlgorithm; Citizen(int id, int home, String name, int gender, int age) { + i_id = id; i_home = home; s_name = name; i_gender = gender; - s_gender = i_gender == 0 ? "Female" : "Male"; + s_gender = i_gender == 0 ? "Weiblich" : "Männlich"; i_age = age; - i_diameter = 15; - pathFinder = makePathFinder(gs, pathAlgorithm); + i_diameter = 30; + pathFinder = makePathFinder(gs, pathAlgorithm); f_movementSpeed = random(f_walkSpeedMin, f_walkSpeedMax); rNodes = pathFinder.getRoute(); s_currentAction = "current action here"; @@ -115,15 +120,7 @@ class Citizen extends Entity { i_goHomeMinute = (int)random(0, 59); i_goOutHour = (int)random(6, 9); i_goOutMinute = (int)random(0, 59); - - //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 - - //citizen kann "focus", guckt mit den augen in die richtung. 2. augen-vektor! kopf wird mitgedreht je nach "openness" - //citizen kann "take", nimmt gegenstand in die hand. arraylist "holds" - gegenstände in der hand - int i_direction(float f, float v) { @@ -133,17 +130,12 @@ class Citizen extends Entity { } void update() { - - // f_angle = v2_direction.heading(); do i need this here or is it ok in turn()? - - if (b_turning) { turn(); } - if (b_moving) { //if rNodes.length > 0 + if (b_moving) { move(); } - perceive(); if (b_talking) { talk(); @@ -157,7 +149,8 @@ class Citizen extends Entity { if (i_hours == i_goOutHour && i_minutes == i_goOutMinute) { //wake b_randomRun = true; i_location = 1; - goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height))); + //goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height))); + goToRandom(); } if (i_location == 1 && b_moving == false) { //sleep @@ -182,7 +175,6 @@ class Citizen extends Entity { if (i_location == 1) pg_map.arc(f_xPos, f_yPos, i_visionDistance*2, i_visionDistance*2, f_angle+HALF_PI*1.5, f_angle+PI/2*2.5, PIE); //} - //pg_map.stroke(c_stroke); pg_map.stroke(c_initialColor); pg_map.strokeWeight(1); @@ -196,10 +188,10 @@ class Citizen extends Entity { //pg_map.fill(c_initialColor); pg_map.textAlign(CENTER); pg_map.textSize(i_nameSize); - int namePos = -10; + int namePos = -i_diameter/3*2; if (b_talking) { - pg_map.text("\"Hallo " + citizen[i_lastCitizenTalked].s_name + "\"", f_xPos, f_yPos-10); - namePos = -20; + pg_map.text("\"Hallo " + citizen[i_lastCitizenTalked].s_name + "\"", f_xPos, f_yPos-i_diameter/3*2); + namePos = -i_diameter/3*2*2; } pg_map.text(s_name, f_xPos, f_yPos + namePos); pg_map.stroke(c_stroke); @@ -246,7 +238,7 @@ class Citizen extends Entity { boolean b_talking; boolean b_movingBeforeTalk; int i_talkTimeStart; - int i_talkTime = 5; //how long talk in seconds (better in frames?) + int i_talkTime = 5; //how long talk in seconds int i_lastCitizenTalked = -1; void talkTo(Citizen citizen) { //replace passing whole entity with passing id @@ -256,12 +248,9 @@ class Citizen extends Entity { b_movingBeforeTalk = b_moving; b_moving = false; i_lastCitizenTalked = citizen.i_id; - - //println(s_name + " talking to " + citizen.s_name); - //c_color = c_color / 10 * 9 + citizen.c_color/10; } - void talk() { //means: exchanging colors + void talk() { //means: exchange colors float r = red(c_color); float g = green(c_color); float b = blue(c_color); @@ -284,63 +273,21 @@ class Citizen extends Entity { } } - boolean b_pathFindKaputt; - void goTo(int x, int y) { - //add: go to node? go to house? - int i_goToX = x; - int i_goToY = y; - int spread = 0; - boolean findingWay = false; - while (!findingWay && !b_pathFindKaputt) { - float nodeDistance = 1.0f; - findingWay = true; - - while (gs.getNodeAt(f_xPos, f_yPos, 0, nodeDistance) == null && nodeDistance < 1000) { - nodeDistance++; - } - if (nodeDistance>= 1000) { - b_pathFindKaputt = true; - break; - } - startNodeID = gs.getNodeAt(f_xPos, f_yPos, 0, nodeDistance).id(); - - nodeDistance = 1.0f; - while (gs.getNodeAt(i_goToX, i_goToY, 0, nodeDistance) == null && nodeDistance < 1000) { - nodeDistance++; - } - if (nodeDistance >= 1000) { - b_pathFindKaputt = true; - break; - } - endNodeID = gs.getNodeAt(i_goToX, i_goToY, 0, nodeDistance).id(); - - if (pathFinder.search(startNodeID, endNodeID, true) == null) { - findingWay = false; - spread += 10; - i_goToX+= spread; - i_goToY+= spread; - } - if (spread >= 1000) b_pathFindKaputt = true; - } - if (!b_pathFindKaputt) { - pathFinder.search(startNodeID, endNodeID, true); //returns null if no route is found - rNodes = pathFinder.getRoute(); - if (rNodes.length > 0) { - nextNode = 0; - b_moving = true; - } else { //implement more intelligent design which calls goTo not in this frame, but in the next 120 frames or so - //also at this point i can move recalculating the nodes into the next frames if no route is found (not only random).. - if (b_randomRun) goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height))); - } - } else { - println("Pathfinding failed"); - b_pathFindKaputt = false; - f_xPos = (int)random(0, i_windowW); - f_yPos = (int)random(0, i_windowH); - goTo((int)houses.get(i_home).v2_center.x, (int)houses.get(i_home).v2_center.y); - } + void goToRandom() { + int randomNodeId = (int)random(0, gNodes.length); + preparePath((int)gNodes[randomNodeId].x(), (int)gNodes[randomNodeId].y()); + getPath(); } + void goTo(int x, int y) { + preparePath(x, y); + getPath(); + } + + void goTo(House house) { + preparePath((int)house.v2_center.x, (int)house.v2_center.y); + getPath(); + } void move() { @@ -352,12 +299,12 @@ class Citizen extends Entity { float f_xPosNext = rNodes[nextNode].xf(); float f_yPosNext = rNodes[nextNode].yf(); float f_movementVelo = f_movementSpeed; - //slow down movement velocity if moving diagnoally - if (int(rNodes[nextNode].xf()) != int(f_xPos) && int(rNodes[nextNode].yf()) != int(f_yPos)) f_movementVelo = f_movementVelo / 1.41; + + if ((int)rNodes[nextNode].xf() != (int)f_xPos && int(rNodes[nextNode].yf()) != (int)f_yPos) f_movementVelo = f_movementVelo / 1.41; //slow down movement velocity if moving diagnoally f_xPos += i_direction(f_xPosNext-f_xPos, f_movementVelo) * f_movementVelo; f_yPos += i_direction(f_yPosNext-f_yPos, f_movementVelo) * f_movementVelo; - turnTo(f_xPos-f_xPosNext, f_yPos-f_yPosNext, 1); + turnTo(f_xPos-f_xPosNext, f_yPos-f_yPosNext, map(nextNode, 0, rNodes.length, 4, 1)); //lets them turn faster when they start their journey (looks like more motivation) if (abs(f_yPos - f_yPosNext) < f_movementVelo && abs(f_xPos - f_xPosNext) < f_movementVelo) { f_yPos = f_yPosNext; @@ -365,13 +312,15 @@ class Citizen extends Entity { nextNode++; } } else { + + b_moving = false; - //v2_direction = nextNode = 0; if (!b_randomRun) { - //check if standing on an other citizens position + //check if standing on an other citizens position? } else { - goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height))); + //goTo((int)random(0, pg_map.width), (int)random(0, pg_map.height)); + goToRandom(); } } } @@ -393,6 +342,59 @@ class Citizen extends Entity { pg_map.popStyle(); } } + + //moved this all the way down, extracted from old goTo(), hoping to never see again + boolean b_pathFindKaputt; + float nodeDistance; + void getNodeDistance(float x, float y) { //circles around x, y until it finds the nearest node + nodeDistance = 1.0f; + while (gs.getNodeAt(x, y, 0, nodeDistance) == null && nodeDistance < i_maxNodeDistance) { + nodeDistance++; + } + if (nodeDistance >= i_maxNodeDistance) { + b_pathFindKaputt = true; + } + } + void preparePath(int x, int y) { //tests if paths are available (to prevent failing on encapsuled areas) + int spread = 0; + boolean works = false; + while (!works && !b_pathFindKaputt) { + works = true; + getNodeDistance(f_xPos, f_yPos); + if (b_pathFindKaputt) break; + startNodeID = gs.getNodeAt(f_xPos, f_yPos, 0, nodeDistance).id(); + getNodeDistance(x, y); + if (b_pathFindKaputt) break; + endNodeID = gs.getNodeAt(x, y, 0, nodeDistance).id(); + if (pathFinder.search(startNodeID, endNodeID, true) == null) { + works = false; + spread += i_spreadSteps; + x+= spread; + y+= spread; + } + if (spread >= i_spreadSteps * i_maxNodeDistance) b_pathFindKaputt = true; + } + } + + void getPath() { + if (!b_pathFindKaputt) { + pathFinder.search(startNodeID, endNodeID, true); + rNodes = pathFinder.getRoute(); //this is the array i want here + nextNode = 0; //necessary for move() + b_moving = true; + } else { + rescuePath(); + } + } + void rescuePath() { + b_pathFindKaputt = false; + //teleport somewhere and go home - needs better solution!!! maybe give a little push? + int randomNodeId = (int)random(0, gNodes.length); + f_xPos = (int)gNodes[randomNodeId].x(); + f_yPos = (int)gNodes[randomNodeId].y(); + //goTo((int)houses.get(i_home).v2_center.x, (int)houses.get(i_home).v2_center.y); + goToRandom(); + } } diff --git a/Entities.pde b/Entities.pde index a8871eb..c108928 100644 --- a/Entities.pde +++ b/Entities.pde @@ -9,7 +9,7 @@ void initInteractables() { interactables[i] = new Interactable("Interactable", "Content"); } for (int i = 0; i < interactables.length; i++) { - interactables[i].spawn(citizen[int(random(0, citizen.length))].i_home); + interactables[i].spawn(citizen[(int)random(0, citizen.length)].i_home); } } @@ -30,9 +30,9 @@ class Entity { float f_xPos, f_yPos, f_xSpawn, f_ySpawn; float f_angle; - int i_diameter = 10; + int i_diameter = 20; int i_collBoundX, i_collBoundY, i_collBoundW, i_collBoundH; - int i_nameSize = 12; + int i_nameSize = 24; int i_location; //0: at home. 1: outside. 2: at work. 3: in church. 4: at a friends place .. etc @@ -42,10 +42,9 @@ class Entity { color c_stroke = color(255, 255, 255); PVector v2_direction = new PVector(0, 0); - Entity() { + Entity(){ } - void spawn(int house) { //generic spawn PVector v2_spawnPoint = houses.get(house).v2_randomSpawnPoint(); f_xSpawn = v2_spawnPoint.x; @@ -98,6 +97,7 @@ class Entity { v2_direction.y = y; } } + void turn() { f_angle = v2_direction.heading(); if (!(abs(int(v2_direction.heading() * 1000) - int(v2_turnBuffer.heading()*1000)) < 100)) { @@ -107,8 +107,6 @@ class Entity { } } - void display() { - } } diff --git a/Map.pde b/Map.pde index 579bea5..74fd245 100644 --- a/Map.pde +++ b/Map.pde @@ -26,7 +26,7 @@ void initHouses() { img_houses.loadPixels(); for (int x = 0; x < img_houses.width; x++) { for (int y = 0; y < img_houses.height; y++) { - if (int(red(img_houses.pixels[y*img_houses.width+x])) == 187) { //red must be 187 for a pixel to be part of a house + if ((int)red(img_houses.pixels[y*img_houses.width+x]) == 187) { //red must be 187 for a pixel to be part of a house houses.add(new House(x, y)); img_houses.updatePixels(); img_houses.loadPixels(); @@ -37,7 +37,7 @@ void initHouses() { img_houses.updatePixels(); for (House house : houses) { //give houses their respective relative size (biggest house = 100) - house.i_size = int(map(house.i_size, 0, i_biggestHouseSize, 0, 100)); + house.i_size = (int)map(house.i_size, 0, i_biggestHouseSize, 0, 100); //create ascii map in s_map for (PVector point : house.v2d_points) { //create ascii map in s_map s_map[int(point.y/i_sMapReso)] = replaceCharAt_v1(s_map[int(point.y/i_sMapReso)], int(point.x/i_sMapReso), '#'); diff --git a/PathFinding.pde b/PathFinding.pde index e914f7b..e485ca2 100644 --- a/PathFinding.pde +++ b/PathFinding.pde @@ -11,7 +11,7 @@ void initPathFinding() { nodeSize = 5.0f; gs = new Graph(); makeGraphFromImage(gs, img_houses, int(img_houses.width * f_nodeResolution), int(img_houses.height * f_nodeResolution), true); - gNodes = gs.getNodeArray(); + //gNodes = gs.getNodeArray(); gs.compact(); gNodes = gs.getNodeArray(); gEdges = gs.getAllEdgeArray(); diff --git a/Time.pde b/Time.pde index 2431484..6cb760a 100644 --- a/Time.pde +++ b/Time.pde @@ -11,13 +11,25 @@ int i_hours; int i_minutes; int i_startMinutes; int i_flexibleTime; + +boolean b_pauseTime; +boolean b_changeTime; + void initTime() { i_hours = 5; i_minutes = 0; i_startMinutes = millis(); } -boolean b_pauseTime; -boolean b_changeTime; + +int getFlexTime(int hour, int minute) { + return (hour*60+minute); +} + +void setTime(int hours, int minutes) { + i_hours = hours; + i_minutes = minutes; +} + void time() { //calculate time if (!b_changeTime) { @@ -50,77 +62,9 @@ void time() { } } + //time events - if ((i_flexibleTime >= getFlexTime(0, 0) && i_flexibleTime < getFlexTime(6, 0)) || i_flexibleTime > getFlexTime(23,0)) { - buttons[6].i_x = i_windowW/2-85; - buttons[6].i_y = i_skipNightButtonY; - textSize(10); - buttons[6].i_tx = buttons[6].i_x + buttons[6].i_w/2 - (int)(textWidth(buttons[6].s_text) /2); - } else { - buttons[6].i_x = -1000; - buttons[6].i_y = -1000; - buttons[6].i_tx = -1000; - } + if ((i_flexibleTime >= getFlexTime(0, 0) && i_flexibleTime < getFlexTime(6, 0)) || i_flexibleTime > getFlexTime(23, 0)) buttons[0].b_active = true; + else buttons[0].b_active = false; } - - - -/* -Simple DateFormat Format Codes - G Era designator AD - y Year in four digits 2001 - M Month in year July or 07 - d Day in month 10 - h Hour in A.M./P.M. (1~12) 12 - H Hour in day (0~23) 22 - m Minute in hour 30 - s Second in minute 55 - S Millisecond 234 - E Day in week Tuesday - D Day in year 360 - F Day of week in month 2 (second Wed. in July) - w Week in year 40 - W Week in month 1 - a A.M./P.M. marker PM - k Hour in day (1~24) 24 - K Hour in A.M./P.M. (0~11) 10 - z Time zone Eastern Standard Time - ' Escape for text Delimiter - " Single quote - - - Date and Time Conversion Characters - Character Description Example - c Complete date and time Mon May 04 09:51:52 CDT 2009 - F ISO 8601 date 2004-02-09 - D U.S. formatted date (month/day/year) 02/09/2004 - T 24-hour time 18:05:19 - r 12-hour time 06:05:19 pm - R 24-hour time, no seconds 18:05 - Y Four-digit year (with leading zeroes) 2004 - y Last two digits of the year (with leading zeroes) 04 - C First two digits of the year (with leading zeroes) 20 - B Full month name February - b Abbreviated month name Feb - m Two-digit month (with leading zeroes) 02 - d Two-digit day (with leading zeroes) 03 - e Two-digit day (without leading zeroes) 9 - A Full weekday name Monday - a Abbreviated weekday name Mon - j Three-digit day of year (with leading zeroes) 069 - H Two-digit hour (with leading zeroes), between 00 and 23 18 - k Two-digit hour (without leading zeroes), between 0 and 23 18 - I Two-digit hour (with leading zeroes), between 01 and 12 06 - l Two-digit hour (without leading zeroes), between 1 and 12 6 - M Two-digit minutes (with leading zeroes) 05 - S Two-digit seconds (with leading zeroes) 19 - L Three-digit milliseconds (with leading zeroes) 047 - N Nine-digit nanoseconds (with leading zeroes) 047000000 - P Uppercase morning or afternoon marker PM - p Lowercase morning or afternoon marker pm - z RFC 822 numeric offset from GMT -0800 - Z Time zone PST - s Seconds since 1970-01-01 00:00:00 GMT 1078884319 - Q Milliseconds since 1970-01-01 00:00:00 GMT 1078884319047 - */ diff --git a/UI.pde b/UI.pde index 37d5721..ced82f8 100644 --- a/UI.pde +++ b/UI.pde @@ -1,19 +1,21 @@ -int i_buttonCount = 7; +int i_uiX, i_uiY, i_uiW, i_uiH; +int i_uiOffsetX, i_uiOffsetY, i_uiOffsetStartX, i_uiOffsetStartY, i_initUiY; -Button buttons[] = new Button[i_buttonCount]; +float f_mouseZoomEvent; +boolean b_mapZoom; int i_debugTextSize = 10; int i_debugButtonWidth = 100; int i_debugButtonHeight = i_debugTextSize; int i_debugButtonCorner = 5; -int i_debugButtonPadding = 20; -int i_debugMenuPadding = 15; -int i_debugMenuX = 15; -int i_debugMenuY = 15; -int i_debugMenuW = i_debugButtonWidth + 2 * i_debugMenuPadding; -int i_debugMenuH; -int i_debugMenuButtonC; +int i_debugButtonPadding = 10; +int i_debugButtonMenuPadding = 15; +int i_debugButtonMenuX = 15; +int i_debugButtonMenuY = 150; +int i_debugButtonMenuW = i_debugButtonWidth + 2 * i_debugButtonMenuPadding; +int i_debugButtonMenuH; +int i_debugButtonMenuButtonC; float f_timeBoxCenterX; float f_timeBoxX; @@ -22,42 +24,160 @@ float f_timeBoxW; float f_timeBoxH = 34; float f_timeBoxCorner = 6; +int i_iconX, i_iconY, i_iconW, i_iconH, i_iconCorner; + + + int i_uiTransparency = 200; String s_timeString; + +boolean b_mouseChangeMapOffset, b_mouseChangeUiHeight; +boolean b_hoverUI; +int i_changeTimeMouseX; +boolean b_drag; + +boolean b_selectCitizen; //????? + +PImage img_help, img_spectate, img_control, img_magplus, img_magminus; + +boolean b_control; //????? + +int i_mapViewToMap(int mouse, int offset) { + if (b_mapZoom) return (mouse-offset)*2; + else return mouse-offset; +} + + +boolean b_showingHelp; +void showHelp() { + if (!b_showingHelp) { + b_showingHelp = true; + buttons[6].b_active = true; + if (buttons[2].b_active) buttons[2].click(); + if (buttons[5].b_active) buttons[5].click(); + selectCitizen(0); + } +} + + +void spectate() { + b_control = false; + b_controlEyeWithMouse = false; + citizen[i_selectedCitizen].b_randomRun = true; + citizen[i_selectedCitizen].b_moving = true; + citizen[i_selectedCitizen].goToRandom(); +} +void control() { + b_control = true; + if (i_selectedCitizen == 0) selectCitizen((int)random(0, citizen.length)); + b_cameraLock = true; + b_controlEyeWithMouse = true; + if(buttons[4].b_active) buttons[4].click(); + zoomIn(); + citizen[i_selectedCitizen].b_randomRun = false; + citizen[i_selectedCitizen].b_moving = false; +} +void zoomOut() { + if (!b_mapZoom) { + i_mapW = pg_map.width/2; + i_mapH = pg_map.height/2; + i_mapOffsetX = 0; + i_mapOffsetY = 0; + b_mapZoom = true; + } +} +void zoomIn() { + i_mapW = pg_map.width; + i_mapH = pg_map.height; + i_mapOffsetX -= 3*i_mapOffsetX/4; + i_mapOffsetY -= 3*i_mapOffsetY/4; + b_mapZoom = false; +} + + void initUI() { - f_timeBoxCenterX = i_windowW/2; - f_timeBoxY = 10 ; + img_help = loadImage(dataPath("icons/icon_help.png")); + img_spectate = loadImage(dataPath("icons/icon_spectate.png")); + img_control = loadImage(dataPath("icons/icon_control.png")); + img_magplus = loadImage(dataPath("icons/icon_magplus.png")); + img_magminus = loadImage(dataPath("icons/icon_magminus.png")); i_uiX = 0; i_uiY = 518; i_uiW = width; i_uiH = height - i_uiY; - for (int i = 0; i < i_buttonCount; i++) { - buttons[i] = new Button(i); - } - buttons[0].label("Autoplay"); - buttons[1].label("Lock Camera"); - buttons[2].label("Debug"); - buttons[3].label("Control Eyes"); - buttons[4].label("Houses Texts"); - buttons[5].label("Pause Time"); - buttons[6] = new Button(i_windowW/2-85, i_skipNightButtonY, 170, 50, i_debugButtonCorner, "Nacht überspringen >>", 6); - /* - buttons[0] = new Button(15, 50, 100, i_debugTextSize, i_debugButtonCorner, "Autoplay", 0); - buttons[1] = new Button(15, 70, 100, i_debugTextSize, i_debugButtonCorner, "Lock Camera", 1); - buttons[2] = new Button(15, 90, 100, i_debugTextSize, i_debugButtonCorner, "Debug", 2); - buttons[3] = new Button(15, 110, 100, i_debugTextSize, i_debugButtonCorner, "Control Eyes", 3); - buttons[4] = new Button(15, 130, 100, i_debugTextSize, i_debugButtonCorner, "Houses Texts", 4); - buttons[5] = new Button(15, 150, 100, i_debugTextSize, i_debugButtonCorner, "Pause Time", 5); */ - i_debugMenuH = (i_debugMenuButtonC -1) * (i_debugButtonHeight+i_debugButtonPadding) + 2 * i_debugMenuPadding; + i_iconX = int(1.2*i_windowW/20); + i_iconY = 10+i_windowW/40; + i_iconW = i_windowW/20; + i_iconH = i_windowW/20; + i_iconCorner = i_windowW/40; + + initButtons(); + + i_debugButtonMenuH = i_debugButtonMenuButtonC * i_debugButtonHeight + (i_debugButtonMenuButtonC - 1) * i_debugButtonPadding + 2 * i_debugButtonMenuPadding; + + f_timeBoxY = 10; + f_timeBoxW = 191; + f_timeBoxCenterX = i_windowW/2; + f_timeBoxX = f_timeBoxCenterX-f_timeBoxW / 2; } -int i_skipNightButtonY = 50; -int i_uiX, i_uiY, i_uiW, i_uiH; -int i_uiOffsetX, i_uiOffsetY, i_uiOffsetStartX, i_uiOffsetStartY, i_initUiY; + + void drawUI() { + //draw + //citizenInfo + if (i_selectedCitizen != 0) { + stroke(5); + fill(200, 220); + rect(60, 200, 250, 350); + strokeWeight(0); + fill(0); + textSize(40); + text(citizen[i_selectedCitizen].s_name, 80,250); + textSize(25); + text(citizen[i_selectedCitizen].s_gender, 80,290); + text("Alter: " + citizen[i_selectedCitizen].i_age, 80,320); + fill(citizen[i_selectedCitizen].c_color); + rect(100,350,175,175); + } + //help menu + if (b_showingHelp) { + rectMode(CENTER); + fill(255, 180); + rect(width/2, height/2, 570, 770, 20); + rectMode(CORNER); + imageMode(CENTER); + image(img_helptext, width/2, height/2); + imageMode(CORNER); + } + //debug button-menu + if (!b_rundgang) { + stroke(1); + fill(127, 127, 127, 127); + rect(i_debugButtonMenuX, i_debugButtonMenuY, i_debugButtonMenuW, i_debugButtonMenuH); + strokeWeight(0); + textSize(i_debugTextSize); + for (int i = 0; i < debugButtons.length; i++) { + debugButtons[i].display(); + } + } + noStroke(); + //normal buttons + for (int i = 0; i < buttons.length; i++) { + buttons[i].display(); + } + //icons + imageMode(CENTER); + image(img_help, i_iconX, i_iconY, i_iconW, i_iconH); + if (buttons[2].b_active) image(img_spectate, 2* i_iconX, i_iconY, i_iconW, i_iconH); + if (buttons[3].b_active) image(img_control, 2* i_iconX, i_iconY, i_iconW, i_iconH); + if (buttons[4].b_active) image(img_magplus, 3* i_iconX, i_iconY, i_iconW, i_iconH); + if (buttons[5].b_active) image(img_magminus, 3* i_iconX, i_iconY, i_iconW, i_iconH); + + imageMode(CORNER); //camera tracking if (b_cameraLock) { if (i_selectedCitizen != 0) { @@ -71,30 +191,20 @@ void drawUI() { } } - //draw - //debugmenu - stroke(1); - fill(127, 127, 127, 127); - rect(i_debugMenuX, i_debugMenuY, i_debugMenuW, i_debugMenuH); - //buttons - strokeWeight(0); - textSize(i_debugTextSize); - for (int i = 0; i < buttons.length; i++) { - buttons[i].display(); - } + + //buttons[buttons.length-1].display(); + //clock if (b_realTime) { s_timeString = "Tag " + i_days + ", " + String.format("%02d", hour()) + ":" + String.format("%02d", minute()) + ":" + String.format("%02d", second()); } else { s_timeString = "Tag " + i_days + ", " + nf(i_hours, 2, 0) + ":" + nf(i_minutes, 2, 0); } - textSize(30); - textAlign(LEFT); - f_timeBoxW = textWidth(s_timeString)+6; - f_timeBoxX = f_timeBoxCenterX-textWidth(s_timeString) / 2; + fill(255, i_uiTransparency); rect(f_timeBoxX, f_timeBoxY, f_timeBoxW, f_timeBoxH, f_timeBoxCorner); fill(0); + textSize(30); text(s_timeString, f_timeBoxX+3, f_timeBoxY - 8 + f_timeBoxH); //debug @@ -134,6 +244,7 @@ void drawUI() { //"Outside", //"Mood: " }; + textSize(i_debugTextSize); int line = 0; int maxLinesPerColumn = i_uiH/i_debugTextSize; @@ -150,166 +261,84 @@ void drawUI() { } } - -void buttonFunctions(int s) { - switch (s) { - case(0): - 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) { - b_makeThemGo = true; - //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_cameraLock = !b_cameraLock; - break; - case(2): - b_debug = !b_debug; - - //dirty - 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++) { - interactables[i].c_stroke = color(int(!b_debug)*255); - } - break; - case(3): - b_controlEyeWithMouse = !b_controlEyeWithMouse; - break; - case(4): - b_housesTexts = !b_housesTexts; - break; - case(5): - b_pauseTime = !b_pauseTime; - break; - case(6): - i_flexibleTime = getFlexTime(6, 0); - i_minutes = 0; - i_hours = 6; - break; - default: - break; +void keyPressed() { + if (key == 'r') { + b_rundgang = !b_rundgang; + } + if (key == 's') { + save("screenshot.png" + str(millis())); } } -int getFlexTime(int hour, int minute) { - return (hour*60+minute); -} - -class Button { - int i_x, i_y, i_w, i_h, i_c, i_id, i_tx; - int i_margin = 5; - String s_text; - - Button(int id) { - i_id = id; - i_x = i_debugMenuX + i_debugMenuPadding; - i_y = i_debugMenuY + i_debugMenuPadding + (i_debugButtonPadding + i_debugButtonHeight) * i_id; - i_w = i_debugButtonWidth; - i_h = i_debugButtonHeight; - i_c = i_debugButtonCorner; - i_debugMenuButtonC++; - } - - void label(String lab) { - s_text = lab; - textSize(10); - i_tx = i_x + (i_w/2) - (int)(textWidth(s_text) /2); - } - - Button(int x, int y, int w, int h, int corner, String text, int id) { - i_id = id; - i_x = x; - i_y = y; - i_w = w; - i_h = h; - i_c = corner; - s_text = text; - textSize(10); - i_tx = i_x + i_w/2 - (int)(textWidth(s_text) /2); - } - boolean hover() { - if (mouseX > i_x - i_margin && mouseX < i_x+i_w + i_margin && mouseY > i_y - i_margin && mouseY < i_y+i_h + i_margin) return true; - else return false; - } - void click() { - buttonFunctions(i_id); - } - void display() { - fill(150, 170, 250, 150); - rect(i_x, i_y, i_w, i_h, i_c); - fill(0); - text(s_text, i_tx, i_y + i_h/2 + i_debugTextSize/2.5); - } -} - - -boolean b_mouseChangeMapOffset, b_mouseChangeUiHeight; -boolean b_hoverUI; -int i_changeTimeMouseX; -boolean b_selectCitizen; -boolean b_drag; void mousePressed() { if (mouseButton == LEFT) { boolean clickUI = false; + // click buttons - if (mouseX >= i_uiX && mouseX <= i_uiX+i_uiW && mouseY >= i_uiY-10 && mouseY <= i_uiY+10) { //drag and drop debug window size + b_triggerButton = false; //bad + for (int i = 0; i < buttons.length; i++) { + if (buttons[i].hover()) { + buttons[i].click(); + clickUI = true; + } + } + if (!b_rundgang) { + for (int i = 0; i < debugButtons.length; i++) { + if (debugButtons[i].hover()) { + debugButtons[i].click(); + clickUI = true; + } + } + } + + //drag and drop debug window size + if (mouseX >= i_uiX && mouseX <= i_uiX+i_uiW && mouseY >= i_uiY-10 && mouseY <= i_uiY+10) { b_mouseChangeUiHeight = true; i_uiOffsetStartY = mouseY; i_initUiY = i_uiY; clickUI = true; } - for (int i = 0; i < buttons.length; i++) { // click buttones - if (buttons[i].hover()) { - buttons[i].click(); + if (!b_rundgang) { + if (mouseX > f_timeBoxX && mouseX < f_timeBoxX + f_timeBoxW && mouseY > f_timeBoxY && mouseY < f_timeBoxY + f_timeBoxH) { //drag time clickUI = true; + i_changeTimeMouseX = mouseX; + b_changeTime = true; } } - - if (mouseX > f_timeBoxX && mouseX < f_timeBoxX + f_timeBoxW && mouseY > f_timeBoxY && mouseY < f_timeBoxY + f_timeBoxH) { //drag time - clickUI = true; - i_changeTimeMouseX = mouseX; - b_changeTime = true; - } - if (!clickUI) { - int selectedCitizen = i_selectedCitizen; //leftclick select citizen - b_selectCitizen = false; - for (int i = 0; i < citizen.length; i++) { - if (selectedCitizen != i) { - if (i_mapViewToMap(mouseX, i_mapOffsetX)+10 >= citizen[i].f_xPos - citizen[i].i_diameter/2 && i_mapViewToMap(mouseX, i_mapOffsetX)-10 <= citizen[i].f_xPos + citizen[i].i_diameter/2 - && i_mapViewToMap(mouseY, i_mapOffsetY)+10 >= citizen[i].f_yPos - citizen[i].i_diameter/2 && i_mapViewToMap(mouseY, i_mapOffsetY)-10 <= citizen[i].f_yPos + citizen[i].i_diameter/2) { - b_selectCitizen = true; - selectCitizen(i); + if ( !b_control) { + int selectedCitizen = i_selectedCitizen; //leftclick select citizen + b_selectCitizen = false; + for (int i = 0; i < citizen.length; i++) { + if (selectedCitizen != i) { + if (i_mapViewToMap(mouseX, i_mapOffsetX)+30 >= citizen[i].f_xPos - citizen[i].i_diameter/2 && i_mapViewToMap(mouseX, i_mapOffsetX)-30 <= citizen[i].f_xPos + citizen[i].i_diameter/2 + && i_mapViewToMap(mouseY, i_mapOffsetY)+30 >= citizen[i].f_yPos - citizen[i].i_diameter/2 && i_mapViewToMap(mouseY, i_mapOffsetY)-30 <= citizen[i].f_yPos + citizen[i].i_diameter/2) { + b_selectCitizen = true; + selectCitizen(i); + //zoom in? no + } } } + if (!b_selectCitizen) { + //buttonFunctions(2, false); + selectCitizen(0); + } + if (!b_rundgang) { + if (!b_cameraLock || i_selectedCitizen == 0) { + b_mouseChangeMapOffset = true; + i_mapOffsetStartX = mouseX - i_mapOffsetX; + i_mapOffsetStartY = mouseY - i_mapOffsetY; + } + } + } else { + citizen[i_selectedCitizen].goTo(constrain(i_mapViewToMap(mouseX, i_mapOffsetX), 0, pg_map.width), constrain(i_mapViewToMap(mouseY, i_mapOffsetY), 0, pg_map.height)); } - if(!b_selectCitizen){ - selectCitizen(0); - } - + } + } + if (mouseButton == CENTER) { + if (!b_rundgang) { if (!b_cameraLock || i_selectedCitizen == 0) { b_mouseChangeMapOffset = true; i_mapOffsetStartX = mouseX - i_mapOffsetX; @@ -317,50 +346,31 @@ void mousePressed() { } } } - if (mouseButton == CENTER) { - if (!b_cameraLock || i_selectedCitizen == 0) { - b_mouseChangeMapOffset = true; - i_mapOffsetStartX = mouseX - i_mapOffsetX; - i_mapOffsetStartY = mouseY - i_mapOffsetY; - } - } - if (mouseButton == RIGHT) { - // if(citizen[i_selectedCitizen].hover){ - //} - - - //if (!b_autoPlay) { - // citizen[i_selectedCitizen].b_randomRun = false; - // citizen[i_selectedCitizen].b_moving = false; - //} - if (!citizen[i_selectedCitizen].b_talking) { + if (mouseButton == RIGHT && !b_rundgang) { + if (!citizen[i_selectedCitizen].b_talking && i_selectedCitizen != 0) { citizen[i_selectedCitizen].goTo(constrain(i_mapViewToMap(mouseX, i_mapOffsetX), 0, pg_map.width), constrain(i_mapViewToMap(mouseY, i_mapOffsetY), 0, pg_map.height)); 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) { - if (b_mapZoom) return (mouse-offset)*2; - else return mouse-offset; -} - void mouseDragged() { b_drag = true; - if (b_mouseChangeMapOffset) { - i_mapOffsetX = (mouseX - i_mapOffsetStartX); - i_mapOffsetY = (mouseY - i_mapOffsetStartY); - } - if (b_mouseChangeUiHeight) { - i_uiY = mouseY - i_uiOffsetStartY + i_initUiY; - if (i_uiY > height) i_uiY = i_windowH; - i_uiH = i_windowH - i_uiY; - //hook buttons to ui panel - } - if (b_changeTime) { - i_flexibleTime += mouseX-i_changeTimeMouseX; - i_changeTimeMouseX = mouseX; + if (!b_rundgang) { + if (b_mouseChangeMapOffset) { + i_mapOffsetX = (mouseX - i_mapOffsetStartX); + i_mapOffsetY = (mouseY - i_mapOffsetStartY); + } + if (b_mouseChangeUiHeight) { + i_uiY = mouseY - i_uiOffsetStartY + i_initUiY; + if (i_uiY > height) i_uiY = i_windowH; + i_uiH = i_windowH - i_uiY; + //hook buttons to ui panel + } + if (b_changeTime) { + i_flexibleTime += mouseX-i_changeTimeMouseX; + i_changeTimeMouseX = mouseX; + } } } void mouseReleased() { @@ -374,39 +384,18 @@ void mouseReleased() { //b_selectCitizen = false; } - -//bad -//int maxScale = 5; -//float zoomFactor = 0.4; -//int i_imgCenterX; -//int i_imgCenterY; -int i_mapScale = 1; -boolean b_mapZoom; -float e; void mouseWheel(MouseEvent event) { - e = event.getAmount(); + if (!b_rundgang) { + f_mouseZoomEvent= event.getAmount(); - if (e == -1) { - i_mapScale+=1; - } - if (e == 1) { - i_mapScale-=1; - } - constrain(i_mapScale, 0, 2); - switch(int(e)) { - case 1: - if (!b_mapZoom) { - i_mapW = pg_map.width/2; - i_mapH = pg_map.height/2; - i_mapOffsetX -= 3*i_mapOffsetX/4; - i_mapOffsetY -= 3*i_mapOffsetY/4; - b_mapZoom = true; + + switch((int)f_mouseZoomEvent) { + case 1: + zoomOut(); + break; + case -1: + zoomIn(); + break; } - break; - case -1: - i_mapW = pg_map.width; - i_mapH = pg_map.height; - b_mapZoom = false; - break; } } diff --git a/Util.pde b/Util.pde new file mode 100644 index 0000000..d01ff5d --- /dev/null +++ b/Util.pde @@ -0,0 +1,47 @@ +class iPVector { + int x, y, z; + iPVector(int getx, int gety) { + x = getx; + y = gety; + } + iPVector(int getx, int gety, int getz) { + x = getx; + y = gety; + z = getz; + } +} + +void pre() { + //window resize event + if (i_windowW != width || i_windowH != height) { + i_windowW = width; + i_windowH = height; + i_uiY = i_windowH - i_uiH; + i_uiW = i_windowW; + i_uiH = i_windowH - i_uiY; + + buttons[0].i_x = i_windowW/2-buttons[0].i_w/2; + buttons[0].setLabel(buttons[0].s_label); + + f_timeBoxCenterX = i_windowW/2; + f_timeBoxCenterX = i_windowW/2; + f_timeBoxX = f_timeBoxCenterX-f_timeBoxW / 2; + + i_iconX = int(1.2*i_windowW/20); + i_iconY = 10+i_windowW/40; + i_iconW = i_windowW/20; + i_iconH = i_windowW/20; + i_iconCorner = i_windowW/40; + for (int i = 1; i < 6; i++) { + buttons[i].i_y = i_iconY-i_iconH/2; + buttons[i].i_w = i_iconW; + buttons[i].i_h = i_iconH; + buttons[i].i_corner = i_iconCorner; + } + buttons[1].i_x = i_iconX-i_iconW/2; + buttons[2].i_x = 2*i_iconX-i_iconW/2; + buttons[3].i_x = 2*i_iconX-i_iconW/2; + buttons[4].i_x = 3*i_iconX-i_iconW/2; + buttons[5].i_x = 3*i_iconX-i_iconW/2; + } +} diff --git a/citizen.pde b/citizen.pde index dfe1536..2fb1257 100644 --- a/citizen.pde +++ b/citizen.pde @@ -3,6 +3,14 @@ import processing.net.*; int i_citizenAmount = 100; /* todo +!!!FIX ONE SIDED COLOR TRANSMISSION!!! +steady control over selectedCitizen. right click on house to enter it. +reset view and selectCitizen(0) after long time no input +fix zoom, add zoom level +saarbrücken map +add ui panel for selected citizen in non-debug + +enter house dominanz wächst mit anzahl der am tag durchgeführten kommunikationen @@ -23,12 +31,21 @@ todo ignore-liste ziel: möglichst viele zur eigenen farbe bekehren + + alte ideen: + + //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 + + //citizen kann "focus", guckt mit den augen in die richtung. 2. augen-vektor! kopf wird mitgedreht je nach "openness" + //citizen kann "take", nimmt gegenstand in die hand. arraylist "holds" - gegenstände in der hand + + */ //settings -boolean b_rundgang = false; +boolean b_rundgang = true; -boolean b_smallerImage = false ; //broken boolean b_loadSun = false; //load sun from web-api instead of local json file (local file is adressed to january 4th 2019. might implement a check that downloads today's information only once... int i_sMapReso = 8; //the higher the smaller the reso, 2 is best quality but takes some time to download @@ -38,11 +55,11 @@ int i_timeTickMS = 200; //milliseconds how long until next minute ticks on clock float f_walkSpeedMin = 2; float f_walkSpeedMax = 3; -float f_nodeResolution = 0.2; //defines density of path-finding nodes, multiplied with resolution +float f_nodeResolution = 0.1; //defines density of path-finding nodes, multiplied with resolution int i_pathAlgorithm = 4; -boolean b_cameraLock = true; +boolean b_cameraLock = false; boolean b_autoPlay = false; boolean b_realTime = false; boolean b_controlEyeWithMouse; @@ -51,29 +68,25 @@ boolean b_debug = false; boolean b_drawNodes = false; - - int i_windowW, i_windowH, i_viewportW, i_viewportH; + +PImage img_helptext; + Server server; Client client; -void rundgang() { - i_debugMenuX = -200; -} - - void setup() { - //fullScreen(); - size(700, 600); - server = new Server(this, 5210); - //blendMode(MULTIPLY); + fullScreen(); + //size(700, 600); + i_windowW = width; i_windowH = height; - img_map = loadImage(dataPath("map/map.png")); - if (b_smallerImage) img_houses = loadImage(dataPath("map/houses_with_borders_small.png")); - else img_houses = loadImage(dataPath("map/houses_with_borders.png")); - img_streets = loadImage(dataPath("map/streets.png")); + + server = new Server(this, 5210); + + img_map = loadImage(dataPath("map/map2.png")); + img_houses = loadImage(dataPath("map/houses_without_borders2.png")); pg_map = createGraphics(img_houses.width, img_houses.height); @@ -82,8 +95,10 @@ void setup() { i_mapW = pg_map.width; i_mapH = pg_map.height; - - if (b_rundgang) rundgang(); + + img_helptext = loadImage("helptext.png"); + + initTime(); initHouses(); initPathFinding(); @@ -91,23 +106,30 @@ void setup() { initCitizen(); initInteractables(); initUI(); + zoomOut(); + } -void pre() { - if (i_windowW != width || i_windowH != height) { - // Sketch window has resized - i_windowW = width; - i_windowH = height; - i_uiY = height - i_uiH; - i_uiW = width; - i_uiH = height - i_uiY; - f_timeBoxCenterX = width/2; - f_timeBoxY = 10 ; - } -} + String s_fromClient; int i_mapLevelTransferC; int i_makeThemGoC; + +int i_idleFrames; +iPVector iv2_mouseBufferIdle = new iPVector(0, 0); +void idleRecord(){ + if(mouseX == iv2_mouseBufferIdle.x && mouseY == iv2_mouseBufferIdle.y){ + i_idleFrames++; + if(i_idleFrames >= 5000){ + buttons[1].click(); + } + } else { + i_idleFrames = 0; + } + iv2_mouseBufferIdle.x = mouseX; + iv2_mouseBufferIdle.y = mouseY; +} + void draw() { background(127); for (int i = 0; i < i_citizenAmount*3; i++){ //so bad @@ -117,7 +139,8 @@ void draw() { time(); if (b_makeThemGo) { - citizen[i_makeThemGoC].goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height))); + //citizen[i_makeThemGoC].goTo(int(random(0, pg_map.width)), int(random(0, pg_map.height))); + citizen[i_makeThemGoC].goToRandom(); i_makeThemGoC ++; if (i_makeThemGoC >= citizen.length) { b_makeThemGo = false; @@ -166,7 +189,6 @@ void draw() { for (int i = 0; i < interactables.length; i++) { interactables[i].update(); - interactables[i].display(); } for (int i = 0; i < citizen.length; i++) { @@ -187,4 +209,5 @@ void draw() { pg_map.endDraw(); image(pg_map, i_mapOffsetX, i_mapOffsetY, i_mapW, i_mapH); drawUI(); + idleRecord(); } diff --git a/data/helptext.png b/data/helptext.png new file mode 100644 index 0000000..27f7298 Binary files /dev/null and b/data/helptext.png differ diff --git a/data/icons/icon_control.png b/data/icons/icon_control.png new file mode 100644 index 0000000..05c9268 Binary files /dev/null and b/data/icons/icon_control.png differ diff --git a/data/icons/icon_help.png b/data/icons/icon_help.png new file mode 100644 index 0000000..c6bb7de Binary files /dev/null and b/data/icons/icon_help.png differ diff --git a/data/icons/icon_magminus.png b/data/icons/icon_magminus.png new file mode 100644 index 0000000..5576d18 Binary files /dev/null and b/data/icons/icon_magminus.png differ diff --git a/data/icons/icon_magplus.png b/data/icons/icon_magplus.png new file mode 100644 index 0000000..ab3113e Binary files /dev/null and b/data/icons/icon_magplus.png differ diff --git a/data/icons/icon_spectate.png b/data/icons/icon_spectate.png new file mode 100644 index 0000000..1cad1ca Binary files /dev/null and b/data/icons/icon_spectate.png differ diff --git a/data/map/houses_with_borders2.png b/data/map/houses_with_borders2.png new file mode 100644 index 0000000..0b4d35a Binary files /dev/null and b/data/map/houses_with_borders2.png differ diff --git a/data/map/houses_without_borders.png b/data/map/houses_without_borders.png index 5d75f62..38e5bf9 100644 Binary files a/data/map/houses_without_borders.png and b/data/map/houses_without_borders.png differ diff --git a/data/map/houses_without_borders2.png b/data/map/houses_without_borders2.png new file mode 100644 index 0000000..8d34669 Binary files /dev/null and b/data/map/houses_without_borders2.png differ diff --git a/data/map/map2.png b/data/map/map2.png new file mode 100644 index 0000000..71274a7 Binary files /dev/null and b/data/map/map2.png differ diff --git a/data/server/map.txt b/data/server/map.txt index a8da688..7505742 100644 --- a/data/server/map.txt +++ b/data/server/map.txt @@ -1,135 +1,270 @@ -...................###....................................................................................#####....##.....#...............................................###...#.#########...................................................... -.........................###...............................................................................###..........###................................................##...###.######....................................................... -.........................####..........................................................................................#####...................................................#####..####....................................................... -.........................####.............................................................##.........###................###.....................................................####...##........................................................ -..........................##............................................................####.........####...............#.........................................................##.###...###................................................... -........................................................................................#####........####.........................................##................................####...###................................................... -####.........................................................................###.........##......................................................###................................###.....##................................................... -#####.....................###...#####.......####............................####...............................................................######............................................................................................ -#####....................####...#####.......####.............................###...........................................................##########............................................................................................ -..#.....................#####....####.......####.............................###........................................................############.#...........##.............................................................................. -.###.##.................##............................................................................................................###########..###...##...#######.............................................#.............................. -.#######.................#..........................................................................................................#######..#.....####.##########.###.###......................................###.............................. -....####...........................................................................................................................#######.........####.##.###########.###.##.................................######..........................##. -......###..................................###.....................................................................................####.....####....###..################.####................................#####.........................####. -....#####..................................###...............................................................................####..#####.#######....#################.###.####................................###...........................####. -....####......................................###...####.....................................................................####...####.#######......######....##.###########...##..........................................................###. -.........................####.................###...####........................##...........................................#####..####.######.....#######......##.########....###.............................................................. -#........................####..............###.......###.......................####...................................###.....##.....##..##....##.####.###.......######..##.....###.............................................................. -#........................####..............###.###.###..............###.........###..................................####.....#...#####..####.###.#######.........####..........###.............................................................. -#.................###.........###..........###.###.###..............####........##...............................###.####.........###########.####.##..........##..###..........###.............................................................. -........###.......######......###..................###...##.....###.####.......................................#.######..............########..##..............###..#...........###..###......................................................... -..#....####......#######......######..........###.......###.....###.##.......................................##############....####.######........##........#.####.....##.####..###.####......................................................... -####....##.......#######....###..#######......###.......###.....###........................................######.#################.#####......#####.......######.....###.######..#.####.................###..............................###.... -#####......##......#####....###..##########...###......##.......###......................................####.#####################.#.#........#####....########......###.#######....##..............##..####...........###...............###.... -.#####....###...###..##......###....#######...........###.............................................###############....##########..##..####..###.....####.##...###..###....####.................######.#####.........####...............##..... -..####.....##..######....###.###.........##..###......###..........................................###############....####.........##########....##..#.#####....#####..######.#..................###.##..#####..........###................#..... -...##..........#######..#########............###...................................................###.##########...########....##.##########....##########..########..######....................###...##.####........######.....##......###...#. -..............########...#########..########.####.............................................###...##########.....#########....###.#########...#########....################....................###...#######......####.###.....##......###...#. -..............#########..#########..########..##..............................................###....#######.....######.####...#####............######.....#.##...##########..#####..............###..#########......####.###.............##..##. -..............############.#..#####.########...................................................##...#####.........###.###....#######............###...##########.########...#######...............#############......##...###.....##......##..##. -.................######.###....#####....####...................................................###..###...........###.###..#########...#########.##############.######...##########.........##....############.............##.....##..........#.. -...................####.###....#####...........................................................###.................####...########.....#########.##########......###...############........###....####..###................##.##................. -................................#..................................................###.........###.................###.....#######.....#########.####...............#########.##..##........##....###....##...................###.............##. -..................................................................................####..............................###....########.###.........#.#####.....####....#######......####.###...#......###..###...................###..........#####. -..................................................................................###...#######........##...........###...#####.###.####...######.########..####....#####......##############.##...###.####................................#####. -..................................................................................#.....#######........###...........##..#####.##########..#######.#######..####......#..#.....##..###.#########...##..###......................#####.......####. -............................................................................................###.......#####..###...#####.####..####..######.#####....#####..####.........##.....#..###.#..######.......###................####..#####.##....##... -...............................................##...........................................###.......##.#...####..######..#...####....##########............#...........##..#......###.#######.#....#####.....###.......#####..##.....##......#. -##............................................###...............................###########.###..............#####..######......####....####.######......................#####......#.###########....########..###.......##.....##...###.......#. -##..........................................######..............................################..............#####.######.#########....######.#####........................###.##.###.####.######...########..###........#######...#####......#. -...........................................########................#............##############.........###....###########.##########......#####..####........................##.######.##...######.......####..#.....##...#######...####.......#. -.........................................###########.............###............##....................#####..############..#####.....###..######.#####.......................##.###.........#######..................##......####..#####.......#. -...#.....................................###########............#####...........######..............#######.##########...#######.....#####.#####...###...........................########....##.####............###..##.#########.#####.......... -.###.....................................#########...........##########.......########...........#########.########......########.....######.####...#............................########.....##.###............###..##.#######.................. -#####.....................................#######............##########...###.########..........#########.########.......####.##...#...#####..####...............................########.....#######...........###.....###.............#..#####. -####.....................................#######..............###############.######............####.#########.###.......########..###.#####.######..............................###........#########.........................####...####..#####. -###.....................................######................###############.............##.....##...######..#######....#.######..########.######..................................##.#....###...###...............########.#####..######.#####. -##......................................#####.................#############.............####............###...#######......#####...#############...##...........................##.######...###.....................########..##...###.###....##. -.........................................###..................########..###..........########.....##....###....######....#########...##.########...###.......................##.##.######....###...............###..#####.##.......###..##..####. -..............................................................##...########..........########.######.....###...####......############.##...##......####............###.......##.##.##..##....#.................####................###..##.#####. -................................................................###########......###..####.....#######.##.###.......###..############.##............####......###..####.##......###...###..######.............#####.................##..##.#####. -.......####.....................................................#########.....#######.##....######.#######.##.....#####...###########.######.........###.......##..#######......###.####.########...........#######...###...........##..##..###.. -.......####.....................................................#######.....#########.......#######.##.####......#######..##################.......#####....##.###...#####..........#############...........###.......###...##.......##.##..####. -.......####.......................########.............####......###.......######..##........#######....###......#######...#######.##########....########..#######.#####..........################..........########..###.####..####.##.##..####. -.....#...................#...#############.............####..............########...##........#####.....####......######...#####...##########.############..###.########.......######..####.###.##....#.....##.#####..###.####..####.##.##....... -...####...............####...#############.............####........#####.#####......##........#####.....####.####.#######...##.....###################.####.#############.....######.####..#####.....###....##.#####..###.##....#..............#. -....###............#######...######....................####......###########..................####.....#####.####..#######..........#####.#######..####.###..####....####....###########..#######...####....##.#####................##.###...###. -....###.........##########...............................#......##########....................#####....###..######.#######........############.########..###.####.....###..###.#########.#######...#.##.....##.................####.##.###...###. -.....##......##########.......................................#####..###.##.#.............##....####...##...######.########...################..########.###.####.....#################..######...###.............##......#########.##.###....... -.....###.....#######........................................####......########............###.######..###...#####..########...####.#########.################.######...#######.########....###....###...........#.##..##..#########............#. -#.....##......###...........................................####......########...........#.##############...##.##.#########...#########.#############.######..######..######.######.####....#..###.#......###.###.##..##..#####..............###. -#......#......#..............................................###......########.....##.####..##############...####.##########..#########.############..#####...##################.#..####......####........###.###.....##..#####............#####. -#............####...............##...........................##.......######.....####.#####..##########..##..####.####.#####....#####################.######...##.##############...###..#....####...#......................####.###.......###.... -.............####.............#####.......................................##.....##########...######....###..#####.....#####....#################.###...#####...###############...###..###..####...###......................##..###....#####..... -..............###...........#######............##.................................###..####.........########..####.....##........#########.###########..#####..################...###.####.####....##..###.##.##...########.##...##....###....##. -..............####.........#######............#######........#####.######.......##.....####..........#######..###........##........########..##########..####...##############.......####..###.........###.##.##..#########......##..####....###. -..............####.........#####..............#######........############......####....####..........#######..........#####........####################..####...############..........#.....#...##.....###.##.##..###.###...........####...####.. -..............####..........###.................##.##.........####.######...#######..###.............########......########.........##########################..#########......##..............####...........##....................##..#####.... -..............####............................................####.######..#########.###.........##..########......########..##......###########..############..#####..........####.............###..............####.###...............####..... -...............##...................................###.......####.####..###########.##..........###..#######......#######..###.......########....########..###..###...###......####.........#................#######.###..............###....... -#...................................................###.......####..###.################.........###..#########....####.########.......#####.#...###.###.######...###..###......###.........###...............#######.########.......####....###. -#...................................................###.......####..#....########.#####..##.......###.#########....#############.......########..#############....###...##....##.#..###.....###....##.........##......############...##.....#.##. -#.............................................................####.......#########.####.###.......###.#########....#############......#########.#####..######......#..........###..####.....##....####.............##..###########....#....##.##. -###..........................#..........................###..................##########.#######....##.######....###.##.##########...###..######.####.......#.................####..###.....####....##..........###.###.########..###.......##.... -###........................####.........................###.......##.........##################...###..##..############.#########..#####..######..####.....................#####.##.#......####..###............##..##.########..###....###...... -.#.........................####.........................##........####.....##.#..##.#######.####################.##########..###########..######..####....................####..####.....#..###..###......................#####..##....####...... -............................#.....................................####.######...#....####.#.####################.########################.#######.####....................###..####.....###......##.................###...#####.......#####...... -.....................................................#............################.....####.####################.########################.########.####....##............###..###......#####....................#######...#####...##..####....... -...................................................###.............###############...#.####.#########...######..##..###################...#############...####...........###..###......#####............################..##....####..#.......... -..##............................#..............#...###....................####......#######.###.######.##..########.###########...####.....########..##...####............#.####........###....##.......#################.##....####............. -####...........................###............###..####...............#######....##.#######..########.#############..#..####..########.....#####...####....#.........###...####..............####.......##########....###........#.#............. -####............................##...........####..####.............######.###.#######.###.#####.####..###########.###.......#############.#####...####..............###..####...............####.......######........####......####............. -###..............##.........................#####...###.............##########.########...######.####...#######..######...##..####.....####.#####.####...............###.####...#.............##....######.............###...##.####............. -##............#####........................#####....#................######.##..#######....####...##....####...########...###.####..##.####.########..###............########..###..................######.............###.####.##............... -#....#........#####.........######.........####.###...................####..#..#########...###....###....##..###########...#####..####.####..#######.####.....#........#####..#####........#....##...#####.................####.................. -....###.......#####........#######.........###.#####..##............####.......##########...###.#####......###########......###...##########.#####.######....###.......####..######.......###...##...##.....................##......####......... -...#####.......#######....##########...........#####.###...........####....##############...#########......#########........###...##.##.####..###..####.....####........##...#####.......####..................................####.####......... -...#####.......########...##########.......###..##..####.........#########################..#########.###..#######........#..........#######...##..##....#..####..............###........####..................................#####.###....##... -..#####.........###################........####...######.........#########################..#.######.####...####........####..........#####...###.......####.###...............#...........#.......#########...................#.###........###.. -.#####............###############........##.##...#######.........########################....###.########...##.......#######...#....#####..##...........###...............###......................#########..................................... -#####..##.........###############.......###.....########.........###.####.###########.#####..####.######.............######..####.#######.###..........####..............#####.....................#########..................................... -###....###........##############........###......########............##.###########....####...###.####...............####...#####.####.##.######.......###......###......######....................##########.................................... -##.....###........#############..........#.##....########.............#############..#######..########....#..........###....###....#...##.######..##...###......####....######......###......###................................................. -#.......###........############...........###.....#######..............###...######.########...######...####...............###.........##############...##......###....######......#####....####................................................. -........####.......###########............####...########..............####..######.######..#..####.....####........###...###..........##.....########...........#.....####........####.....####............................................##... -.........###.......#########..........#....#.....#######................#########....#########..#....##.####........###....###...#............####.##.###..........###..###.........##.......#............................................####... -..........###......########......#######..........####..............###.####.#####....########......####.####.....####..##..######....................###..........###.............#......................................................####... -........#####......#######.....##########..........##..............####..####.###.....######.##......###.####.....#################.................####..#.........##............###...............................................##.....##.... -.......######.........#.........#########..........................####..####.##......######.###......###.###.###.#######.###.#####..####.....####..##...###......................####.............................................####.....###.. -.....######.....................##########............##............##...########.##.######.####......####...####.####.##..######..#######....####..##..####...................###.##............................................##.##......###.. -...######...................##....########...........####.................####.##################.....######.#####.##..###.##.#############...####.......##..................##.##............###................................###........###.. -..######...................###.....#######.........#######................####.#.#########.##.####...#############....#####.################..####...#.......................###..............###.....##.........................###............. -######.....................####...#######...........######.................####..##########...#####.#####..##.##....#######.###########..##...####..###.......................................###.....##......................................... -####.......................####.#######.........##..#####..##...............####.#########....#.########...###.#....############..###.........####..####.....................##.......................##......................................... -.###.......................###.######..........####..#...#####..............#####..#####....###..###.##.....####.....########.##..####..............###.....................####................................................................. -.####......................#########...........####......#####..............######.####....#####.####......######....##..####....#####......####....##......................####..............................####............................... -..###.......................######..............#........######...............#####......#######..##.....########........###..#.######..##########............................................................####............................... -..###........................####.........................#####...............#####.....##########.......########..........####.###################....###................................................................................#...... -..............................##.........#................###.............###.#####.#########.#####.......###..###.......######..############..###.....###.....................####........####..........................................####.... -........#######........................####..............................####..############...####...##........##...##...#######..######..#####....##..####....................####.###....####...........#..............................###..... -..#############.....................##.####.....................#.........###...######.###....###..#####...........###....######..######..#####...####..###................##.......###....###.....####.####..............................##..... -..#############....................###..##.....................###...............#####........#...#######..........####...#######.###.....####..######..####..............####......##.............####.####....................#...###.......##. -..#######..#####..................#####........................###................####.##.........#######.........#####...########.######..#...#######...####.............####...........##........####..#...###..............####..###.......##. -..#####.....####................########.......................###.................#######.........#######......###.####...##.#####.######...##########...###...............#...........###.###..............###...........#..####..###.......##. -..#####.....####...............##########..................###..#...............#...######....###.########.....#########.......####.######.########..###...###....................#....###.####..............###.........####..#..............##. -...###......######............######.####....##..........#####.................###...#####..#####.######......#####.#####.......###......##.###..#...###...##.#..................####...##.###...................###......###.................##. -...........#######............####.#..####..###.........#######..####.........####....###.######..#..##........###..#####.......##......#########....#####...###.....##..........###.............##.............####............................. -...........#######............###.###.###.#####........########..####..........##........#####..####.................#####..######......####..####......###..###.....###...........#.####.......####.............###............................. -.....#.....#######.............#######....###..........#######...####...................######.#####...........##.########...######......############...####...##....................#####.......##.##..............###.......................... -.#####.....#####...............######...#####.......#...###.#.###.##................#...###########...........#######...###..##.#..........####.#####...###...###.......##............###.#.........##..............###.##....................... -#######.....####................###....####.......####...########....###............##...#####.##.............#######...###................###...##.....#####..###.....###...............####.......##.##............#..###...................... -#######......................##..#......###......#####....#######...####............##....####................######.....###.....#..######..#.##.####....#####..###....###...............###.###......###.##............###.........###.......... -######..................##...###...............#####.......#####....####..................................###########....##....####.######....#######.#########..##...........##.............###........#.###....#.......##...###...###.......... -###....................###...####..##.........#####.###.....##...##..##..........................##........#####.####......###.####.#######...######.###..#.###...............###.............##..........##.##..###..........####..###.......... -......................####...####.###.......######.####..........###............................####.......#####...#.....#####..##.##########....######.....#..................##....................#.......#######..##......######............. -....................####.##...#######......#####...#####.........###............................###...........##.........######....#####.####....####..###.###.##....#...##.........................###.......#..###.####......#######........... -...................#####.###...######....######....#####.....................................##..#........##.............######...#####..#####....####.###.######...###..###.........###.............##..##..........####.......######........... -#................#####...###....###.....#####.......####.....................................###...##...####..##........#...####.##############....###.##########...###...##....#....###..###...........###..##........#..##......####.........#. -#..............####........###..##......####........##.............#..####..................####...###..########.......###.#####.#########.####.....###..######.....###...#.....###.......###.###.......###..##..##......####.#.....#..........#. -...............####........###........####........................########....##............###....###...####.##.......###.######..####.##.#####....#########...........##.......##.......#######.......##...##.####......##.####................ -................#.###....####........#####.............##.........#######..#..###............##.....####.##........###..##..#####..###.....######....#####.............####..................####...............####.........####................ -...........#####..###....####........######..........#####........######..###........................#####....#....###......#####...###....#######...####..............###..##................###.................#...........##................. -......##########...#..#.####....#.....#####.........######.........####...###....##...............##..####..####.#####...##..##########.##....#####..##.................#..###................................................................... -.....###########.....#####....####.....####........#######..........####..##....####.............####...########.##......###..##.#####.#####...####.................##......#.................................................................... -.....###########.....####....#####.....##........#######............####.....#######.............####....#######....###...######.####..######.####..................###.......................................................................... +..................................................................................................................................................................................................................................................................#########################################......#################..######.........########......######......########.......############................######.........#######...###..........###.#######..###................... +..................................................................................................................................................................................................................................................................##########################################......################..#####...........########.#...#######.....#########.......############...............#####............#####...#####............######...###................... +..................................................................................................................................................................................................................................................................##################.#######################.......################..##.........##...###################......#########.......#############............######...........#####...########..........######...######.####.........#. +....................................................................................................................................................................................................................................................................########################################........################..........#####...#################.........###.####........############...........#####............#####...###.######...........###...#####################. +.......................................................................................................................................................................................................................................................................###################################..........################........#######...#################..........#.#######.......###########...........#####............#####...#############..............#####################. +.........................................................................................................................................................................................................................................................................################################............###############.......#########...###############............#########.......##########..........#######..........#####....################...........#####################. +............................................................................................................................................................................................................................................................................###..######################...###........#############.......############..###############...##........########.........#########.........#######..........#####.....##################............#################. +..................................................................................................................................................................................................................................................................................####################..#####.........###########.......#############...#############....####.......#########........#########........######..........######.....#####..############....................####...#. +....................................................................................................................................................................................................................................................................................############...#..########.........#########......#############.......##########....######.......#########........#########.......######..........#####.....####......#########.............................. +.....................................................................................................................................................................................................................................................................................##########......##########........#######.......#########.###.......###########...########.......#########.........#######.......#####...........#####.....###..........######....#########................. +......................................................................................................................................................................................................................................................................................#######......############.........#####......#########.............###########...#########........########........#######......######..........######.....####...........####....################..###..... +.......................................................................................................................................................................................................................................................................................#####......#######.######.........###.....##########...###.......###########....###########.......########.......######.......#####...........#####.....#####...........####....#########################. +.........................................................................................................................................................................................................................................................................................##......#######...#####................##########..#####.......##########....#####.#######.......########.....#######......######...........#####.....######...........###....#########################. +...............................................................................................................................................................................................................................................................................................#######.....######.............###########..#####.......###########...#####...#######.......########...#######.......#####...........#####......########.........####..#####....#################. +..............................................................................................................................................................................................................................................................................................#######.....#########..........##################........##########....#######..#######.......#################......######...........#####.....###########....#.#####..#####.....################. +.............................................................................................................................................................................................................................................................................................########...###########.........#################.........###########...########....#######.......##############.......#####...........######.....###########....#######..#####...................... +............................................................................................................................................................................................................................................................................................##########.############.........################..........##########....########.....#######.......#############......######...........#####......#####...##.....#######..#####...................... +............................................................................................................................................................................................................................................................................................#####################...#........#############...........###########...#####..#.......#######......############.......#####............#####.....#####.............#####..#####...................... +.............................................................................................................................................................................................................................................................................................##################...###.........###########............##########...#####............#######......###########......######...........######.....#####.............#####..#####..............##...... +..............................................................................................................................................................................................................................................................................................###########...##..#####.........###########...........###########...#######...........########.....#########.......#####............#####......#####.............####..######......####..####....#. +...............................................................................................................................................................................................................................................................................................###########....#######..........###########.#........##########...########.............#######......######.......#####.............#####.....######.............####..#########...####..####....#. +................................................................................................................................................................................................................................................................................................##########..##########.........#############.......##########....########.............########......####........#############.....#####.....#####.............#####..################..#########. +.................................................................................................................................................................................................................................................................................................#######...#####..#####.........#############.....###########...########................########.....##........#######################......#####.............#####.......###########..#########. +...................................................................................................................................................................................................................................................................................................###...#####....#####..........#############....##########....########.................########..............#######################.....#####..............#####................##..#########. +...................................................................................................................................................................................................................................................................................................##..######......#####.........#############....##########.....######...................########.............#######################.....#####..............####...####...###...........######. +.....................................................................................................................................................................................................................................................................................................######........######.........###########........######........###.....................########....................##############.....######....#####....#####..#####...####................. +.....................................................................................................................................................................................................................................................................................................######.........######........#########...##....#######...##....##..................##..########............................#####.....###############.########...####...####........########. +.....................................................................................................................................................................................................................................................................................................#######.........#####.........#######...####...######...#####......................###..########........................................###########..########...####...###.........########. +......................................................................................................................................................................................................................................................................................................######.........######.........######.######...######..#######....................######..######................................................###..########...############.......########. +.......................................................................................................................................................................................................................................................................................................######.........######........##############...####...#########.................######..######......................................................#######....####################....###. +........................................................................................................................................................................................................................................................................................................#####.........######.........##############...#....#####.######..............#######..#####..................................................................###########################. +........................................................................................................................................................................................................................................................................................................######......#########........##############........#####.#######.............######..#####......................................................................########################. +.........................................................................................#######....................................######......................####.....................................................................................................................................######....##########.........###########.........#####.##########.........#######..#####..............###.....................######..###..............................################. +.........................................................................................#################################..........######.....................########################...........##...............................#......................................................................#####..#############........#########...........#################........######.#######.............#####...................###################...............................########. +.........................................................................................##################################.........######.....................########################...........###.........################.....####...................................................................####################.........#######...#.......####################.....######..######..............#######.................###########################................................ +.........................................................................................##################################.........######.....................########################...........###.........#################...#######.................................................................#####################.........####....###......###.#################...##############....###........########..#............##############################...#####...###................ +.........................................................................................##################################.........######.....................########################...........###.........################....#########................................................................####################.........###...#####.....####...###############..##############.....####.......############...........######.#######################....####..#####............... +......................................................................................................................#####.........######.....................########################...........##..........################....############.............................................................#####################............######....#####.....#############..##############.....#####........#############.........#####........#################....####..#############....... +......................................................................................................................#####.........######.....................########################...........##..........################...#############..............................................................####################...........######....########.....##########...#############.....#######.........###########........######...............###########...#####.##############...... +......................................................................................................................#####.........######.....................########################..........###.............#############...#############..............................................................####################.........#########...#########.....########....#############....#########.........#########.........######.....................#####...#####....###########....#. +......................................................................................................................####################.....................#####...################..........##..............................#############...............................................................#####..########.######......#########..############..########.....############.....#########...........########.........####..............####....#####...#####.....#####.###....##. +.....................................................................................................................#####################.....................#####.............................##.............................#############.....###.........................................................#####.###############.......########..#################.##......############.....###########...........#######.........####.............#####....#####....####........######...###. +.....................................................................................................................##############################............#####.........................................##########.........#############....######.......................................................#####..########.######.......#######.#################..........############....############...........#######......#######.............######...#####....####........#####...####. +.....................................................................................................................##############################............#####.........................................##########........##############...#########.....................................................#########...##########........######.#################.........############....##############..........######.......######..............######....#####...#####........####...####. +.....................................................................................................................##############################............#####.........................................##########........#############....###########....................................................######......##########.......#####.#################.........############.....##############...........####........######..............######....#####...#####........###.....###. +.....................................................................................................................##############################............#####.........................................##########........##############...############...................................................######......###########.......###..################.........############.....###########.####...........#.........######.......######............#####...#####.....#..###....####. +...................................................................................................................................###############.............#####..##.....................................##########.......##############...######.#######...................................................######......##########.......##..################.........############.....###########..#####....................######.......#########.........#####....####.....####......###.. +..............................................................................................................................................####....................#####..................................##########......###############...#####...#######..................................................######...###########............##################........############....###########...#####....................######.......#########.........#####...####......####.....####.. +..............................................................................................................................................####...................######..................................##########......###############..#####.....######..................................................###################............###################.......############.....##########....######..................#######......##########.........######..####.....####.....#####.. +..............................................................................................................................................####...................######.................................###########.....###############...#####......####..##................................................#################....##........##################......############.....##########......######.................#######......##########..........#####...####...####......####... +..................................####...........................................................................................................#...................######.................................###########.....###############..#####........##..###................................................###############....####........#################......############.....######..###.......#####.................#####........#########...........#####...####...####.....#####... +.....................#####........####......................................................................................................................................................................###########.....##############....####...........#####...............................................##############...#######........###############.......############....######.............######...............#####...............##............#####...####...####.....###.#... +.....................#####........####......................................................................................................................................................................###########....###############....###...........#######...............................................###########....########.........#############.......############....#######..............#####...............#####........###..................#####...####...###......####.... +.....................#####........####......................................................................................................................#####...........................................###########....###############....####..........########..............................................########......##########........##############......###########.....######................####...............#######......######...............#####...####..####......#####... +.........####.........####........####......................................................................................................................#####...........................................###########...###############.....####.........##########..............................................###.....#.##############........##############.......########.....######.............########..............########.....##########............######...###..####......#####... +.........####.........####........####....####.####...##########............................................................................................#####.........####..............................###########...###############....#####.........##########..................................................####################........##############...#....#######....#######.............########..............########.....##########.............#####...###..####.......#####.. +.........####.........####........####....####.####..###########............................................................................................####..........####..............................###########....#############.....#####........###########...............................................########################........##############.#####..#####.....######...............######...............#######......####...###.............#####...####.####.......#####.. +.........####.........####........####....####.####..###########............................................................................................####..........####.................................########......###########.....####..........##########...............................................######...##...#########..........####################...##.....########..............######..............#####........#######.................#####....###.###.........#####. +.........####.........####.........###.....###.####.........####............................................................................................####.........#####...............................................###########....#####...........##########..............................................#####.........########..#........#####################........###########............#####...............########.....##########..............#####....#######..........####. +.........####.........####.........###.....###.####.........####...........................................................................................#####.........#####.....###....#.............................##..###########...######............##########..............................................#####.......#..#######.###........####################.......#######.#####..........######...............###########..############............######...#######..........####. +.........####.........####.........###.....###.####.........####...........................................................................................#####.........#####....####...#####..........................###############...######............##########..............................................######.....###.######..###.........##################.......#######....####........#######...............###########################..........######...#######...........###. +.........#####........####.........####....###.####.........####...........................................................................................#####.........####.....####...########......................###############...#####.............###########...............................................#####...#####..####..#####........##################.......######......##....#....######..................#########################...........#####...######............###. +.........#####........####.........####....###.#####........#####..........................................................................................#####........#####.....####...############..................###############...####..............###########...............................................#####...#####...##....#####........################.......######............###....#####.....................#####################............#####....#####............###. +..........####........####.........####...##########........#####..........................................................................................####.........#####............###############...............###############..#####..............###########...............................................#####....#####.........####.........##############.......########.....##...#####...#####........................##################...............##....#####............###. +..........####........####.........####...##########........#####.........................................................................................#####.........#####...........###################............##############...####...............###########...............................................######...######........#####........#############.......##########...####..######.#####............................##############......................#####.............#.. +..........####........####.........####...##########..###########.........................................................................................####..........####............#####..###############...........############...####..............############................................................#####...######.......#######........###########........############.####.############..........................##...###################...............#####................ +..........####........####.........####...##########..###########.........................................................................................####..........####............#####......##############...........########...######.............############................................................#####....#####......#########.......###########.......######.##########.#############.........................####.....################...............#####................ +..........####........####.........####...##########..###########.........................................................................................######.......#####...........#####........#################..........#####...######.##..........############................................................#####.....##.......##########........#########.......#######..########.############...........................####........#######################......###................. +..........####........####.........####...######......##..................................................................................................######.......#####...........#####........####################.........###...######.####........############................................................######.............#############......#######.......########...####################...........................######........#####################......###..........##..... +..........####........####................................................................................................................................########.....####............#####........#######################..............####.########....############.................................................#####.............#############......######.......###########..##################...........................#########.........##################......###......######..... +..........##..............................................................................................................................................###########..####...........######.......###########################.............#.###########.#############.................................................#####.........##.###############......###......###############...##.############............................############.............##########.................#####..... +..........................................................................................................................................................###########.#####...........#####........###############.##############............#########################.................................................#####........#####################.....#.......################......##########.....#.......................###############.....................................#####..... +..............................................................................................................................................................######..#####...........#####........##############################...............#####################..................................................######......######################............#########...#####.......#######......#####.....###...........#####..##########....................................######.... +.........................................................................................#####..............####...............................................#####..######.........######.......###############################......###..........##############..#...................................................#####......#######################..........#########.....####......########.....#########.#####..........#####....##########...#####..........................######.... +.........................................................................................######..##########.###################.......................................##########.....#####........###############################.....########........###########.................................................................################..#######........#######.........##..###.########.....###################.......#######....#####.####################................######.... +.............................####..............#############.............................######..##########.#########################.................................#############..#####........#############################.......############.......#####...................................................................################...#######........######............#####.#######.....######################......#######......#######################................######.... +....................#############.......####################.....##......................######..##########.#########################....................................##########..#####.......##############################.......###############...........................................................................###############....#########......#######..........########.#####......#####################........#######.......#####################................######.... +....###....##..#############################################.######......................######..##########.#########################....................###................#######.#####........##############################.......###################......................................................................##############....##########.......######.......############.####.......#####...#############.........########........##################.......................... +#######...##################################################.######......................######..##########...#######################...#...............########...............####.#####.##.....#############################.......#######################..................................................................##############...##########..........######.....#############..##................#############...........########........##......########.......................... +#######...################################...................######......................#####...##########........#####.############...#########.......###########..............#..#####.######.#############################.......#########################............................................................###################.#########............#######..###############...........##..##....###########.............#########.....###......###..###.......................... +########..####################.....#####......................#####......................#####...##########.........##...........####...############....#############..............#####.#####################################.......#########################............................................................############################..............######################............######....###########..............##########...###......###..###.......................... +########..#######..................#####......................#####......................#####.....#######......................#####...############....##############...............###.#################.###################......#######.########.#########............................................................##########################.........##......###################..............######......########.................##########.######.#####............................... +####.###...###.....................#####......................#####......................#####....#######.......................#####...###.######......##############...##................##################################.......######......###.....#####.............................................................#########################.........####.....###############.##..............######.........######...................########.#.##########..............##............... +##...###...###.....................#####......................#####......................#####....#######.......................####....####....###.....#####....#####...######...............###############################.......######......###.....#####.............................................................#######################..........######.....#############..................######.........#####......................#########...####...............####............... +##...###...#####.............###########......................#####.....................######....#######.......................####....####....###.....#####......##....#######..................##################...######.......######.....####.....#####.............................................................######################...........#######.....##########....................######........######........................###.####..####...............####............... +########...#####.........###############......................#####.....................######....#######.......................#####...####....###.....#####............#######..####...............##############....#####.......#######.....###.....######.............................................................#####################............########....########......................#####.........######.........................#########..##...............####............... +########...#####.........###############......................#####.....................######....#######.......................#####...####....###....######......#####...#####..#######................###########..####.........######......###.....#####...............................................................##################...............########....######............##........######.........######...........................##########.#..............####............... +########...#####.........###############......................#####.....................######...###########....................#####...####....###................########.###...###########...............##############.........######.....####.....#####...............................................................#################................########.....######..........####.......######........#######....###........#.............##########..............#####.............. +##..####...#####.........###############......................#####.....................######...###########....................#####......##..........##.###..............####..###############..............###########..........######.....####....######...............................................................###############...................########....######........######.......#####.........######.....#######....###............##########.............#####.............. +....####...#####.........###############......................#####.....................######...###########................##..#####.....######.......#####...............####..###################.............########.........######......###.....#####................................................................##############....................########.....###.........########.....######.........######.....########..######............##########............####.............. +....#####..#####.............###########......................#####.....................######...###########................###.#####....#######.......#####.......##.....#####..###.##################..............####.........######......###.....#####...............................................................#############.......................#######...............##########.....######........#######.....########..########...........##########...........####.............. +....#####...####..............##....................########..#####.....................######...###########................###.#####.###########......#####.......############..####....##################.......................#########..####.....#####................................................................###########.....................##.########.............############....#####........########....#########.###########.#.........########..........#####.............. +#....####...####......##########..##########################..#####.....................######..............................###.####..###########.....######.......###.########.#####.####..###################..................###############.....######................................................................#########.....................#####.#######...........#########.####....#####........#######.....########....#############.........######..........######............. +#....####...#####.....##########..#######################.....######.......................................................####.####..###########.....######......####.######...#####.####......##################...............###############.....#####..................................................................#######....................#######.#######.........###########.#####...#####........#######.....########.....##############........####.............####............. +#....####...#####.....#####.......#####.......................######.......................................................####.####..###########.....######......###########...####..####.........###################...........##################..#####...................................................................####....................################.........#############.####...####.........#######....#########.....##############..........##..............###............. +#....####...#####.....#####...................................######...........................................#...........#########....#########.....######......####.######...#####.####.............#################.............#####################...................................................................###...................################..........########..##########.#####.........######.....########.....#####.########...........................###............. +#....####...#####.....#.......................................######...........................................########........#####...########.......######.....####....####...#########..................#############...####.........##################.........................................................................................############...............######....####.####.#####........######......########.....####..########...........................###.........###. +#...........#####.............................................######....................####...................#########.......#####...########.......#####......####...####......#.#####.....................##########..########..........#############...........................................................................................##########................#######..#####..###.####.........######......########.....####..#######............................####......#####. +............#####..................................#########..######....................####...................###########.....#####....#######.......#####......####...####.....#####.##.........................#####...############..........#########..........................................................................................#########...................######.#####...###.##..##.......######.....#########............#####........................##...####......#####. +.....#####..#####............................###############..######....................####.##................###########.....#####...#######.......######......####...####.....######............................####...###############..........######.........................................................................................########.............###.....##########......##.....#####...#######.....########...............###..........##............####.####......#####. +..########...............................###################..######....................##################################.............#######.......######.....####...#####.....#####............................#####...###################..........#..........................................................................................######.............######.....#######......####.....##############......##########.........................#####.........##########......#####. +..########.................############################.......######....................##################################.............#######..................####...####.....######............................#####..#######################...................................................................................................###.............########......######.....#####....###############.......#############.....................#######.......##########......#####. +..########....################################................##........................########################################.......#######...............#######...####.....######............................####...##########################..............................................................................................................###########.....#######..#######....################......################.................#########.......####..####......####. +..............################################..........................................########################################........######...............#######...####.....#####............................#####...######..####################..........................................................................................................#############......######.########....###############.....#..###################..............########.........#..#####......####. +...########...###############################.............................................................######################........####........#########..#####..#####....######............................#####...######.....####################.....................................................................................................################......#############......##############....####.#####################.............#####..............####......###.. +...########...###################........................................................................................#######........####........################..#####....######...####.....................#####..######..........#################..................................................................................................##################......############..........###########....####.#########################...........###..............###.....#####.. +..............###...................................................................................................................................###################.###....######...#######..................####...######.........##################................................................................................................#####################......#########...............########....###..###########################..................................#####.. +....................................................................................................................................................###################.......######....###########.............#####...######.........##################..............................................................................................#######################.......#######...................####.....###############################...................................#####.. +....................................................................................................................................................###################.......######...################.........#####...######.........##################............................................................................................##########################......#####.............................################################..........##........................####.. +..........................................................................................................................................................#############.......######......################......####...######.........###################............................................................................................##########################.......###...........#####..............################################..........##........................##.... +..................................................................................................................................................................#####.........###..........###############...#####...######.........###################.............................................................................................##########################..................##########.............##############################..........##.............................. +...................#####................######...................................................................................................................................................#############.#####...######.........##################..............................................................................................##########################...............##################...........##########################.........###............................... +........######....######...###################......................................................................................................................................................################...#######.....#####################...............................................................................................##########################..........###.####.#..##########..............#######################.........####.............................. +.#############...#.#####...###################.......######.............................................................................................................................................###########.....#########################.######.............................................................................................############################........#####..##.......########..................##################..........####.............................. +.#############...#.........###################.......######...............................................................................................................................................#########.....####################......######...........................................................................................##############################........######.##............###.....................###...########..........#####.............................. +.#############.........##..###################.......######................................................................#########.......................................................................########......###############..........####..........................................................................................################################..........#####..............#####........####.................####...........#####.............................. +.######...####.............######....................######.......................................................####.....#########...........................................................................###..........##########............#.............................................................................................##############################............#####..............#####.......#######.....................###.......###............................... +..##.......####......................................######...............................###############.........#####....#########.............................................................................................................................................................................................................###########################........##.....##................####........#################..........#######...####........................###.... +..##.......####......................................######...............................###############........#####.....#########.............................................................................................................................................................................................................#########################.........###.................###...####........##################.........##############........................####... +.###.......####......................................######...............................###############........#####.....#########..............................................................................................................................................................................................................######################..........#####........##.....###########........####.##############........###############......................#######. +..###......####....####..............................######...............................###############........####.....##########....###...........................................................................................................................................................................................##..........####################............######.....####.....##########........####....###############.......#############......................#######. +#####......####....#####.............................######...............................###############.......#####.....##########...####........................................................................................................................................................................................######..........###################.............######....#####.....#########........####..........#############......##########......................#######. +######.....####....#####.............................#############........................###############.......#####.....##########...####.........................########........................................................................................................................................................#####..........####################............#######...#####.......######.........####.............#############.......#####.......................####.##. +.#####.............#####.............##########......#############........................###############.......#####.....##########...####........................################.................................................................................................................................................#####...........###################.........###.######...#####...###....###........######.............###############...............................#####.... +.#####.............#####........###############......#############.............................................#######....##########...####........................################.................................................................................................................................................######..........####################........###########..######.#####..............########.............################............................####..... +.#####.........##...####........###############......#####...#####.............................................#######.................#####.......................################..................................................................................................................................................#####...........###################.......#####.######...#####..###..#..............########.......###......#############..........................####..... +.#####.......#####..#####.......###############.........##...#####......................#######............##..#######.................#####.......................################..................................................................................................................................................#####...........##################.......######.#####....#######....###...............#######..#..########.....####.#####.....##.....................##..... +.#####..###..#####..#####.......###############........###...#####......................#######............##########..................#####.......................################................................######.........##.................................................................................................#####...........################........######.#####..##..#####....#####.....###........#########.############.####.####.....#####..................#....... +.#####..###..#####..#####.......#....................#####...#####......................#######............##########..................#####.......................#####......#####................................###########....##########.........................................................................................######...........#############.........###########..####..######...####.....#####.........########################.#####.....#######...............#######.. +.######.###...####...####........................#########...#####......................#######..............########..................#####.......................#####......#####................................#############..#####################...............................................................................#####...........###########..........##########..##.####..####..#####......####...........######...##############.#####.....########..............#######.. +..#####.####..####...#####.......................##########..#####......................######.................#########...............#####.......................####.......#####.................................############.#############################........................................................................#####............##########..........#########..####.####..#########......####..###.........####.....####...####.#####.......#######..............#######.. +..#####.####..####...#####.......................###########.#####......................######...................#######...............#####.......................####.......####....................................##########.#############################........................................................................######...........###########........######..#..#####..##...########....##.####.####..........##......###.....###.##...........#####...............######... +..#####.####..#####..#####...............................###.#####......................######...................######...............######......................#####.......####....................................############.#############..############.........................................................................#####............##########........#####....#######.###...###.##.....###.###.######................###......#####..............###....#.........#####.#... +..#####.####..#####..#####................#...#..........###.#####......................######..................#######...............######......................#####......#####....................................####...#####..........####........######.........................................................................#####............###########......######..######...####...##........#####.#########..###..........#######......##..#.####............####.......########.. +..#####..###...####...####........#############....####..###.#####......................######..................#######...............######......................################................................#......#...####.......................#####..........................................................................######............##########......######.######...######...........######.#######...#####.........########....##..#######...........######......#########. +..######.###...####...#####.......#############....####......#####.....................#######..................######................######......................################................................#####......####.......................#####...........................................................................#####............##########......######.####....#######..........#####..#######...#######........########....##########............#######......####.###. +..######.###...#####..#####.......#############....####......#####.....................#######.................#######................######......................################................................#####......#######....................#####...........................................................................#####.............#########.....######.######..#######..........####....#####...##########........######....###########..........##.######....#######..#. +.........####..#####..#####.......#############....####......#####.....................#######.................######.................######......................################................................#####......#######....................#####...........................................................................######............#########.....######.#######.######.........######..######...###########..........###.##..###########.........####.####.....#########.. +.........##....#####...####........................####......#####.....................#######................#######.................######......................################................................####.......#######....................#####............................................................................#####.............########....#######.##.####.#####.........######..######...###########............#.################.........###.#####.......######... +................####...#####..........#########....####......#####.....................#######................#######..................####................######........#########...............................#####......########..............#####.#####............................................................................#####.............#######.....######.###..##.#####.........#####...######...#######.###....##.........###############........####..#####................ +................####...#####.......############....####......#####.....................#######................######.......................................#########.............................................#####......########..............#####..#####..#........................................................................######.............######.....######.###....#####..........####....#####..#######....#....#####........##.##########......######...####..............##. +................#####..#####.......#######.........####......#####.....................#######...............#######.......................................#########...........###...............................#####......####..#...............#####..#####..#########.................................................................#####.............###.......######..##....######..........####...####...######..........#######..........#########......#######...####.............###. +................#####..#####.......................####......#####.....................#######...............#######.......................................########............########................................####.####...................####..####...###########...............................................................#####.......................######.###..#######...........#####.####..#######..........#########........##########......######...####.............####. +................#####...#####......................####......#####.....................#######...............######......#########........................#########...........#########.#######........................########..........................####...###########...............................................................######......................######.###..######.............#######...#######.###......###.########......#########.......####....#####.............####. +.................####...#####.......###########....####......#####.....................#######.................####......############...####...............########...........#########.#######........................##############....................####...###########................................................................#####....................#######..###..#####..............#######..#######.#####.....###.#########......#######.......####.....####...............###. +.................####...#####.......###########....####......#####.....................#######..........................#############..#####..................................#########.#######................###.##..##############...................#####...############...............................................................#####....................#######.####...##.................####...####...########...##############......######.......#####.....####................##. +.................#####..#####.......###########....####......#####.....................#######..........................#############..#####..................................#################................######################...................#####..#############...............................................................######...................#####...####..###..................##..######.#..######...#################......###.......######....#####.................#. +.................#####...####.......###########....####......#####.....................#######....#########.............####.......##..#####...........................................########................###########..#########...................#####..#############................................................................#####...................#####....#######..#...................#####...##..#.##...##.################......#.......######.....####.................... +..................####...#####......#####..........####......#####.....................#######....#########.............####...........#####...................................................................###########..............................####...#############................................................................#####..................########..#######.####.................####..#.##....###..##..#################............#####.....#####.................... +..................####...#####.....................####......#####.....................######.....#########.............####...........#####.........................###.......................................###.#######.............................#####...##############...............................................................######.................#########.######.######.................######.......######...##########.#####...........######..#...####..................... +..................####...#####.............###...............#####.....................######.....#########.............####...........####..........................######...................................####.#######.............................#####...##############................................................................#####..................#########.####..#######.................#######....######...#####.###########..........#######.###.####...................... +..................#####..#####.........#######...............#####.....................######.....#########.............####...........####..........................######...................................####.....###............................#####....###############...............................................................#####.......##.........####.####.####.##.######.................########....####..#######.#########.........##.#########.#####...................... +..................#####...#####.......########...............#####......................................................####...........####.......................#########...................................####.....###.......###.............###..#####....###############...............................................................######....####...........#........##......#####...................#######...###...########.########........####.##.####..#####......#............... +...................####...#####........###...................#####......................................................###............####......................###########..................................####.....###.......#############...###..#####....###############................................................................#####....####................###.....########.....................###########......##############........######....###.#####......####............. +...................####...##....................###..........#####......................................................###...........#####......................############.................................####..............####################..#####....###############................................................................#####.....####.........##.#######...########..###...................#########.......#######.####..........######....########......######.....##.... +...................#####................##..#######....................................................................####...........#####......................############.................................#######...........####################..####.....###############................................................................######.#######........###########.#######.....####...................#######.......#############.........######......######......########..####.... +...................#####................###########....................................................................####...........#####......................############.................................##########..............##############..####.....###############.................................................................#############........###########..###.#.....######...................##########...###.########.........######......#######......###############... +...................#####................############...................................................................############...#####......................############................................###########...####.................####..####....#################................................................................##############.......#######.####.##....############......##...........#########.####..#######.........#####.......######.......###############... +....................####................#########......................................................................#############..####.......................############................................###########...#############.............#####....#################................................................................##############........######.####.####..#############....#####.........#############...######...........###.##.....######......#################.. +....................####................#####.........####.............................................................#############..####..........................#########...................................########...###################.......#####........##############................................................................######...####........###########.######.#####.#####....########.........###########..#######........###.#.###....######.......#################.. +....................#####..............................#####.........................................................####.......####..####..........................######.............................................#...#####################...#######.......####.......####................................................................####......####........###########.################.....#########...........#########.######.........#####.###....######......###################. +....................###................................#####.........................................................####.............####..........................######.................................................#####################...#######.......############....................................................................####.....####........###########..#####.########.....############...........#######..#####........#########.......###.......###################. +.................#.....................................#####.........................................................####............................................#####.................................######...................############...#######.......##############..................................................................####......###.........######..###..############.....###############..........#######...##.........########..........#......####################. +.....###.........###...................................#####.........................................................###...................................................................................#########......................######....#####........##############...................................................................###......#####........####...####..###.#######.#....################..........#######.###.......########..................####################. +....#########....###...................................######........................................................###..............###..................................................................#########....#####......................................############...................................................................####.....######.......####...#####.###.######.####...####....########...........#########.......#######....................###################. +....################...................................######........................................................###..............###.......######.....................................................#########...######.......######.................................####...................................................................####.....######........####....####..####.....####....###......########..........########......##.#####.......#..........##.##################. +....################...............####.................#####........................................................##..............####.......################...........................................#########...######.......#######.......##...............................................................................................###..#########........#####....####.#####..#######..####.......#########........#######.......####.##........###.......######################. +....###############......#.....########.................#####.....................................#########..........#..............#####.......#################...###....................................#########...###..........#######.......#########........................................................................................###############........####.#.#####..####..###.#####.######.....#########.........#####......#######...##...#####......######################. +.........##########...#####....########.................#####.....................................#########..............################.......#######.#########..######..#####.............................#######...###..........######........################................................................................................##########.#####........#############..##.############.######......########...........#.......########..###..#####.....#######################. +.............######...#####....########.................#####.....................................#########..............###############........#######.#########..######..##############....................###.......###.............###........##################..#####.....................................................................#########....#####.........############....####....#####..#######.....#########.................#############.######.....#######..##############. +.................##...#####....#########................####......................................#########..............###############..............###########..######..#################...................#.......######.....................##################..############..............................................................######.......######...........########......####.########..#######....###########..................#########..#####.....###.####...#############. +#####.............................######.................###.........................##..........##########................#############.....................###...#####...#################...........................######..........................#############..###############...........................................................#####.........#####...........#######....##..#######.####...#######.....###########..................#######.######.....###..##.....#######.####. +#####..............................#####.........................................######..........##########..............##....###....................................##...#################...........................######.................................######.################...........................................................######........#####............#####....####..######..#####..#######.......##########..................###########.....###..###......###########. +#####......###.....................#####.........................................#######.........##########..............###...#########.....................................###############..................##........#####................######.............####.##..#####.######............................................................#####........######............##.....######...###..#######...######......###########...###.............#########.....###..#####.....##.#######. +####......###########..............#####..........................................######.........##########..............###...#########......##############.............###.............###..................#####..........................######.............####.##.....##.####..............................................................#####.........#####..................########...#...##.#####..########....##...######...######............######......##..######.....###.######. +..........################.........######................#........................######.........##########..............###...#########......##############.............###..................................#####..............####.........................######.##........####..............................................................######........#####.................##########.......#########..########..###.#######...######...............###.....###..#####......##.#######. +..........##################.......######............#####........................######.................................###..##########.................................#######..............................#####..............####.........#####...........####...##...........................................................................#####........######................###########.....####.#####...########.##########....######.......................#########......###...#####. +..............###############.......#####.........#########........................###............................#######.....##########.................................#######..............................####...............####.........#######.........####..................###...........................................................#####.....#########..................##########....##########.....########..#######....#####.......................#########.......##......###. +#####...............#########.......#####.....#############.......................................................#######.....#########.....#######..........................###..............................####..............####.#........###########......###...............#######..........................................................######.############.................###.########.....#######.......########..#####....#######......................###########....###........#. +#######......##.........#####.......#####...###############.......................................................#######........######.....#################................###...........#####.............#####..............####.############################...##....#####.#######............................................................###############...................#####.########.......###..........#######...##.....#########......................########...####.........#. +#######.....#####........####...............###########...............................................................###...................###################..........#######################.............#####..............####.#########.##################...###...#############............................................................#############.....................#####..########.......#.............#######........############.....................######..#####.........#. +###.........########.....####...............########........................................................................................###################..........#######################.............#####..............####.#########......#############...###...######...................................................................##########.........................#####.#######........................#######.....###############.....................####..########.....##. +##.............######....#####...............######............................................................................................################..........########################...........######..............###..................############...###########........##...........................................................######.............................###########..........................#####......#####.###########........................###########...##. +##...............####.....####...............######.......................................................................................................#####..........########################...........######.............................####........######..############.......####..........................................................###.................................#########.............................###.....######...###########.......................##########..###. +##.....######.............####...............######......................................................................................................................############......................#######.............................#####...............############......######..............................................................................................#######.........###........#.##..............#####......#########........####.............########..###. +.#....############........####...........###########.......................................................................................................................................................#######...##........................###########.............########.....########.............................................................................................######..........#####.....#######...........######.........#####.........#######.............####....#.. +......#############.......#####......###############.............................###.......................................................................................................................#######...########...................#############...............###....##########.............................................................................................####...........#######...########..........#####...........####........##########.............##....##. +......#############........####.....################.........................#######........................###############################..###.....................................................................########.................###################.................############.............................................................................................##.............#######....######..........#####.......................############................###. +.......############........####.....#################.....................##########.....................#######################################.....................................................................########............#....####################...............######..######...........................................................................................................#########.##.####............##...........................#########.###............###. +.............######........####......################....................############.................##############################################.................................................................########.....#.....####..####....##.########...............######.....#####..........................................................................................................############....#.........###............................##########.#####..........###. +.................##........#####.....#########.###........................########..................################################################...##########........................................................####....####...#####.####..........#####..............######.......#####........................................................................................................#####..#####..............#####...........................####.####..########.........#. +...........................#####.....#####................................####....................##############################........############...##########................................................................################..........................#..######........######.......................................................................................................#####....###..............#####.......................#...###....##.###########......... +............................#.........#..........................................................############........#########..................####..###########...............................................................############.####.........................#########........#######......................................................................................................######....##...............####.......................########.......#############....... +##...............................................................................................############.........................................###########.......#.......................................................############.............................#########........#######........................................................................................................###########..............#####..........####.........########.........##############.... +#######..........................................................................................############..............................................######......####..##................................................############..............................########.......#.######............................................................................................................#######.............#######.........#######.......##########.........##############.. +############....................................................####.............................############.................................................###......##########..............................................############...#...........................######.......###.####..............................................................................................................######.............#########.......########......############.........############.. +############...................................................#####.............................############.................................................###.....#############...............................................########...####..........................######.....########..................................................................................................................##.............#############...########..........#########.........############.. +.###########..........................................####.....#####.............................##########...........................................................###############..............................................#######...#####..................##......#######..#######...................................................................................................................................###############.########............######.........############... +......######..........................................##############.............................#####.................................................................################..............................................####....####...##.............#####.....##############.....................................................................................................................................#######################.....##.......####.........######...###... +........####..............................#...........##############...................................................................................................####################............................................##...#####...####...........######.....############......................................................................................................................................######################......####..................######...##.... +.#####..####........................##########........##############....................###..............................................................................####################...............................................#####..#######....##...########....##########.......................................................................................................................................######################.....#####...................##########.... +..####...........................#############........############......................####...............................................................................#...#############................................................####...########...####..#########...#########..........................................................................................................................................##################......#####........##...........########.... +..##................#............##############........######..........................#####.....................................................................................###########......##..........................................##..########...#######..########...#######.................................................................................................................##..........................################.....#####........#####.........##.####...#. +...........##..######............##############........##..............................#####.........................................................................................######......#####............................................########...#########..#######...#####...................................................................................................######.........###............................############......#####........#####........###.####...#. +.......######..######............##############.......................................#####............................................................................................####......#######.........................................########...##########...########..###...................................................................................................#########......######............................##########.....#####........######........#######....#. +...##########..######..####......#########..###.......................................#####..............................................................................................##......#########.........................................#####...#####..####.....#######......#...............................................................................................###########....########..............................######......#####...###..#####.........#######...##. +...##########..#####...####......####.......###............................#..........####.......................................................................................................###########.........................................###...#####....#...###.#######....####............................................................................................#############..##########.................................##......####...#####...###........##.####....##. +.############..........####...............................................#####......#####......................................................................................................#####..########.......................................#...#####........#####.######...########.........................................................................................###########################......................................#####...########...........##.####....##. +############.......##..####..............................................#######.....#####.....................................................................................................#####...##########.........................................######.......#####...####..##########........................................................................................############################....................................#####.....########.........########...###. +########..........###..####.............................................########.....####......................................................................................................#######...###########......................................########.....#####...###...###########.......................................................................................#############################..................................######......#######........########....###. +#####.............###..####............................................#########....#####........................................................................................................######.....#####.####.....................................#########....###...####....#########........................................................................................###############################................................#######.##.....####........###.####......#. +#####.............###..####............................................#########....#####................................................................................................###.......###........##########.....................................#########.......#####......########.......................................................................................###############################..................................##########....##.........#######......... +###....................####.............................................#######.....####.................................................................................................####.....#######........#########.....................................########......####........########......................................................................................##############################.....................................##########.......####.###.####......... +#......................####..........................................####.#####....#####................................................................................................#######.....#######........#########.....................................########...#####...##....#######.........##............................................................................############################........................................########.......#######.#####......... +#......................####..........................................####.#####....#####................................................................................................########.....#######.........##########....................................########.####...####....#####.........#####..........................................................................###########################..........................................########.#....#######.####...######. +.......................#####...........................................#######....#####..................................................................................................########.....########.........#########....................................############..#######..####.........#######...........................................................................########################.............................................###########.############...######. +.......................#####.....######..................................#####....#####....................................................................................................#####........########.........#########....................................#########...########..####.......########............................................................................#######################...............................................###########..#...####....######. +........................###############..................................#####....####......................................................................................................###...........#######..........##########...................................#######..##########...###......#######..............................................................................#####################.................................................###############.####...#######. +........................###############..........................###.....####....#####......................................................................................................#####.........#########...........#########...................................####....#################...#######................................................................................###################...................................................##################....#######. +....................###.###############..........................####...#####....#####.......................................................................................................#####..........########...........###########..................................#.......################.#######.................................................................................##################.......................................................###############......#####. +.................######.############............................#####...#####....####................................................................................................###.....######..##.......#########..........###########..........................#..............######################.................................................................................###################..........................................................############.........##. +..............#########..........###............................#####...#####...#####...............................................................................................####....#######.####.........#######............##########.......................####.............#####..#############..................................................................................##################...............................................................#######............. +...........############.........................................####...#####....#####............##.................................................................................####...######...######.......########..............#########....................######..............###....##########....................................................................................################..................................................................#####............. +........#############..........................................#####...#####....####............####...............................................................................####....######..#########.......########..............#########..................######......................########......................................................................................##############......................................................................#.............. +.....##############............................................#####...#####...#####...........######.............................................................................####.....#####....#########.........#######..............#########...............######........................######........................................................................................#############..................................................................................... +...#############................................#####..........####....#####...####.............#####.............................................................................####................#########.......########..............########...............######.........................####...........................................................................................##########...................................................................................... +..###########...................................#####..........####...#####....####..............###...............................................................................##...................#########........#########...........#######............########............................##.............................................................................................#######.................................###................................................... +..########.............#........................#####.........#####...#####....####.......................................................................................................................########........##########.#.......###.###...........#########...............................#.............................................................................................####.................................#######................................................ +...#####.......####.#####............###.........####........#####.....####....###.........................................................................................................................#########.........###########.....##................########................................###............................................................................................###.................................##########............................................. +...###......#######.#####........##.#####.......#####........#####............####..................#........#...............................................................................................#########........###########..................##...######................................######..............................................................................................................................#############.......................................... +..........#########.#####.......###..#####......#####........#####............####.................###.....####................................................................................................#########.........##########................###..######...............................########............................................................................................................................###############......................................... +........###########.###........#####.#####......###..........####............####.................#####...#####................#####............................................................................#######............##########.............#####..####................................##########..........................................................................................................................###############......................................... +......##########.............#.######.#####.................#####...........#####................######..#######..............######..............................................................................#####..............#########...........########..#..................................###########.......................................................................................................................###############.......................................... +.....########..............###..######.#####..................###...........#####.................#####...#######.............#######...............................................................................#####...###........########...........#########.....................................##########......................................................................................................................#############.#.......................................... +...########................####..#####..####................................########...............###.....######........###...######..................................#..............................................####.#####..........#####............#########.....................................###########...................................................................................................................###############........................................... +.########..........###.....#####.######.###........####.....................########............#..........#####.......######..######.................................###.............................................###.#######..........###..............#########......................................###########.................................................................................................................################...........................##............. +########..........#####.....#####.######..........######....................########...........###..........##..........#####..######................................####...............................................#.##########..........................#########.....................................###########................................................................................................................################...........................#####.......... +######...........#####.....######..#####..........######....................#######...........#####.....................#####...........................#####........#####..................................................#########...........................########......................................###########.............................................................................................................################............................########....... +#####............#####.....#######..####..........######...................########...........####..................###.#####...........................#####.......######..................................####........##...#########...........................########.......................................#########.............................................................................................................################...........................############.... +####............#####.......#######.##............######...................########..........####................######.#####...........................#####.......#######................................#####.......#####..#######..............................#######......................................########..............................................................................................................###############............................#####.#######... +##.............###.#........########..............######...................#######............###................#######.#####..........................#####.......########...............................#####.......#####...#####................................########....................................#######..............................................................................................................################............................#####....####... +#.............#####..##......#######..............######...................#######...............................#######.###............................#####........######................................####.......######....####.................................########..................##.............#########..............................................................................................................################...........................#########..##.... +...............###..####.....#######..............######...................#######................................######................................#####........######.................................###.......#####......##....................................#######................####...........#########...............................................................................................................###############............................#############.... +...........##.####..####......####................#####....................#######..............##.............#.....###...................................##.........####............................................#####.........#...................................#######..............#######.........#########..............................................................................................................################............................#############.... +......##..######.....####......##................######....................######...............###..........####.....#.......................................#.......####.............................................###.........####..................................#######.............#########......#########...............................................................................................................################........................##.###############... +......###.######.....#####.......................######....................######..............#####........#####.............................................#####....##.........................................................######...................................######.............#########.....#########...............................................................................................................###############.........................####################. +.....#########...#....####.......................######....................######.............########......######...........................................######....##..##.....................................................#####.....................................######.............##########...#########..............................................................................................................################.................####...#####################. +......#######..###.....####......................######...................######..............#######.......######...........................................######.......#####.......................................###..........###.......##..............................#####...............###################...............................................................................................................################..........##.....###############.############. +......######...####....####......................######...................######...............######........######............#.............................######......######.......................................#####.........##......####.............................######...............##################................................................................................................................##############...........#####..###############....#########. +.....######....#####....###...............................................######..............#.####...........####......#...####..............................###.......######.#####................................######................######.............................######................###############....................................................................................................................###########..........######################........######. +....######......####.....##.......................................####....#####..............####.#.............###....####..####.....####.....#####......................####.##########............................######...............#######..............................######................############.........................................................................................................................########..........######################.......#######. +...######........####............................................#####....#####..............####...............#......####...###.....######...#####...####................##..############...........................####.................######..............................######..................#########.............................................................................................................................####...........###############.######.......#######. +..######...##....#####...........................................#####....#####.............#####......................#####..####...########..#####...######..................############.............................##..................####...##...........................######..................########...........................................................................................................................................###############.....##........#######. +.#######..###.....####...........................................#####....#####.............####.......................#####..##.....#######...####....######..##.............############...##..............................................##...####...........................######...................#####............................................................................................................................................########..#####................######. +#######..#####.....##...........................................##.###....####................##........................####..........######......#....######..####...........############...####.................................................#####..........................#######...................####.............................................................................................................................................#######.....##...................###. +.#####....###...................................................#####.....####.............##.........#.............##..###............................######.######.............########...######...............................................#####............................#######....................#.................................................................................................................................................###............................... +..###......#.###................................................#####.....####.............######.....#####........###.................................######.######.................####...#########......##...................................######.............................########...................................................................................................................................................................................................... +##.#........#####..........................................###..#####.....####.............######....######.......#####....................................#..######.........................########......####................................######...............................########..................................................................................................................................................................................................... +##....##.....####..................................###....####..####......####............#######....#####.......#######.......................................#####...........................#####......#####..#.............................#####.................................########.................................................................................................................................................................................................... +##...####....####.................................####....####..####......####............#######....#####.......#######........................................................................####......#####.####...........................####....................................#######................................................................................................................................................................................................... +#...######....#...................................####....####.#####.....#####.............#####.......###........#####...................................................###.............................####..#####...........................##......................................#######........................................................###....................................................................................................................................... +.....######.......................................####.........#####.....#####.....................................###....................................................#####.............................#..######...#................................................................#######......................................................######..................................................................................................................................... +......#####.......................................####....####.#####.....#####.............#####....##..............#.....................................................#####.................................#####..####...............................................................########....................................................#######.................................................................................................................................... +.......####...............................................####.#####.....#####.............#####....######........................#####..#####...........................######...................................##...####................................................................#########.................................................##########.................................................................................................................................. +##......##................................................####.#####.....#####.............#####....######........................#####..#####...........................#####........#####............................###..............................#....................................########...............................................#############................................................................................................................................ +####......................................................####.#####.....#####.............#####....######....................##..#####..#####.######....................#####........####.............##..............................................####...................................#########.............................................###############.............................................................................................................................. +####......................................######.....#####.###.####......#####...............##.....######.......#####........##..#####..#####.######.#####...............####........####.............####............................................#####....................................########............................................################............................................................................................................................. +#####.....................................################.....####......#####...................................#####....######.........#####.######.#####...........................####............#######.##......................................#######....................................########............................................#################........................................................................................................................... +######....................................################.....####......#####...................................#####....######...............######.#####..........................#####............#######.####....................................#######..................###.................#######.............................................###############........................................................................................................................... +#.####....................................################....#####......#####......................#####........#####....######........................###..........................#####............#######.######...................................#####.................######..................######................##...........................#############..........................................................................................................................#. diff --git a/tools/mapstyle.withgoogle.com_houses_parks_water_roads.json b/tools/mapstyle.withgoogle.com_houses_parks_water_roads.json new file mode 100644 index 0000000..d826950 --- /dev/null +++ b/tools/mapstyle.withgoogle.com_houses_parks_water_roads.json @@ -0,0 +1,158 @@ +[ + { + "elementType": "labels.icon", + "stylers": [ + { + "visibility": "off" + } + ] + }, + { + "featureType": "administrative", + "elementType": "geometry.stroke", + "stylers": [ + { + "weight": 2 + } + ] + }, + { + "featureType": "landscape", + "elementType": "labels.text", + "stylers": [ + { + "visibility": "off" + } + ] + }, + { + "featureType": "landscape.man_made", + "elementType": "geometry.fill", + "stylers": [ + { + "visibility": "on" + } + ] + }, + { + "featureType": "landscape.man_made", + "elementType": "geometry.stroke", + "stylers": [ + { + "color": "#000000" + }, + { + "visibility": "on" + } + ] + }, + { + "featureType": "poi", + "elementType": "labels.text", + "stylers": [ + { + "visibility": "off" + } + ] + }, + { + "featureType": "poi.government", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#ff0000" + } + ] + }, + { + "featureType": "road", + "stylers": [ + { + "color": "#ffffff" + } + ] + }, + { + "featureType": "road", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#ffffff" + }, + { + "visibility": "on" + } + ] + }, + { + "featureType": "road", + "elementType": "geometry.stroke", + "stylers": [ + { + "color": "#ffffff" + }, + { + "weight": 8 + } + ] + }, + { + "featureType": "road", + "elementType": "labels.text", + "stylers": [ + { + "visibility": "off" + } + ] + }, + { + "featureType": "transit", + "stylers": [ + { + "visibility": "off" + } + ] + }, + { + "featureType": "transit", + "elementType": "geometry.fill", + "stylers": [ + { + "color": "#000000" + }, + { + "visibility": "off" + } + ] + }, + { + "featureType": "transit", + "elementType": "labels.icon", + "stylers": [ + { + "color": "#ffffff" + }, + { + "visibility": "off" + } + ] + }, + { + "featureType": "transit", + "elementType": "labels.text", + "stylers": [ + { + "visibility": "off" + } + ] + }, + { + "featureType": "water", + "elementType": "labels.text", + "stylers": [ + { + "visibility": "off" + } + ] + } +]