2021-09-13 18:21:43 +08:00
using Assets.Scenes.Ride.Scripts ;
2021-12-07 16:44:36 +08:00
using Assets.Scenes.Ride.Scripts.Model ;
2021-09-13 18:21:43 +08:00
using Assets.Scripts ;
2021-04-23 09:22:12 +08:00
using Assets.Scripts.Devices.Ant ;
2021-06-10 17:46:43 +08:00
using Assets.Scripts.Scenes ;
2021-04-30 18:03:34 +08:00
using Assets.Scripts.UI.Prefab.Device ;
2021-12-14 18:10:58 +08:00
using DG.Tweening ;
2021-04-23 09:22:12 +08:00
using Mapbox.Examples ;
2021-08-26 15:08:02 +08:00
using System ;
2021-04-14 15:02:33 +08:00
using System.Collections ;
2021-03-25 16:53:39 +08:00
using System.Collections.Generic ;
2021-12-15 18:18:12 +08:00
using System.Linq ;
2021-04-23 09:22:12 +08:00
using System.Threading.Tasks ;
2021-03-25 16:53:39 +08:00
using UnityEngine ;
2021-12-07 16:44:36 +08:00
using UnityEngine.SceneManagement ;
2021-04-19 14:36:08 +08:00
using UnityEngine.UI ;
2021-03-25 16:53:39 +08:00
2021-06-10 17:46:43 +08:00
public class MainController : BaseScene
2021-03-25 16:53:39 +08:00
{
2021-04-14 15:02:33 +08:00
[SerializeField] GameObject root ;
2021-04-19 14:36:08 +08:00
private Text Version ;
2021-06-10 17:46:43 +08:00
protected override void Awake ( )
2021-04-14 15:02:33 +08:00
{
2021-06-10 17:46:43 +08:00
base . Awake ( ) ;
2021-04-19 18:16:56 +08:00
Version = this . transform . Find ( "GameObject" ) . Find ( "Version" ) . GetComponent < Text > ( ) ;
2021-04-23 09:22:12 +08:00
Version . text = "V" + App . AppVersion ;
2021-05-08 11:09:03 +08:00
DeviceCache . Init ( PFConstants . DeviceCacheFolder ) ;
2021-06-08 10:30:26 +08:00
Loom . Initialize ( ) ;
2021-12-14 18:10:58 +08:00
msg = transform . Find ( "GameObject/Message" ) . GetComponent < CanvasGroup > ( ) ;
2021-12-15 18:18:12 +08:00
InitialMessage ( ) ;
2021-08-24 17:50:14 +08:00
#if UNITY_ANDROID | | UNITY_IOS
2021-08-25 14:32:49 +08:00
transform . GetComponent < CanvasScaler > ( ) . referenceResolution = new Vector2 ( 844 , 390 ) ;
2021-08-27 10:12:50 +08:00
//transform.Find("Panel").GetComponent<RectTransform>().sizeDelta = new Vector2(844, 390);
var rectTransform = transform . Find ( "Panel" ) . GetComponent < RectTransform > ( ) ;
rectTransform . anchorMin = Vector2 . zero ;
rectTransform . anchorMax = Vector2 . one ;
rectTransform . offsetMin = Vector2 . zero ;
rectTransform . offsetMax = Vector2 . zero ;
2021-09-01 16:14:45 +08:00
//var rect1 = transform.Find("GameObject").GetComponent<RectTransform>();
//rect1.anchorMin = Vector2.zero;
//rect1.anchorMax = Vector2.one;
//rect1.offsetMin = Vector2.zero;
//rect1.offsetMax = Vector2.zero;
2021-08-26 15:08:02 +08:00
//transform.Find("ModalPanel").GetComponent<RectTransform>().sizeDelta = new Vector2(844, 390);
2021-09-24 19:16:40 +08:00
#else
2021-11-04 13:24:40 +08:00
var modalRect = transform . Find ( "ModalPanel" ) . GetComponent < RectTransform > ( ) ;
modalRect . anchorMin = new Vector2 ( 0.5f , 0.5f ) ;
modalRect . anchorMax = new Vector2 ( 0.5f , 0.5f ) ;
modalRect . offsetMin = Vector2 . zero ;
modalRect . offsetMax = Vector2 . zero ;
modalRect . sizeDelta = new Vector2 ( 1600 , 900 ) ;
2021-09-24 19:16:40 +08:00
App . MainDeviceAdapter . StartScan ( ) ;
2021-08-24 17:50:14 +08:00
#endif
2021-12-15 18:18:12 +08:00
EventQueueSystem . AddListener < LinkedMessageEvent > ( LinkedMessageHandler ) ;
2021-12-16 16:00:14 +08:00
App . isHomeChanged - = OnIsHomeChanged ;
App . isHomeChanged + = OnIsHomeChanged ;
2021-12-15 18:18:12 +08:00
}
2021-12-16 16:00:14 +08:00
#region 显 示 消 息 有 关
//切换页面后
private void OnIsHomeChanged ( object sender , EventArgs e )
{
DOTween . KillAll ( ) ;
2021-12-16 16:54:31 +08:00
FinishMessage ( sender ) ;
2021-12-16 16:00:14 +08:00
}
2021-12-15 18:18:12 +08:00
CanvasGroup [ ] msgs ;
Vector3 msgLocation ;
int msgIndex = 0 ;
2021-12-16 16:00:14 +08:00
CanvasGroup rightMessage ;
2021-12-15 18:18:12 +08:00
private void InitialMessage ( )
{
2021-12-16 16:54:31 +08:00
#if UNITY_STANDALONE_WIN
2021-12-15 18:18:12 +08:00
msgLocation = 1 * msg . transform . localPosition ;
var msg2 = Instantiate < CanvasGroup > ( msg ) ;
var msg3 = Instantiate < CanvasGroup > ( msg ) ;
msg2 . transform . SetParent ( msg . transform . parent ) ;
msg3 . transform . SetParent ( msg . transform . parent ) ;
msg2 . transform . localPosition = 1 * msgLocation ;
msg2 . transform . localScale = Vector3 . one ;
msg2 . alpha = 0 ;
msg3 . transform . localPosition = 1 * msgLocation ;
msg3 . transform . localScale = Vector3 . one ;
msg3 . alpha = 0 ;
msgs = new CanvasGroup [ ] { msg , msg2 , msg3 } ;
2021-12-16 16:00:14 +08:00
rightMessage = transform . Find ( "GameObject/MessageRight" ) . GetComponent < CanvasGroup > ( ) ;
2021-12-16 16:54:31 +08:00
#else
var go = transform . Find ( "GameObject" ) ;
go . GetComponent < RectTransform > ( ) . anchorMin = Vector2 . zero ;
go . GetComponent < RectTransform > ( ) . anchorMax = Vector2 . one ;
go . GetComponent < RectTransform > ( ) . offsetMax = Vector2 . zero ;
go . GetComponent < RectTransform > ( ) . offsetMin = Vector2 . zero ;
DestroyImmediate ( transform . Find ( "GameObject/Message" ) . gameObject ) ;
DestroyImmediate ( transform . Find ( "GameObject/MessageRight" ) . gameObject ) ;
var m = Resources . Load < GameObject > ( "UI/Prefab/NewRoute/Mobile/Message" ) ;
rightMessage = Instantiate < GameObject > ( m ) . GetComponent < CanvasGroup > ( ) ;
2021-12-16 16:00:14 +08:00
2021-12-16 16:54:31 +08:00
rightMessage . transform . SetParent ( go ) ;
rightMessage . transform . localScale = Vector3 . one ;
rightMessage . transform . localPosition = new Vector3 ( - 112 , 164 , 0 ) ;
Debug . Log ( rightMessage . GetComponent < RectTransform > ( ) . localPosition ) ;
//rightMessage.transform.SetParent(transform.Find("GameObject"));
2021-12-16 16:00:14 +08:00
#endif
2021-12-15 18:18:12 +08:00
}
private void LinkedMessageHandler ( LinkedMessageEvent e )
{
//msg.transform.Find("Content")
emptyt = 0 ;
2021-12-16 16:00:14 +08:00
#if UNITY_STANDALONE_WIN
2021-12-15 18:18:12 +08:00
Debug . Log ( e . content ) ;
2021-12-16 16:00:14 +08:00
if ( App . currentPageIsHome )
{
DoMessage ( e ) ;
}
else
{
DoMessageRight ( e ) ;
}
#else
2021-12-16 16:54:31 +08:00
if ( App . currentPageIsHome )
{
DoMessageRight ( e ) ;
}
2021-12-16 16:00:14 +08:00
#endif
}
private void DoMessageRight ( LinkedMessageEvent e )
{
SetMessage ( rightMessage , e ) ;
2021-12-16 16:54:31 +08:00
rightMessage . DOFade ( 1 , 0.5f ) . onComplete = ( ) = > Invoke ( "fade0" , 0.8f ) ;
2021-12-15 18:18:12 +08:00
}
private void DoMessage ( LinkedMessageEvent e )
{
2021-12-16 16:00:14 +08:00
2021-12-15 18:18:12 +08:00
var selectIndex = msgIndex % 3 ;
2021-12-16 16:00:14 +08:00
var m = msgs [ selectIndex ] ;
2021-12-15 18:18:12 +08:00
if ( msgIndex > = 3 ) //
{
//msgIndex = 0;
m . DOFade ( 0 , 0.5f ) . onComplete = ( ) = >
{
SetMessage ( m , e ) ;
m . transform . localPosition = new Vector3 ( msgLocation . x , msgLocation . y - 54 * 2 , msgLocation . z ) ;
m . DOFade ( 1 , 0.5f ) ;
foreach ( var item in msgs . Where ( ( x , i ) = > i ! = selectIndex ) )
{
item . transform . DOLocalMoveY ( item . transform . localPosition . y + 54 , 0.5f ) ;
}
} ;
}
else
{
SetMessage ( m , e ) ;
m . transform . localPosition = new Vector3 ( msgLocation . x , msgLocation . y - 54 * ( msgIndex % 3 ) , msgLocation . z ) ;
m . DOFade ( 1 , 0.5f ) ;
}
msgIndex + + ;
}
2021-12-16 16:54:31 +08:00
void FinishMessage ( object sender )
2021-12-16 16:00:14 +08:00
{
2021-12-16 16:54:31 +08:00
#if UNITY_STANDALONE_WIN
if ( ( bool ) sender )
2021-12-16 16:00:14 +08:00
{
2021-12-16 16:54:31 +08:00
FinishMessageRight ( ) ;
2021-12-16 16:00:14 +08:00
}
else
2021-12-16 16:54:31 +08:00
{
FinishMessageLeft ( ) ;
}
#else
if ( ! ( bool ) sender )
2021-12-16 16:00:14 +08:00
{
FinishMessageRight ( ) ;
}
2021-12-16 16:54:31 +08:00
#endif
2021-12-16 16:00:14 +08:00
}
void FinishMessageLeft ( )
2021-12-15 18:18:12 +08:00
{
msgIndex = 0 ;
foreach ( var item in msgs )
{
item . DOFade ( 0 , 0.3f ) ;
}
}
2021-12-16 16:00:14 +08:00
void FinishMessageRight ( )
{
msgIndex = 0 ;
rightMessage . DOFade ( 0 , 0.3f ) ;
}
2021-12-15 18:18:12 +08:00
private void SetMessage ( CanvasGroup m , LinkedMessageEvent e )
{
m . transform . Find ( "Avatar" ) . GetComponent < RawImage > ( ) . texture = null ;
Utils . DisplayHead ( m . transform . Find ( "Avatar" ) . GetComponent < RawImage > ( ) , e . avatar ) ;
m . transform . Find ( "Nickname" ) . GetComponent < Text > ( ) . text = e . nickname ;
m . transform . Find ( "Content" ) . GetComponent < Text > ( ) . text = e . content ;
2021-09-13 18:21:43 +08:00
}
2021-12-16 16:00:14 +08:00
CanvasGroup msg ;
void fade0 ( )
{
rightMessage . DOFade ( 0 , 0.5f ) ;
}
#endregion
2021-03-25 16:53:39 +08:00
// Start is called before the first frame update
2021-04-23 09:22:12 +08:00
async void Start ( )
2021-09-23 18:14:53 +08:00
{
2021-04-14 15:02:33 +08:00
UIManager . Instance . Root = root ;
2021-04-09 09:44:06 +08:00
UIManager . Instance . MainPanel = this . transform . Find ( "Panel" ) . GetComponent < PFUIPanel > ( ) ;
UIManager . Instance . ModalsPanel = this . transform . Find ( "ModalPanel" ) . GetComponent < PFUIPanel > ( ) ;
2021-08-26 15:08:02 +08:00
transform . Find ( "MobileInfo/BatteryText" ) . GetComponent < Text > ( ) . text =
$"{Math.Round(SystemInfo.batteryLevel * 100, 0)}%" ;
transform . Find ( "MobileInfo/TimeText" ) . GetComponent < Text > ( ) . text =
DateTime . Now . ToString ( "HH:mm" ) ;
2021-05-06 16:02:37 +08:00
#if UNITY_EDITOR
if ( App . CurrentUser = = null ) //App.CurrentUser == null
2021-04-23 09:22:12 +08:00
{
await Login ( ) ;
}
2021-05-06 16:02:37 +08:00
#endif
2021-03-25 16:53:39 +08:00
//MainMenu.transform.Find("Home").GetComponent<Button>().onClick.AddListener(() =>
//{
// UIManager.ShowHomePanel();
//});
2021-11-09 16:47:21 +08:00
//#if UNITY_ANDROID || UNITY_IOS
// if (!App.IsRowerMode.HasValue)
// {
// UIManager.ShowRowerSelector();
// return;
// }
// if (App.IsRowerMode == true)
// {
// UIManager.ShowRowerPanel();
// return;
// }
//#endif
2021-05-10 10:21:46 +08:00
if ( App . MainSceneParam . ContainsKey ( "Name" ) & & ! string . IsNullOrEmpty ( App . MainSceneParam [ "Name" ] ) )
2021-04-14 15:02:33 +08:00
{
2021-09-15 10:45:11 +08:00
UIManager . ShowHomePanel ( ) ;
2021-12-15 11:08:18 +08:00
UIManager . ShowNewRouteOverviewPanel ( ) ;
2021-04-25 19:41:35 +08:00
if ( App . MainSceneParam [ "Name" ] = = "MapListPanel" )
2021-04-14 15:02:33 +08:00
{
UIManager . ShowMapListPanel ( ) ;
}
2021-12-15 11:08:18 +08:00
if ( App . MainSceneParam [ "Name" ] = = "NewRouteDetail" & & App . currentArea ! = null )
{
UIManager . ShowNewRouteDetailPanel ( App . currentArea ) ;
}
2021-04-23 09:37:41 +08:00
if ( App . MainSceneParam [ "Name" ] = = "UserInfoPanel" )
{
UIManager . ShowUserInfoPanel ( ) ;
}
2021-07-23 18:07:12 +08:00
if ( App . MainSceneParam [ "Name" ] = = "RaceHomePanel" )
{
UIManager . ShowRaceHomePanel ( ) ;
}
2021-05-10 10:21:46 +08:00
App . MainSceneParam [ "Name" ] = string . Empty ;
2021-04-14 15:02:33 +08:00
}
else
{
2021-06-09 18:16:35 +08:00
UIManager . ShowHomePanel ( ) ;
2021-12-07 14:37:08 +08:00
//UIManager.ShowNewRouteOverviewPanel();
2021-04-14 15:02:33 +08:00
//UIManager.ShowUserInfoPanel();
//UIManager.ShowEditUserPanel();
//UIManager.ShowBigMapPanel();
2021-04-27 19:47:02 +08:00
//UIManager.ShowEarthPanel();
2021-04-14 15:02:33 +08:00
}
2021-11-23 16:27:35 +08:00
UIManager . UpdateJoinCompetition ( ) ; //查询当前我参加的赛事
2021-12-07 16:44:36 +08:00
LastRide ( ) ; //检查本地异常中断的骑行并弹窗提示继续
2021-03-25 16:53:39 +08:00
}
2021-12-15 18:18:12 +08:00
float maxt = 0f ; //用于获取全服最值内容
float emptyt = 0 ; //用于无消息计时
2021-07-23 18:07:12 +08:00
float t = 1f ;
2021-09-13 18:21:43 +08:00
float scanTicks = 0 ;
2021-03-25 16:53:39 +08:00
// Update is called once per frame
2021-11-09 11:37:10 +08:00
protected override void Update ( )
2021-03-25 16:53:39 +08:00
{
2021-11-09 11:37:10 +08:00
base . Update ( ) ;
2021-12-15 13:24:26 +08:00
2021-09-23 18:14:53 +08:00
if ( App . canvasWidth ! = transform . GetComponent < RectTransform > ( ) . sizeDelta . x )
{
App . canvasWidth = transform . GetComponent < RectTransform > ( ) . sizeDelta . x ;
2021-12-15 13:24:26 +08:00
//Debug.Log(App.canvasWidth);
2021-09-23 18:14:53 +08:00
}
//Debug.Log(transform.GetComponent<RectTransform>().sizeDelta.x);
2021-07-23 18:07:12 +08:00
t - = Time . deltaTime ;
while ( t < = 0 )
{
2021-07-29 20:01:38 +08:00
App . CurrentScene = "Main" ;
2021-07-23 18:07:12 +08:00
UIManager . SendCompetitionStartMessage ( "Main" ) ;
t = 1 ;
2021-09-13 18:21:43 +08:00
scanTicks + + ;
2021-12-15 18:18:12 +08:00
emptyt + + ;
if ( emptyt > = 10 )
{
emptyt = 0 ;
2021-12-16 18:43:26 +08:00
if ( App . currentPageIsHome )
{
FinishMessageLeft ( ) ;
}
2021-12-15 18:18:12 +08:00
}
2021-09-13 18:21:43 +08:00
if ( scanTicks = = 10 )
{
2021-09-15 14:17:11 +08:00
//App.MainDeviceAdapter.StopScan();
//Debug.Log("StopScan");
2021-09-13 18:21:43 +08:00
}
2021-12-15 13:24:26 +08:00
MapUDPService . Send ( 0 , App . CurrentUser . Id , new double [ ] { 0d , 0d } , competitionId : 0 ) ;
//发送消息
foreach ( var item in MapUDPService . GetOnlineUserList ( ) )
{
if ( item . RouteId > 0 )
{
2021-12-15 18:18:12 +08:00
if ( ! App . RouteNameDict . ContainsKey ( item . RouteId ) )
2021-12-15 13:24:26 +08:00
{
var result = ConfigHelper . mapApi . GetById ( item . RouteId ) ;
if ( result . result )
{
item . RouteName = result . data . Name ;
2021-12-15 18:18:12 +08:00
App . RouteNameDict . Add ( item . RouteId , item . RouteName ) ;
2021-12-15 13:24:26 +08:00
}
}
2021-12-15 18:18:12 +08:00
else
{
item . RouteName = App . RouteNameDict [ item . RouteId ] ;
}
var message = "" ;
if ( item . TotalTicks = = 0 )
{
message = $"发起了对<color=#ff2742>{item.RouteName}</color>的挑战" ;
}
if ( item . IsCompleted )
{
message = $"完成了<color=#ff2742>{item.RouteName}</color>的挑战" ;
}
if ( ! string . IsNullOrEmpty ( message ) )
{
EventQueueSystem . QueueEventOnce ( new LinkedMessageEvent ( item . RouteId , message , item . HeadImage , item . Name ) , $"{item.RouteId}{item.Name}" ) ;
}
2021-12-15 13:24:26 +08:00
}
//距离
if ( item . EndDistance > 50 )
{
2021-12-15 18:18:12 +08:00
var message = $"在骑行过程中突破了<color=#00ff00>{" 50 KM "}</color>的挑战" ;
EventQueueSystem . QueueEventOnce ( new LinkedMessageEvent ( item . RouteId , message , item . HeadImage , item . Name ) , $"{item.RouteId}{item.Name}50KM" ) ;
2021-12-15 13:24:26 +08:00
}
//速度
if ( item . Speed > 10 )
{
2021-12-15 18:18:12 +08:00
var message = $"在骑行过程中速度达到了惊人的<color=#ff0000>{item.Speed}</color>KM/H" ;
EventQueueSystem . QueueEventOnce ( new LinkedMessageEvent ( item . RouteId , message , item . HeadImage , item . Name ) , $"{item.RouteId}{item.Name}10KM/H" ) ;
2021-12-15 13:24:26 +08:00
}
//功体比
if ( item . WeightKg > 2 )
{
2021-12-15 18:18:12 +08:00
var message = $"在骑行过程中功体比达到了惊人的<color=#0000ff>{item.WeightKg}</color>w/kg" ;
EventQueueSystem . QueueEventOnce ( new LinkedMessageEvent ( item . RouteId , message , item . HeadImage , item . Name ) , $"{item.RouteId}{item.Name}2WeightKg" ) ;
2021-12-15 13:24:26 +08:00
}
}
2021-07-23 18:07:12 +08:00
}
2021-12-15 18:18:12 +08:00
maxt - = Time . deltaTime ;
if ( maxt < = 0 )
{
GetMaxRanking ( ) ;
maxt + = 60f ;
}
2021-03-25 16:53:39 +08:00
}
2021-04-23 09:22:12 +08:00
2021-12-15 18:18:12 +08:00
private async void GetMaxRanking ( )
2021-12-14 18:10:58 +08:00
{
2021-12-15 18:18:12 +08:00
var res = await ConfigHelper . mapApi . GetMaxRanking ( ) ;
if ( res . result )
2021-12-14 18:10:58 +08:00
{
2021-12-15 18:18:12 +08:00
foreach ( var item in res . data )
{
EventQueueSystem . QueueEvent ( new LinkedMessageEvent ( item . Id , item . Message , item . WxHeadImg , item . NickName ) ) ;
}
2021-12-14 18:10:58 +08:00
}
}
2021-12-15 18:18:12 +08:00
2021-12-16 16:00:14 +08:00
2021-04-23 09:22:12 +08:00
private async Task Login ( )
{
var result = await ConfigHelper . userApi . Login ( "13115011550" , "laozhong" , "" ) ;
App . CurrentUser = result . data ;
}
2021-12-07 16:44:36 +08:00
/// <summary>
/// 检查上次异常中断的骑行
/// </summary>
private void LastRide ( )
{
var tempFileList = System . IO . Directory . GetFiles ( PFConstants . MapWorkoutRecordTempFolder ) ;
if ( tempFileList . Length > 0 )
{
var tempFile = tempFileList [ 0 ] ;
var content = System . IO . File . ReadAllText ( tempFile ) ;
if ( ! string . IsNullOrEmpty ( content ) )
{
var tempRecordData = Newtonsoft . Json . JsonConvert . DeserializeObject < TempRecordData > ( content ) ;
App . tempRecordData = tempRecordData ;
2021-12-16 16:53:38 +08:00
2021-12-17 11:10:17 +08:00
UIManager . ShowConfirm ( App . GetLocalString ( "Reconnect" ) , App . GetLocalString ( "Did you want to reconnect the trip that was interrupted abnormally?" ) , ( ) = > { SceneManager . LoadScene ( "Ride" ) ; } , 2 , ( ) = > {
Helper . DelectDir ( PFConstants . MapWorkoutRecordTempFolder ) ;
App . tempRecordData = null ;
} ) ;
2021-12-07 16:44:36 +08:00
}
}
}
2021-12-16 16:00:14 +08:00
private void OnDestroy ( )
{
App . isHomeChanged - = OnIsHomeChanged ;
}
2021-03-25 16:53:39 +08:00
}