{"version":3,"sources":["../../../../src/utils/adapters/core/index.ts"],"sourcesContent":["import type { Engine, Mino } from \"../../../engine\";\nimport type * as Messages from \"../types/messages\";\n\nexport abstract class Adapter<\n  T extends Messages.CustomMessageData = Messages.CustomMessageData\n> {\n  abstract initialize(): Promise<Messages.Incoming.Info<T>>;\n\n  protected configFromEngine(\n    engine: Engine\n  ): Omit<Messages.Outgoing.Config<T>, \"type\" | \"data\"> {\n    return {\n      boardWidth: engine.board.width,\n      boardHeight: engine.board.height,\n      kicks: engine.kickTableName,\n      spins: engine.gameOptions.spinBonuses,\n      comboTable: engine.gameOptions.comboTable,\n      b2bCharing: !!engine.b2b.charging,\n      b2bChargeAt: engine.b2b.charging ? engine.b2b.charging.at : 0,\n      b2bChargeBase: engine.b2b.charging ? engine.b2b.charging.base : 0,\n      b2bChaining: engine.b2b.chaining,\n      garbageMultiplier: engine.dynamic.garbageMultiplier.get(),\n      garbageCap: engine.dynamic.garbageMultiplier.get(),\n      garbageSpecialBonus: engine.garbageQueue.options.specialBonus,\n      pcB2b: engine.pc ? engine.pc.b2b : 0,\n      pcGarbage: engine.pc ? engine.pc.garbage : 0,\n      queue: engine.queue.value\n    };\n  }\n\n  protected stateFromEngine(\n    engine: Engine\n  ): Omit<Messages.Outgoing.State<T>, \"type\" | \"data\"> {\n    return {\n      board: engine.board.state,\n\n      current: engine.falling.symbol,\n      hold: engine.held,\n      queue: engine.queue.value,\n\n      garbage: engine.garbageQueue.queue.map((item) => item.amount),\n\n      combo: engine.stats.combo,\n      b2b: engine.stats.b2b\n    };\n  }\n\n  protected playFromEngine(\n    engine: Engine\n  ): Omit<Messages.Outgoing.Play<T>, \"type\" | \"data\"> {\n    return {\n      garbageCap: Math.floor(engine.dynamic.garbageCap.get()),\n      garbageMultiplier: engine.dynamic.garbageMultiplier.get()\n    };\n  }\n\n  abstract config(engine: Engine, data?: T[\"config\"]): void;\n\n  abstract update(engine: Engine, data?: T[\"state\"]): void;\n\n\tabstract addPieces(pieces: Mino[], data?: T[\"pieces\"]): void;\n\n  abstract play(\n    engine: Engine,\n    data?: T[\"play\"]\n  ): Promise<Messages.Incoming.Move<T>>;\n\n  abstract stop(): void;\n}\n"],"names":["Adapter","configFromEngine","engine","boardWidth","board","width","boardHeight","height","kicks","kickTableName","spins","gameOptions","spinBonuses","comboTable","b2bCharing","b2b","charging","b2bChargeAt","at","b2bChargeBase","base","b2bChaining","chaining","garbageMultiplier","dynamic","get","garbageCap","garbageSpecialBonus","garbageQueue","options","specialBonus","pcB2b","pc","pcGarbage","garbage","queue","value","stateFromEngine","state","current","falling","symbol","hold","held","map","item","amount","combo","stats","playFromEngine","Math","floor"],"mappings":"AAGA,OAAO,MAAeA;IAKVC,iBACRC,MAAc,EACsC;QACpD,OAAO;YACLC,YAAYD,OAAOE,KAAK,CAACC,KAAK;YAC9BC,aAAaJ,OAAOE,KAAK,CAACG,MAAM;YAChCC,OAAON,OAAOO,aAAa;YAC3BC,OAAOR,OAAOS,WAAW,CAACC,WAAW;YACrCC,YAAYX,OAAOS,WAAW,CAACE,UAAU;YACzCC,YAAY,CAAC,CAACZ,OAAOa,GAAG,CAACC,QAAQ;YACjCC,aAAaf,OAAOa,GAAG,CAACC,QAAQ,GAAGd,OAAOa,GAAG,CAACC,QAAQ,CAACE,EAAE,GAAG;YAC5DC,eAAejB,OAAOa,GAAG,CAACC,QAAQ,GAAGd,OAAOa,GAAG,CAACC,QAAQ,CAACI,IAAI,GAAG;YAChEC,aAAanB,OAAOa,GAAG,CAACO,QAAQ;YAChCC,mBAAmBrB,OAAOsB,OAAO,CAACD,iBAAiB,CAACE,GAAG;YACvDC,YAAYxB,OAAOsB,OAAO,CAACD,iBAAiB,CAACE,GAAG;YAChDE,qBAAqBzB,OAAO0B,YAAY,CAACC,OAAO,CAACC,YAAY;YAC7DC,OAAO7B,OAAO8B,EAAE,GAAG9B,OAAO8B,EAAE,CAACjB,GAAG,GAAG;YACnCkB,WAAW/B,OAAO8B,EAAE,GAAG9B,OAAO8B,EAAE,CAACE,OAAO,GAAG;YAC3CC,OAAOjC,OAAOiC,KAAK,CAACC,KAAK;QAC3B;IACF;IAEUC,gBACRnC,MAAc,EACqC;QACnD,OAAO;YACLE,OAAOF,OAAOE,KAAK,CAACkC,KAAK;YAEzBC,SAASrC,OAAOsC,OAAO,CAACC,MAAM;YAC9BC,MAAMxC,OAAOyC,IAAI;YACjBR,OAAOjC,OAAOiC,KAAK,CAACC,KAAK;YAEzBF,SAAShC,OAAO0B,YAAY,CAACO,KAAK,CAACS,GAAG,CAAC,CAACC,OAASA,KAAKC,MAAM;YAE5DC,OAAO7C,OAAO8C,KAAK,CAACD,KAAK;YACzBhC,KAAKb,OAAO8C,KAAK,CAACjC,GAAG;QACvB;IACF;IAEUkC,eACR/C,MAAc,EACoC;QAClD,OAAO;YACLwB,YAAYwB,KAAKC,KAAK,CAACjD,OAAOsB,OAAO,CAACE,UAAU,CAACD,GAAG;YACpDF,mBAAmBrB,OAAOsB,OAAO,CAACD,iBAAiB,CAACE,GAAG;QACzD;IACF;AAcF"}