From 343a467b6fa62a6943b2f3f84d9aae02f28d3c32 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Sun, 21 Aug 2016 01:07:37 -0600 Subject: [PATCH] Add open source license viewer dialog --- config.xml | 2 +- .../2.13/taskArtifacts/cache.properties.lock | Bin 17 -> 17 bytes .../.gradle/2.13/taskArtifacts/fileHashes.bin | Bin 158885 -> 159333 bytes .../2.13/taskArtifacts/fileSnapshots.bin | Bin 4153973 -> 4339306 bytes .../2.13/taskArtifacts/taskArtifacts.bin | Bin 197279 -> 197279 bytes .../localClassSetAnalysis.lock | Bin 17 -> 17 bytes .../localJarClasspathSnapshot.lock | Bin 17 -> 17 bytes .../localClassSetAnalysis.lock | Bin 17 -> 17 bytes .../localJarClasspathSnapshot.lock | Bin 17 -> 17 bytes platforms/android/AndroidManifest.xml | 2 +- platforms/android/assets/www/js/home.js | 708 +++++++++--------- .../android/assets/www/screens/licenses.html | 199 +++++ .../android/assets/www/screens/settings.html | 11 +- platforms/android/res/xml/config.xml | 2 +- www/js/home.js | 708 +++++++++--------- www/screens/licenses.html | 199 +++++ www/screens/settings.html | 11 +- 17 files changed, 1121 insertions(+), 721 deletions(-) create mode 100644 platforms/android/assets/www/screens/licenses.html create mode 100644 www/screens/licenses.html diff --git a/config.xml b/config.xml index d4912c8..673e3d7 100644 --- a/config.xml +++ b/config.xml @@ -1,5 +1,5 @@ - + TerranQuest Augmented Reality fantasy game diff --git a/platforms/android/.gradle/2.13/taskArtifacts/cache.properties.lock b/platforms/android/.gradle/2.13/taskArtifacts/cache.properties.lock index b65a74393c4953db7e155f34fb60a0dfee224c0e..507544ad923a7c3021cf3e6eefeed905c8a5c7aa 100644 GIT binary patch literal 17 VcmZQ>a$9jsqWiTJ0~l!E0st}{1m^$% literal 17 VcmZQ>a$9jsqWiTJ0~n}p0st}X1iJtL diff --git a/platforms/android/.gradle/2.13/taskArtifacts/fileHashes.bin b/platforms/android/.gradle/2.13/taskArtifacts/fileHashes.bin index d51cbda2b02ac2c2332ceb2ae09510cf42da21c0..a323cef6d50d6192aa373b8f151e2efdcb52e2ce 100644 GIT binary patch delta 8049 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 C7z2O+ delta 6765 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 Jwwo=i|36chEKdLc diff --git a/platforms/android/.gradle/2.13/taskArtifacts/fileSnapshots.bin b/platforms/android/.gradle/2.13/taskArtifacts/fileSnapshots.bin index ea9d5d316108023dfefe52c296abc695070090a6..c352ec1fdef184c2f1ba33c6e8ac226605a8d5aa 100644 GIT binary patch delta 10514 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 delta 7237 zcmeHLc~n$alke9%*zjJrbknaJn(k(65bS0LSp);f;skMtD*{mjqktL_5f_XKZc+3q z1uh7pf(wcxTaiJBM}=JNV8$$XiaGjrz5Uo-EV>b~b!b*t*# zTUEF2yL*2T|LO5pRJnGpe|Q#;$5RvH@r;v3@_3Yr8*7&ok#P_=)@(RS#$i_c`e!^I zpXSEK_maq%;l}~vTY1M920*Y2AqFS|uK33pwx+3-E z#I?8XqBeDtsr2;XLr$lihFiftNnQVV%0At=RzJyTHShcS7qo~CL*KEE%;N9TQYSts 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 diff --git a/platforms/android/.gradle/2.13/taskArtifacts/taskArtifacts.bin b/platforms/android/.gradle/2.13/taskArtifacts/taskArtifacts.bin index d392294fcb18de0fd92fbbea7107f09ca65bb6c6..f7d6e6a13fda2f4833d974009a40ef22aa42a6bf 100644 GIT binary patch delta 1920 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 IpaIMO0UW`2YXATM diff --git a/platforms/android/.gradle/2.13/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/platforms/android/.gradle/2.13/tasks/_compileDebugJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock index d97bf9eac3f4ee6900572ae5c01b6d99a3850ed3..20612221eed4e4b201df7540e5404e6b344ee697 100644 GIT binary patch literal 17 UcmZSHk#@0jn+a diff --git a/platforms/android/.gradle/2.13/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock b/platforms/android/.gradle/2.13/tasks/_compileReleaseJavaWithJavac/localClassSetAnalysis/localClassSetAnalysis.lock index f6a0d0203e8b7221373cf61c8d1b9f1da19edd5d..29ed4f0a156fcc2e02c5550c86578785088ea3e6 100644 GIT binary patch literal 17 UcmZRUJ1_l{byDhM1_+P_050wW{{R30 literal 17 UcmZRUJ1_l{byDhM1_%%Z050eQ`2YX_ diff --git a/platforms/android/.gradle/2.13/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock b/platforms/android/.gradle/2.13/tasks/_compileReleaseJavaWithJavac/localJarClasspathSnapshot/localJarClasspathSnapshot.lock index 63a82d24c81f2b48e002cb5162a82c15e6f11c66..b064ae94fd90317896a4b35e6be1a76efedb79c3 100644 GIT binary patch literal 17 UcmZQ(pR(%GBh{U&86ZF!05;tOp#T5? literal 17 UcmZQ(pR(%GBh{U&86ZFu05;bIn*aa+ diff --git a/platforms/android/AndroidManifest.xml b/platforms/android/AndroidManifest.xml index a470923..562f7de 100644 --- a/platforms/android/AndroidManifest.xml +++ b/platforms/android/AndroidManifest.xml @@ -1,5 +1,5 @@ - + diff --git a/platforms/android/assets/www/js/home.js b/platforms/android/assets/www/js/home.js index ccc6714..841e300 100644 --- a/platforms/android/assets/www/js/home.js +++ b/platforms/android/assets/www/js/home.js @@ -1,355 +1,355 @@ -/* global PositionError */ - -////////////////////////////////////////////// -// GPS and terrain stuff -////////////////////////////////////////////// - -/** - * Handles GPS and terrain data. - */ - -// Globals -lockGot = false; -terrainGot = false; -latitude = 0.0000; -longitude = 0.0000; -gpsaccuracy = 9999; -// End Globals - -var lastgpstime = 0; -var terraintypeid = 0; -var map = L.map('map'); -var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg"; -map.setZoom(17); -map.dragging.disable(); -//map.touchZoom.disable(); -//map.doubleClickZoom.disable(); -//map.scrollWheelZoom.disable(); -map.keyboard.disable(); -$(".leaflet-control-zoom").css("visibility", "hidden"); -// Disable tap handler, if present. -//if (map.tap) { -// map.tap.disable(); +///* global PositionError */ +// +//////////////////////////////////////////////// +//// GPS and terrain stuff +//////////////////////////////////////////////// +// +///** +// * Handles GPS and terrain data. +// */ +// +//// Globals +//lockGot = false; +//terrainGot = false; +//latitude = 0.0000; +//longitude = 0.0000; +//gpsaccuracy = 9999; +//// End Globals +// +//var lastgpstime = 0; +//var terraintypeid = 0; +//var map = L.map('map'); +//var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg"; +//map.setZoom(17); +//map.dragging.disable(); +////map.touchZoom.disable(); +////map.doubleClickZoom.disable(); +////map.scrollWheelZoom.disable(); +//map.keyboard.disable(); +//$(".leaflet-control-zoom").css("visibility", "hidden"); +//// Disable tap handler, if present. +////if (map.tap) { +//// map.tap.disable(); +////} +// +//// Tile layer +//map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18})); +//// Places layer +//var placeLayer = L.geoJson( +// {"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]}, +// { +// onEachFeature: onPlaceTap, +// pointToLayer: function (feature, latlng) { +// return L.circleMarker(latlng, { +// radius: 14, +// fillColor: "#ff7800", +// color: "#000", +// weight: 1, +// opacity: 1, +// fillOpacity: 0.6 +// }); +// } +// }).addTo(map); +// +//var lc = L.control.locate({ +// position: 'topleft', // set the location of the control +// layer: undefined, // use your own layer for the location marker, creates a new layer by default +// drawCircle: false, // controls whether a circle is drawn that shows the uncertainty about the location +// follow: true, // follow the user's location +// setView: true, // automatically sets the map view to the user's location, enabled if `follow` is true +// keepCurrentZoomLevel: true, // keep the current map zoom level when displaying the user's location. (if `false`, use maxZoom) +// stopFollowingOnDrag: false, // stop following when the map is dragged if `follow` is true (deprecated, see below) +// remainActive: true, // if true locate control remains active on click even if the user's location is in view. +// markerClass: L.circleMarker, // L.circleMarker or L.marker +// circleStyle: {}, // change the style of the circle around the user's location +// markerStyle: {}, +// followCircleStyle: {}, // set difference for the style of the circle around the user's location while following +// followMarkerStyle: {}, +// icon: 'fa fa-map-marker', // class for icon, fa-location-arrow or fa-map-marker +// iconLoading: 'fa fa-spinner fa-pulse', // class for loading icon +// iconElementTag: 'span', // tag for the icon element, span or i +// circlePadding: [0, 0], // padding around accuracy circle, value is passed to setBounds +// metric: true, // use metric or imperial units +// onLocationError: function (err) { +// }, // define an error callback function +// onLocationOutsideMapBounds: function (context) { // called when outside map boundaries +// }, +// showPopup: false, // display a popup when the user click on the inner marker +// strings: { +// title: ".", // title of the locate control +// metersUnit: "meters", // string for metric units +// feetUnit: "feet", // string for imperial units +// popup: "You are within {distance} {unit} from this point", // text to appear if user clicks on circle +// outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds +// }, +// locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10 +//}).addTo(map); +//lc.start(); +//function mapPos(lat, lon) { +// lockGot = true; +// hideLoading(); +// loadPlaces(latitude, longitude); +// //map.setView(new L.LatLng(lat, lon), 16, {animate: true}); +// //map.panTo(new L.LatLng(lat, lon)); +// //map.invalidateSize(); +// //redraw('.leaflet-map-pane'); +//// $('.leaflet-map-plane').css('height', '90%'); +//// setTimeout(function () { +//// $('#map').css('width', '100%'); +//// $('#map').css('height', '100%'); +//// }, 100); //} - -// Tile layer -map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18})); -// Places layer -var placeLayer = L.geoJson( - {"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]}, - { - onEachFeature: onPlaceTap, - pointToLayer: function (feature, latlng) { - return L.circleMarker(latlng, { - radius: 14, - fillColor: "#ff7800", - color: "#000", - weight: 1, - opacity: 1, - fillOpacity: 0.6 - }); - } - }).addTo(map); - -var lc = L.control.locate({ - position: 'topleft', // set the location of the control - layer: undefined, // use your own layer for the location marker, creates a new layer by default - drawCircle: false, // controls whether a circle is drawn that shows the uncertainty about the location - follow: true, // follow the user's location - setView: true, // automatically sets the map view to the user's location, enabled if `follow` is true - keepCurrentZoomLevel: true, // keep the current map zoom level when displaying the user's location. (if `false`, use maxZoom) - stopFollowingOnDrag: false, // stop following when the map is dragged if `follow` is true (deprecated, see below) - remainActive: true, // if true locate control remains active on click even if the user's location is in view. - markerClass: L.circleMarker, // L.circleMarker or L.marker - circleStyle: {}, // change the style of the circle around the user's location - markerStyle: {}, - followCircleStyle: {}, // set difference for the style of the circle around the user's location while following - followMarkerStyle: {}, - icon: 'fa fa-map-marker', // class for icon, fa-location-arrow or fa-map-marker - iconLoading: 'fa fa-spinner fa-pulse', // class for loading icon - iconElementTag: 'span', // tag for the icon element, span or i - circlePadding: [0, 0], // padding around accuracy circle, value is passed to setBounds - metric: true, // use metric or imperial units - onLocationError: function (err) { - }, // define an error callback function - onLocationOutsideMapBounds: function (context) { // called when outside map boundaries - }, - showPopup: false, // display a popup when the user click on the inner marker - strings: { - title: ".", // title of the locate control - metersUnit: "meters", // string for metric units - feetUnit: "feet", // string for imperial units - popup: "You are within {distance} {unit} from this point", // text to appear if user clicks on circle - outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds - }, - locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10 -}).addTo(map); -lc.start(); -function mapPos(lat, lon) { - lockGot = true; - hideLoading(); - loadPlaces(latitude, longitude); - //map.setView(new L.LatLng(lat, lon), 16, {animate: true}); - //map.panTo(new L.LatLng(lat, lon)); - //map.invalidateSize(); - //redraw('.leaflet-map-pane'); -// $('.leaflet-map-plane').css('height', '90%'); -// setTimeout(function () { -// $('#map').css('width', '100%'); -// $('#map').css('height', '100%'); -// }, 100); -} - -function onPlaceTap(feature, layer) { - layer.on('click', function (e) { - openPlace(feature); - }); -} - -function loadPlaces(lat, long) { - $.getJSON( - "http://earth.apis.netsyms.net/places.php?format=geojson&lat=" + lat + "&long=" + long + "&radius=.25&names=1", - function (data) { - if (data.type === 'FeatureCollection') { - placeLayer.clearLayers(); - data.features.forEach(function (item) { - item.properties.popupContent = "" + item.properties.name + ""; - placeLayer.addData(item); - }); - } - }); -} - -function openPlace(feature) { - $('#main-content').load("screens/place.html", null, function () { - loadPlace(feature); - $('#overlay-main').css('display', 'block'); - }); -} - -/** - * Hide the loading overlay if everything is loaded, otherwise do nothing - */ -function hideLoading() { - if (lockGot && terrainGot && gpsaccuracy < 30 && $('#loading').css('display') !== 'none') { - $('#loading').fadeOut('slow', function () { - $('#loading').css('display', 'none'); - }); - } -} - -var updatePosition = function (position) { - latitude = position.coords.latitude; - longitude = position.coords.longitude; - lastgpstime = position.timestamp; - gpsaccuracy = position.coords.accuracy; - if (gpsaccuracy > 30) { - $('#no-lock').css('display', 'block'); - } else { - $('#no-lock').css('display', 'none'); - } - mapPos(latitude, longitude); -}; -var updateTerrain = function (position) { - latitude = position.coords.latitude; - longitude = position.coords.longitude; - lastgpstime = position.timestamp; - gpsaccuracy = position.coords.accuracy; - var rasterurl = "http://earth.apis.netsyms.net/terrain.php?format=json&lat=" - + latitude + "&long=" + longitude; - $.get(rasterurl, function (data) { - if (data.status === 'OK') { - terraintypeid = data.typeid; - terraintypename = data.typename; - $('#terrain-image').attr('src', 'assets/terrain/' + terraintypeid + '.png'); - terrainGot = true; - hideLoading(); - } - }, "json").fail(function (err) { - $('#terrain-image').attr('src', 'assets/terrain/0.png'); - }); -}; -function pingServer() { - if (lockGot && gpsaccuracy < 30) { - $.get(mkApiUrl('ping') + "?user=" + username + "&lat=" + latitude + "&long=" + longitude); - } -} -; -function onError(error) { - $('#loading-error').text("Check your device's network and location settings, and ensure a clear view of the sky."); -} - -function popGPS() { - navigator.notification.alert("Latitude: " + latitude + - "\nLongitude: " + longitude + - "\nAccuracy: " + gpsaccuracy + - "\nTerrain: " + terraintypename + " (" + terraintypeid + ")", - null, - "GPS Information", - "Close"); -} -$('#terrain-image').click(function () { - popGPS(); -}); -// Initial GPS position and stuff -navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true}); -// Update position -setInterval(function () { - navigator.geolocation.getCurrentPosition(updatePosition, onError, {timeout: 10000, enableHighAccuracy: true}); -}, 1000); -// Update position + terrain -setInterval(function () { - navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true}); - loadPlaces(latitude, longitude); -}, 1000 * 20); -// Ping the server with coordinates -setInterval(pingServer, 5000); -// Show error if it's taking too long -setTimeout(function () { - onError(); -}, 15 * 1000); - - -////////////////////////////////////////////// -// Profile, stats, and chat stuff -////////////////////////////////////////////// - - -/* - * Handles general server communication. - */ - -/** - * Syncs the user's stats with the server and calls refreshStats(). - */ -function syncStats() { - $.getJSON(mkApiUrl('getstats'), { - user: username - }, function (data) { - if (data.status === 'OK') { - maxenergy = data.stats.maxenergy; - energy = data.stats.energy; - level = data.stats.level; - refreshStats(); - } - }); -} - -/** - * Display the current stats on the home screen. - */ -function refreshStats() { - energypercent = (energy * 1.0 / maxenergy * 1.0) * 100.0; - $('#energybar').css('width', String(energypercent) + '%'); -} - -function getChat() { - if (lockGot) { - $.getJSON(mkApiUrl('chat', 'cs'), { - lat: latitude, - long: longitude - }, function (data) { - data = sortResults(data, 'time', true); - var content = ""; - data.forEach(function (msg) { - content += "" + msg.username + " " + msg.message + "
"; - }); - $('#chatmsgs').html(content); - }); - } -} - - -syncStats(); -setInterval(function () { - syncStats(); -}, 10 * 1000); -setInterval(function () { - getChat(); -}, 2000); -// Send chat messages -$("#chatsendform").submit(function (event) { - message = $('#chatbox-input').val(); - if (message !== '') { - $.post(mkApiUrl('chat', 'cs'), { - user: username, - lat: latitude, - long: longitude, - msg: message - }, function (data) { - if (data.status === 'OK') { - $('#chatbox-input').val(""); - $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000); - } - }, "json"); - } - event.preventDefault(); - return false; -}); -function toggleChat() { - if ($('#chatmsgs').css('display') === 'none') { - openChat(); - } else { - closeChat(); - } -} - -function closeChat() { - $('#chatmsgs').css('display', 'none'); - $('#chatbox').css('height', 'auto'); -} - -function openChat() { - $('#chatbox').css('height', '50%'); - $('#chatmsgs').css('display', 'block'); - $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000); -} - -function openProfile(user) { - user = typeof user !== 'undefined' ? user : username; - $('#main-content').load("screens/profile.html", null, function (x) { - $('#overlay-main').css('display', 'block'); - loadProfile(user); - }); -} - -function openRules() { - openmodal('rules', '#rules-modal'); -} - -function openMenu(topage) { - topage = typeof topage !== 'undefined' ? topage : ""; - $('#main-content').load("screens/menu.html", null, function (x) { - $('#overlay-main').css('display', 'block'); - if (topage !== '') { - $('#' + topage + '-tab').tab('show'); - } - }); -} - - - -////////////////////////////////////////////// -// Other things -////////////////////////////////////////////// - -function closeMain() { - $('#overlay-main').slideDown(100, function () { - $('#overlay-main').css('display', 'none'); - $('#main-content').html(""); - }); -} - -// Handle back button to close things -document.addEventListener("backbutton", function (event) { - if ($('#overlay-main').css('display') !== 'none') { - closeMain(); - } else if ($('#chatmsgs').css('display') !== 'none') { - toggleChat(); - } -}, false); -// Show the rules -if (localStorage.getItem("seenrules") !== 'yes') { - openRules(); - localStorage.setItem("seenrules", 'yes'); -} \ No newline at end of file +// +//function onPlaceTap(feature, layer) { +// layer.on('click', function (e) { +// openPlace(feature); +// }); +//} +// +//function loadPlaces(lat, long) { +// $.getJSON( +// "http://earth.apis.netsyms.net/places.php?format=geojson&lat=" + lat + "&long=" + long + "&radius=.25&names=1", +// function (data) { +// if (data.type === 'FeatureCollection') { +// placeLayer.clearLayers(); +// data.features.forEach(function (item) { +// item.properties.popupContent = "" + item.properties.name + ""; +// placeLayer.addData(item); +// }); +// } +// }); +//} +// +//function openPlace(feature) { +// $('#main-content').load("screens/place.html", null, function () { +// loadPlace(feature); +// $('#overlay-main').css('display', 'block'); +// }); +//} +// +///** +// * Hide the loading overlay if everything is loaded, otherwise do nothing +// */ +//function hideLoading() { +// if (lockGot && terrainGot && gpsaccuracy < 30 && $('#loading').css('display') !== 'none') { +// $('#loading').fadeOut('slow', function () { +// $('#loading').css('display', 'none'); +// }); +// } +//} +// +//var updatePosition = function (position) { +// latitude = position.coords.latitude; +// longitude = position.coords.longitude; +// lastgpstime = position.timestamp; +// gpsaccuracy = position.coords.accuracy; +// if (gpsaccuracy > 30) { +// $('#no-lock').css('display', 'block'); +// } else { +// $('#no-lock').css('display', 'none'); +// } +// mapPos(latitude, longitude); +//}; +//var updateTerrain = function (position) { +// latitude = position.coords.latitude; +// longitude = position.coords.longitude; +// lastgpstime = position.timestamp; +// gpsaccuracy = position.coords.accuracy; +// var rasterurl = "http://earth.apis.netsyms.net/terrain.php?format=json&lat=" +// + latitude + "&long=" + longitude; +// $.get(rasterurl, function (data) { +// if (data.status === 'OK') { +// terraintypeid = data.typeid; +// terraintypename = data.typename; +// $('#terrain-image').attr('src', 'assets/terrain/' + terraintypeid + '.png'); +// terrainGot = true; +// hideLoading(); +// } +// }, "json").fail(function (err) { +// $('#terrain-image').attr('src', 'assets/terrain/0.png'); +// }); +//}; +//function pingServer() { +// if (lockGot && gpsaccuracy < 30) { +// $.get(mkApiUrl('ping') + "?user=" + username + "&lat=" + latitude + "&long=" + longitude); +// } +//} +//; +//function onError(error) { +// $('#loading-error').text("Check your device's network and location settings, and ensure a clear view of the sky."); +//} +// +//function popGPS() { +// navigator.notification.alert("Latitude: " + latitude + +// "\nLongitude: " + longitude + +// "\nAccuracy: " + gpsaccuracy + +// "\nTerrain: " + terraintypename + " (" + terraintypeid + ")", +// null, +// "GPS Information", +// "Close"); +//} +//$('#terrain-image').click(function () { +// popGPS(); +//}); +//// Initial GPS position and stuff +//navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true}); +//// Update position +//setInterval(function () { +// navigator.geolocation.getCurrentPosition(updatePosition, onError, {timeout: 10000, enableHighAccuracy: true}); +//}, 1000); +//// Update position + terrain +//setInterval(function () { +// navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true}); +// loadPlaces(latitude, longitude); +//}, 1000 * 20); +//// Ping the server with coordinates +//setInterval(pingServer, 5000); +//// Show error if it's taking too long +//setTimeout(function () { +// onError(); +//}, 15 * 1000); +// +// +//////////////////////////////////////////////// +//// Profile, stats, and chat stuff +//////////////////////////////////////////////// +// +// +///* +// * Handles general server communication. +// */ +// +///** +// * Syncs the user's stats with the server and calls refreshStats(). +// */ +//function syncStats() { +// $.getJSON(mkApiUrl('getstats'), { +// user: username +// }, function (data) { +// if (data.status === 'OK') { +// maxenergy = data.stats.maxenergy; +// energy = data.stats.energy; +// level = data.stats.level; +// refreshStats(); +// } +// }); +//} +// +///** +// * Display the current stats on the home screen. +// */ +//function refreshStats() { +// energypercent = (energy * 1.0 / maxenergy * 1.0) * 100.0; +// $('#energybar').css('width', String(energypercent) + '%'); +//} +// +//function getChat() { +// if (lockGot) { +// $.getJSON(mkApiUrl('chat', 'cs'), { +// lat: latitude, +// long: longitude +// }, function (data) { +// data = sortResults(data, 'time', true); +// var content = ""; +// data.forEach(function (msg) { +// content += "" + msg.username + " " + msg.message + "
"; +// }); +// $('#chatmsgs').html(content); +// }); +// } +//} +// +// +//syncStats(); +//setInterval(function () { +// syncStats(); +//}, 10 * 1000); +//setInterval(function () { +// getChat(); +//}, 2000); +//// Send chat messages +//$("#chatsendform").submit(function (event) { +// message = $('#chatbox-input').val(); +// if (message !== '') { +// $.post(mkApiUrl('chat', 'cs'), { +// user: username, +// lat: latitude, +// long: longitude, +// msg: message +// }, function (data) { +// if (data.status === 'OK') { +// $('#chatbox-input').val(""); +// $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000); +// } +// }, "json"); +// } +// event.preventDefault(); +// return false; +//}); +//function toggleChat() { +// if ($('#chatmsgs').css('display') === 'none') { +// openChat(); +// } else { +// closeChat(); +// } +//} +// +//function closeChat() { +// $('#chatmsgs').css('display', 'none'); +// $('#chatbox').css('height', 'auto'); +//} +// +//function openChat() { +// $('#chatbox').css('height', '50%'); +// $('#chatmsgs').css('display', 'block'); +// $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000); +//} +// +//function openProfile(user) { +// user = typeof user !== 'undefined' ? user : username; +// $('#main-content').load("screens/profile.html", null, function (x) { +// $('#overlay-main').css('display', 'block'); +// loadProfile(user); +// }); +//} +// +//function openRules() { +// openmodal('rules', '#rules-modal'); +//} +// +//function openMenu(topage) { +// topage = typeof topage !== 'undefined' ? topage : ""; +// $('#main-content').load("screens/menu.html", null, function (x) { +// $('#overlay-main').css('display', 'block'); +// if (topage !== '') { +// $('#' + topage + '-tab').tab('show'); +// } +// }); +//} +// +// +// +//////////////////////////////////////////////// +//// Other things +//////////////////////////////////////////////// +// +//function closeMain() { +// $('#overlay-main').slideDown(100, function () { +// $('#overlay-main').css('display', 'none'); +// $('#main-content').html(""); +// }); +//} +// +//// Handle back button to close things +//document.addEventListener("backbutton", function (event) { +// if ($('#overlay-main').css('display') !== 'none') { +// closeMain(); +// } else if ($('#chatmsgs').css('display') !== 'none') { +// toggleChat(); +// } +//}, false); +//// Show the rules +//if (localStorage.getItem("seenrules") !== 'yes') { +// openRules(); +// localStorage.setItem("seenrules", 'yes'); +//} \ No newline at end of file diff --git a/platforms/android/assets/www/screens/licenses.html b/platforms/android/assets/www/screens/licenses.html new file mode 100644 index 0000000..74aceab --- /dev/null +++ b/platforms/android/assets/www/screens/licenses.html @@ -0,0 +1,199 @@ + \ No newline at end of file diff --git a/platforms/android/assets/www/screens/settings.html b/platforms/android/assets/www/screens/settings.html index 4c16596..59b9be0 100644 --- a/platforms/android/assets/www/screens/settings.html +++ b/platforms/android/assets/www/screens/settings.html @@ -11,7 +11,7 @@

- Cool Stuff We Stole + Data and Libraries Used
Map tiles by Stamen Design (stamen.com), under CC BY 3.0 (creativecommons.org/licenses/by/3.0).
@@ -21,14 +21,15 @@
Map display is powered by Leaflet (leafletjs.com), copyright (c) 2010-2016, Vladimir Agafonkin and copyright (c) 2010-2011, CloudMade. BSD 2-clause license.
- Terrain information for the United States from the MRLC National Land Cover Database 2011 (mrlc.gov). -
Weather data Powered by Forecast (forecast.io).
- Geocache data from the OpenCaching.US OKAPI. Data licensed under the CC BY-NC-SA 2.5 (creativecommons.org/licenses/by-nc-sa/2.5). + Application developed using Apache Cordova (Apache License 2.0).
- If you're a developer, you might be interested in this: earth.apis.netsyms.net + Barcode scanner code copyright (c) 2010 Matt Kane (MIT License).

+
+ Open Source Licenses +
\ No newline at end of file diff --git a/platforms/android/res/xml/config.xml b/platforms/android/res/xml/config.xml index 071d96a..c6d8525 100644 --- a/platforms/android/res/xml/config.xml +++ b/platforms/android/res/xml/config.xml @@ -1,5 +1,5 @@ - + diff --git a/www/js/home.js b/www/js/home.js index ccc6714..841e300 100644 --- a/www/js/home.js +++ b/www/js/home.js @@ -1,355 +1,355 @@ -/* global PositionError */ - -////////////////////////////////////////////// -// GPS and terrain stuff -////////////////////////////////////////////// - -/** - * Handles GPS and terrain data. - */ - -// Globals -lockGot = false; -terrainGot = false; -latitude = 0.0000; -longitude = 0.0000; -gpsaccuracy = 9999; -// End Globals - -var lastgpstime = 0; -var terraintypeid = 0; -var map = L.map('map'); -var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg"; -map.setZoom(17); -map.dragging.disable(); -//map.touchZoom.disable(); -//map.doubleClickZoom.disable(); -//map.scrollWheelZoom.disable(); -map.keyboard.disable(); -$(".leaflet-control-zoom").css("visibility", "hidden"); -// Disable tap handler, if present. -//if (map.tap) { -// map.tap.disable(); +///* global PositionError */ +// +//////////////////////////////////////////////// +//// GPS and terrain stuff +//////////////////////////////////////////////// +// +///** +// * Handles GPS and terrain data. +// */ +// +//// Globals +//lockGot = false; +//terrainGot = false; +//latitude = 0.0000; +//longitude = 0.0000; +//gpsaccuracy = 9999; +//// End Globals +// +//var lastgpstime = 0; +//var terraintypeid = 0; +//var map = L.map('map'); +//var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg"; +//map.setZoom(17); +//map.dragging.disable(); +////map.touchZoom.disable(); +////map.doubleClickZoom.disable(); +////map.scrollWheelZoom.disable(); +//map.keyboard.disable(); +//$(".leaflet-control-zoom").css("visibility", "hidden"); +//// Disable tap handler, if present. +////if (map.tap) { +//// map.tap.disable(); +////} +// +//// Tile layer +//map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18})); +//// Places layer +//var placeLayer = L.geoJson( +// {"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]}, +// { +// onEachFeature: onPlaceTap, +// pointToLayer: function (feature, latlng) { +// return L.circleMarker(latlng, { +// radius: 14, +// fillColor: "#ff7800", +// color: "#000", +// weight: 1, +// opacity: 1, +// fillOpacity: 0.6 +// }); +// } +// }).addTo(map); +// +//var lc = L.control.locate({ +// position: 'topleft', // set the location of the control +// layer: undefined, // use your own layer for the location marker, creates a new layer by default +// drawCircle: false, // controls whether a circle is drawn that shows the uncertainty about the location +// follow: true, // follow the user's location +// setView: true, // automatically sets the map view to the user's location, enabled if `follow` is true +// keepCurrentZoomLevel: true, // keep the current map zoom level when displaying the user's location. (if `false`, use maxZoom) +// stopFollowingOnDrag: false, // stop following when the map is dragged if `follow` is true (deprecated, see below) +// remainActive: true, // if true locate control remains active on click even if the user's location is in view. +// markerClass: L.circleMarker, // L.circleMarker or L.marker +// circleStyle: {}, // change the style of the circle around the user's location +// markerStyle: {}, +// followCircleStyle: {}, // set difference for the style of the circle around the user's location while following +// followMarkerStyle: {}, +// icon: 'fa fa-map-marker', // class for icon, fa-location-arrow or fa-map-marker +// iconLoading: 'fa fa-spinner fa-pulse', // class for loading icon +// iconElementTag: 'span', // tag for the icon element, span or i +// circlePadding: [0, 0], // padding around accuracy circle, value is passed to setBounds +// metric: true, // use metric or imperial units +// onLocationError: function (err) { +// }, // define an error callback function +// onLocationOutsideMapBounds: function (context) { // called when outside map boundaries +// }, +// showPopup: false, // display a popup when the user click on the inner marker +// strings: { +// title: ".", // title of the locate control +// metersUnit: "meters", // string for metric units +// feetUnit: "feet", // string for imperial units +// popup: "You are within {distance} {unit} from this point", // text to appear if user clicks on circle +// outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds +// }, +// locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10 +//}).addTo(map); +//lc.start(); +//function mapPos(lat, lon) { +// lockGot = true; +// hideLoading(); +// loadPlaces(latitude, longitude); +// //map.setView(new L.LatLng(lat, lon), 16, {animate: true}); +// //map.panTo(new L.LatLng(lat, lon)); +// //map.invalidateSize(); +// //redraw('.leaflet-map-pane'); +//// $('.leaflet-map-plane').css('height', '90%'); +//// setTimeout(function () { +//// $('#map').css('width', '100%'); +//// $('#map').css('height', '100%'); +//// }, 100); //} - -// Tile layer -map.addLayer(new L.tileLayer(tileurl, {minZoom: 17, maxZoom: 18})); -// Places layer -var placeLayer = L.geoJson( - {"name": "Places", "type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [0, 0]}, "properties": {"osm_id": -1, "name": null}}]}, - { - onEachFeature: onPlaceTap, - pointToLayer: function (feature, latlng) { - return L.circleMarker(latlng, { - radius: 14, - fillColor: "#ff7800", - color: "#000", - weight: 1, - opacity: 1, - fillOpacity: 0.6 - }); - } - }).addTo(map); - -var lc = L.control.locate({ - position: 'topleft', // set the location of the control - layer: undefined, // use your own layer for the location marker, creates a new layer by default - drawCircle: false, // controls whether a circle is drawn that shows the uncertainty about the location - follow: true, // follow the user's location - setView: true, // automatically sets the map view to the user's location, enabled if `follow` is true - keepCurrentZoomLevel: true, // keep the current map zoom level when displaying the user's location. (if `false`, use maxZoom) - stopFollowingOnDrag: false, // stop following when the map is dragged if `follow` is true (deprecated, see below) - remainActive: true, // if true locate control remains active on click even if the user's location is in view. - markerClass: L.circleMarker, // L.circleMarker or L.marker - circleStyle: {}, // change the style of the circle around the user's location - markerStyle: {}, - followCircleStyle: {}, // set difference for the style of the circle around the user's location while following - followMarkerStyle: {}, - icon: 'fa fa-map-marker', // class for icon, fa-location-arrow or fa-map-marker - iconLoading: 'fa fa-spinner fa-pulse', // class for loading icon - iconElementTag: 'span', // tag for the icon element, span or i - circlePadding: [0, 0], // padding around accuracy circle, value is passed to setBounds - metric: true, // use metric or imperial units - onLocationError: function (err) { - }, // define an error callback function - onLocationOutsideMapBounds: function (context) { // called when outside map boundaries - }, - showPopup: false, // display a popup when the user click on the inner marker - strings: { - title: ".", // title of the locate control - metersUnit: "meters", // string for metric units - feetUnit: "feet", // string for imperial units - popup: "You are within {distance} {unit} from this point", // text to appear if user clicks on circle - outsideMapBoundsMsg: "You seem located outside the boundaries of the map" // default message for onLocationOutsideMapBounds - }, - locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10 -}).addTo(map); -lc.start(); -function mapPos(lat, lon) { - lockGot = true; - hideLoading(); - loadPlaces(latitude, longitude); - //map.setView(new L.LatLng(lat, lon), 16, {animate: true}); - //map.panTo(new L.LatLng(lat, lon)); - //map.invalidateSize(); - //redraw('.leaflet-map-pane'); -// $('.leaflet-map-plane').css('height', '90%'); -// setTimeout(function () { -// $('#map').css('width', '100%'); -// $('#map').css('height', '100%'); -// }, 100); -} - -function onPlaceTap(feature, layer) { - layer.on('click', function (e) { - openPlace(feature); - }); -} - -function loadPlaces(lat, long) { - $.getJSON( - "http://earth.apis.netsyms.net/places.php?format=geojson&lat=" + lat + "&long=" + long + "&radius=.25&names=1", - function (data) { - if (data.type === 'FeatureCollection') { - placeLayer.clearLayers(); - data.features.forEach(function (item) { - item.properties.popupContent = "" + item.properties.name + ""; - placeLayer.addData(item); - }); - } - }); -} - -function openPlace(feature) { - $('#main-content').load("screens/place.html", null, function () { - loadPlace(feature); - $('#overlay-main').css('display', 'block'); - }); -} - -/** - * Hide the loading overlay if everything is loaded, otherwise do nothing - */ -function hideLoading() { - if (lockGot && terrainGot && gpsaccuracy < 30 && $('#loading').css('display') !== 'none') { - $('#loading').fadeOut('slow', function () { - $('#loading').css('display', 'none'); - }); - } -} - -var updatePosition = function (position) { - latitude = position.coords.latitude; - longitude = position.coords.longitude; - lastgpstime = position.timestamp; - gpsaccuracy = position.coords.accuracy; - if (gpsaccuracy > 30) { - $('#no-lock').css('display', 'block'); - } else { - $('#no-lock').css('display', 'none'); - } - mapPos(latitude, longitude); -}; -var updateTerrain = function (position) { - latitude = position.coords.latitude; - longitude = position.coords.longitude; - lastgpstime = position.timestamp; - gpsaccuracy = position.coords.accuracy; - var rasterurl = "http://earth.apis.netsyms.net/terrain.php?format=json&lat=" - + latitude + "&long=" + longitude; - $.get(rasterurl, function (data) { - if (data.status === 'OK') { - terraintypeid = data.typeid; - terraintypename = data.typename; - $('#terrain-image').attr('src', 'assets/terrain/' + terraintypeid + '.png'); - terrainGot = true; - hideLoading(); - } - }, "json").fail(function (err) { - $('#terrain-image').attr('src', 'assets/terrain/0.png'); - }); -}; -function pingServer() { - if (lockGot && gpsaccuracy < 30) { - $.get(mkApiUrl('ping') + "?user=" + username + "&lat=" + latitude + "&long=" + longitude); - } -} -; -function onError(error) { - $('#loading-error').text("Check your device's network and location settings, and ensure a clear view of the sky."); -} - -function popGPS() { - navigator.notification.alert("Latitude: " + latitude + - "\nLongitude: " + longitude + - "\nAccuracy: " + gpsaccuracy + - "\nTerrain: " + terraintypename + " (" + terraintypeid + ")", - null, - "GPS Information", - "Close"); -} -$('#terrain-image').click(function () { - popGPS(); -}); -// Initial GPS position and stuff -navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true}); -// Update position -setInterval(function () { - navigator.geolocation.getCurrentPosition(updatePosition, onError, {timeout: 10000, enableHighAccuracy: true}); -}, 1000); -// Update position + terrain -setInterval(function () { - navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true}); - loadPlaces(latitude, longitude); -}, 1000 * 20); -// Ping the server with coordinates -setInterval(pingServer, 5000); -// Show error if it's taking too long -setTimeout(function () { - onError(); -}, 15 * 1000); - - -////////////////////////////////////////////// -// Profile, stats, and chat stuff -////////////////////////////////////////////// - - -/* - * Handles general server communication. - */ - -/** - * Syncs the user's stats with the server and calls refreshStats(). - */ -function syncStats() { - $.getJSON(mkApiUrl('getstats'), { - user: username - }, function (data) { - if (data.status === 'OK') { - maxenergy = data.stats.maxenergy; - energy = data.stats.energy; - level = data.stats.level; - refreshStats(); - } - }); -} - -/** - * Display the current stats on the home screen. - */ -function refreshStats() { - energypercent = (energy * 1.0 / maxenergy * 1.0) * 100.0; - $('#energybar').css('width', String(energypercent) + '%'); -} - -function getChat() { - if (lockGot) { - $.getJSON(mkApiUrl('chat', 'cs'), { - lat: latitude, - long: longitude - }, function (data) { - data = sortResults(data, 'time', true); - var content = ""; - data.forEach(function (msg) { - content += "" + msg.username + " " + msg.message + "
"; - }); - $('#chatmsgs').html(content); - }); - } -} - - -syncStats(); -setInterval(function () { - syncStats(); -}, 10 * 1000); -setInterval(function () { - getChat(); -}, 2000); -// Send chat messages -$("#chatsendform").submit(function (event) { - message = $('#chatbox-input').val(); - if (message !== '') { - $.post(mkApiUrl('chat', 'cs'), { - user: username, - lat: latitude, - long: longitude, - msg: message - }, function (data) { - if (data.status === 'OK') { - $('#chatbox-input').val(""); - $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000); - } - }, "json"); - } - event.preventDefault(); - return false; -}); -function toggleChat() { - if ($('#chatmsgs').css('display') === 'none') { - openChat(); - } else { - closeChat(); - } -} - -function closeChat() { - $('#chatmsgs').css('display', 'none'); - $('#chatbox').css('height', 'auto'); -} - -function openChat() { - $('#chatbox').css('height', '50%'); - $('#chatmsgs').css('display', 'block'); - $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000); -} - -function openProfile(user) { - user = typeof user !== 'undefined' ? user : username; - $('#main-content').load("screens/profile.html", null, function (x) { - $('#overlay-main').css('display', 'block'); - loadProfile(user); - }); -} - -function openRules() { - openmodal('rules', '#rules-modal'); -} - -function openMenu(topage) { - topage = typeof topage !== 'undefined' ? topage : ""; - $('#main-content').load("screens/menu.html", null, function (x) { - $('#overlay-main').css('display', 'block'); - if (topage !== '') { - $('#' + topage + '-tab').tab('show'); - } - }); -} - - - -////////////////////////////////////////////// -// Other things -////////////////////////////////////////////// - -function closeMain() { - $('#overlay-main').slideDown(100, function () { - $('#overlay-main').css('display', 'none'); - $('#main-content').html(""); - }); -} - -// Handle back button to close things -document.addEventListener("backbutton", function (event) { - if ($('#overlay-main').css('display') !== 'none') { - closeMain(); - } else if ($('#chatmsgs').css('display') !== 'none') { - toggleChat(); - } -}, false); -// Show the rules -if (localStorage.getItem("seenrules") !== 'yes') { - openRules(); - localStorage.setItem("seenrules", 'yes'); -} \ No newline at end of file +// +//function onPlaceTap(feature, layer) { +// layer.on('click', function (e) { +// openPlace(feature); +// }); +//} +// +//function loadPlaces(lat, long) { +// $.getJSON( +// "http://earth.apis.netsyms.net/places.php?format=geojson&lat=" + lat + "&long=" + long + "&radius=.25&names=1", +// function (data) { +// if (data.type === 'FeatureCollection') { +// placeLayer.clearLayers(); +// data.features.forEach(function (item) { +// item.properties.popupContent = "" + item.properties.name + ""; +// placeLayer.addData(item); +// }); +// } +// }); +//} +// +//function openPlace(feature) { +// $('#main-content').load("screens/place.html", null, function () { +// loadPlace(feature); +// $('#overlay-main').css('display', 'block'); +// }); +//} +// +///** +// * Hide the loading overlay if everything is loaded, otherwise do nothing +// */ +//function hideLoading() { +// if (lockGot && terrainGot && gpsaccuracy < 30 && $('#loading').css('display') !== 'none') { +// $('#loading').fadeOut('slow', function () { +// $('#loading').css('display', 'none'); +// }); +// } +//} +// +//var updatePosition = function (position) { +// latitude = position.coords.latitude; +// longitude = position.coords.longitude; +// lastgpstime = position.timestamp; +// gpsaccuracy = position.coords.accuracy; +// if (gpsaccuracy > 30) { +// $('#no-lock').css('display', 'block'); +// } else { +// $('#no-lock').css('display', 'none'); +// } +// mapPos(latitude, longitude); +//}; +//var updateTerrain = function (position) { +// latitude = position.coords.latitude; +// longitude = position.coords.longitude; +// lastgpstime = position.timestamp; +// gpsaccuracy = position.coords.accuracy; +// var rasterurl = "http://earth.apis.netsyms.net/terrain.php?format=json&lat=" +// + latitude + "&long=" + longitude; +// $.get(rasterurl, function (data) { +// if (data.status === 'OK') { +// terraintypeid = data.typeid; +// terraintypename = data.typename; +// $('#terrain-image').attr('src', 'assets/terrain/' + terraintypeid + '.png'); +// terrainGot = true; +// hideLoading(); +// } +// }, "json").fail(function (err) { +// $('#terrain-image').attr('src', 'assets/terrain/0.png'); +// }); +//}; +//function pingServer() { +// if (lockGot && gpsaccuracy < 30) { +// $.get(mkApiUrl('ping') + "?user=" + username + "&lat=" + latitude + "&long=" + longitude); +// } +//} +//; +//function onError(error) { +// $('#loading-error').text("Check your device's network and location settings, and ensure a clear view of the sky."); +//} +// +//function popGPS() { +// navigator.notification.alert("Latitude: " + latitude + +// "\nLongitude: " + longitude + +// "\nAccuracy: " + gpsaccuracy + +// "\nTerrain: " + terraintypename + " (" + terraintypeid + ")", +// null, +// "GPS Information", +// "Close"); +//} +//$('#terrain-image').click(function () { +// popGPS(); +//}); +//// Initial GPS position and stuff +//navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true}); +//// Update position +//setInterval(function () { +// navigator.geolocation.getCurrentPosition(updatePosition, onError, {timeout: 10000, enableHighAccuracy: true}); +//}, 1000); +//// Update position + terrain +//setInterval(function () { +// navigator.geolocation.getCurrentPosition(updateTerrain, onError, {timeout: 10000, enableHighAccuracy: true}); +// loadPlaces(latitude, longitude); +//}, 1000 * 20); +//// Ping the server with coordinates +//setInterval(pingServer, 5000); +//// Show error if it's taking too long +//setTimeout(function () { +// onError(); +//}, 15 * 1000); +// +// +//////////////////////////////////////////////// +//// Profile, stats, and chat stuff +//////////////////////////////////////////////// +// +// +///* +// * Handles general server communication. +// */ +// +///** +// * Syncs the user's stats with the server and calls refreshStats(). +// */ +//function syncStats() { +// $.getJSON(mkApiUrl('getstats'), { +// user: username +// }, function (data) { +// if (data.status === 'OK') { +// maxenergy = data.stats.maxenergy; +// energy = data.stats.energy; +// level = data.stats.level; +// refreshStats(); +// } +// }); +//} +// +///** +// * Display the current stats on the home screen. +// */ +//function refreshStats() { +// energypercent = (energy * 1.0 / maxenergy * 1.0) * 100.0; +// $('#energybar').css('width', String(energypercent) + '%'); +//} +// +//function getChat() { +// if (lockGot) { +// $.getJSON(mkApiUrl('chat', 'cs'), { +// lat: latitude, +// long: longitude +// }, function (data) { +// data = sortResults(data, 'time', true); +// var content = ""; +// data.forEach(function (msg) { +// content += "" + msg.username + " " + msg.message + "
"; +// }); +// $('#chatmsgs').html(content); +// }); +// } +//} +// +// +//syncStats(); +//setInterval(function () { +// syncStats(); +//}, 10 * 1000); +//setInterval(function () { +// getChat(); +//}, 2000); +//// Send chat messages +//$("#chatsendform").submit(function (event) { +// message = $('#chatbox-input').val(); +// if (message !== '') { +// $.post(mkApiUrl('chat', 'cs'), { +// user: username, +// lat: latitude, +// long: longitude, +// msg: message +// }, function (data) { +// if (data.status === 'OK') { +// $('#chatbox-input').val(""); +// $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000); +// } +// }, "json"); +// } +// event.preventDefault(); +// return false; +//}); +//function toggleChat() { +// if ($('#chatmsgs').css('display') === 'none') { +// openChat(); +// } else { +// closeChat(); +// } +//} +// +//function closeChat() { +// $('#chatmsgs').css('display', 'none'); +// $('#chatbox').css('height', 'auto'); +//} +// +//function openChat() { +// $('#chatbox').css('height', '50%'); +// $('#chatmsgs').css('display', 'block'); +// $("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000); +//} +// +//function openProfile(user) { +// user = typeof user !== 'undefined' ? user : username; +// $('#main-content').load("screens/profile.html", null, function (x) { +// $('#overlay-main').css('display', 'block'); +// loadProfile(user); +// }); +//} +// +//function openRules() { +// openmodal('rules', '#rules-modal'); +//} +// +//function openMenu(topage) { +// topage = typeof topage !== 'undefined' ? topage : ""; +// $('#main-content').load("screens/menu.html", null, function (x) { +// $('#overlay-main').css('display', 'block'); +// if (topage !== '') { +// $('#' + topage + '-tab').tab('show'); +// } +// }); +//} +// +// +// +//////////////////////////////////////////////// +//// Other things +//////////////////////////////////////////////// +// +//function closeMain() { +// $('#overlay-main').slideDown(100, function () { +// $('#overlay-main').css('display', 'none'); +// $('#main-content').html(""); +// }); +//} +// +//// Handle back button to close things +//document.addEventListener("backbutton", function (event) { +// if ($('#overlay-main').css('display') !== 'none') { +// closeMain(); +// } else if ($('#chatmsgs').css('display') !== 'none') { +// toggleChat(); +// } +//}, false); +//// Show the rules +//if (localStorage.getItem("seenrules") !== 'yes') { +// openRules(); +// localStorage.setItem("seenrules", 'yes'); +//} \ No newline at end of file diff --git a/www/screens/licenses.html b/www/screens/licenses.html new file mode 100644 index 0000000..74aceab --- /dev/null +++ b/www/screens/licenses.html @@ -0,0 +1,199 @@ + \ No newline at end of file diff --git a/www/screens/settings.html b/www/screens/settings.html index 4c16596..59b9be0 100644 --- a/www/screens/settings.html +++ b/www/screens/settings.html @@ -11,7 +11,7 @@

- Cool Stuff We Stole + Data and Libraries Used
Map tiles by Stamen Design (stamen.com), under CC BY 3.0 (creativecommons.org/licenses/by/3.0).
@@ -21,14 +21,15 @@
Map display is powered by Leaflet (leafletjs.com), copyright (c) 2010-2016, Vladimir Agafonkin and copyright (c) 2010-2011, CloudMade. BSD 2-clause license.
- Terrain information for the United States from the MRLC National Land Cover Database 2011 (mrlc.gov). -
Weather data Powered by Forecast (forecast.io).
- Geocache data from the OpenCaching.US OKAPI. Data licensed under the CC BY-NC-SA 2.5 (creativecommons.org/licenses/by-nc-sa/2.5). + Application developed using Apache Cordova (Apache License 2.0).
- If you're a developer, you might be interested in this: earth.apis.netsyms.net + Barcode scanner code copyright (c) 2010 Matt Kane (MIT License).

+
+ Open Source Licenses +
\ No newline at end of file