示例#1
0
        internal Fleet(Homeport parent, kcsapi_deck rawData)
        {
            this.homeport = parent;

            this.State      = new FleetState(parent, this);
            this.Expedition = new Expedition(this);
            this.CompositeDisposable.Add(this.State);
            this.CompositeDisposable.Add(this.Expedition);

            this.Update(rawData);
        }
示例#2
0
        public FleetState(Homeport homeport, params Fleet[] fleets)
        {
            this.homeport = homeport;
            this.source   = fleets ?? new Fleet[0];

            this.Condition = new FleetCondition();
            this.CompositeDisposable.Add(this.Condition);

            /*
             * this.CompositeDisposable.Add(new PropertyChangedWeakEventListener(DataStorage.Instance.Settings)
             * {
             *      { nameof(IKanColleClientSettings.ViewRangeCalcType), (_, __) => this.Calculate() },
             *      { nameof(IKanColleClientSettings.IsViewRangeCalcIncludeFirstFleet), (_, __) => this.Calculate() },
             *      { nameof(IKanColleClientSettings.IsViewRangeCalcIncludeSecondFleet), (_, __) => this.Calculate() },
             * });
             */
        }
示例#3
0
        internal Repairyard(Homeport parent)
        {
            var proxy = Proxy.Instance;

            this.homeport = parent;
            this.Docks    = new MemberTable <RepairingDock>();

            proxy.Register(Proxy.api_get_member_ndock, e =>
            {
                var x = e.TryParse <kcsapi_ndock[]>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
            });
            proxy.Register(Proxy.api_req_nyukyo_start, e =>
            {
                var x = e.TryParse();
                if (x == null)
                {
                    return;
                }

                this.Start(x);
            });
            proxy.Register(Proxy.api_req_nyukyo_speedchange, e =>
            {
                var x = e.TryParse();
                if (x == null)
                {
                    return;
                }

                this.ChangeSpeed(x);
            });
        }
示例#4
0
        public CombinedFleet(Homeport parent, params Fleet[] fleets)
        {
            if (fleets == null || fleets.Length == 0)
            {
                throw new ArgumentException();
            }

            this.Fleets = fleets;
            this.State  = new FleetState(parent, fleets);
            this.CompositeDisposable.Add(this.State);

            foreach (var fleet in fleets)
            {
                this.CompositeDisposable.Add(new PropertyChangedEventListener(fleet)
                {
                    { nameof(Fleet.Name), (sender, args) => this.UpdateName() },
                });

                var source = fleet;
                this.CompositeDisposable.Add(new WeakEventListener <EventHandler, EventArgs>(
                                                 h => new EventHandler(h),
                                                 h => source.State.Updated += h,
                                                 h => source.State.Updated -= h,
                                                 (sender, args) => this.State.Update()));
                this.CompositeDisposable.Add(new WeakEventListener <EventHandler, EventArgs>(
                                                 h => new EventHandler(h),
                                                 h => source.State.Calculated += h,
                                                 h => source.State.Calculated -= h,
                                                 (sender, args) => this.State.Calculate()));
            }

            this.UpdateName();

            this.State.Calculate();
            this.State.Update();
        }
示例#5
0
 internal Ship(Homeport parent, kcsapi_ship2 RawData) : base(RawData)
 {
     this.homeport = parent;
     this.Update(RawData);
 }
示例#6
0
 internal RepairingDock(Homeport parent, kcsapi_ndock rawData)
 {
     this.homeport = parent;
     this.Update(rawData);
 }
示例#7
0
        internal Itemyard(Homeport parent)
        {
            var proxy = Proxy.Instance;

            this.homeport = parent;

            this.SlotItems = new MemberTable <SlotItem>();
            this.UseItems  = new MemberTable <UseItem>();

            proxy.Register(Proxy.api_get_member_slot_item, e =>
            {
                var x = e.TryParse <kcsapi_slotitem[]>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
            });
            proxy.Register(Proxy.api_req_kousyou_createitem, e =>
            {
                var x = e.TryParse <kcsapi_createitem>();
                if (x == null)
                {
                    return;
                }

                this.CreateItem(x.Data);
            });
            proxy.Register(Proxy.api_req_kousyou_destroyitem2, e =>
            {
                var x = e.TryParse <kcsapi_destroyitem2>();
                if (x == null)
                {
                    return;
                }

                this.DestroyItem(x);
            });
            // 전투중 장비 집계는 무시

            proxy.Register(Proxy.api_get_member_useitem, e =>
            {
                var x = e.TryParse <kcsapi_useitem[]>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
            });
            proxy.Register(Proxy.api_req_kousyou_remodel_slot, e =>
            {
                var x = e.TryParse <kcsapi_remodel_slot>();
                if (x == null)
                {
                    return;
                }

                this.RemoveFromRemodel(x.Data);
                this.RemodelSlotItem(x.Data);
            });
        }
示例#8
0
        public Organization(Homeport parent)
        {
            var proxy = Proxy.Instance;

            this.homeport = parent;

            this.Ships  = new MemberTable <Ship>();
            this.Fleets = new MemberTable <Fleet>();

            proxy.Register(Proxy.api_get_member_ship, e =>
            {
                var x = e.TryParse <kcsapi_ship2[]>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
            });
            proxy.Register(Proxy.api_get_member_ship2, e => {
                var x = e.TryParse <kcsapi_ship2[]>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
                this.Update(x.Fleets);
            });
            proxy.Register(Proxy.api_get_member_ship3, e => {
                var x = e.TryParse <kcsapi_ship3>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data.api_ship_data);
                this.Update(x.Data.api_deck_data);
            });

            proxy.Register(Proxy.api_get_member_deck, e =>
            {
                var x = e.TryParse <kcsapi_deck[]>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
            });
            proxy.Register(Proxy.api_get_member_deck_port, e => {
                var x = e.TryParse <kcsapi_deck[]>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
            });
            proxy.Register(Proxy.api_get_member_ship_deck, e => {
                var x = e.TryParse <kcsapi_ship_deck>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
            });
            proxy.Register(Proxy.api_req_hensei_preset_select, e => {
                var x = e.TryParse <kcsapi_deck>();
                if (x == null)
                {
                    return;
                }

                this.Update(x.Data);
            });

            proxy.Register(Proxy.api_req_hensei_change, e => {
                var x = e.TryParse();
                if (x == null)
                {
                    return;
                }

                this.Change(x);
            });
            proxy.Register(Proxy.api_req_hokyu_charge, e => {
                var x = e.TryParse <kcsapi_charge>();
                if (x == null)
                {
                    return;
                }

                this.Charge(x.Data);
            });
            proxy.Register(Proxy.api_req_kaisou_powerup, e => {
                var x = e.TryParse <kcsapi_powerup>();
                if (x == null)
                {
                    return;
                }

                this.Powerup(x);
            });
            proxy.Register(Proxy.api_req_kaisou_slot_exchange_index, e => {
                var x = e.TryParse <kcsapi_slot_exchange_index>();
                if (x == null)
                {
                    return;
                }

                this.ExchangeSlot(x);
            });
            proxy.Register(Proxy.api_req_kaisou_slot_deprive, e => {
                var x = e.TryParse <kcsapi_slot_deprive>();
                if (x == null)
                {
                    return;
                }

                this.DepriveSlotItem(x.Data);
            });

            proxy.Register(Proxy.api_req_kousyou_getship, e => {
                var x = e.TryParse <kcsapi_kdock_getship>();
                if (x == null)
                {
                    return;
                }

                this.GetShip(x.Data);
            });
            proxy.Register(Proxy.api_req_kousyou_destroyship, e => {
                var x = e.TryParse <kcsapi_destroyship>();
                if (x == null)
                {
                    return;
                }

                this.DestoryShip(x);
            });
            proxy.Register(Proxy.api_req_member_updatedeckname, e => {
                var x = e.TryParse();
                if (x == null)
                {
                    return;
                }

                this.UpdateFleetName(x);
            });

            proxy.Register(Proxy.api_req_hensei_combined, e =>
            {
                var x = e.TryParse <kcsapi_hensei_combined>();
                if (x == null)
                {
                    return;
                }

                this.Combined = x.Data.api_combined != 0;
            });

            this.SubscribeSortieSessions();
        }