@zerospacegg/iolin
Version:
Pure TypeScript implementation of ZeroSpace game data processing (PKL-free)
105 lines • 6.35 kB
JavaScript
;
/**
* ZeroSpace Game Mechanics - Complete System
*
* This module exports all game mechanics for ZeroSpace, including both basic
* fundamental mechanics and advanced transformation systems. Mechanics represent
* core gameplay rules and systems that define how the game operates.
*
* Categories:
* - Basic Mechanics: Fundamental gameplay concepts and rules
* - Transformation Mechanics: Complex multi-phase systems that modify units
*/
Object.defineProperty(exports, "__esModule", { value: true });
exports.mechanicsStats = exports.economicAndFactionMechanics = exports.utilityAndSystemMechanics = exports.combatAndTransformationMechanics = exports.transformationMechanics = exports.basicMechanics = exports.allMechanics = exports.systemMechanics = exports.supportMechanics = exports.necromancyTransformations = exports.factionMechanics = exports.enhancementTransformations = exports.economicMechanics = exports.controlTransformations = exports.combatMechanics = exports.allTransformationMechanics = exports.allBasicMechanics = void 0;
exports.searchMechanics = searchMechanics;
exports.getMechanicByName = getMechanicByName;
exports.getMechanicsByKeyword = getMechanicsByKeyword;
// Import all mechanic collections
const basic_js_1 = require("./basic.cjs");
Object.defineProperty(exports, "allBasicMechanics", { enumerable: true, get: function () { return basic_js_1.allBasicMechanics; } });
Object.defineProperty(exports, "combatMechanics", { enumerable: true, get: function () { return basic_js_1.combatMechanics; } });
Object.defineProperty(exports, "economicMechanics", { enumerable: true, get: function () { return basic_js_1.economicMechanics; } });
Object.defineProperty(exports, "factionMechanics", { enumerable: true, get: function () { return basic_js_1.factionMechanics; } });
Object.defineProperty(exports, "supportMechanics", { enumerable: true, get: function () { return basic_js_1.supportMechanics; } });
Object.defineProperty(exports, "systemMechanics", { enumerable: true, get: function () { return basic_js_1.systemMechanics; } });
const transformations_js_1 = require("./transformations.cjs");
Object.defineProperty(exports, "allTransformationMechanics", { enumerable: true, get: function () { return transformations_js_1.allTransformationMechanics; } });
Object.defineProperty(exports, "controlTransformations", { enumerable: true, get: function () { return transformations_js_1.controlTransformations; } });
Object.defineProperty(exports, "enhancementTransformations", { enumerable: true, get: function () { return transformations_js_1.enhancementTransformations; } });
Object.defineProperty(exports, "necromancyTransformations", { enumerable: true, get: function () { return transformations_js_1.necromancyTransformations; } });
// Export all mechanics combined
exports.allMechanics = [...basic_js_1.allBasicMechanics, ...transformations_js_1.allTransformationMechanics];
// Export mechanics by type
exports.basicMechanics = basic_js_1.allBasicMechanics;
exports.transformationMechanics = transformations_js_1.allTransformationMechanics;
// Export mechanics by gameplay area
exports.combatAndTransformationMechanics = [
...basic_js_1.combatMechanics,
...transformations_js_1.enhancementTransformations,
...transformations_js_1.necromancyTransformations,
];
exports.utilityAndSystemMechanics = [...basic_js_1.supportMechanics, ...basic_js_1.systemMechanics, ...transformations_js_1.controlTransformations];
exports.economicAndFactionMechanics = [...basic_js_1.economicMechanics, ...basic_js_1.factionMechanics];
// Export mechanics statistics
exports.mechanicsStats = {
totalMechanics: exports.allMechanics.length,
basicMechanics: basic_js_1.allBasicMechanics.length,
transformationMechanics: transformations_js_1.allTransformationMechanics.length,
categories: {
combat: basic_js_1.combatMechanics.length,
economic: basic_js_1.economicMechanics.length,
support: basic_js_1.supportMechanics.length,
faction: basic_js_1.factionMechanics.length,
system: basic_js_1.systemMechanics.length,
enhancement: transformations_js_1.enhancementTransformations.length,
necromancy: transformations_js_1.necromancyTransformations.length,
control: transformations_js_1.controlTransformations.length,
},
};
// Export search functionality
function searchMechanics(query) {
const results = exports.allMechanics.filter(mechanic => mechanic.matches(query));
return {
query,
totalResults: results.length,
results: results.map(mechanic => ({
name: mechanic.name,
summary: mechanic.summary,
keywords: mechanic.keywords,
})),
mechanics: results,
};
}
// Export mechanic lookup by name
function getMechanicByName(name) {
return exports.allMechanics.find(mechanic => mechanic.name.toLowerCase() === name.toLowerCase());
}
// Export mechanics by keyword
function getMechanicsByKeyword(keyword) {
return exports.allMechanics.filter(mechanic => mechanic.keywords.some(k => k.toLowerCase().includes(keyword.toLowerCase())));
}
// Default export containing all named exports for consistent API
exports.default = {
allBasicMechanics: basic_js_1.allBasicMechanics,
allTransformationMechanics: transformations_js_1.allTransformationMechanics,
combatMechanics: basic_js_1.combatMechanics,
controlTransformations: transformations_js_1.controlTransformations,
economicMechanics: basic_js_1.economicMechanics,
enhancementTransformations: transformations_js_1.enhancementTransformations,
factionMechanics: basic_js_1.factionMechanics,
necromancyTransformations: transformations_js_1.necromancyTransformations,
supportMechanics: basic_js_1.supportMechanics,
systemMechanics: basic_js_1.systemMechanics,
allMechanics: exports.allMechanics,
basicMechanics: exports.basicMechanics,
transformationMechanics: exports.transformationMechanics,
combatAndTransformationMechanics: exports.combatAndTransformationMechanics,
utilityAndSystemMechanics: exports.utilityAndSystemMechanics,
economicAndFactionMechanics: exports.economicAndFactionMechanics,
mechanicsStats: exports.mechanicsStats,
searchMechanics,
getMechanicByName,
getMechanicsByKeyword,
};
//# sourceMappingURL=index.js.map