Exemple #1
0
            /// <summary>
            /// 個別艦の結果を合計し、艦隊全体の結果を計算
            /// </summary>
            /// <param name="ships">個別の結果</param>
            /// <returns>艦隊全体の結果</returns>
            public static DaihatsuResult ToFleetResult(IEnumerable<DaihatsuResult> ships)
            {
                DaihatsuResult result = new DaihatsuResult();
                double basic_noncap = 0.0;//キャップ適用前の素補正
                int starts = 0;//改修レベル合計
                foreach(var s in ships)
                {
                    result.FleetNumDaihatsu += s.PerShipNumDaihatsu;
                    starts += s.PerShipNumStars;
                    basic_noncap += s.PerShipBasicBonusRatio;
                }
                double basic_capped = Math.Min(basic_noncap, 0.20);//キャップ適用後の素補正

                if(result.FleetNumDaihatsu == 0)
                {
                    result.FleetCappedBonusRatio = 0.0;
                    result.FleetNonCappedBonusRatio = 0.0;
                }
                else
                {
                    //遠征ボーナス(キャップ適用前)
                    result.FleetNonCappedBonusRatio = basic_noncap + 0.01 * (double)starts * basic_noncap / (double)result.FleetNumDaihatsu;
                    //遠征ボーナス(キャップ適用後)
                    result.FleetCappedBonusRatio = basic_capped + 0.01 * (double)starts * basic_capped / (double)result.FleetNumDaihatsu;
                }
                //キャップが適用されたか
                result.IsCapped = basic_capped != basic_noncap;

                return result;
            }
Exemple #2
0
        /// <summary>
        /// 大発装備数を取得します
        /// </summary>
        /// <param name="itemdata">アイテムデータ</param>
        /// <returns>大発装備の個別データ</returns>
        public DaihatsuResult GetDaihatsuNum(Dictionary<int, SlotItem> itemdata)
        {
            lock(_lockObject)
            {
                if(_numDaihatsu == null)
                {
                    var oslots = GetOSlotitems(itemdata);
                    var dslots = GetDSlotitems(itemdata);
                    _numDaihatsu = new DaihatsuResult();
                    foreach(var i in Enumerable.Range(0, Math.Min(oslots.Count, dslots.Count)))
                    {
                        var o = oslots[i];
                        var d = dslots[i];

                        switch(d.api_id)
                        {
                            //68 : 大発動艇
                            case 68:
                                _numDaihatsu.PerShipBasicBonusRatio += 0.05;
                                goto case -1;
                            //166 : 大発動艇(八九式中戦車&陸戦隊)
                            case 166:
                                _numDaihatsu.PerShipBasicBonusRatio += 0.02;
                                goto case -1;
                            //167 : 特二式内火艇
                            case 167:
                                _numDaihatsu.PerShipBasicBonusRatio += 0.01;
                                goto case -1;
                            //共通処理
                            case -1:
                                _numDaihatsu.PerShipNumDaihatsu++;
                                _numDaihatsu.PerShipNumStars += o.api_level;
                                break;
                        }
                    }
                }

                return _numDaihatsu;
            }
        }