예제 #1
0
    /// <summary>
    /// 雑魚敵のデータを戦闘開始時にロードする
    /// </summary>
    public void LoadEnemy(int AreaLevel)
    {
        Level = AreaLevel;  //どうにかしてエリアのレベルを取得する
        //Level = 1; //デバッグ用で1を設定

        //エリアレベルをもとに敵のNoを選出したリストを作成する
        //その後、ランダム(重複あり)に抽出し、配列にする
        List <int> EnemyChoiceList = new List <int>(ConvertEnemyNoFromAreaLavel(AreaLevel));

        int[] NoRadomChoice = new int[EnemyChoiceList.Count];

        for (int i = 0; i <= EnemyChoiceList.Count - 1; i++)
        {
            NoRadomChoice[i] = EnemyChoiceList[UnityEngine.Random.Range(0, EnemyChoiceList.Count - 1)];
        }

        //乱数で敵の出現数を設定
        int EnemyCount = UnityEngine.Random.Range(1, 3);

        //エリアレベル1の時は1体だけ
        if (Level == 1)
        {
            EnemyCount = 1;
        }

        string    EnemyCountToString = Convert.ToString(EnemyCount);
        XDocument XmlDoc             = XDocument.Load(GetXmlPath.EnemyDataPath());
        XDocument xmlDoc2            = XDocument.Load(GetXmlPath.BattleEnemyDataSheetPath());

        //バトルシート値リセット
        ResetXML.ResetBattleSheet();

        //乱数をもとにクエリ生成し、バトルシートに転写
        for (int i = 0; i <= EnemyCount - 1; i++)
        {
            //EnemyData
            var query = from x in XmlDoc.Descendants("Enemy")
                        where x.Attribute("No").Value == NoRadomChoice[i].ToString()
                        select new
            {
                EnemyNo            = x.Attribute("No").Value,
                EnemyName          = x.Element("EnemyName").Value,
                EnemyHP            = x.Element("EnemyHP").Value,
                EnemyAttackValue   = x.Element("EnemyAttackValue").Value,
                EnemyDiffenceValue = x.Element("EnemyDiffenceValue").Value,
                EnemySpeedValue    = x.Element("EnemySpeedValue").Value,
                EnemyExperience    = x.Element("EnemyExperience").Value,

                EnemySkill_Name_No1         = x.Element("EnemySkill_Name_No1").Value,
                EnemySkill_StringValue1_No1 = x.Element("EnemySkill_StringValue1_No1").Value,
                EnemySkill_StringValue2_No1 = x.Element("EnemySkill_StringValue2_No1").Value,
                EnemySkill_StringValue3_No1 = x.Element("EnemySkill_StringValue3_No1").Value,
                EnemySkill_IntValue1_No1    = x.Element("EnemySkill_IntValue1_No1").Value,
                EnemySkill_IntValue2_No1    = x.Element("EnemySkill_IntValue2_No1").Value,
                EnemySkill_IntValue3_No1    = x.Element("EnemySkill_IntValue3_No1").Value,

                EnemySkill_Name_No2         = x.Element("EnemySkill_Name_No2").Value,
                EnemySkill_StringValue1_No2 = x.Element("EnemySkill_StringValue1_No2").Value,
                EnemySkill_StringValue2_No2 = x.Element("EnemySkill_StringValue2_No2").Value,
                EnemySkill_StringValue3_No2 = x.Element("EnemySkill_StringValue3_No2").Value,
                EnemySkill_IntValue1_No2    = x.Element("EnemySkill_IntValue1_No2").Value,
                EnemySkill_IntValue2_No2    = x.Element("EnemySkill_IntValue2_No2").Value,
                EnemySkill_IntValue3_No2    = x.Element("EnemySkill_IntValue3_No2").Value,

                EnemySkill_Name_No3         = x.Element("EnemySkill_Name_No3").Value,
                EnemySkill_StringValue1_No3 = x.Element("EnemySkill_StringValue1_No3").Value,
                EnemySkill_StringValue2_No3 = x.Element("EnemySkill_StringValue2_No3").Value,
                EnemySkill_StringValue3_No3 = x.Element("EnemySkill_StringValue3_No3").Value,
                EnemySkill_IntValue1_No3    = x.Element("EnemySkill_IntValue1_No3").Value,
                EnemySkill_IntValue2_No3    = x.Element("EnemySkill_IntValue2_No3").Value,
                EnemySkill_IntValue3_No3    = x.Element("EnemySkill_IntValue3_No3").Value,

                EnemyResistance_Name_No1         = x.Element("EnemyResistance_Name_No1").Value,
                EnemyResistance_StringValue1_No1 = x.Element("EnemyResistance_StringValue1_No1").Value,
                EnemyResistance_StringValue2_No1 = x.Element("EnemyResistance_StringValue2_No1").Value,
                EnemyResistance_StringValue3_No1 = x.Element("EnemyResistance_StringValue3_No1").Value,
                EnemyResistance_IntValue1_No1    = x.Element("EnemyResistance_IntValue1_No1").Value,
                EnemyResistance_IntValue2_No1    = x.Element("EnemyResistance_IntValue2_No1").Value,
                EnemyResistance_IntValue3_No1    = x.Element("EnemyResistance_IntValue3_No1").Value,

                DropItem    = x.Element("DropItem").Value,
                DropItemID  = x.Element("DropItemID").Value,
                DropPercent = x.Element("DropPercent").Value,
            };

            //BattleEnemyDataSheet
            var query2 = (from y in xmlDoc2.Root.Descendants("Enemy")
                          where y.Element("BattleNo").Value == Convert.ToString(i + 1)
                          select y).Single();

            foreach (var item in query)
            {
                query2.Attribute("No").Value               = item.EnemyNo;
                query2.Element("EnemyName").Value          = item.EnemyName;
                query2.Element("EnemyHP").Value            = item.EnemyHP;
                query2.Element("EnemyAttackValue").Value   = item.EnemyAttackValue;
                query2.Element("EnemyDiffenceValue").Value = item.EnemyDiffenceValue;
                query2.Element("EnemySpeedValue").Value    = item.EnemySpeedValue;
                query2.Element("EnemyExperience").Value    = item.EnemyExperience;

                query2.Element("EnemySkill_Name_No1").Value         = item.EnemySkill_Name_No1;
                query2.Element("EnemySkill_StringValue1_No1").Value = item.EnemySkill_StringValue1_No1;
                query2.Element("EnemySkill_StringValue2_No1").Value = item.EnemySkill_StringValue2_No1;
                query2.Element("EnemySkill_StringValue3_No1").Value = item.EnemySkill_StringValue3_No1;
                query2.Element("EnemySkill_IntValue1_No1").Value    = item.EnemySkill_IntValue1_No1;
                query2.Element("EnemySkill_IntValue2_No1").Value    = item.EnemySkill_IntValue2_No1;
                query2.Element("EnemySkill_IntValue3_No1").Value    = item.EnemySkill_IntValue3_No1;

                query2.Element("EnemySkill_Name_No2").Value         = item.EnemySkill_Name_No2;
                query2.Element("EnemySkill_StringValue1_No2").Value = item.EnemySkill_StringValue1_No2;
                query2.Element("EnemySkill_StringValue2_No2").Value = item.EnemySkill_StringValue2_No2;
                query2.Element("EnemySkill_StringValue3_No2").Value = item.EnemySkill_StringValue3_No2;
                query2.Element("EnemySkill_IntValue1_No2").Value    = item.EnemySkill_IntValue1_No2;
                query2.Element("EnemySkill_IntValue2_No2").Value    = item.EnemySkill_IntValue2_No2;
                query2.Element("EnemySkill_IntValue3_No2").Value    = item.EnemySkill_IntValue3_No2;

                query2.Element("EnemySkill_Name_No3").Value         = item.EnemySkill_Name_No3;
                query2.Element("EnemySkill_StringValue1_No3").Value = item.EnemySkill_StringValue1_No3;
                query2.Element("EnemySkill_StringValue2_No3").Value = item.EnemySkill_StringValue2_No3;
                query2.Element("EnemySkill_StringValue3_No3").Value = item.EnemySkill_StringValue3_No3;
                query2.Element("EnemySkill_IntValue1_No3").Value    = item.EnemySkill_IntValue1_No3;
                query2.Element("EnemySkill_IntValue2_No3").Value    = item.EnemySkill_IntValue2_No3;
                query2.Element("EnemySkill_IntValue3_No3").Value    = item.EnemySkill_IntValue3_No3;

                query2.Element("EnemyResistance_Name_No1").Value         = item.EnemyResistance_Name_No1;
                query2.Element("EnemyResistance_StringValue1_No1").Value = item.EnemyResistance_StringValue1_No1;
                query2.Element("EnemyResistance_StringValue2_No1").Value = item.EnemyResistance_StringValue2_No1;
                query2.Element("EnemyResistance_StringValue3_No1").Value = item.EnemyResistance_StringValue3_No1;
                query2.Element("EnemyResistance_IntValue1_No1").Value    = item.EnemyResistance_IntValue1_No1;
                query2.Element("EnemyResistance_IntValue2_No1").Value    = item.EnemyResistance_IntValue2_No1;
                query2.Element("EnemyResistance_IntValue3_No1").Value    = item.EnemyResistance_IntValue3_No1;

                query2.Element("DropItem").Value    = item.DropItem;
                query2.Element("DropItemID").Value  = item.DropItem;
                query2.Element("DropPercent").Value = item.DropPercent;

                xmlDoc2.Save(GetXmlPath.BattleEnemyDataSheetPath());
            }
        }
    }
예제 #2
0
    /// <summary>
    /// 所持アイテムをチェックしメンテナンスする。
    /// </summary>
    private void CheckItemManagerXML()
    {
        //何を持っているかをチェック
        var query = (from x in xdoc.Descendants("HaveManage")
                     select x).Single();

        if (int.Parse(query.Attribute("Have").Value) == 0)
        {
            //何も持っていないなら終了
            ResetXML.ResetItemManage();
            return;
        }

        //持ってるもののIDを取得
        var query2 = from y in xdoc.Descendants("HaveID")
                     select y;

        //配列をつくる
        //ItemDicには(持っているアイテムID(key),個数(Value))を入れる
        Dictionary <int, int> ItemDic = new Dictionary <int, int>();
        int    RoopCount  = 0;
        string CheckValue = "";

        foreach (var item in query2)
        {
            if ((int)item.Attribute("No") >= 1)
            {
                //重複チェックして、重複があれば個数を合算
                bool NextRoopFlg = false;
                CheckValue = item.Value;

                if (RoopCount >= 1)
                {
                    foreach (var item2 in ItemDic)
                    {
                        if (item2.Key == int.Parse(CheckValue))
                        {
                            ItemDic[item2.Key] = ItemDic[item2.Key] + int.Parse(item.Attribute("Have").Value);
                            NextRoopFlg        = true;
                            break;
                        }
                    }
                }

                RoopCount++;

                if (NextRoopFlg == true)
                {
                    continue;
                }

                //個数が0になったらDictionaryに登録しない
                if (int.Parse(item.Attribute("Have").Value) == 0)
                {
                    continue;
                }

                ItemDic.Add(int.Parse(item.Value),                    //アイテムID
                            int.Parse(item.Attribute("Have").Value)); //個数
            }
        }

        //Key(アイテムIDでソート)
        var ItemDicSorted = ItemDic.OrderBy(x => x.Key);

        //Keyだけを抜き出したリストを作る
        List <int> IntList = new List <int>();

        foreach (var item in ItemDicSorted)
        {
            IntList.Add(item.Key);
        }

        //ItemManageを初期化する
        ResetXML.ResetItemManage();

        //ソートした配列をもとに再書き込みする
        int i = 1;
        int j = 0;

        while (true)
        {
            XDocument xdoc3 = XDocument.Load(GetXmlPath.ItemManagerPath());

            var WriteXml = new XElement("HaveID", "",
                                        new XAttribute("No", Convert.ToString(i)),
                                        new XAttribute("Have", ""));
            xdoc3.Root.Element("HaveManage").Add(WriteXml);
            xdoc3.Save(GetXmlPath.ItemManagerPath());

            var query3 = from x in xdoc3.Descendants("HaveID")
                         where x.Attribute("No").Value == Convert.ToString(i)
                         select x;

            foreach (var item in query3)
            {
                if (ItemDic[IntList[j]] >= 99)
                {
                    item.Attribute("Have").Value = Convert.ToString(99);
                }
                else
                {
                    item.Attribute("Have").Value = Convert.ToString(ItemDic[IntList[j]]);
                }
                item.Value = Convert.ToString(IntList[j]);
                xdoc3.Save(GetXmlPath.ItemManagerPath());
            }

            var queryHaveManage = (from x in xdoc3.Descendants("HaveManage")
                                   select x).Single();

            queryHaveManage.Attribute("Have").Value = Convert.ToString(i);
            xdoc3.Save(GetXmlPath.ItemManagerPath());

            if (j == IntList.Count - 1)
            {
                break;
            }

            i++;
            j++;
        }

        //書き込んだ内容をもとにインベントリを生成する
        int k = 1;
        int l = 0;

        while (true)
        {
            XDocument xdoc4 = XDocument.Load(GetXmlPath.ItemManagerPath());

            var WriteXml = new XElement("Inventory",
                                        new XAttribute("ID", Convert.ToString(k)),
                                        new XElement("Name", ""),
                                        new XElement("Message", ""),
                                        new XElement("RecoveryPoint", ""),
                                        new XElement("PowerUPPercent", ""),
                                        new XElement("EXInt", ""),
                                        new XElement("UseInField", ""),
                                        new XElement("UseInBattle", ""),
                                        new XElement("CanTrush", ""));
            xdoc4.Root.Add(WriteXml);
            xdoc4.Save(GetXmlPath.ItemManagerPath());

            var query4 = (from x in xdoc4.Descendants("Inventory")
                          where x.Attribute("ID").Value == Convert.ToString(k)
                          select x).Single();

            query4.Element("Name").Value           = OperateItemData.GetItemData("Name", IntList[l]);
            query4.Element("Message").Value        = OperateItemData.GetItemData("Message", IntList[l]);
            query4.Element("RecoveryPoint").Value  = OperateItemData.GetItemData("RecoveryPoint", IntList[l]);
            query4.Element("PowerUPPercent").Value = OperateItemData.GetItemData("PowerUPPercent", IntList[l]);
            query4.Element("EXInt").Value          = OperateItemData.GetItemData("EXInt", IntList[l]);
            query4.Element("UseInField").Value     = OperateItemData.GetItemData("UseInField", IntList[l]);
            query4.Element("UseInBattle").Value    = OperateItemData.GetItemData("UseInBattle", IntList[l]);
            query4.Element("CanTrush").Value       = OperateItemData.GetItemData("CanTrush", IntList[l]);
            xdoc4.Save(GetXmlPath.ItemManagerPath());

            if (l == IntList.Count - 1)
            {
                break;
            }

            k++;
            l++;
        }
    }