[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
|
else
|
||||||
this.checkedWaypoints[mwpid] = true;
|
this.checkedWaypoints[mwpid] = true;
|
||||||
|
|
||||||
window.runHooks('plugin-missions-waypoint-changed', { mwpid: mwpid, });
|
window.runHooks('plugin-missions-waypoint-changed', { mwpid: mwpid, local: true, });
|
||||||
if (!dontsave) {
|
if (!dontsave) {
|
||||||
this.checkedWaypointsUpdateQueue[mwpid] = true;
|
this.checkedWaypointsUpdateQueue[mwpid] = true;
|
||||||
this.storeLocal('checkedWaypoints');
|
this.storeLocal('checkedWaypoints');
|
||||||
@ -606,7 +606,7 @@ window.plugin.missions = {
|
|||||||
else
|
else
|
||||||
this.checkedMissions[mid] = true;
|
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.checkedMissionsUpdateQueue[mid] = true;
|
||||||
this.storeLocal('checkedMissions');
|
this.storeLocal('checkedMissions');
|
||||||
this.storeLocal('checkedMissionsUpdateQueue');
|
this.storeLocal('checkedMissionsUpdateQueue');
|
||||||
@ -860,9 +860,9 @@ window.plugin.missions = {
|
|||||||
this.storeLocal(fieldName + 'UpdateQueue');
|
this.storeLocal(fieldName + 'UpdateQueue');
|
||||||
|
|
||||||
if(fieldName === 'checkedMissions') {
|
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') {
|
} 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,18 +489,82 @@ 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() {
|
var setup = function() {
|
||||||
if($.inArray('pluginUniquesUpdateUniques', window.VALID_HOOKS) < 0)
|
window.pluginCreateHook('pluginUniquesUpdateUniques');
|
||||||
window.VALID_HOOKS.push('pluginUniquesUpdateUniques');
|
window.pluginCreateHook('pluginUniquesRefreshAll');
|
||||||
if($.inArray('pluginUniquesRefreshAll', window.VALID_HOOKS) < 0)
|
|
||||||
window.VALID_HOOKS.push('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.setupCSS();
|
||||||
window.plugin.uniques.setupContent();
|
window.plugin.uniques.setupContent();
|
||||||
window.plugin.uniques.loadLocal('uniques');
|
window.plugin.uniques.loadLocal('uniques');
|
||||||
|
window.addPortalHighlighter('Uniques', window.plugin.uniques.highlighter);
|
||||||
window.addHook('portalDetailsUpdated', window.plugin.uniques.onPortalDetailsUpdated);
|
window.addHook('portalDetailsUpdated', window.plugin.uniques.onPortalDetailsUpdated);
|
||||||
window.addHook('publicChatDataAvailable', window.plugin.uniques.onPublicChatDataAvailable);
|
window.addHook('publicChatDataAvailable', window.plugin.uniques.onPublicChatDataAvailable);
|
||||||
window.addHook('iitcLoaded', window.plugin.uniques.registerFieldForSyncing);
|
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) {
|
if(window.plugin.portalslist) {
|
||||||
window.plugin.uniques.setupPortalsList();
|
window.plugin.uniques.setupPortalsList();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user