Merge branch 'master' of github.com:jonatkins/ingress-intel-total-conversion
This commit is contained in:
@ -65,12 +65,14 @@ window.plugin.playerTracker.setup = function() {
|
|||||||
plugin.playerTracker.oms = new OverlappingMarkerSpiderfier(map, {keepSpiderfied: true, legWeight: 3.5});
|
plugin.playerTracker.oms = new OverlappingMarkerSpiderfier(map, {keepSpiderfied: true, legWeight: 3.5});
|
||||||
plugin.playerTracker.oms.legColors = {'usual': '#FFFF00', 'highlighted': '#FF0000'};
|
plugin.playerTracker.oms.legColors = {'usual': '#FFFF00', 'highlighted': '#FF0000'};
|
||||||
|
|
||||||
var playerPopup = new L.Popup({offset: L.point([0,-20])});
|
var playerPopup = new L.Popup({offset: L.point([1,-34])});
|
||||||
plugin.playerTracker.oms.addListener('click', function(player) {
|
plugin.playerTracker.oms.addListener('click', function(player) {
|
||||||
window.renderPortalDetails(player.options.referenceToPortal);
|
window.renderPortalDetails(player.options.referenceToPortal);
|
||||||
|
if (player.options.desc) {
|
||||||
playerPopup.setContent(player.options.desc);
|
playerPopup.setContent(player.options.desc);
|
||||||
playerPopup.setLatLng(player.getLatLng());
|
playerPopup.setLatLng(player.getLatLng());
|
||||||
map.openPopup(playerPopup)
|
map.openPopup(playerPopup);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
plugin.playerTracker.oms.addListener('spiderfy', function(markers) {
|
plugin.playerTracker.oms.addListener('spiderfy', function(markers) {
|
||||||
map.closePopup();
|
map.closePopup();
|
||||||
@ -257,6 +259,8 @@ window.plugin.playerTracker.ago = function(time, now) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
window.plugin.playerTracker.drawData = function() {
|
window.plugin.playerTracker.drawData = function() {
|
||||||
|
var isTouchDev = window.isTouchDevice();
|
||||||
|
|
||||||
var gllfe = plugin.playerTracker.getLatLngFromEvent;
|
var gllfe = plugin.playerTracker.getLatLngFromEvent;
|
||||||
|
|
||||||
var polyLineByAgeEnl = [[], [], [], []];
|
var polyLineByAgeEnl = [[], [], [], []];
|
||||||
@ -284,42 +288,45 @@ window.plugin.playerTracker.drawData = function() {
|
|||||||
polyLineByAgeEnl[ageBucket].push(line);
|
polyLineByAgeEnl[ageBucket].push(line);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// tooltip for marker - no HYML - and not shown on touchscreen devices
|
||||||
|
var tooltip = isTouchDev ? '' : playerData.nick;
|
||||||
|
|
||||||
// popup for marker
|
// popup for marker
|
||||||
var evtsLength = playerData.events.length;
|
var evtsLength = playerData.events.length;
|
||||||
var last = playerData.events[evtsLength-1];
|
var last = playerData.events[evtsLength-1];
|
||||||
var ago = plugin.playerTracker.ago;
|
var ago = plugin.playerTracker.ago;
|
||||||
var cssClass = playerData.team === 'RESISTANCE' ? 'res' : 'enl';
|
var cssClass = playerData.team === 'RESISTANCE' ? 'res' : 'enl';
|
||||||
var title = '<span class="nickname '+ cssClass+'" style="font-weight:bold;">' + playerData.nick + '</span>';
|
var popup = '<span class="nickname '+ cssClass+'" style="font-weight:bold;">' + playerData.nick + '</span>';
|
||||||
|
|
||||||
if(window.plugin.guessPlayerLevels !== undefined &&
|
if(window.plugin.guessPlayerLevels !== undefined &&
|
||||||
window.plugin.guessPlayerLevels.fetchLevelByPlayer !== undefined) {
|
window.plugin.guessPlayerLevels.fetchLevelByPlayer !== undefined) {
|
||||||
var playerLevel = window.plugin.guessPlayerLevels.fetchLevelByPlayer(pguid);
|
var playerLevel = window.plugin.guessPlayerLevels.fetchLevelByPlayer(pguid);
|
||||||
if(playerLevel !== undefined) {
|
if(playerLevel !== undefined) {
|
||||||
title += '<span style="font-weight:bold;margin-left:10px;">Level '
|
popup += '<span style="font-weight:bold;margin-left:10px;">Level '
|
||||||
+ playerLevel
|
+ playerLevel
|
||||||
+ ' (guessed)'
|
+ ' (guessed)'
|
||||||
+ '</span>';
|
+ '</span>';
|
||||||
} else {
|
} else {
|
||||||
title += '<span style="font-weight:bold;margin-left:10px;">Level unknown</span>'
|
popup += '<span style="font-weight:bold;margin-left:10px;">Level unknown</span>'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
title += '<br>'
|
popup += '<br>'
|
||||||
+ ago(last.time, now) + ' ago<br>'
|
+ ago(last.time, now) + ' ago<br>'
|
||||||
+ window.chat.getChatPortalName(last);
|
+ window.chat.getChatPortalName(last);
|
||||||
// show previous data in tooltip
|
// show previous data in tooltip
|
||||||
if(evtsLength >= 2) {
|
if(evtsLength >= 2) {
|
||||||
title += '<br> <br>previous locations:<br>'
|
popup += '<br> <br>previous locations:<br>'
|
||||||
+ '<table style="border-spacing:0">';
|
+ '<table style="border-spacing:0">';
|
||||||
}
|
}
|
||||||
for(var i = evtsLength - 2; i >= 0 && i >= evtsLength - 10; i--) {
|
for(var i = evtsLength - 2; i >= 0 && i >= evtsLength - 10; i--) {
|
||||||
var ev = playerData.events[i];
|
var ev = playerData.events[i];
|
||||||
title += '<tr align="left"><td>' + ago(ev.time, now) + '</td>'
|
popup += '<tr align="left"><td>' + ago(ev.time, now) + '</td>'
|
||||||
+ '<td>ago</td>'
|
+ '<td>ago</td>'
|
||||||
+ '<td>' + window.chat.getChatPortalName(ev) + '</td></tr>';
|
+ '<td>' + window.chat.getChatPortalName(ev) + '</td></tr>';
|
||||||
}
|
}
|
||||||
if(evtsLength >= 2)
|
if(evtsLength >= 2)
|
||||||
title += '</table>';
|
popup += '</table>';
|
||||||
|
|
||||||
// calculate the closest portal to the player
|
// calculate the closest portal to the player
|
||||||
var eventPortal = []
|
var eventPortal = []
|
||||||
@ -345,11 +352,16 @@ window.plugin.playerTracker.drawData = function() {
|
|||||||
var icon = playerData.team === 'RESISTANCE' ? new plugin.playerTracker.iconRes() : new plugin.playerTracker.iconEnl();
|
var icon = playerData.team === 'RESISTANCE' ? new plugin.playerTracker.iconRes() : new plugin.playerTracker.iconEnl();
|
||||||
// as per OverlappingMarkerSpiderfier docs, click events (popups, etc) must be handled via it rather than the standard
|
// as per OverlappingMarkerSpiderfier docs, click events (popups, etc) must be handled via it rather than the standard
|
||||||
// marker click events. so store the popup text in the options, then display it in the oms click handler
|
// marker click events. so store the popup text in the options, then display it in the oms click handler
|
||||||
var m = L.marker(gllfe(last), {icon: icon, referenceToPortal: closestPortal, opacity: absOpacity, desc: title});
|
var m = L.marker(gllfe(last), {icon: icon, referenceToPortal: closestPortal, opacity: absOpacity, desc: popup, title: tooltip});
|
||||||
// m.bindPopup(title);
|
// m.bindPopup(title);
|
||||||
|
|
||||||
m.addTo(playerData.team === 'RESISTANCE' ? plugin.playerTracker.drawnTracesRes : plugin.playerTracker.drawnTracesEnl);
|
m.addTo(playerData.team === 'RESISTANCE' ? plugin.playerTracker.drawnTracesRes : plugin.playerTracker.drawnTracesEnl);
|
||||||
plugin.playerTracker.oms.addMarker(m);
|
plugin.playerTracker.oms.addMarker(m);
|
||||||
|
|
||||||
|
// jQueryUI doesn’t automatically notice the new markers
|
||||||
|
if (!isTouchDev) {
|
||||||
|
window.setupTooltips($(m._icon));
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// draw the poly lines to the map
|
// draw the poly lines to the map
|
||||||
|
@ -19,8 +19,6 @@ function getMobileVersion ( $apkfile )
|
|||||||
$archive = $apkinfo->getApkArchive();
|
$archive = $apkinfo->getApkArchive();
|
||||||
|
|
||||||
$stream = $archive->getStream ( "assets/total-conversion-build.user.js" );
|
$stream = $archive->getStream ( "assets/total-conversion-build.user.js" );
|
||||||
if ( ! $stream )
|
|
||||||
$stream = $archive->getStream ( "assets/iitc.js" );
|
|
||||||
|
|
||||||
if ( $stream )
|
if ( $stream )
|
||||||
{
|
{
|
||||||
|
@ -2,12 +2,13 @@
|
|||||||
|
|
||||||
include_once "code/userscript.php";
|
include_once "code/userscript.php";
|
||||||
include_once "code/url/url_to_absolute.php";
|
include_once "code/url/url_to_absolute.php";
|
||||||
|
include_once "code/apk/ApkParser.php";
|
||||||
|
|
||||||
$response = Array();
|
$response = Array();
|
||||||
|
|
||||||
|
|
||||||
$build = $_REQUEST['build'];
|
$build = $_REQUEST['build'];
|
||||||
|
$mobile = isset($_REQUEST['mobile']) && $_REQUEST['mobile'];
|
||||||
|
|
||||||
|
|
||||||
$details = Array (
|
$details = Array (
|
||||||
@ -15,23 +16,27 @@ $details = Array (
|
|||||||
'path' => 'release',
|
'path' => 'release',
|
||||||
'name' => 'Stable release build',
|
'name' => 'Stable release build',
|
||||||
'web' => 'http://iitc.jonatkins.com/?page=download',
|
'web' => 'http://iitc.jonatkins.com/?page=download',
|
||||||
|
'mobileweb' => 'http://iitc.jonatkins.com/?page=mobile',
|
||||||
),
|
),
|
||||||
'jonatkins-test' => Array ( # public test builds
|
'jonatkins-test' => Array ( # public test builds
|
||||||
'path' => 'test',
|
'path' => 'test',
|
||||||
'name' => 'Test build',
|
'name' => 'Test build',
|
||||||
'web' => 'http://iitc.jonatkins.com/?page=test',
|
'web' => 'http://iitc.jonatkins.com/?page=test',
|
||||||
|
'mobileweb' => 'http://iitc.jonatkins.com/?page=test#test-mobile',
|
||||||
),
|
),
|
||||||
|
|
||||||
'jonatkins-experimental' => Array ( # rarely used, for features not quite ready for 'test'
|
'jonatkins-experimental' => Array ( # rarely used, for features not quite ready for 'test'
|
||||||
'path' => 'experimental',
|
'path' => 'experimental',
|
||||||
'name' => 'Experimental build',
|
'name' => 'Experimental build',
|
||||||
'web' => 'http://iitc.jonatkins.com/?page=test&build=experimental',
|
'web' => 'http://iitc.jonatkins.com/?page=test&build=experimental',
|
||||||
|
'mobileweb' => 'http://iitc.jonatkins.com/?page=test&build=experimental#test-mobild',
|
||||||
),
|
),
|
||||||
|
|
||||||
'jonatkins-dev' => Array ( # personal
|
'jonatkins-dev' => Array ( # personal
|
||||||
'path' => 'dev',
|
'path' => 'dev',
|
||||||
'name' => 'Development builds - not for public use',
|
'name' => 'Development builds - not for public use',
|
||||||
'web' => 'http://iitc.jonatkins.com/?page=test&build=dev',
|
'web' => 'http://iitc.jonatkins.com/?page=test&build=dev',
|
||||||
|
'mobileweb' => 'http://iitc.jonatkins.com/?page=test&build=dev#test-mobile',
|
||||||
),
|
),
|
||||||
|
|
||||||
'local' => Array ( # not a real build, but often the default for local development
|
'local' => Array ( # not a real build, but often the default for local development
|
||||||
@ -50,6 +55,38 @@ if ( array_key_exists ( $build, $details ) )
|
|||||||
|
|
||||||
$dir = $info['path'];
|
$dir = $info['path'];
|
||||||
|
|
||||||
|
if ( $mobile )
|
||||||
|
{
|
||||||
|
$apkfile = $dir.'/IITC_Mobile-'.$dir.'.apk';
|
||||||
|
if ( file_Exists ( $apkfile ) )
|
||||||
|
{
|
||||||
|
$apkinfo = new ApkParser ( $apkfile );
|
||||||
|
$manifest = $apkinfo->getManifest();
|
||||||
|
|
||||||
|
$response['mobile'] = Array (
|
||||||
|
'versionstr' => $manifest->getVersionName(),
|
||||||
|
'versioncode' => $manifest->getVersionCode(),
|
||||||
|
'downloadurl' => url_to_absolute ( $pageurl, $apkfile ),
|
||||||
|
'pageurl' => $info['mobileweb'],
|
||||||
|
);
|
||||||
|
|
||||||
|
$archive = $apkinfo->getApkArchive();
|
||||||
|
$stream = $archive->getStream ( "assets/total-conversion-build.user.js" );
|
||||||
|
if ( $stream )
|
||||||
|
{
|
||||||
|
$header = loadUserScriptHeader ( $stream );
|
||||||
|
$response['mobile']['iitc_version'] = $header['@version'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$response['error'] = 'Failed to find .apk file '.$apkfile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// desktop - .user.js scripts
|
||||||
|
|
||||||
// load main script version
|
// load main script version
|
||||||
$iitc_details = loadUserScriptHeader ( "$dir/total-conversion-build.user.js" );
|
$iitc_details = loadUserScriptHeader ( "$dir/total-conversion-build.user.js" );
|
||||||
$response['iitc'] = Array (
|
$response['iitc'] = Array (
|
||||||
@ -73,6 +110,7 @@ if ( array_key_exists ( $build, $details ) )
|
|||||||
'pageUrl' => url_to_absolute ( $pageurl, $info['web']."#plugin-$basename" ),
|
'pageUrl' => url_to_absolute ( $pageurl, $info['web']."#plugin-$basename" ),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
Reference in New Issue
Block a user