using System; using UnityEngine; namespace Funique { /// /// Video data structure
/// ------------------------------------------------
/// 影片資料結構 ///
[Serializable] public sealed class VideoInfo : InfoBase { public string ImgName; /// /// Image raw data
/// ------------------------------------------------
/// 圖片原始資料 ///
public string ImgData; /// /// time code string (total second)
/// ------------------------------------------------
/// 影片總長度 (所有秒數) ///
public double Time; /// /// Audio channel specified
/// ------------------------------------------------
/// 聲音通道 ///
public string AudioChannel; /// /// Specified the stereo type of the video
/// ------------------------------------------------
/// 立體聲模式 ///
public string StereoMode; /// /// Extension string
/// ------------------------------------------------
/// 格式 ///
public string Format; /// /// Video path in client
/// This can leave it empty, it won't effect much
/// ------------------------------------------------
/// 影片在客戶端的路徑
/// 可留白, 不會有太多影響 ///
public string Path; /// /// Range between 0 - 65535
/// Specified video audio
/// Defalt value is 50 (32767)
/// ------------------------------------------------
/// 範圍在 0 - 65535 之間 /// 定義影片的音量 /// 預設值為 50 (32767) ///
public int AudioLevel = 32767; /// /// Specified how to play this video
/// ------------------------------------------------
/// 定義如何播放影片 ///
public PlayListMode PlayListMode = PlayListMode.VideoList; /// /// Current cinema index
/// -1: means lobby or unspecified
/// ------------------------------------------------
/// 劇場的目錄 ID
/// -1: 代表是未分類 ///
public int CinemaIndex = -1; public event Action OnCheck; /// /// Create a copy of an video info
/// ------------------------------------------------
/// 複製一份實體出來 ///
/// /// public VideoInfo Clone(VideoInfo cloneSource) { VideoInfo clone = new VideoInfo(); clone.BtnObj = cloneSource.BtnObj; clone.SourceName = cloneSource.SourceName; clone.FilterName = cloneSource.FilterName; clone.BtnName = cloneSource.BtnName; clone.ImgName = cloneSource.ImgName; clone.ImgData = cloneSource.ImgData; clone.Time = cloneSource.Time; clone.AudioChannel = cloneSource.AudioChannel; clone.StereoMode = cloneSource.StereoMode; clone.Format = cloneSource.Format; clone.Path = cloneSource.Path; clone.AudioLevel = cloneSource.AudioLevel; clone.PlayListMode = cloneSource.PlayListMode; clone.CinemaIndex = cloneSource.CinemaIndex; return clone; } public static VideoInfo GenerateVideoBySourceName(string sourceName) { VideoInfo videoInfo = new VideoInfo(); videoInfo.PlayableType = 0; videoInfo.SourceName = sourceName.Replace("\r", ""); videoInfo.Check(); return videoInfo; } /// /// After apply the source name, this will filter out the rest of field
/// ------------------------------------------------
/// 在套用 原始名稱 後, 這會過濾出剩下的字串欄位 ///
public void Check() { FilterName = Tool.Instance.FilterVideoName(SourceName); StereoMode = Tool.Instance.DetectStereoMode(FilterName); Time = Tool.Instance.FilterVideoTime(SourceName); BtnName = Tool.Instance.FilterBtnName(SourceName); Format = System.IO.Path.GetExtension(SourceName); Debug.Log(SourceName); Debug.Log(BtnName); if (OnCheck != null) OnCheck.Invoke(); } public override string ToString() { string v = string.Empty; v += $"Source Name: {SourceName}\n"; v += $"Filter Name: {FilterName}\n"; v += $"StereoMode: {StereoMode}\n"; v += $"Time: {TimeSpan.FromSeconds(Time)}\n"; v += $"Format: {Format}\n"; v += $"Audio: {AudioLevel}\n"; v += $"Path: {Path}\n"; v += $"Cinema: {CinemaIndex}"; return v; } } }