change
This commit is contained in:
@@ -1,7 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using NBC;
|
||||
using RenderHeads.Media.AVProVideo;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
namespace NBF
|
||||
{
|
||||
@@ -9,45 +12,314 @@ namespace NBF
|
||||
{
|
||||
public static Game Instance { get; private set; }
|
||||
|
||||
public readonly List<VideoRetData> Videos = new List<VideoRetData>();
|
||||
public int Page = 1;
|
||||
public int PageSize = 100;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
|
||||
public void Tick(Action<bool> callback = null)
|
||||
private void Start()
|
||||
{
|
||||
var dic = new Dictionary<string, string>
|
||||
{
|
||||
{ "device", PlatformInfo.GetAndroidID() },
|
||||
{ "deviceName", "android" },
|
||||
{ "id", "0" },
|
||||
{ "time", "0" }
|
||||
};
|
||||
Net.Instance.Send("/api/device", dic, result => { callback?.Invoke(result.Code == 0); });
|
||||
Net.Instance.OnError += OnNetError;
|
||||
}
|
||||
|
||||
public void GetList(Action callback)
|
||||
private void OnDestroy()
|
||||
{
|
||||
Net.Instance.OnError -= OnNetError;
|
||||
}
|
||||
|
||||
private void OnNetError(UnityWebRequest.Result result, string msg)
|
||||
{
|
||||
if (result == UnityWebRequest.Result.ConnectionError)
|
||||
{
|
||||
// VideoManager.Instance.Pause();
|
||||
|
||||
var panel = UI.Inst.GetUI<PlayerPanel>();
|
||||
if (panel != null && panel.IsShowing)
|
||||
{
|
||||
LoginPanel.Show();
|
||||
PlayerPanel.Hide();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#region 视频数据
|
||||
|
||||
private readonly List<VideoRetData> Videos = new List<VideoRetData>();
|
||||
private bool _isLastPage = false;
|
||||
public int Page = 0;
|
||||
public const int PageSize = 5;
|
||||
private Action OnPreLoadNextData;
|
||||
|
||||
public VideoRetData GetVideoDataByIndex(int index)
|
||||
{
|
||||
if (index < 0 || index >= Videos.Count) return null;
|
||||
if (index >= Videos.Count - 2) //如果再获取倒数3个,则需要预加载后续资源
|
||||
{
|
||||
//需要预加载了
|
||||
PreLoadNextData();
|
||||
}
|
||||
|
||||
return Videos[index];
|
||||
}
|
||||
|
||||
public void PreLoadNextData(Action callback = null)
|
||||
{
|
||||
OnPreLoadNextData = callback;
|
||||
GetList(Page + 1);
|
||||
}
|
||||
|
||||
public bool IsLastVideo(int index)
|
||||
{
|
||||
return index == Videos.Count - 1;
|
||||
}
|
||||
|
||||
private void GetList(int page)
|
||||
{
|
||||
if (page < 1) return;
|
||||
var dic = new Dictionary<string, string>
|
||||
{
|
||||
{ "page", Page.ToString() },
|
||||
{ "page", page.ToString() },
|
||||
{ "PageSize", PageSize.ToString() }
|
||||
};
|
||||
Net.Instance.Send("/api/list", dic, result =>
|
||||
{
|
||||
ParseVideo(result);
|
||||
callback?.Invoke();
|
||||
});
|
||||
Net.Instance.Send("/api/list", dic, ParseVideo);
|
||||
}
|
||||
|
||||
private void ParseVideo(HttpResult httpResult)
|
||||
{
|
||||
if (httpResult.Code != 0) return;
|
||||
var retData = httpResult.Data.ToObject<PageListData<VideoRetData>>();
|
||||
if (retData != null)
|
||||
{
|
||||
if (retData.List.Count > 0)
|
||||
{
|
||||
Videos.AddRange(retData.List);
|
||||
_isLastPage = false;
|
||||
}
|
||||
|
||||
if (retData.Page > Page && retData.List.Count < 1)
|
||||
{
|
||||
_isLastPage = true;
|
||||
}
|
||||
|
||||
Page = retData.Page;
|
||||
}
|
||||
|
||||
OnPreLoadNextData?.Invoke();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// #region 视频数据
|
||||
//
|
||||
// private int _page = 1;
|
||||
// private const int PageSize = 4;
|
||||
//
|
||||
// private readonly SortedList<int, VideoRetData> Videos = new();
|
||||
// public int CurrentVideoId = 0;
|
||||
//
|
||||
// // private readonly Queue<Action<VideoRetData>> _actions = new Queue<Action<VideoRetData>>();
|
||||
//
|
||||
// private Action<VideoRetData> _action;
|
||||
// private int _lastNextValue = 0;
|
||||
//
|
||||
// public void GetVideoData(int next, Action<VideoRetData> callback)
|
||||
// {
|
||||
// if (Videos.Count == 0)
|
||||
// {
|
||||
// callback?.Invoke(null);
|
||||
// GetList(_page);
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
// _lastNextValue = next;
|
||||
// _action = callback;
|
||||
// if (CurrentVideoId == 0)
|
||||
// {
|
||||
// GetVideoDataConfirm(GetFirstVideo());
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// if (next > 0)
|
||||
// {
|
||||
// GetVideoDataConfirm(GetNextVideo());
|
||||
// }
|
||||
// else if (next < 0)
|
||||
// {
|
||||
// GetVideoDataConfirm(GetPreviousVideo());
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //获取当前
|
||||
// GetVideoDataConfirm(GetCurrentVideo());
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// public void GetVideoDataConfirm(VideoRetData videoRetData)
|
||||
// {
|
||||
// _action?.Invoke(videoRetData);
|
||||
// _action = null;
|
||||
// if (videoRetData == null)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// CurrentVideoId = videoRetData.Id;
|
||||
//
|
||||
// if (_lastNextValue > 0)
|
||||
// {
|
||||
// //最后一次操作是获取下一个,
|
||||
// if (IsLastVideo())
|
||||
// {
|
||||
// //获取下一页
|
||||
// GetList(_page + 1);
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// //最后一次操作是获取上一个,
|
||||
// if (IsLastVideo())
|
||||
// {
|
||||
// //获取上一页
|
||||
// GetList(_page - 1);
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// private void GetList(int page)
|
||||
// {
|
||||
// if (page < 1) return;
|
||||
// var dic = new Dictionary<string, string>
|
||||
// {
|
||||
// { "page", page.ToString() },
|
||||
// { "PageSize", PageSize.ToString() }
|
||||
// };
|
||||
// Net.Instance.Send("/api/list", dic, ParseVideo);
|
||||
// }
|
||||
//
|
||||
// private void ParseVideo(HttpResult httpResult)
|
||||
// {
|
||||
// if (httpResult.Code != 0) return;
|
||||
// var retData = httpResult.Data.ToObject<PageListData<VideoRetData>>();
|
||||
// if (retData != null && retData.List.Count > 0)
|
||||
// {
|
||||
// _page = retData.Page;
|
||||
// AddVideos(retData.List);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
//
|
||||
// #region 视频数据获取
|
||||
//
|
||||
// /// <summary>
|
||||
// /// 添加视频
|
||||
// /// </summary>
|
||||
// /// <param name="videoList"></param>
|
||||
// private void AddVideos(IEnumerable<VideoRetData> videoList)
|
||||
// {
|
||||
// foreach (var video in videoList)
|
||||
// {
|
||||
// Videos.TryAdd(video.Id, video);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// /// <summary>
|
||||
// /// 获取下一个视频
|
||||
// /// </summary>
|
||||
// /// <returns></returns>
|
||||
// private VideoRetData GetNextVideo()
|
||||
// {
|
||||
// int currentIndex = Videos.IndexOfKey(CurrentVideoId);
|
||||
//
|
||||
// if (currentIndex >= 0 && currentIndex < Videos.Count - 1)
|
||||
// {
|
||||
// var nextVideo = Videos.Values[currentIndex + 1];
|
||||
// CurrentVideoId = nextVideo.Id;
|
||||
// return nextVideo;
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// /// <summary>
|
||||
// /// 获取上一个视频
|
||||
// /// </summary>
|
||||
// /// <returns></returns>
|
||||
// public VideoRetData GetPreviousVideo()
|
||||
// {
|
||||
// int currentIndex = Videos.IndexOfKey(CurrentVideoId);
|
||||
//
|
||||
// if (currentIndex > 0)
|
||||
// {
|
||||
// var prevVideo = Videos.Values[currentIndex - 1];
|
||||
// CurrentVideoId = prevVideo.Id;
|
||||
// return prevVideo;
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// /// <summary>
|
||||
// /// 获取第一个视频
|
||||
// /// </summary>
|
||||
// /// <returns></returns>
|
||||
// private VideoRetData GetFirstVideo()
|
||||
// {
|
||||
// if (Videos.Count > 0)
|
||||
// {
|
||||
// var video = Videos.Values[0];
|
||||
// CurrentVideoId = video.Id;
|
||||
// return video;
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
// /// <summary>
|
||||
// /// 获取最后一个视频
|
||||
// /// </summary>
|
||||
// /// <returns></returns>
|
||||
// private VideoRetData GetLastVideo()
|
||||
// {
|
||||
// if (Videos.Count > 0)
|
||||
// {
|
||||
// var video = Videos.Values[^1];
|
||||
// CurrentVideoId = video.Id;
|
||||
// return video;
|
||||
// }
|
||||
//
|
||||
// return null;
|
||||
// }
|
||||
//
|
||||
//
|
||||
// /// <summary>
|
||||
// /// 获取当前视频
|
||||
// /// </summary>
|
||||
// /// <returns></returns>
|
||||
// private VideoRetData GetCurrentVideo()
|
||||
// {
|
||||
// return Videos.GetValueOrDefault(CurrentVideoId);
|
||||
// }
|
||||
//
|
||||
// // 判断是否是第一个视频
|
||||
// public bool IsFirstVideo()
|
||||
// {
|
||||
// if (Videos.Count == 0) return false;
|
||||
// return Videos.Keys[0] == CurrentVideoId;
|
||||
// }
|
||||
//
|
||||
// // 判断是否是最后一个视频
|
||||
// public bool IsLastVideo()
|
||||
// {
|
||||
// if (Videos.Count == 0) return false;
|
||||
// return Videos.Keys[^1] == CurrentVideoId;
|
||||
// }
|
||||
//
|
||||
// #endregion
|
||||
//
|
||||
// #endregion
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user