[uniques] ask to mark mission waypoints as visited upon completion
This commit is contained in:
parent
f4f656dcd2
commit
e4a335db19
@ -575,7 +575,7 @@ window.plugin.missions = {
|
||||
else
|
||||
this.checkedWaypoints[mwpid] = true;
|
||||
|
||||
window.runHooks('plugin-missions-waypoint-changed', { mwpid: mwpid, });
|
||||
window.runHooks('plugin-missions-waypoint-changed', { mwpid: mwpid, local: true, });
|
||||
if (!dontsave) {
|
||||
this.checkedWaypointsUpdateQueue[mwpid] = true;
|
||||
this.storeLocal('checkedWaypoints');
|
||||
@ -606,7 +606,7 @@ window.plugin.missions = {
|
||||
else
|
||||
this.checkedMissions[mid] = true;
|
||||
|
||||
window.runHooks('plugin-missions-mission-changed', { mid: mid, });
|
||||
window.runHooks('plugin-missions-mission-changed', { mid: mid, local: true, });
|
||||
this.checkedMissionsUpdateQueue[mid] = true;
|
||||
this.storeLocal('checkedMissions');
|
||||
this.storeLocal('checkedMissionsUpdateQueue');
|
||||
@ -860,9 +860,9 @@ window.plugin.missions = {
|
||||
this.storeLocal(fieldName + 'UpdateQueue');
|
||||
|
||||
if(fieldName === 'checkedMissions') {
|
||||
window.runHooks('plugin-missions-mission-changed', { mid: e.property, });
|
||||
window.runHooks('plugin-missions-mission-changed', { mid: e.property, local: false, });
|
||||
} else if(fieldName === 'checkedWaypoints') {
|
||||
window.runHooks('plugin-missions-waypoint-changed', { mwpid: e.property, });
|
||||
window.runHooks('plugin-missions-waypoint-changed', { mwpid: e.property, local: false, });
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -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 {
|
||||
|
Loading…
x
Reference in New Issue
Block a user