//JSから呼ばれる
public void Invoked(string cmd, string args)
{
switch (cmd)
{
case "widtheight":
Owner.Resolution = args;
break;
case "bufferingstart":
Owner.IsBuffering = true;
break;
case "bufferingend":
Owner.IsBuffering = false;
break;
case "playstate":
if (!string.IsNullOrEmpty(args))
{
Owner.IsPlaying = bool.Parse(args);
}
break;
case "click":
if (Settings.Instance.ClickOnPause)
{
Owner.TogglePlay();
}
break;
case "mousewheel":
if (!string.IsNullOrEmpty(args))
{
var vol = int.Parse(args);
if (vol >= 0)
{
Owner.Volume += 2;
}
else
{
Owner.Volume -= 2;
}
}
break;
case "currenttime": {
dynamic json = DynamicJson.Parse(args);
if (json.played())
{
Owner.PlayedRange.Clear();
foreach (var play in json.played)
{
Owner.PlayedRange.Add(new TimeRange()
{
StartTime = play.start, EndTime = play.end
});
}
}
if (json.buffered())
{
Owner.BufferedRange.Clear();
foreach (var buffer in json.buffered)
{
Owner.BufferedRange.Add(new TimeRange()
{
StartTime = buffer.start, EndTime = buffer.end
});
}
}
if (json.time())
{
Owner.CurrentTime = json.time;
}
if (json.vpos())
{
if (Owner.Comment.CommentVisibility)
{
Owner.Comment.CommentTick((int)json.vpos);
}
}
break;
}
case "ended": {
if (Owner.IsRepeat)
{
Owner.Restart();
Play();
}
else
{
if (Owner.IsFullScreen && !Owner.IsPlayList())
{
Window.GetWindow(Owner.FullScreenWebBrowser)?.Close();
}
}
if (Owner.ApiData != null)
{
//現在再生位置を初期化する
Owner.WatchiApiInstance.RecordPlaybackPositionAsync(Owner.ApiData, 0);
}
Owner.VideoEnd();
break;
}
case "showcontroller": {
Owner.ShowFullScreenController = true;
break;
}
case "hidecontroller": {
if (!Settings.Instance.AlwaysShowSeekBar)
{
Owner.ShowFullScreenController = false;
}
break;
}
case "alldataloaded":
DmcHeartBeatTimer.Enabled = false;
break;
default:
Console.WriteLine("Invoked: " + cmd);
break;
}
}