Exemple #1
0
        public BattleResult(KanColleClient kanColleClient, kcsapi_battleresult br)
        {
            this.FleetType  = (int)Enums.BattleType.Normal;
            this.QuestName  = br.api_quest_name;
            this.QuestLevel = br.api_quest_level;
            if (br.api_enemy_info != null)
            {
                this.DeckName = br.api_enemy_info.api_deck_name;
            }
            this.WinRank    = br.api_win_rank;
            this.Mvp        = br.api_mvp;
            this.GetExp     = br.api_get_exp;
            this.GetBaseExp = br.api_get_base_exp;
            if (br.api_get_ship != null)
            {
                this.GetShip = new SimpleShip(br.api_get_ship);
            }
            this.LvUpShips = br.api_get_exp_lvup.Select(x => Math.Max(x.Length - 2, 0)).ToArray();

            this.AdmiralId = kanColleClient.Homeport.Admiral.MemberId;

            List <SimpleShip> fleet = new List <SimpleShip>();

            kanColleClient.Homeport.Organization.Fleets.Where(f =>
                                                              f.Value.State == Grabacr07.KanColleWrapper.Models.FleetState.Sortie).ForEach(item =>

                                                                                                                                           item.Value.Ships.ForEach(s => fleet.Add(new SimpleShip(s)))
                                                                                                                                           );
            this.Fleet = fleet.ToArray();

            this.IsFirstBattle = false;
            this.CreateDate    = DateTime.Now;
            this.Id            = Guid.NewGuid().ToString();
        }
        private void InitializeCore(KanColleClient client)
        {
            client.Homeport.Repairyard.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "Docks")
                {
                    UpdateRepairyard(client.Homeport.Repairyard);
                }
            };
            UpdateRepairyard(client.Homeport.Repairyard);

            client.Homeport.Dockyard.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "Docks")
                {
                    UpdateDockyard(client.Homeport.Dockyard);
                }
            };
            UpdateDockyard(client.Homeport.Dockyard);

            client.Homeport.Organization.PropertyChanged += (sender, args) =>
            {
                if (args.PropertyName == "Fleets")
                {
                    UpdateExpedition(client.Homeport.Organization);
                }
            };
            UpdateExpedition(client.Homeport.Organization);
        }
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="kancolleData">艦これデータ</param>
        /// <param name="kanburaTimerUri">艦ぶらたいまーのサーバホスト名</param>
        /// <param name="userId">提督iD</param>
        /// <param name="password">パスワード</param>
        public KanburaTimerSender(
            KanColleClient kancolleClient,
            KanburaTimerClient client,
            int delay = 10000)
        {
            if (kancolleClient == null)
            {
                throw new ArgumentNullException("proxy");
            }
            if (client == null)
            {
                throw new ArgumentNullException("client");
            }
            if (delay < 0)
            {
                throw new ArgumentOutOfRangeException("delay", "delay must be > 0");
            }
            proxy_  = kancolleClient;
            client_ = client;

            // 送信用タイマを作成
            timer_           = new Timer(delay);
            timer_.AutoReset = false;
            timer_.Elapsed  += SendTimerElapsed;
        }
        public PortalViewModel(KanColleClient client)
        {
            questManager = new QuestManager(client);

            questManager
            .QuestsEventChanged += (sender, e) =>
            {
                var newQC =
                    new ObservableCollection <QuestProcessCollectionItem>();

                questManager
                .TrackingProcessStrings
                .ToList()
                .ForEach(qpc =>
                {
                    newQC.Add(new QuestProcessCollectionItem
                    {
                        Id             = qpc.Id,
                        WikiIndex      = qpc.WikiIndex,
                        Name           = qpc.Name,
                        ProcessPercent = qpc.ProcessPercent,
                        ProcessText    = qpc.ProcessText
                    });
                });

                QuestProcessCollection = newQC;
            };
        }
Exemple #5
0
        public ApiEvent(KanColleClient client)
        {
            kanColleClient = client;

            // 演习 - 战斗结束
            client.Proxy.ApiSessionSource.Where(x => x.Request.PathAndQuery == "/kcsapi/api_req_practice/battle_result")
            .TryParse <practice_result>().Subscribe(x => PracticeBattleResult(x.Data));

            // 近代化改装
            client.Proxy.api_req_kaisou_powerup.TryParse <kcsapi_powerup>().Subscribe(x => PowerUp());

            // 改修
            client.Proxy.api_req_kousyou_remodel_slot.TryParse <kcsapi_remodel_slot>().Subscribe(x => ReModel());

            // 廃棄
            client.Proxy.api_req_kousyou_destroyitem2.TryParse <kcsapi_destroyitem2>().Subscribe(x => DestoryItem());

            // 解体
            client.Proxy.api_req_kousyou_destroyship.TryParse <kcsapi_destroyship>().Subscribe(x => DestoryShip());

            // 建造
            client.Proxy.api_req_kousyou_createship.TryParse <kcsapi_createship>().Subscribe(x => CreateShip());

            // 开发
            client.Proxy.api_req_kousyou_createitem.TryParse <kcsapi_createitem>().Subscribe(x => CreateItem());

            // 补给
            client.Proxy.api_req_hokyu_charge.TryParse <kcsapi_charge>().Subscribe(x => Charge());

            // 入渠
            client.Proxy.ApiSessionSource.Where(x => x.Request.PathAndQuery == "/kcsapi/api_req_nyukyo/start")
            .Subscribe(x => NyukyoStart());

            // 遠征
            client.Proxy.api_req_mission_result.TryParse <kcsapi_mission_result>().Subscribe(x => MissionResult(x.Data));

            // 地图开始
            client.Proxy.api_req_map_start.TryParse <kcsapi_map_start>().Subscribe(x => MapStart(x.Data));

            // 通常 - 昼战
            client.Proxy.api_req_sortie_battle.TryParse <sortie_battle>().Subscribe(x => Battle(x.Data));

            // 通常 - 夜战
            client.Proxy.ApiSessionSource.Where(x => x.Request.PathAndQuery == "/kcsapi/api_req_battle_midnight/battle")
            .TryParse <battle_midnight_battle>().Subscribe(x => Battle(x.Data));

            // 通常 - 开幕夜战
            client.Proxy.ApiSessionSource.Where(
                x =>
                x.Request.PathAndQuery == "/kcsapi/api_req_battle_midnight/sp_midnight")
            .TryParse <battle_midnight_sp_midnight>().Subscribe(x => Battle(x.Data));

            // 战斗结束
            client.Proxy.api_req_sortie_battleresult.TryParse <kcsapi_battleresult>()
            .Subscribe(x => BattleResult(x.Data));
            client.Proxy.api_req_combined_battle_battleresult.TryParse <kcsapi_combined_battle_battleresult>()
            .Subscribe(x => BattleResult(x.Data));
        }
Exemple #6
0
        public Modes.BattleResult Append(KanColleClient kanColleClient, kcsapi_combined_battle_battleresult br, bool isFirstBattle)
        {
            var newItem = new Modes.BattleResult(kanColleClient, br)
            {
                IsFirstBattle = isFirstBattle
            };

            return(Append(kanColleClient, newItem));
        }
 public void Initialize(KanColleClient client)
 {
     client.PropertyChanged += (sender, args) =>
     {
         if (args.PropertyName == "IsStarted")
         {
             this.InitializeCore(client);
         }
     };
 }
Exemple #8
0
 private void OnAdmiralInfoChange(KanColleClient kanColleClient)
 {
     if (AdmiralInfoChange != null)
     {
         AdmiralInfoChange(this, new Modes.AdmiralInfoChangeEventArgs
         {
             KanColleClient = kanColleClient
         });
     }
 }
        public QuestManager(KanColleClient client)
        {
            apiEvent = new ApiEvent(client);

            availableTrackers.CollectionChanged += AvailableTrackers_CollectionChanged;

            // register all trackers
            RegisterAllTrackers();

            client.Proxy.api_get_member_questlist.Subscribe(x => new Thread(ProcessQuests).Start());
        }
Exemple #10
0
 private void OnCombinedBattleEnd(KanColleClient kanColleClient, kcsapi_combined_battle_battleresult br, bool isFirstBattle)
 {
     if (CombinedBattleEnd != null)
     {
         CombinedBattleEnd(this, new Modes.CombinedBattleEndEventArgs
         {
             KanColleClient = kanColleClient,
             BattleResult   = br,
             IsFirstBattle  = isFirstBattle
         });
     }
 }
Exemple #11
0
        public BattleResult(KanColleClient kanColleClient, kcsapi_combined_battle_battleresult br)
        {
            this.FleetType  = (int)Enums.BattleType.Combined;
            this.QuestName  = br.api_quest_name;
            this.QuestLevel = br.api_quest_level;
            if (br.api_enemy_info != null)
            {
                this.DeckName = br.api_enemy_info.api_deck_name;
            }
            this.WinRank    = br.api_win_rank;
            this.GetExp     = br.api_get_exp;
            this.GetBaseExp = br.api_get_base_exp;
            if (br.api_get_ship != null)
            {
                this.GetShip = new SimpleShip(br.api_get_ship);
            }

            this.AdmiralId = kanColleClient.Homeport.Admiral.MemberId;


            this.Mvp         = br.api_mvp;
            this.MvpCombined = br.api_mvp_combined;

            this.LvUpShips         = br.api_get_exp_lvup.Select(x => Math.Max(x.Length - 2, 0)).ToArray();
            this.LvUpShipsCombined = br.api_get_exp_lvup_combined.Select(x => Math.Max(x.Length - 2, 0)).ToArray();

            List <SimpleShip> fleet = new List <SimpleShip>();

            //既然是联合舰队肯定一二队都出击
            kanColleClient.Homeport.Organization.Fleets[0].Ships.ForEach(s => fleet.Add(new SimpleShip(s)));
            this.Fleet = fleet.ToArray();

            fleet.Clear();
            kanColleClient.Homeport.Organization.Fleets[1].Ships.ForEach(s => fleet.Add(new SimpleShip(s)));
            this.FleetCombined = fleet.ToArray();


            this.IsFirstBattle = false;
            this.CreateDate    = DateTime.Now;
            this.Id            = Guid.NewGuid().ToString();
        }
Exemple #12
0
        private Modes.BattleResult Append(KanColleClient kanColleClient, Modes.BattleResult newItem)
        {
            base.Append(list =>
            {
                var newlist = list.List.ToList();
                newlist.Add(newItem);
                list.List = newlist.ToArray();

                var admiral = new Modes.SimpleAdmiral(kanColleClient);
                if (!list.AdmiralList.Any(x => x.Id == admiral.Id))
                {
                    var newAdmiralList = list.AdmiralList.ToList();
                    newAdmiralList.Add(admiral);
                    list.AdmiralList = newAdmiralList.ToArray();
                }

                return(true);
            });

            return(newItem);
        }
Exemple #13
0
        /// <summary>
        /// 设置战斗之后的HP
        /// </summary>
        /// <param name="kanColleClient"></param>
        /// <returns></returns>
        public bool SetFleetAfterHP(KanColleClient kanColleClient)
        {
            var result = false;

            if (this.AdmiralId == kanColleClient.Homeport.Admiral.MemberId)
            {
                var ships = GetSortieFleet(kanColleClient);
                if (ships.Count() == this.Fleet.Count())
                {
                    result = true;
                    ships.ForEach((item, i) =>
                    {
                        if (!this.Fleet[i].SetAfterHP(item))
                        {
                            result = false;
                        }
                    });
                }
            }

            return(result);
        }
        public void Append(KanColleClient kanColleClient, Action <bool> isAppend)
        {
            base.Append(list =>
            {
                var admiralInfo = new Modes.AdmiralInfo(KanColleClient.Current.Homeport.Admiral, KanColleClient.Current.Homeport.Materials);

                if (list.UpdateDate.Add(Interval) > DateTime.Now || (
                        admiralInfo.Fuel == 0 &&
                        admiralInfo.Ammunition == 0 &&
                        admiralInfo.Steel == 0 &&
                        admiralInfo.Bauxite == 0
                        ))
                {
                    isAppend(false);
                    return(false);
                }
                var newlist = list.List.ToList();
                newlist.Add(admiralInfo);
                list.List = newlist.ToArray();

                isAppend(true);
                return(true);
            });
        }
        public KanburaTimerToolViewModel(
            KanColleClient kancolleClient,
            Models.Settings settings,
            IDispatcher dispatcher)
            : base(dispatcher)
        {
            if (kancolleClient == null)
            {
                throw new ArgumentNullException("kancolleClient");
            }
            if (settings == null)
            {
                throw new ArgumentNullException("settings");
            }
            kanColleClient_ = kancolleClient;
            Settings        = settings;

            Settings.PropertyChanged += Settings_PropertyChanged;
            UpdateAdmiralInfo();
            if (Settings.IsAuthorized)
            {
                StartSending();
            }
        }
Exemple #16
0
 public SimpleAdmiral(KanColleClient kanColleClient)
 {
     this.Id       = kanColleClient.Homeport.Admiral.MemberId;
     this.Nickname = kanColleClient.Homeport.Admiral.Nickname;
     this.Level    = kanColleClient.Homeport.Admiral.Level;
 }
Exemple #17
0
 private IEnumerable <Ship> GetSortieFleet(KanColleClient kanColleClient)
 {
     return(kanColleClient.Homeport.Organization.Fleets.Where(f =>
                                                              f.Value.State == Grabacr07.KanColleWrapper.Models.FleetState.Sortie).SelectMany(f => f.Value.Ships));
 }