@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
80 lines • 4.26 kB
JavaScript
;
/**
* ZeroSpace Missions - Complete System
*
* This module exports all ZeroSpace missions including cooperative campaigns,
* single-player scenarios, and special challenge missions. Missions provide
* structured gameplay experiences with specific objectives and challenges.
*
* Mission Categories:
* - Co-op Missions: Cooperative campaign missions for multiple players
* - Single Player: Solo campaign and challenge missions
* - Special: Event and seasonal missions
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.missionStats = exports.defensiveMissions = exports.objectiveMissions = exports.cooperativeMissions = exports.allMissions = exports.underFire = exports.survivalMissions = exports.frozenWatch = exports.escortMissions = exports.criticalDelivery = exports.assaultDefenseMissions = exports.allCoopMissions = void 0;
exports.searchMissions = searchMissions;
exports.getMissionByName = getMissionByName;
exports.getMissionsByType = getMissionsByType;
exports.getMissionsByDifficulty = getMissionsByDifficulty;
// Import mission collections
const coop_js_1 = require("./coop.cjs");
Object.defineProperty(exports, "allCoopMissions", { enumerable: true, get: function () { return coop_js_1.allCoopMissions; } });
Object.defineProperty(exports, "assaultDefenseMissions", { enumerable: true, get: function () { return coop_js_1.assaultDefenseMissions; } });
Object.defineProperty(exports, "criticalDelivery", { enumerable: true, get: function () { return coop_js_1.criticalDelivery; } });
Object.defineProperty(exports, "escortMissions", { enumerable: true, get: function () { return coop_js_1.escortMissions; } });
Object.defineProperty(exports, "frozenWatch", { enumerable: true, get: function () { return coop_js_1.frozenWatch; } });
Object.defineProperty(exports, "survivalMissions", { enumerable: true, get: function () { return coop_js_1.survivalMissions; } });
Object.defineProperty(exports, "underFire", { enumerable: true, get: function () { return coop_js_1.underFire; } });
// Export all missions combined
// Export all missions as a collection (create instances for property access)
exports.allMissions = [
...coop_js_1.allCoopMissions.map(MissionClass => new MissionClass()),
// Future: single player missions, special missions, etc.
];
// Export missions by type
exports.cooperativeMissions = coop_js_1.allCoopMissions;
// Export missions by gameplay style
exports.objectiveMissions = [...coop_js_1.escortMissions, ...coop_js_1.assaultDefenseMissions];
exports.defensiveMissions = [...coop_js_1.survivalMissions];
// Export default collection (all missions)
exports.default = exports.allMissions;
// Export mission statistics
exports.missionStats = {
totalMissions: exports.allMissions.length,
coopMissions: coop_js_1.allCoopMissions.length,
missionTypes: {
escort: coop_js_1.escortMissions.length,
survival: coop_js_1.survivalMissions.length,
assaultDefense: coop_js_1.assaultDefenseMissions.length,
},
};
// Export search functionality
function searchMissions(query) {
const results = exports.allMissions.filter(mission => mission.name.toLowerCase().includes(query.toLowerCase()) ||
mission.missionType.toLowerCase().includes(query.toLowerCase()) ||
(mission.description?.toLowerCase().includes(query.toLowerCase()) ?? false));
return {
query,
totalResults: results.length,
results: results.map(mission => ({
name: mission.name,
type: mission.missionType,
description: (mission.description?.slice(0, 100) ?? "No description") + "...",
})),
missions: results,
};
}
// Export mission lookup by name
function getMissionByName(name) {
return exports.allMissions.find(mission => mission.name.toLowerCase().includes(name.toLowerCase()));
}
// Export missions by type
function getMissionsByType(type) {
return exports.allMissions.filter(mission => mission.missionType.toLowerCase() === type.toLowerCase());
}
// Export missions by difficulty
function getMissionsByDifficulty(difficulty) {
return exports.allMissions.filter(mission => mission.name.toLowerCase().includes(difficulty.toLowerCase()));
}
//# sourceMappingURL=index.js.map