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;
}
}
}