Exemple #1
0
 public Chainer(ITimedMessageProvider <TInput> upstream)
 => this.upstream = upstream
 public SynchronizedMessageProvider(ITimedMessageProvider <T> original)
 {
     original.Received += SendToDownstream;
 }
Exemple #3
0
        public GameListener(IHttpProviderSelector providerSelector)
        {
            provider           = new SynchronizedMessageProvider <HttpMessage>(providerSelector.Current);
            jSerializer.Error += JsonError;

            masterDataUpdated = RegisterResponse <MasterDataJson>("api_start2")
                                .CombineWith(RegisterResponse <MasterDataJson>("api_start2/getData"))
                                .Select(ParseMasterData);

            var requireInfo = RegisterResponse <GameStartupInfoJson>("api_get_member/require_info");

            allEquipmentUpdated = requireInfo.Select(x => x.api_slot_item)
                                  .CombineWith(RegisterResponse <EquipmentJson[]>("api_get_member/slot_item"));
            useItemUpdated = requireInfo.Select(x => x.api_useitem)
                             .CombineWith(RegisterResponse <UseItemCountJson[]>("api_get_member/useitem"));
            freeEquipmentUpdated = requireInfo.Select(x => x.api_unsetslot)
                                   .CombineWith(RegisterResponse <Dictionary <string, int[]> >("api_get_member/unsetslot"));

            var homeport = RegisterResponse <HomeportJson>("api_port/port");

            admiralUpdated = homeport.Select(x => x.api_basic)
                             .CombineWith <IRawAdmiral>(RegisterResponse <AdmiralRecordJson>("api_get_member/record"));
            repairingDockUpdated = homeport.Select(x => x.api_ndock)
                                   .CombineWith(RegisterResponse <RepairingDockJson[]>("api_get_member/ndock"));
            homeportReturned   = homeport.Select(ParseHomeport);
            compositionChanged = RegisterRequest("api_req_hensei/change")
                                 .Select(ParseCompositionChange);
            fleetPresetSelected = RegisterResponse <FleetJson>("api_req_hensei/preset_select");
            shipExtraSlotOpened = RegisterRequest("api_req_kaisou/open_exslot")
                                  .Select(ParseShipExtraSlotOpen);
            shipEquipmentUpdated = RegisterRaw <ShipEquipmentJson>("api_req_kaisou/slot_exchange_index")
                                   .Select(x => ParseShipEquipmentUpdate(x.Request, x.Response));
            expeditionCompleted = RegisterRaw <ExpeditionCompletionJson>("api_req_mission/result")
                                  .Select(x => ParseExpeditionCompletion(x.Request, x.Response));

            var ship3 = RegisterResponse <Ship3Json>("api_get_member/ship3")
                        .CombineWith(RegisterResponse <Ship3Json>("api_get_member/ship_deck"));

            partialFleetsUpdated = ship3.Select(x => x.api_deck_data);
            partialShipsUpdated  = ship3.Select(x => x.api_ship_data)
                                   .CombineWith(RegisterResponse <ShipJson[]>("api_get_member/ship2"),
                                                RegisterResponse <DepriveJson>("api_req_kaisou/slot_deprive").Select(ParseShipDeprive));

            repairStarted = RegisterRequest("api_req_nyukyo/start")
                            .Select(ParseRepairStart);
            instantRepaired = RegisterRequest("api_req_nyukyo/speedchange")
                              .Select(ParseInstantRepair);
            shipCreated = RegisterRequest("api_req_kousyou/createship")
                          .Select(ParseShipCreation);
            instantBuilt = RegisterRequest("api_req_kousyou/createship_speedchange")
                           .Select(ParseInstantBuilt);

            var charge = RegisterResponse <ShipsSupplyJson>("api_req_hokyu/charge");

            shipSupplied = charge.Select(x => x.api_ship);

            var getShip = RegisterResponse <ShipBuildCompletionJson>("api_req_kousyou/getship");

            buildingDockUpdated = requireInfo.Select(x => x.api_kdock)
                                  .CombineWith(getShip.Select(x => x.api_kdock),
                                               RegisterResponse <BuildingDockJson[]>("api_get_member/kdock"));
            shipBuildCompleted = getShip.Select(ParseShipBuildCompletion);

            var createItem = RegisterRaw <EquipmentCreationJson>("api_req_kousyou/createitem");

            equipmentCreated = createItem.Select(x => ParseEquipmentCreation(x.Request, x.Response));

            var destroyShip = RegisterRaw <ShipDismantleJson>("api_req_kousyou/destroyship");

            shipDismantled = destroyShip.Select(x => ParseShipDismantling(x.Request));

            var destroyItem = RegisterRaw <EquipmentDismantleJson>("api_req_kousyou/destroyitem2");

            equipmentDismantled = destroyItem.Select(x => ParseEquipmentDimantling(x.Request));
            equipmentImproved   = RegisterRaw <EquipmentImproveJson>("api_req_kousyou/remodel_slot")
                                  .Select(x => ParseEquipmentImprove(x.Request, x.Response));

            var powerup = RegisterRaw <ShipPowerupJson>("api_req_kaisou/powerup");

            fleetsUpdated = homeport.Select(x => x.api_deck_port)
                            .CombineWith(powerup.Select(x => x.Response.api_deck),
                                         RegisterResponse <FleetJson[]>("api_get_member/deck"));
            shipPoweruped = powerup.Select(x => ParseShipPowerup(x.Request, x.Response));

            questUpdated = RegisterResponse <QuestPageJson>("api_get_member/questlist")
                           .Select(ParseQuestPage);
            questCompleted = RegisterRequest("api_req_quest/clearitemget")
                             .Select(ParseQuestComplete);

            var mapinfo = RegisterResponse <MapsJson>("api_get_member/mapinfo");

            mapsUpdated     = mapinfo.Select(x => x.api_map_info);
            airForceUpdated = mapinfo.Select(x => x.api_air_base);

            var setPlane = RegisterRaw <AirForceSetPlaneJson>("api_req_air_corps/set_plane");

            airForcePlaneSet = setPlane.Select(x => ParseAirForcePlaneSet(x.Request, x.Response));

            airForceActionSet = RegisterRequest("api_req_air_corps/set_action")
                                .Select(ParseAirForceActionSet);
            airForceExpanded = RegisterResponse <AirForceJson>("api_req_air_corps/expand_base");

            var airSupply = RegisterRaw <AirForceSupplyJson>("api_req_air_corps/supply");

            airForceSupplied = airSupply.Select(x => ParseAirForceSupply(x.Request, x.Response));

            materialsUpdated = homeport.Select(x => x.api_material)
                               .CombineWith <IMaterialsUpdate>
                                   (charge,
                                   RegisterResponse <MaterialJsonArray>("api_get_member/material"),
                                   createItem.Select(x => x.Response),
                                   destroyShip.Select(x => x.Response),
                                   destroyItem.Select(x => x.Response),
                                   airSupply.Select(x => x.Response),
                                   setPlane.Select(x => x.Response).Where(x => x.api_after_bauxite.HasValue));

            var mapStart = RegisterRaw <MapRoutingJson>("api_req_map/start");

            sortieStarting = mapStart.Select(x => ParseSortieStart(x.Request));
            mapRouting     = mapStart.Select(x => x.Response)
                             .CombineWith(RegisterResponse <MapRoutingJson>("api_req_map/next"));
        }
Exemple #4
0
 public static ITimedMessageProvider <T> Where <T>(this ITimedMessageProvider <T> producer, Predicate <T> predicate)
 => new Conditioner <T>(producer, predicate);
Exemple #5
0
 public static ITimedMessageProvider <T> CombineWith <T>(this ITimedMessageProvider <T> first, params ITimedMessageProvider <T>[] others)
 => new Combiner <T>(others.Prepend(first).ToArray());
Exemple #6
0
 public static ITimedMessageProvider <T> CombineWith <T>(this ITimedMessageProvider <T> first, ITimedMessageProvider <T> second)
 => new Combiner <T>(first, second);
Exemple #7
0
 public static ITimedMessageProvider <TOutput> Select <TInput, TOutput>(this ITimedMessageProvider <TInput> producer, Func <TInput, TOutput> converter)
 => new Transformer <TInput, TOutput>(producer, converter);