import { Assets, Ticker } from 'pixi.js'; import { argTypes, getDefaultArgs } from 'src/stories/utils/argTypes'; import { createScreenInputMap } from 'src/stories/utils/createScreenInputMap'; import MachineContainer from 'src/stories/utils/MachineContainer'; import { centerView } from 'src/stories/utils/resize'; import ReelsSpinSystem from 'src/systems/ReelsSpinSystem'; import { SlotMachineConfig } from 'src/types/SlotMachineConfig'; import { Meta, PixiStory, StoryFn } from '@pixi/storybook-renderer'; import ReelsMachine from '../slotMachines/ReelsMachine'; import MockSystem from "../systems/MockSystem"; const args = { key: 'A', // skin '10' accelerationTime: 1, backCoef: 1.1, maxSpeed: 40, reelStartDelay: 0.2, reelStopDelay: 0.5, spinningDuration: 2, blur: true, bounce: true }; const meta: Meta = { title: 'Systems/WinSymbolSystem', // Путь для отображения в Storybook tags: ['autodocs'], // Включает автоматическую генерацию документации parameters: { docs: { story: { height: 600 }, description: { component: 'Animation of win symbols and winlines, all and individual loop' }, } }, argTypes: argTypes(args), args: getDefaultArgs(args), }; export default meta; const rawLines = [ [0, 1, 0, 1, 0], [0, 1, 1, 1, 0] ] const lines = { get: (index: number) => { return rawLines[index] }, numberOfLines: () => 2, lines: rawLines } export const WinSymbolStory: StoryFn = (_params, context) => new PixiStory({ context, init: async (view) => { Assets.reset(); await Assets.init({ manifest: 'area69/manifest.json', }); await Assets.loadBundle('configs'); await Assets.loadBundle('symbols'); const config: SlotMachineConfig = Assets.get('slot_machine_config'); const machine = new ReelsMachine({...config, lines: lines.lines}); machine.systems.spin.setSettings(_params); const container = new MachineContainer(machine); machine.systems.blockExitState = new MockSystem(machine) view.addChild(container); context.machine = machine; machine.inputs.initMap = createScreenInputMap(config); machine.inputs.screenMap = createScreenInputMap(config); machine.inputs.wins = { totalWin: 200, totalWinString: '2.00 USD', wins: [ { type: 'line', amount: 100, amountString: '1.00 USD', lineSlotsIndexMap: [0, 1, 0], lineIndex: 0 }, { type: 'line', amount: 100, amountString: '1.00 USD', lineSlotsIndexMap: [0, 1, 1], lineIndex: 1 } ] }; console.log(machine) console.log(machine.inputs) machine.inputs.spin = true; centerView(view); }, resize: centerView, update: () => { context.machine && context.machine.update(Ticker.shared.deltaMS); } }); // export const WinStickSymbolStory: StoryFn = (_params, context) => new PixiStory({ // context, init: async (view) => // { // Assets.reset(); // await Assets.init({ // manifest: 'area69/manifest.json', // }); // await Assets.loadBundle('configs'); // await Assets.loadBundle('symbols'); // const config: SlotMachineConfig = Assets.get('slot_machine_config'); // const machine = new ReelsMachine({...config, lines: [ // [0, 1, 0, 1, 0], // [0, 1, 1, 1, 0] // ] }); // const container = new MachineContainer(machine); // // // view.addChild(container); // context.machine = machine; // machine.inputs.initMap = createScreenInputMap(config); // machine.inputs.screenMap = createScreenInputMap(config); // machine.inputs.wins = [ // { // type: 'line', // amount: 100, // amountString: '1.00 USD', // lineSlotsIndexMap: [0, 1, 0], // lineIndex: 0 // }, // { // type: 'line', // amount: 100, // amountString: '1.00 USD', // lineSlotsIndexMap: [0, 1, 1], // lineIndex: 1 // } // ] // machine.stateMachine.states[STATES.SPINNING].systems = ['spin', 'layering', 'stick']; // machine.systems.stick = new StickySymbolsSystem(machine); // machine.systems.stick.setSettings(_params); // machine.systems.spin.setSettings(_params); // // machine.systems.allWinSymbols.setSettings(winSymbolSettings); // // machine.systems.winningLinesLoop.setSettings(winSymbolSettings); // // machine.inputs.blockExitState = true; // setTimeout(() => { // machine.inputs.blockExitState = false; // }, 250); // // centerView(view); // }, // resize: centerView, // update: () => // { // context.machine && context.machine.update(Ticker.shared.deltaMS); // } // }); // // export const WinStickExpandingSymbolStory: StoryFn = (_params, context) => new PixiStory({ // context, init: async (view) => // { // Assets.reset(); // await Assets.init({ // manifest: 'area69/manifest.json', // }); // await Assets.loadBundle('configs'); // await Assets.loadBundle('symbols'); // const config: SlotMachineConfig = Assets.get('slot_machine_config'); // const machine = new ReelsMachine(config); // const container = new MachineContainer(machine); // const winSymbolSettings = { // lines: [[0, 1, 0, 1, 0], [3, 2, 3, 2, 3]], // hideWinline: false, // winlineAnimationClass: WinLine, // basicWinClass: BasicWin, // }; // const spin = () => // { // machine.inputs.spin = true; // setTimeout(() => { machine.inputs.spin = false; }, 1000); // setTimeout(spin, 10000); // }; // // view.addChild(container); // context.machine = machine; // machine.inputs.initMap = createScreenInputMap(config); // machine.inputs.screenMap = createScreenInputMap(config); // machine.inputs.wins = [['line', 100, [0, 1, 0], 0], ['line', 100, [3, 2, 3], 1]]; // machine.inputs.celebrateSymbolIndexes = [0, 1, 5]; // machine.stateMachine.states[STATES.SPINNING].systems = ['spin', 'layering', 'stick', 'expanding']; // machine.systems.expanding = new ExpandedSymbolsSpinSystem(machine); // machine.systems.stick = new StickySymbolsSystem(machine); // machine.systems.expanding.setSettings(_params); // machine.systems.stick.setSettings(_params); // machine.systems.spin.setSettings(_params); // machine.systems.allWinSymbols.setSettings(winSymbolSettings); // machine.systems.winningLinesLoop.setSettings(winSymbolSettings); // machine.inputs.blockExitState = true; // setTimeout(() => { // machine.inputs.blockExitState = false; // }, 250); // centerView(view); // spin(); // }, // resize: centerView, // update: () => // { // context.machine && context.machine.update(Ticker.shared.deltaMS); // } // });