Exemple #1
0
    //实现IIterator的三个接口
    Object IIterator.Next()
    {
        if (mListEnumerator.MoveNext())
        {
            XmlNode node = (XmlNode)mListEnumerator.Current;
            try{
                mCurrentSong = new SongAttribute(
                    Convert.ToString(node.Attributes ["real_name"].Value),
                    Convert.ToString(node.Attributes ["prog_name"].Value),
                    Convert.ToInt32(node.Attributes ["scene_id"].Value),
                    Convert.ToInt32(node.Attributes ["character_id"].Value),
                    Convert.ToInt32(node.Attributes ["BPM"].Value));
            }
            catch {
                return(null);
            }

            mIndex++;
            return(mCurrentSong);
        }
        else
        {
            return(null);
        }
    }
    // Use this for initialization
    void Start()
    {
        mInstance    = this;
        mObservers   = new ArrayList();
        mBarIterator = SingletonGameData.GetInstance().CreateBarIterator();
        //mSongIterator = SingletonGameData.GetInstance ().CreateSongIterator ();
        mListSameBarsAttribute = new List <BarAttribute> ();
        while (mBarIterator.HasNext())
        {
            mListSameBarsAttribute.Add(mBarIterator.Next() as BarAttribute);
        }
        mCurrentBarType = mListSameBarsAttribute[mCurrentBar].BarType;
        mSameBarNumber  = mListSameBarsAttribute [mCurrentBar].SameBarsNumber;
        mListCount      = mListSameBarsAttribute.Count;

        mSongAttribute = SingletonGameData.GetInstance().GetCurrentSongAttribute();
        mBeatSeconds   = (float)60 / mSongAttribute.BPM;
    }
    /// <summary>
    /// 获得当前选择的歌曲的属性
    /// </summary>
    /// <returns>返回歌曲属性对象</returns>
    public SongAttribute GetCurrentSongAttribute()
    {
        XmlNode       node = mRoot.SelectSingleNode("/Configuration/Songs/Song[@prog_name='" + DataBetweenScene.SongName + "']");
        SongAttribute song;

        if (node == null)
        {
            return(null);
        }
        try{
            song = new SongAttribute(
                Convert.ToString(node.Attributes ["real_name"].Value),
                Convert.ToString(node.Attributes ["prog_name"].Value),
                Convert.ToInt32(node.Attributes ["scene_id"].Value),
                Convert.ToInt32(node.Attributes ["character_id"].Value),
                Convert.ToInt32(node.Attributes ["BPM"].Value)
                );
        }
        catch {
            return(null);
        }
        return(song);
    }