Esempio n. 1
0
 /// <summary>
 /// 入力された文字列を大艦隊クラスに変換する
 /// </summary>
 /// <param name="inputEnemyDataText">文字列</param>
 /// <returns>大艦隊クラス</returns>
 public static Fleet ToFleet(string inputEnemyDataText)
 {
     // まずはJSONと仮定して読み込む
     try {
         // JSONをデシリアライズする
         var jsonModel = JsonConvert.DeserializeObject <JsonModel>(inputEnemyDataText);
         // jsonModelからFleetクラスを構築する
         return(jsonModel.ToFleet());
     }
     // 無理だったらenm形式と考えて読み込む
     // 1行目:陣形(単縦陣・複縦陣・輪形陣・梯形陣・単横陣。連合艦隊だと第一~第四が単横陣・複縦陣・輪形陣・単縦陣に対応)
     // 2行目:艦隊数。通常艦隊なら1、連合艦隊なら2
     // 3行目:第1艦隊。艦の名称が一番艦から順にカンマ区切りで書かれている
     // 4行目:第2艦隊(同上)
     // ※同一名の艦の候補が複数ある場合、デフォルトでは「-1」「-2」等が末尾に付いている
     catch {
         var fleet = new Fleet();
         using (var rs = new System.IO.StringReader(inputEnemyDataText)) {
             // 1行目:陣形
             string formationStr  = rs.ReadLine();
             var    formationHash = new Dictionary <string, Formation> {
                 { "単縦陣", Formation.Trail },
                 { "複縦陣", Formation.SubTrail },
                 { "輪形陣", Formation.Circle },
                 { "梯形陣", Formation.Echelon },
                 { "単横陣", Formation.Abreast },
             };
             fleet.Formation = formationHash[formationStr];
             // 2行目:艦隊数
             int fleetCount = int.Parse(rs.ReadLine());
             fleetCount = (fleetCount <= 1 ? 1 : 2);
             // 3・4行目:第1・2艦隊
             for (int i = 0; i < fleetCount; ++i)
             {
                 string getLine  = rs.ReadLine();
                 var    column   = getLine.Split(',');
                 var    tempUnit = new Unit();
                 foreach (string columnName in column)
                 {
                     var tempKammusu = new Kammusu();
                     int id          = DataBase.KammusuId(columnName);
                     if (id >= 0)
                     {
                         tempKammusu.Id        = id;
                         tempKammusu.Level     = 0;
                         tempKammusu.Luck      = -1;
                         tempKammusu.IsKammusu = false;
                         // 装備(データベースから情報を拾う)
                         foreach (int id2 in DataBase.Kammusu(id).WeaponId)
                         {
                             // 初期装備データでは、id == -1だと「それ以降は装備していない」ことを指す
                             if (id2 == -1)
                             {
                                 break;
                             }
                             var tempWeapon = new Weapon();
                             tempWeapon.Id          = id2;
                             tempWeapon.Improvement = 0;
                             tempWeapon.Proficiency = 0;
                             tempWeapon.Complete();
                             tempKammusu.Weapon.Add(tempWeapon);
                         }
                         tempKammusu.Complete();
                         tempUnit.Kammusu.Add(tempKammusu);
                     }
                 }
                 fleet.Unit.Add(tempUnit);
             }
         }
         fleet.Complete();
         return(fleet);
     }
 }
Esempio n. 2
0
            // Fleetクラスを構築する
            public Fleet ToFleet()
            {
                // 書き込むためのインスタンスを作成する
                var outputFleet = new Fleet();
                // 艦隊
                var unitList = new List <UnitModel>();

                if (Unit1 != null)
                {
                    unitList.Add(Unit1);
                }
                if (Unit2 != null)
                {
                    unitList.Add(Unit2);
                }
                if (Unit3 != null)
                {
                    unitList.Add(Unit3);
                }
                if (Unit4 != null)
                {
                    unitList.Add(Unit4);
                }
                foreach (var fleet in unitList)
                {
                    var tempUnit = new Unit();
                    // 艦娘
                    var kammusuList = new List <KammusuModel>();
                    if (fleet.Kammusu1 != null && fleet.Kammusu1.Id > 0)
                    {
                        kammusuList.Add(fleet.Kammusu1);
                    }
                    if (fleet.Kammusu2 != null && fleet.Kammusu2.Id > 0)
                    {
                        kammusuList.Add(fleet.Kammusu2);
                    }
                    if (fleet.Kammusu3 != null && fleet.Kammusu3.Id > 0)
                    {
                        kammusuList.Add(fleet.Kammusu3);
                    }
                    if (fleet.Kammusu4 != null && fleet.Kammusu4.Id > 0)
                    {
                        kammusuList.Add(fleet.Kammusu4);
                    }
                    if (fleet.Kammusu5 != null && fleet.Kammusu5.Id > 0)
                    {
                        kammusuList.Add(fleet.Kammusu5);
                    }
                    if (fleet.Kammusu6 != null && fleet.Kammusu6.Id > 0)
                    {
                        kammusuList.Add(fleet.Kammusu6);
                    }
                    foreach (var kammusu in kammusuList)
                    {
                        var tempKammusu = new Kammusu();
                        tempKammusu.Id        = kammusu.Id;
                        tempKammusu.Level     = kammusu.Level;
                        tempKammusu.Luck      = kammusu.Luck;
                        tempKammusu.IsKammusu = true;
                        // 装備
                        var weaponList = new List <WeaponModel>();
                        weaponList.Add(kammusu.Items.Item1);
                        weaponList.Add(kammusu.Items.Item2);
                        weaponList.Add(kammusu.Items.Item3);
                        weaponList.Add(kammusu.Items.Item4);
                        weaponList.Add(kammusu.Items.ItemX);
                        foreach (var weapon in weaponList)
                        {
                            var tempWeapon = new Weapon();
                            if (weapon != null)
                            {
                                // 装備が存在する場合
                                tempWeapon.Id          = weapon.Id;
                                tempWeapon.Improvement = weapon.Rf;
                                tempWeapon.Proficiency = weapon.Mas;
                            }
                            else
                            {
                                // 装備が存在しない場合
                                tempWeapon.Id          = -1;
                                tempWeapon.Improvement = 0;
                                tempWeapon.Proficiency = 0;
                            }
                            tempWeapon.Complete();
                            tempKammusu.Weapon.Add(tempWeapon);
                        }
                        tempKammusu.Complete();
                        tempUnit.Kammusu.Add(tempKammusu);
                    }
                    outputFleet.Unit.Add(tempUnit);
                }
                outputFleet.Complete();
                return(outputFleet);
            }
Esempio n. 3
0
        /// <summary>
        /// 入力された文字列を大艦隊クラスに変換する
        /// </summary>
        /// <param name="inputFriendDataText">文字列</param>
        /// <returns>大艦隊クラス</returns>
        public static Fleet ToFleet(string inputFriendDataText)
        {
            var fleet = new Fleet();
            // fre形式と考えて読み込む
            var kammusuList     = new List <KeyValuePair <int, int> >();
            var kammusuDataList = new List <Kammusu>();

            using (var rs = new System.IO.StringReader(inputFriendDataText)) {
                while (rs.Peek() > -1)
                {
                    try {
                        string getLine = rs.ReadLine();
                        var    column  = getLine.Split(',');
                        if (column.Count() < 19)
                        {
                            continue;
                        }
                        // 艦隊番号と艦番を読み込む
                        int ui = int.Parse(column[0]);
                        ui = (ui <= 1 ? 1 : 2);
                        int ki = int.Parse(column[1]);
                        ki = (ki <= 1 ? 1 : ki >= 6 ? 6 : ki);
                        // 艦娘部分のデータを読み込む
                        var tempKammusu = new Kammusu();
                        int id          = DataBase.KammusuId(column[2]);
                        if (id >= 0)
                        {
                            tempKammusu.Id        = id;
                            tempKammusu.Level     = int.Parse(column[3]);
                            tempKammusu.Luck      = -1;
                            tempKammusu.IsKammusu = true;
                            // 装備(データベースから情報を拾う)
                            for (int i = 0; i < 5; ++i)
                            {
                                var tempWeapon = new Weapon();
                                int id2        = DataBase.WeaponId(column[4 + i * 3]);
                                if (id2 >= 0)
                                {
                                    tempWeapon.Id          = id2;
                                    tempWeapon.Improvement = int.Parse(column[5 + i * 3]);
                                    tempWeapon.Proficiency = int.Parse(column[6 + i * 3]);
                                }
                                tempWeapon.Complete();
                                tempKammusu.Weapon.Add(tempWeapon);
                            }
                            tempKammusu.Complete();
                            kammusuList.Add(new KeyValuePair <int, int>(ui, ki));
                            kammusuDataList.Add(tempKammusu);
                        }
                    }
                    catch {
                        continue;
                    }
                }
            }
            // 読み込んだものをfleetにセットしていく
            int unitCount = kammusuList.Select(k => k.Key).Max();

            for (int ui = 0; ui < unitCount; ++ui)
            {
                fleet.Unit.Add(new Unit());
                int maxKammusuIndex = kammusuList.Where(k => k.Key == ui + 1).Select(k => k.Value).Max();
                for (int ki = 0; ki < maxKammusuIndex; ++ki)
                {
                    fleet.Unit[ui].Kammusu.Add(new Kammusu());
                }
            }
            for (int i = 0; i < kammusuList.Count; ++i)
            {
                fleet.Unit[kammusuList[i].Key - 1].Kammusu[kammusuList[i].Value - 1] = kammusuDataList[i];
            }
            fleet.Complete();
            return(fleet);
        }