Esempio n. 1
0
        public GameStage(
            GameStageConfig config,
            ILogger <IStage <GameStage, GameStageUser> > logger,
            IServerRegistry serverRegistry,
            ISessionRegistry sessionRegistry,
            IMigrationRegistry migrationRegistry,
            IDispatchService dispatchService,
            IInviteService inviteService,
            IGuildService guildService,
            IPartyService partyService,
            IAccountRepository accountRepository,
            IAccountWorldRepository accountWorldRepository,
            ICharacterRepository characterRepository,
            ITickerManager tickerManager,
            IPacketProcessor <GameStage, GameStageUser> packetProcessor,
            IScriptEngine scriptEngine,
            ICommandProcessor commandProcessor,
            ITemplateRepository <ItemTemplate> itemTemplates,
            ITemplateRepository <ItemStringTemplate> itemStringTemplates,
            ITemplateRepository <ItemOptionTemplate> itemOptionTemplates,
            ITemplateRepository <ItemSetTemplate> itemSetTemplates,
            ITemplateRepository <SkillTemplate> skillTemplates,
            ITemplateRepository <FieldTemplate> fieldTemplates,
            ITemplateRepository <FieldStringTemplate> fieldStringTemplates,
            ITemplateRepository <ContiMoveTemplate> contiMoveTemplates,
            ITemplateRepository <NPCTemplate> npcTemplates,
            ITemplateRepository <NPCShopTemplate> npcShopTemplates,
            ITemplateRepository <MobTemplate> mobTemplates
            ) : base(
                ServerStageType.Game,
                config,
                logger,
                serverRegistry,
                sessionRegistry,
                migrationRegistry,
                accountRepository,
                accountWorldRepository,
                characterRepository,
                tickerManager,
                packetProcessor
                )
        {
            DispatchService = dispatchService;

            dispatchService
            .Subscribe(new DispatchSubscription {
                Server = ID
            })
            .ForEachAwaitAsync(OnDispatch);

            InviteService = inviteService;
            GuildService  = guildService;
            PartyService  = partyService;

            guildService
            .Subscribe()
            .ForEachAwaitAsync(OnGuildUpdate);
            partyService
            .Subscribe()
            .ForEachAwaitAsync(OnPartyUpdate);

            ScriptEngine         = scriptEngine;
            CommandProcessor     = commandProcessor;
            ItemTemplates        = itemTemplates;
            ItemStringTemplates  = itemStringTemplates;
            ItemOptionTemplates  = itemOptionTemplates;
            ItemSetTemplates     = itemSetTemplates;
            SkillTemplates       = skillTemplates;
            FieldTemplates       = fieldTemplates;
            FieldStringTemplates = fieldStringTemplates;
            ContiMoveTemplates   = contiMoveTemplates;
            NPCTemplates         = npcTemplates;
            NPCShopTemplates     = npcShopTemplates;
            MobTemplates         = mobTemplates;

            FieldRepository     = new FieldRepository(this, FieldTemplates, tickerManager);
            FieldSetRepository  = null; // TODO;
            ContiMoveRepository = new ContiMoveRepository(this, ContiMoveTemplates, FieldRepository, tickerManager);

            packetProcessor.Register(new UserTransferChannelRequestHandler());
            packetProcessor.Register(new UserMoveHandler());
            packetProcessor.Register(new UserMeleeAttackHandler());
            packetProcessor.Register(new UserShootAttackHandler());
            packetProcessor.Register(new UserMagicAttackHandler());
            packetProcessor.Register(new UserBodyAttackHandler());
            packetProcessor.Register(new UserEmotionHandler());
            packetProcessor.Register(new UserChatHandler());
            packetProcessor.Register(new UserSelectNPCHandler());
            packetProcessor.Register(new UserScriptMessageAnswerHandler());
            packetProcessor.Register(new UserGatherItemRequestHandler());
            packetProcessor.Register(new UserSortItemRequestHandler());
            packetProcessor.Register(new UserChangeSlotPositionRequestHandler());
            packetProcessor.Register(new UserCharacterInfoRequestHandler());
            packetProcessor.Register(new UserSkillUpRequestHandler());

            packetProcessor.Register(new GroupMessageHandler());
            packetProcessor.Register(new WhisperHandler());

            packetProcessor.Register(new PartyRequestHandler());
            packetProcessor.Register(new PartyResultHandler());

            packetProcessor.Register(new FuncKeyMappedModifiedHandler());
            packetProcessor.Register(new QuickSlotKeyMappedModifiedHandler());

            packetProcessor.Register(new MobMoveHandler());

            packetProcessor.Register(new NPCMoveHandler());

            packetProcessor.Register(new ContiStateHandler());

            commandProcessor.Register(new HelpCommand(commandProcessor));
            commandProcessor.Register(new AliasCommand(commandProcessor));
            commandProcessor.Register(new DebugCommand());

            commandProcessor.Register(new SetupCommand());

            commandProcessor.Register(new StatCommand());
            commandProcessor.Register(new SecondaryStatCommand());
            commandProcessor.Register(new ForcedStatCommand());
            commandProcessor.Register(new MobStatCommand());
            commandProcessor.Register(new SkillRecordCommand());
            commandProcessor.Register(new ItemCommand(ItemStringTemplates, ItemTemplates));
            commandProcessor.Register(new FieldCommand(FieldRepository, FieldStringTemplates, FieldTemplates));
            commandProcessor.Register(new ContiMoveCommand(ContiMoveRepository));
            commandProcessor.Register(new NPCShopCommand(npcShopTemplates));
        }