[uniques] ask to mark mission waypoints as visited upon completion
This commit is contained in:
@ -489,19 +489,83 @@ window.plugin.uniques.setupPortalsList = function() {
|
||||
});
|
||||
}
|
||||
|
||||
window.plugin.uniques.onMissionChanged = function(data) {
|
||||
if(!data.local) return;
|
||||
|
||||
var mission = window.plugin.missions && window.plugin.missions.getMissionCache(data.mid, false);
|
||||
if(!mission) return;
|
||||
|
||||
window.plugin.uniques.checkMissionWaypoints(mission);
|
||||
};
|
||||
|
||||
window.plugin.uniques.onMissionLoaded = function(data) {
|
||||
// the mission has been loaded, but the dialog isn't visible yet.
|
||||
// we'll wait a moment so the mission dialog is opened behind the confirmation prompt
|
||||
setTimeout(function() {
|
||||
window.plugin.uniques.checkMissionWaypoints(data.mission);
|
||||
}, 0);
|
||||
};
|
||||
|
||||
window.plugin.uniques.checkMissionWaypoints = function(mission) {
|
||||
if(!(window.plugin.missions && window.plugin.missions.checkedMissions[mission.guid])) return;
|
||||
|
||||
if(!mission.waypoints) return;
|
||||
|
||||
function isValidWaypoint(wp) {
|
||||
// might be hidden or field trip card
|
||||
if(!(wp && wp.portal && wp.portal.guid)) return false;
|
||||
|
||||
// only use hack, deploy, link, field and upgrade; ignore photo and passphrase
|
||||
if(wp.objectiveNum <= 0 || wp.objectiveNum > 5) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
function isVisited(wp) {
|
||||
var guid = wp.portal.guid,
|
||||
uniqueInfo = plugin.uniques.uniques[guid],
|
||||
visited = (uniqueInfo && uniqueInfo.visited) || false;
|
||||
|
||||
return visited;
|
||||
}
|
||||
|
||||
// check if all waypoints are already visited
|
||||
if(mission.waypoints.every(function(wp) {
|
||||
if(!isValidWaypoint(wp)) return true;
|
||||
return isVisited(wp);
|
||||
})) return;
|
||||
|
||||
if(!confirm('The mission ' + mission.title + ' contains waypoints not yet marked as visited.\n\n' +
|
||||
'Do you want to set them to \'visited\' now?'))
|
||||
return;
|
||||
|
||||
mission.waypoints.forEach(function(wp) {
|
||||
if(!isValidWaypoint(wp)) return;
|
||||
if(isVisited(wp)) return;
|
||||
|
||||
plugin.uniques.setPortalVisited(wp.portal.guid);
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
var setup = function() {
|
||||
if($.inArray('pluginUniquesUpdateUniques', window.VALID_HOOKS) < 0)
|
||||
window.VALID_HOOKS.push('pluginUniquesUpdateUniques');
|
||||
if($.inArray('pluginUniquesRefreshAll', window.VALID_HOOKS) < 0)
|
||||
window.VALID_HOOKS.push('pluginUniquesRefreshAll');
|
||||
window.pluginCreateHook('pluginUniquesUpdateUniques');
|
||||
window.pluginCreateHook('pluginUniquesRefreshAll');
|
||||
|
||||
// to mark mission portals as visited
|
||||
window.pluginCreateHook('plugin-missions-mission-changed');
|
||||
window.pluginCreateHook('plugin-missions-loaded-mission');
|
||||
|
||||
window.plugin.uniques.setupCSS();
|
||||
window.plugin.uniques.setupContent();
|
||||
window.plugin.uniques.loadLocal('uniques');
|
||||
window.addPortalHighlighter('Uniques', window.plugin.uniques.highlighter);
|
||||
window.addHook('portalDetailsUpdated', window.plugin.uniques.onPortalDetailsUpdated);
|
||||
window.addHook('publicChatDataAvailable', window.plugin.uniques.onPublicChatDataAvailable);
|
||||
window.addHook('iitcLoaded', window.plugin.uniques.registerFieldForSyncing);
|
||||
window.addPortalHighlighter('Uniques', window.plugin.uniques.highlighter);
|
||||
|
||||
|
||||
window.addHook('plugin-missions-mission-changed', window.plugin.uniques.onMissionChanged);
|
||||
window.addHook('plugin-missions-loaded-mission', window.plugin.uniques.onMissionLoaded);
|
||||
|
||||
if(window.plugin.portalslist) {
|
||||
window.plugin.uniques.setupPortalsList();
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user