mirror of
https://git.femboyfinancial.jp/james/lipsync.git
synced 2024-12-01 06:02:00 -08:00
80 lines
2.3 KiB
C#
80 lines
2.3 KiB
C#
/*
|
|
* 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 {
|
|
|
|
/// <summary>
|
|
/// vsqファイルのメタテキスト内に記述されるイベント。
|
|
/// </summary>
|
|
[Serializable]
|
|
public class VsqEvent : IComparable<VsqEvent>, ICloneable {
|
|
public string Tag;
|
|
/// <summary>
|
|
/// 内部で使用するインスタンス固有のID
|
|
/// </summary>
|
|
public int InternalID;
|
|
public int Clock;
|
|
public VsqID ID;
|
|
public UstEvent UstEvent = new UstEvent();
|
|
|
|
/// <summary>
|
|
/// このオブジェクトのコピーを作成します
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
|
|
}
|