|
|
|
@ -38,11 +38,25 @@ const MAX_QUEUED_CHARGES = 2;
|
|
|
|
|
* }} ProcessorImplementationPayload
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Type of a processor implementation
|
|
|
|
|
* @typedef {{
|
|
|
|
|
* entity: Entity,
|
|
|
|
|
* item: BaseItem,
|
|
|
|
|
* slotIndex: number
|
|
|
|
|
* }} ProccessingRequirementsImplementationPayload
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @type {Object<string, (ProcessorImplementationPayload) => void>}
|
|
|
|
|
*/
|
|
|
|
|
export const MOD_ITEM_PROCESSOR_HANDLERS = {};
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* @type {Object<string, (ProccessingRequirementsImplementationPayload) => boolean>}
|
|
|
|
|
*/
|
|
|
|
|
export const MODS_PROCESSING_REQUIREMENTS = {};
|
|
|
|
|
|
|
|
|
|
export class ItemProcessorSystem extends GameSystemWithFilter {
|
|
|
|
|
constructor(root) {
|
|
|
|
|
super(root, [ItemProcessorComponent]);
|
|
|
|
@ -163,6 +177,14 @@ export class ItemProcessorSystem extends GameSystemWithFilter {
|
|
|
|
|
const itemProcessorComp = entity.components.ItemProcessor;
|
|
|
|
|
const pinsComp = entity.components.WiredPins;
|
|
|
|
|
|
|
|
|
|
if (MODS_PROCESSING_REQUIREMENTS[itemProcessorComp.processingRequirement]) {
|
|
|
|
|
return MODS_PROCESSING_REQUIREMENTS[itemProcessorComp.processingRequirement].bind(this)({
|
|
|
|
|
entity,
|
|
|
|
|
item,
|
|
|
|
|
slotIndex,
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (itemProcessorComp.processingRequirement) {
|
|
|
|
|
case enumItemProcessorRequirements.painterQuad: {
|
|
|
|
|
if (slotIndex === 0) {
|
|
|
|
|