/* * VsqEvent.cs * Copyright (c) 2008-2009 kbinani * * This file is part of Boare.Lib.Vsq. * * Boare.Lib.Vsq is free software; you can redistribute it and/or * modify it under the terms of the BSD License. * * Boare.Lib.Vsq is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ using System; namespace Boare.Lib.Vsq { /// /// vsqファイルのメタテキスト内に記述されるイベント。 /// [Serializable] public class VsqEvent : IComparable, ICloneable { public string Tag; /// /// 内部で使用するインスタンス固有のID /// public int InternalID; public int Clock; public VsqID ID; public UstEvent UstEvent = new UstEvent(); /// /// このオブジェクトのコピーを作成します /// /// public object Clone() { VsqEvent ret = new VsqEvent( Clock, (VsqID)ID.Clone() ); ret.InternalID = InternalID; if ( UstEvent != null ) { ret.UstEvent = (UstEvent)UstEvent.Clone(); } ret.Tag = Tag; return ret; } public int CompareTo( VsqEvent item ) { int ret = this.Clock - item.Clock; if ( ret == 0 ) { if ( this.ID != null && item.ID != null ) { return (int)this.ID.type - (int)item.ID.type; } else { return ret; } } else { return ret; } } public VsqEvent( string line ) { string[] spl = line.Split( new char[] { '=' } ); Clock = int.Parse( spl[0] ); if ( spl[1] == "EOS" ) { ID = VsqID.EOS; } } public VsqEvent() : this( 0, new VsqID() ) { } public VsqEvent( int clock, VsqID id /*, int internal_id*/ ) { Clock = clock; ID = id; //InternalID = internal_id; InternalID = 0; } } }