コード例 #1
0
ファイル: GameMods.cs プロジェクト: Nanook/TheGHOST
        private void setCareerTiers(QbItemStruct careerSongsSec, int existingTierCount, int newTierCount, bool setUnlockIfOneTier)
        {
            //if setUnlockIfOneTier is false and we only have only 1 tier then don't unlock the new tiers, if tier 2 exists the lock is clones from that

            int add = newTierCount - existingTierCount;

            int clone;
            QbKey qkTier;
            QbKey qkNewTier;
            QbKey qkLastTier = QbKey.Create(string.Format("tier{0}", newTierCount.ToString()));

            for (int t = existingTierCount + 1; t <= newTierCount; t++)
            {
                int origTiersCount = Math.Min(existingTierCount, (_project.GameInfo.Game == Game.GH3_Wii) ? 8 : 6); //6 for aerosmith
                clone = t % origTiersCount;
                if (clone == 0)
                    clone = origTiersCount;

                qkTier = QbKey.Create(string.Format("tier{0}", clone.ToString()));
                qkNewTier = QbKey.Create(string.Format("tier{0}", t.ToString()));

                QbItemStruct clonedTier = careerSongsSec.FindItem(qkTier, false).Clone() as QbItemStruct;
                clonedTier.ItemQbKey = qkNewTier.Clone();

                if (clone == 1) //if tier 1 is being cloned then check is tier 1 has the unlocked value and make this the same
                {
                    QbItemStruct tier2 = careerSongsSec.FindItem(QbKey.Create("tier2"), false) as QbItemStruct;
                    if (tier2 != null)
                    {
                        tier2 = tier2.Clone() as QbItemStruct;
                        QbItemInteger ul = tier2.FindItem(QbKey.Create("defaultunlocked"), false) as QbItemInteger;
                        if (ul == null) //remove the cloned item
                        {
                            if ((ul = clonedTier.FindItem(QbKey.Create("defaultunlocked"), false) as QbItemInteger) != null)
                                clonedTier.RemoveItem(ul);
                        }
                    }
                    else if (!setUnlockIfOneTier)
                    {
                        //clear lock
                        QbItemInteger ul = clonedTier.FindItem(QbKey.Create("defaultunlocked"), false) as QbItemInteger;
                        if (ul != null)
                            clonedTier.RemoveItem(ul);
                    }

                }

                careerSongsSec.AddItem(clonedTier);
            }

            while (careerSongsSec.Items.Count > 3 && careerSongsSec.Items[careerSongsSec.Items.Count - 1].ItemQbKey.Crc != qkLastTier.Crc)
                careerSongsSec.RemoveItem(careerSongsSec.Items[careerSongsSec.Items.Count - 1]); //remove last item

            careerSongsSec.Root.AlignPointers();
            careerSongsSec.Root.IsValid();
        }
コード例 #2
0
ファイル: SongQb.cs プロジェクト: Nanook/TheGHOST
        /// <summary>
        /// Some items are not the correct type, replace them.
        /// </summary>
        /// <param name="song"></param>
        /// <param name="item"></param>
        /// <returns></returns>
        private QbItemFloat replaceItemIntForFloat(QbItemStruct song, QbItemInteger item)
        {
            QbItemFloat f = new QbItemFloat(song.Root);
            f.Create(QbItemType.StructItemFloat);

            f.ItemQbKey = item.ItemQbKey;
            f.Values[0] = item.Values[0];
            song.InsertItem(f, item, true);
            song.RemoveItem(item);
            song.Root.AlignPointers();
            return f;
        }