加入房间,踢人,准备等tcp命令

This commit is contained in:
lishuo committed 2022-04-28 18:01:51 +08:00
1 parent de8dd933e8
commit 06582201fa
101 files changed
+246552 -565

No files matched your search

@@ -49,18 +49,44 @@ public class GameRoomCell : MonoBehaviour, ICell, IBeginDragHandler, IDragHandle
public GameObject IconOwnerLight;
public GameObject JoinBtn;
public GameObject Lock;
public GameObject LockL;
private ScrollRect Scroll;
public string Id { get; set; }
public string Rank { get; set; }
public string Name { get; set; }
private bool IsLock;
private int Id;
private string FileName;
private GameRoomListController manager;
private GameRoomModel gameRoom;
private void Start()
{
manager = FindObjectOfType<GameRoomListController>();
Scroll = GetComponentInParent<ScrollRect>();
UIManager.AddEvent(gameObject, EventTriggerType.PointerEnter, (e) =>
{
LockL.SetActive(IsLock);
Lock.SetActive(false);
});
UIManager.AddEvent(gameObject, EventTriggerType.PointerExit, (e) =>
{
LockL.SetActive(false);
Lock.SetActive(IsLock);
});
UIManager.AddEvent(JoinBtn, EventTriggerType.PointerClick, (e) =>
{
manager.SelectRoom(gameRoom);
if (IsLock)
{
manager.ShowPwdConfirm();
}
else
{
manager.ShowDownLoadConfirm();
}
});
}
private float timer = 1f;
@@ -76,8 +102,9 @@ public class GameRoomCell : MonoBehaviour, ICell, IBeginDragHandler, IDragHandle
//This is called from the SetCell method in DataSource
public void ConfigureCell(GameRoomModel cell, int cellIndex)
{
gameRoom = cell;
RoomNameTxt.text = cell.Name;
FileName = cell.FileName;
var gradeText = $"{Math.Round(cell.AverageGrade,2)}%";
GradeLightTxt.text = gradeText;
GradeTxt.text = gradeText;
@@ -94,6 +121,11 @@ public class GameRoomCell : MonoBehaviour, ICell, IBeginDragHandler, IDragHandle
RouteNameLightTxt.text = cell.MapRouteName;
IdTxt.text = cell.Id.ToString().PadLeft(7,'0');
IsLock = cell.IsLock;
Id = cell.Id;
Lock.SetActive(IsLock);
LockL.SetActive(false);
Utils.DisplayImage(AltitudeGraphImg, cell.AltitudeGraph);
Utils.DisplayImage(Owner, cell.WxHeadImg);
}
@@ -0,0 +1,119 @@
using Assets.Scenes.Ride.Scripts;
using Assets.Scripts;
using Assets.Scripts.Apis.Models;
using PolyAndCode.UI;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
class GameRoomDownLoad : MonoBehaviour
{
public GameObject step1;
public GameObject step2;
public GameObject step3;
public GameObject downloadBtn;
public GameObject backBtn;
public Slider downloadSlider;
public GameObject runInbackBtn;
public GameObject enterBtn;
public GameObject cancelBtn;
public GameObject downLoadList;
public GameObject downLoadTask;
private GameRoomListController manager;
private int RoomId { get; set; }
private string FileName { get; set; }
private string FileUrl { get; set; }
private void Start()
{
UIManager.AddEvent(downloadBtn, EventTriggerType.PointerClick, DownloadClick);
UIManager.AddEvent(backBtn, EventTriggerType.PointerClick, CancelClick);
UIManager.AddEvent(runInbackBtn, EventTriggerType.PointerClick, (d) =>
{
gameObject.SetActive(false);
downLoadList.SetActive(true);
var content = downLoadList.transform.Find("Scroll View/Viewport/Content");
var list = FindObjectsOfType<GameRoomDownloadTask>();
//新增
var obj = list.Where(c => c.RoomId == RoomId).FirstOrDefault();
if (obj == null)
{
var newtask = Instantiate(downLoadTask, content);
newtask.GetComponent<GameRoomDownloadTask>().Init(RoomId, gameObject);
}
});
UIManager.AddEvent(enterBtn, EventTriggerType.PointerClick, (ee) =>
{
manager.GetInRoom();
Reset();
gameObject.SetActive(false);
});
UIManager.AddEvent(cancelBtn, EventTriggerType.PointerClick, (ee) =>
{
Reset();
gameObject.SetActive(false);
});
}
public void Init(int Id,string fileName,string url, GameRoomListController gameRoomListController)
{
RoomId = Id;
FileName = fileName;
FileUrl = url;
manager = gameRoomListController;
}
private void Reset()
{
step2.SetActive(false);
step3.SetActive(false);
downloadSlider.value = 0f;
}
private void CancelClick(BaseEventData data)
{
Reset();
gameObject.SetActive(false);
}
private void DownloadClick(BaseEventData baseEventData)
{
var fileName = FileName;
var path = PFConstants.VideoFolder;
var filepath = path + "/" + fileName;
var url = FileUrl;
step2.SetActive(true);
//新增
var content = downLoadList.transform.Find("Scroll View/Viewport/Content");
var newtask = Instantiate(downLoadTask, content);
var currentTask = newtask.GetComponent<GameRoomDownloadTask>();
currentTask.Init(RoomId, gameObject);
Loom.Current.StartCoroutine(Utils.DownloadVideo(fileName, url
, (p, req) =>
{
downloadSlider.value = p;
currentTask.UpdateProcess(p);
}
, (p) =>
{
currentTask.UpdateProcess(100f);
downloadSlider.value = 100f;
step3.SetActive(true);
}
));
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 339fd75283bc4ae4caf3d8a4b00b6cad
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,51 @@
using Assets.Scripts;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
class GameRoomDownloadTask : MonoBehaviour
{
public GameObject btn;
public Slider slider;
public GameObject icon;
private GameObject modal;
public GameObject done;
public GameObject doneTxt;
public int RoomId { get; set; }
private void Start()
{
UIManager.AddEvent(btn, EventTriggerType.PointerClick, (e) =>
{
modal.SetActive(true);
transform.parent.parent.parent.parent.gameObject.SetActive(false);
//TODO:
});
}
public void Init(int roomId,GameObject parent)
{
RoomId = roomId;
modal = parent;
}
public void UpdateProcess(float process)
{
slider.value = process;
if (process >= 100)
{
done.SetActive(true);
doneTxt.SetActive(true);
icon.SetActive(false);
slider.gameObject.SetActive(false);
}
}
public void Dispose()
{
gameObject.SetActive(false);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 1e49b4427b935aa42b1c477c08b61661
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -5,6 +5,7 @@ using DG.Tweening;
using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
@@ -60,6 +61,32 @@ public class GameRoomMapItem : MonoBehaviour, IPointerExitHandler, IPointerEnter
transform.GetComponent<Button>().onClick.RemoveAllListeners();
transform.GetComponent<Button>().onClick.AddListener(Ride);
}
var downloadBtn = transform.Find("DownLoadModal/DownLoad").gameObject;
var downloading = transform.Find("DownLoadModal/Downloading").gameObject;
var downloadTxt = transform.Find("DownLoadModal/Text").gameObject;
var slider = transform.Find("DownLoadModal/Slider").GetComponent<Slider>();
var fileName = map.FileName;
var path = PFConstants.VideoFolder;
var filepath = path + "/" + fileName;
transform.Find("DownLoadModal").gameObject.SetActive(map.EnableAR && !File.Exists(filepath));
UIManager.AddEvent(downloadBtn, EventTriggerType.PointerClick, (e) =>
{
downloadBtn.SetActive(false);
downloading.SetActive(true);
downloadTxt.SetActive(false);
slider.gameObject.SetActive(true);
Loom.Current.StartCoroutine(Utils.DownloadVideo(map.FileName, map.Url, (p, req) =>
{
slider.value = p;
}
, (p) =>
{
slider.value = 100f;
ShowOutLine();
transform.Find("DownLoadModal").gameObject.SetActive(false);
}));
});
transform.Find("Name").GetComponent<Text>().text = myMap.Name;
@@ -104,13 +131,19 @@ public class GameRoomMapItem : MonoBehaviour, IPointerExitHandler, IPointerEnter
private void Ride()
{
var list = FindObjectsOfType<GameRoomMapItem>();
foreach (var item in list)
var fileName = map.FileName;
var path = PFConstants.VideoFolder;
var filepath = path + "/" + fileName;
if ((map.EnableAR && !File.Exists(filepath) )|| !map.EnableAR)
{
item.HiddenOutLine();
var list = FindObjectsOfType<GameRoomMapItem>();
foreach (var item in list)
{
item.HiddenOutLine();
}
ShowOutLine();
listController.Select(map);
}
ShowOutLine();
listController.Select(map);
}
public void ShowOutLine()
@@ -0,0 +1,55 @@
using Assets.Scripts;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
class GameRoomPassword : MonoBehaviour
{
public GameObject enterBtn;
public GameObject backBtn;
public InputField passwordInput;
public GameRoomListController manager;
public string Password { get; set; }
private void Start()
{
passwordInput.onValueChanged.AddListener((e) =>
{
Password = e;
});
UIManager.AddEvent(enterBtn, EventTriggerType.PointerClick, ConfirmClick); //确定
UIManager.AddEvent(backBtn, EventTriggerType.PointerClick, CancelClick); //取消
}
private void Refresh()
{
passwordInput.text = "";
}
private async void ConfirmClick(BaseEventData baseEventData)
{
if (string.IsNullOrEmpty(Password))
{
Utils.showToast(gameObject, App.GetLocalString("room password can not be empty"));
return;
}
var RoomId = manager.GetRoomId();
var result = await ConfigHelper.GameRoomApi.ConfirmRoomPwd(RoomId, Password);
if (!result.result)
{
Utils.showToast(gameObject, result.errMsg);
return;
}
Refresh();
gameObject.SetActive(false);
manager.ShowDownLoadConfirm();
}
private void CancelClick(BaseEventData baseEventData)
{
Refresh();
gameObject.SetActive(false);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: ea7f659ae39c16b46b8449abf56f3fea
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,119 @@
using Assets.Scenes.Ride.Scripts;
using Assets.Scripts;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
class GameRoomPlayerPanel : MonoBehaviour
{
public Text userNametxt;
public Text weigthTxt;
public Text ftpTxt;
public RawImage head;
public GameObject owner;
public GameObject playerModal;
public GameObject notInUseModal;
public GameObject inviteModal;
public GameObject kickModal;
public GameObject me;
public GameObject ready;
public GameObject kickBtn;
public GameObject cancelBtn;
public int sort;
public int UserId { get; set; }
private void Start()
{
var manager = FindObjectOfType<GameRoomDetailController>();
var inviteBtn = inviteModal.transform.Find("InviteBtn").gameObject;
UIManager.AddEvent(inviteBtn,EventTriggerType.PointerClick,(e)=> {
Utils.CopyToClipboard($"GameRoom/{manager.GameRoom.Id}");
Utils.showToast(transform.parent.gameObject, App.GetLocalString("copy to clipboard successfully!"));
});
UIManager.AddEvent(gameObject, EventTriggerType.PointerClick, (e) =>
{
kickModal.SetActive(true);
});
UIManager.AddEvent(cancelBtn, EventTriggerType.PointerExit, (e) =>
{
kickModal.SetActive(false);
});
UIManager.AddEvent(kickBtn, EventTriggerType.PointerClick, (e) =>
{
MapUDPService.SendGameRoomKick(App.gameRoomDetail.Id, UserId, App.CurrentUser.Id);
});
}
public void Init(int userId, string userName,string headUrl,double weight, float ftp,bool isOwner,int Status)
{
UserId = userId;
inviteModal.SetActive(false);
notInUseModal.SetActive(false);
Utils.DisplayHead(head, headUrl);
userNametxt.text = userName;
weigthTxt.text = weight.ToString();
ftpTxt.text = ftp.ToString();
me.SetActive(App.CurrentUser.Id == userId);
owner.SetActive(isOwner);
//Show ready
ready.SetActive(!isOwner && Status == 1);
}
public void UpdatePlayer(int userId, string userName, string headUrl, double weight, float ftp, bool isOwner, int Status)
{
UserId = userId;
inviteModal.SetActive(false);
notInUseModal.SetActive(false);
userNametxt.text = userName;
weigthTxt.text = weight.ToString();
ftpTxt.text = ftp.ToString();
me.SetActive(App.CurrentUser.Id == userId);
owner.SetActive(isOwner);
ready.SetActive(!isOwner && Status == 1);
}
private void Update()
{
}
public void Ready()
{
ready.SetActive(true);
}
public void UnReady()
{
ready.SetActive(false);
}
public void ForceQuit()
{
//TODO:踢人
NotInUse();
}
public void ShowQuitModal()
{
kickModal.SetActive(true);
}
public void ShowInviteModal()
{
UserId = 0;
inviteModal.SetActive(true);
}
public void NotInUse()
{
UserId = 0;
notInUseModal.SetActive(true);
}
public void Me()
{
me.SetActive(true);
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6fabe7328397c8f468d2fb938ca70f48
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -0,0 +1,203 @@
using Assets.Scenes.Ride.Scripts;
using Assets.Scripts;
using Assets.Scripts.Apis.Models;
using System;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;
public class GameRoomDetailController : PFUIPanel
{
public RawImage Avatar;
public Text idText;
public Text roomName;
public Text routeName;
public Text distanceText;
public Text eleText;
public Text slopeText;
public Text rideText;
public RawImage altitudeGraph;
public GameObject bestTab;
public Text bestTabName;
public Text bestTabTimer;
public RawImage bestTabHead;
public GameObject readyBtn;
public GameObject startBtn;
public GameObject quitBtn;
public GameObject cancelBtn;
public GameRoomModel GameRoom { get; set; }
public DateTime? StartTime { get; set; }
public int Status { get; set; }
protected override void Start()
{
base.Start();
transform.Find("MainNav").GetComponent<MainNav>().ShowBack();
Utils.DisplayHead(Avatar, App.CurrentUser.WxHeadImg);
UIManager.AddEvent(startBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, (e) =>
{
var startTime = UIManager.Now.GetDateTime().ToUniversalTime().AddMilliseconds(10);
MapUDPService.SendGameRoomStartTime(App.gameRoomDetail.Id, startTime);
});
//准备
UIManager.AddEvent(readyBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, (e) =>
{
Status = 1;
readyBtn.SetActive(false);
cancelBtn.SetActive(true);
MapUDPService.SendGameRoomReadyStatus(App.gameRoomDetail.Id, App.CurrentUser.Id, Status);
});
//取消准备
UIManager.AddEvent(cancelBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, (e) =>
{
Status = 0;
readyBtn.SetActive(true);
cancelBtn.SetActive(false);
MapUDPService.SendGameRoomReadyStatus(App.gameRoomDetail.Id, App.CurrentUser.Id, Status);
});
}
public override void Show()
{
base.Show();
GameRoom = App.gameRoomDetail;
Init();
}
float timer = 0f;
private void Update()
{
timer -= Time.deltaTime;
while (timer < 0)
{
MapUDPService.Send(0, App.CurrentUser.Id, new double[] { 0d, 0d }, competitionId: 0, roomId: GameRoom.Id);
var list = MapUDPService.GetGameRoomList(GameRoom.Id);
var playerList = FindObjectsOfType<GameRoomPlayerPanel>();
//自己
var mine = list.Where(c => c.RoomDetail.UserId == App.CurrentUser.Id).FirstOrDefault();
if (mine != null)
{
//是否是房主
var owner = mine.RoomDetail.IsOwner;
readyBtn.SetActive(!owner);
startBtn.SetActive(owner);
//是否准备
//readyBtn.SetActive(!owner && mine.RoomDetail.Status == 0);
//cancelBtn.SetActive(!owner && mine.RoomDetail.Status == 1);
}
//新增/更新
foreach (var item in list)
{
var current = playerList.Where(c => c.UserId == item.Id).FirstOrDefault();
if (current == null)
{
var s = playerList.Where(c => c.UserId == 0).OrderBy(c=>c.sort).FirstOrDefault();
if (s != null)
{
s.Init(item.Id,item.Name, item.HeadImage, item.Weight, item.FTP, item.RoomDetail.IsOwner, item.RoomDetail.Status);
}
}
else
{
current.UpdatePlayer(item.Id, item.Name, item.HeadImage, item.Weight, item.FTP, item.RoomDetail.IsOwner,item.RoomDetail.Status);
}
}
//删除
foreach (var item in playerList)
{
if (item.UserId != 0)
{
var current = list.Where(c => c.Id == item.UserId).FirstOrDefault();
if (current == null)
{
item.ShowInviteModal();
}
var myself = list.Where(c => c.RoomDetail.UserId == App.CurrentUser.Id).FirstOrDefault();
if (myself == null)
{
Utils.showToast(gameObject,App.GetLocalString("you've been kicked out of the room"));
UIManager.ShowGameRoomListPanel();
}
}
}
////监听startTime
//var msg = list.Where(c => c.RoomDetail != null && c.RoomDetail.s.HasValue).FirstOrDefault();
//if (msg != null)
//{
// StartTime = msg.StartTime.Value.ToLocalTime();
// Debug.Log(StartTime);
//}
//倒计时
//4.更换房间房主
//5.标记当前用户
timer += 1f;
}
}
private void Init()
{
UIManager.AddEvent(startBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, (e) =>
{
//TODO:
});
UIManager.AddEvent(quitBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, (e) =>
{
//TODO:
});
UIManager.AddEvent(cancelBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, (e) =>
{
//TODO:
});
idText.text = GameRoom.Id.ToString().PadLeft(7, '0');
roomName.text = GameRoom.Name;
routeName.text = GameRoom.MapRouteName;
distanceText.text = $"{Math.Round(GameRoom.Distance, 1)}KM";
eleText.text = $"{Math.Round(GameRoom.TotalClimb, 0)}M";
slopeText.text = $"{Math.Round(GameRoom.AverageGrade, 1)}%";
if (!string.IsNullOrEmpty(GameRoom.BestNickName))
{
bestTab.SetActive(true);
bestTabName.text = GameRoom.BestNickName;
bestTabTimer.text = GameRoom.BestTotalTime;
Utils.DisplayHead(bestTabHead, GameRoom.BestWxHeadImg);
}
Utils.DisplayHead(altitudeGraph, GameRoom.AltitudeGraph);
}
public void Ready()
{
}
public void Quit()
{
}
public void NotInUse()
{
}
protected override void OnDisable()
{
App.gameRoomDetail = null;
}
protected override void OnDestroy()
{
App.gameRoomDetail = null;
}
}
@@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 62eee39fef61c1d479fb401e0ce37755
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,9 +1,11 @@
using Assets.Scenes.Ride.Scripts;
using Assets.Scripts;
using Assets.Scripts.Apis.Models;
using Assets.Scripts.UI.Prefab.MapList;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.EventSystems;
@@ -33,26 +35,60 @@ public class GameRoomListController : PFUIPanel
private bool startMouse;
List<string> hands = new List<string>();
private int selectedRouteId;
private MapRoute Map;
private int pageIndex = 0;
private bool isEnd = false;
private GameObject step1Btn;
private GameObject step2Btn;
private GameObject next;
private GameObject previous;
private GameObject create;
private GameObject cancel;
private GameObject right;
private GameObject right2;
private GameObject btn30;
private GameObject btn40;
private GameObject btn50;
private GameObject btn60;
private GameObject btn2;
private GameObject btn3;
private GameObject btn4;
private GameObject btn5;
private GameObject btn6;
private Transform enterRoomModal;
private string RoomName;
private string Roompwd;
private int hours;
private int mins;
private int CloseTime;
private int Members;
private GameRoomModel GameRoom;
protected override void Awake()
{
base.Awake();
}
protected override void Start()
{
base.Start();
Avatar = transform.Find("Avatar").GetComponent<RawImage>();
CreateRoomBtn = transform.Find("SwitchMode/GoList").gameObject;
MapList = transform.Find("MapList").gameObject;
Utils.DisplayImage(Avatar, App.CurrentUser.WxHeadImg);
UIManager.AddEvent(CreateRoomBtn, UnityEngine.EventSystems.EventTriggerType.PointerClick, CreateGameRoom);
InitStep1();
}
MapList = transform.Find("MapList").gameObject;
enterRoomModal = transform.Find("EnterRoomModal");
InitStep1();
}
private void Update()
{
if (Input.GetAxis("Mouse ScrollWheel") != 0)
@@ -76,7 +112,6 @@ public class GameRoomListController : PFUIPanel
onEndEdit();
}
}
private void InitStep1()
{
sort = "Near";
@@ -221,67 +256,68 @@ public class GameRoomListController : PFUIPanel
Refresh();
});
}
Refresh();
//下一步
step1Btn = transform.Find("MapList/Modal/Left/Step1Btn").gameObject;
step2Btn = transform.Find("MapList/Modal/Left/Step2Btn").gameObject;
next = transform.Find("MapList/Modal/Left/Next").gameObject;
previous = transform.Find("MapList/Modal/Left/Previous").gameObject;
create = transform.Find("MapList/Modal/Left/Create").gameObject;
cancel = transform.Find("MapList/Modal/Left/Cancel").gameObject;
right = transform.Find("MapList/Modal/Right").gameObject;
right2 = transform.Find("MapList/Modal/Right2").gameObject;
next.GetComponent<Button>().interactable = false;
next.GetComponent<Button>().enabled = false;
previous = transform.Find("MapList/Modal/Left/Previous").gameObject;
create = transform.Find("MapList/Modal/Left/Create").gameObject;
create.GetComponent<Button>().interactable = false;
create.GetComponent<Button>().enabled = false;
cancel = transform.Find("MapList/Modal/Left/Cancel").gameObject;
right = transform.Find("MapList/Modal/Right").gameObject;
right2 = transform.Find("MapList/Modal/Right2").gameObject;
UIManager.AddEvent(cancel, EventTriggerType.PointerClick, (e) =>
{
MapList.SetActive(false);
});
UIManager.AddEvent(next, EventTriggerType.PointerClick, (e) =>
{
next.SetActive(false);
previous.SetActive(true);
cancel.SetActive(false);
create.SetActive(true);
right2.SetActive(true);
right.SetActive(false);
step2Btn.transform.Find("Title").GetComponent<Text>().color = Color.white;
step1Btn.transform.Find("Title").GetComponent<Text>().color = PFConstants.grey;
previous.transform.Find("Text").GetComponent<Text>().color = Color.white;
step1Btn.transform.Find("Bg").gameObject.SetActive(false);
step2Btn.transform.Find("Bg").gameObject.SetActive(true);
HandleStepBtn(next.name);
});
UIManager.AddEvent(previous, EventTriggerType.PointerClick, (e) =>
{
next.SetActive(true);
previous.SetActive(false);
cancel.SetActive(true);
create.SetActive(false);
right2.SetActive(false);
right.SetActive(true);
step1Btn.transform.Find("Title").GetComponent<Text>().color = Color.white;
step2Btn.transform.Find("Title").GetComponent<Text>().color = PFConstants.grey;
step1Btn.transform.Find("Bg").gameObject.SetActive(true);
step2Btn.transform.Find("Bg").gameObject.SetActive(false);
HandleStepBtn(previous.name);
});
UIManager.AddEvent(create, EventTriggerType.PointerClick, async (e) =>
{
var result = await ConfigHelper.GameRoomApi.Add(RoomName,selectedRouteId,Roompwd,UIManager.Now.GetDateTime(),CloseTime,Members);
if (result.result)
{
MapList.SetActive(false);
}
else
{
UIManager.ShowAlert("error", result.errMsg);
}
});
}
private GameObject step1Btn;
private GameObject step2Btn;
private GameObject next;
private GameObject previous;
private GameObject create;
private GameObject cancel;
private GameObject right;
private GameObject right2;
private string RoomName;
private string Roompwd;
private int hours;
private int mins;
private int CloseTime;
private int Members;
private void InitStep2()
{
//关门时间
btn30 = right2.transform.Find("btn30").gameObject;
btn40 = right2.transform.Find("btn40").gameObject;
btn50 = right2.transform.Find("btn50").gameObject;
btn60 = right2.transform.Find("btn60").gameObject;
//房间人数
btn2 = right2.transform.Find("btn2").gameObject;
btn3 = right2.transform.Find("btn3").gameObject;
btn4 = right2.transform.Find("btn4").gameObject;
btn5 = right2.transform.Find("btn5").gameObject;
btn6 = right2.transform.Find("btn6").gameObject;
//房间名和密码
var hourInputField = right2.transform.Find("HourInputField").GetComponent<InputField>();
var minInputField = right2.transform.Find("MinInputField").GetComponent<InputField>();
var roomNameInputField = right2.transform.Find("RoomNameInputField").GetComponent<InputField>();
@@ -289,122 +325,123 @@ public class GameRoomListController : PFUIPanel
//房间名
roomNameInputField.onValueChanged.AddListener((e) => {
RoomName = e;
HandleFormInput();
});
//房间密码
passwordInputField.onValueChanged.AddListener((e) => {
Roompwd = e;
HandleFormInput();
});
UIManager.AddEvent(minInputField.gameObject, EventTriggerType.Select, (e) => {
hourInputField.GetComponent<Outline>().enabled = true;
HandleFormInput();
});
//关门时间
var btn30 = right2.transform.Find("btn30").gameObject;
var btn40 = right2.transform.Find("btn40").gameObject;
var btn50 = right2.transform.Find("btn50").gameObject;
var btn60 = right2.transform.Find("btn60").gameObject;
ColorUtility.TryParseHtmlString("#3D3E4D", out Color grey);
ColorUtility.TryParseHtmlString("#F93086", out Color pink);
UIManager.AddEvent(btn30,EventTriggerType.PointerClick, (e) =>
{
CloseTime = 30;
btn30.GetComponent<Image>().color = pink;
btn40.GetComponent<Image>().color = grey;
btn50.GetComponent<Image>().color = grey;
btn60.GetComponent<Image>().color = grey;
HandleCloseTimeBtnClick(30, btn30.name);
});
UIManager.AddEvent(btn40, EventTriggerType.PointerClick, (e) =>
{
CloseTime = 40;
btn30.GetComponent<Image>().color = grey;
btn40.GetComponent<Image>().color = pink;
btn50.GetComponent<Image>().color = grey;
btn60.GetComponent<Image>().color = grey;
HandleCloseTimeBtnClick(40, btn40.name);
});
UIManager.AddEvent(btn50, EventTriggerType.PointerClick, (e) =>
{
CloseTime = 50;
btn30.GetComponent<Image>().color = grey;
btn40.GetComponent<Image>().color = grey;
btn50.GetComponent<Image>().color = pink;
btn60.GetComponent<Image>().color = grey;
HandleCloseTimeBtnClick(50, btn50.name);
});
UIManager.AddEvent(btn60, EventTriggerType.PointerClick, (e) =>
{
CloseTime = 60;
btn30.GetComponent<Image>().color = grey;
btn40.GetComponent<Image>().color = grey;
btn50.GetComponent<Image>().color = grey;
btn60.GetComponent<Image>().color = pink;
HandleCloseTimeBtnClick(60, btn60.name);
});
//小时
hourInputField.onValueChanged.AddListener((e) => {
hours = Convert.ToInt32(e);
CloseTime = hours * 60 + mins;
btn30.GetComponent<Image>().color = grey;
btn40.GetComponent<Image>().color = grey;
btn50.GetComponent<Image>().color = grey;
btn60.GetComponent<Image>().color = grey;
HandleCloseTimeBtnClick(CloseTime, hourInputField.name);
});
//分钟
minInputField.onValueChanged.AddListener((e) => {
mins = Convert.ToInt32(e);
CloseTime = hours * 60 + mins;
btn30.GetComponent<Image>().color = grey;
btn40.GetComponent<Image>().color = grey;
btn50.GetComponent<Image>().color = grey;
btn60.GetComponent<Image>().color = grey;
HandleCloseTimeBtnClick(CloseTime, minInputField.name);
});
//房间人数
var btn2 = right2.transform.Find("btn2").gameObject;
var btn3 = right2.transform.Find("btn3").gameObject;
var btn4 = right2.transform.Find("btn4").gameObject;
var btn5 = right2.transform.Find("btn5").gameObject;
var btn6 = right2.transform.Find("btn6").gameObject;
UIManager.AddEvent(btn2, EventTriggerType.PointerClick, (e) =>
{
Members = 2;
btn2.GetComponent<Image>().color = pink;
btn3.GetComponent<Image>().color = grey;
btn4.GetComponent<Image>().color = grey;
btn5.GetComponent<Image>().color = grey;
btn6.GetComponent<Image>().color = grey;
HandleMembersBtnClick(2, btn2.name);
});
UIManager.AddEvent(btn3, EventTriggerType.PointerClick, (e) =>
{
Members = 3;
btn2.GetComponent<Image>().color = grey;
btn3.GetComponent<Image>().color = pink;
btn4.GetComponent<Image>().color = grey;
btn5.GetComponent<Image>().color = grey;
btn6.GetComponent<Image>().color = grey;
HandleMembersBtnClick(3, btn3.name);
});
UIManager.AddEvent(btn4, EventTriggerType.PointerClick, (e) =>
{
Members = 4;
btn2.GetComponent<Image>().color = grey;
btn3.GetComponent<Image>().color = grey;
btn4.GetComponent<Image>().color = pink;
btn5.GetComponent<Image>().color = grey;
btn6.GetComponent<Image>().color = grey;
HandleMembersBtnClick(4, btn4.name);
});
UIManager.AddEvent(btn5, EventTriggerType.PointerClick, (e) =>
{
Members = 5;
btn2.GetComponent<Image>().color = grey;
btn3.GetComponent<Image>().color = grey;
btn4.GetComponent<Image>().color = grey;
btn5.GetComponent<Image>().color = pink;
btn6.GetComponent<Image>().color = grey;
HandleMembersBtnClick(5, btn5.name);
});
UIManager.AddEvent(btn6, EventTriggerType.PointerClick, (e) =>
{
Members = 6;
btn2.GetComponent<Image>().color = grey;
btn3.GetComponent<Image>().color = grey;
btn4.GetComponent<Image>().color = grey;
btn5.GetComponent<Image>().color = grey;
btn6.GetComponent<Image>().color = pink;
HandleMembersBtnClick(6, btn6.name);
});
}
private void HandleStepBtn(string btnName)
{
next.SetActive(btnName == previous.name);
previous.SetActive(btnName != previous.name);
cancel.SetActive(btnName == previous.name);
create.SetActive(btnName != previous.name);
right2.SetActive(btnName != previous.name);
right.SetActive(btnName == previous.name);
step1Btn.transform.Find("Title").GetComponent<Text>().color = btnName == previous.name ? Color.white : PFConstants.grey;
step2Btn.transform.Find("Title").GetComponent<Text>().color = btnName != previous.name ? Color.white : PFConstants.grey;
previous.transform.Find("Text").GetComponent<Text>().color = btnName == previous.name ? PFConstants.grey : Color.white;
step1Btn.transform.Find("Bg").gameObject.SetActive(btnName == previous.name);
step2Btn.transform.Find("Bg").gameObject.SetActive(btnName != previous.name);
}
private void HandleFormInput()
{
if (Members >= 2 && !string.IsNullOrEmpty(RoomName) && CloseTime > 0)
{
create.GetComponent<Image>().color = PFConstants.Pink;
create.transform.Find("Text").GetComponent<Text>().color = Color.white;
create.GetComponent<Button>().interactable = true;
create.GetComponent<Button>().enabled = true;
}
else
{
ColorUtility.TryParseHtmlString("#5C5C6E", out Color grey);
ColorUtility.TryParseHtmlString("#23232D", out Color dark);
create.GetComponent<Image>().color = dark;
create.transform.Find("Text").GetComponent<Text>().color = grey;
create.GetComponent<Button>().interactable = false;
create.GetComponent<Button>().enabled = false;
}
}
private void HandleCloseTimeBtnClick(int closeTime,string btnName)
{
ColorUtility.TryParseHtmlString("#3D3E4D", out Color grey);
ColorUtility.TryParseHtmlString("#F93086", out Color pink);
CloseTime = closeTime;
btn30.GetComponent<Image>().color = btn30.name == btnName ? pink : grey;
btn40.GetComponent<Image>().color = btn40.name == btnName ? pink : grey;
btn50.GetComponent<Image>().color = btn50.name == btnName ? pink : grey;
btn60.GetComponent<Image>().color = btn60.name == btnName ? pink : grey;
HandleFormInput();
}
private void HandleMembersBtnClick(int members,string btnName)
{
ColorUtility.TryParseHtmlString("#3D3E4D", out Color grey);
ColorUtility.TryParseHtmlString("#F93086", out Color pink);
Members = members;
btn2.GetComponent<Image>().color = btn2.name == btnName ? pink : grey;
btn3.GetComponent<Image>().color = btn3.name == btnName ? pink : grey;
btn4.GetComponent<Image>().color = btn4.name == btnName ? pink : grey;
btn5.GetComponent<Image>().color = btn5.name == btnName ? pink : grey;
btn6.GetComponent<Image>().color = btn6.name == btnName ? pink : grey;
HandleFormInput();
}
private void ChangeDistance(int index)
{
@@ -426,9 +463,63 @@ public class GameRoomListController : PFUIPanel
Refresh();
}
}
public void ShowPwdConfirm()
{
enterRoomModal.gameObject.SetActive(true);
}
//如果本地没有视频文件则弹窗下载否则直接进入房间
public void ShowDownLoadConfirm()
{
var fileName = GameRoom.FileName;
var path = PFConstants.VideoFolder;
var filepath = path + "/" + fileName;
var download = transform.Find("DownloadPanel").gameObject;
if (!File.Exists(filepath))
{
download.SetActive(true);
download.GetComponent<GameRoomDownLoad>().Init(RoomId, GameRoom.FileName, GameRoom.FileUrl, this);
}
else
{
if (File.Exists(filepath))
{
GetInRoom();
}
}
}
private int RoomId;
public void GetInRoom()
{
var result = ConfigHelper.GameRoomApi.GetDetail(RoomId);
if (result.result)
{
App.gameRoomDetail = result.data;
//TODO:一些状态的校验
//1.房间人数已经满了
//2.房间状态不对
//发送TCP信息
MapUDPService.SendJoinGameRoom(App.gameRoomDetail.Id,App.CurrentUser.Id,UIManager.Now.GetDateTime().ToUniversalTime());
UIManager.ShowGameRoomDetailPanel();
}
else
{
Utils.showToast(gameObject, result.errMsg);
}
}
public void SelectRoom(GameRoomModel room)
{
GameRoom = room;
RoomId = GameRoom.Id;
}
public int GetRoomId()
{
return RoomId;
}
public void Select(MapRoute map)
{
Map = map;
selectedRouteId = map.Id;
next.GetComponent<Image>().color = PFConstants.Pink;
next.transform.Find("Text").GetComponent<Text>().color = Color.white;
@@ -464,14 +555,14 @@ public class GameRoomListController : PFUIPanel
GetList();
}
void onEndEdit()
private void onEndEdit()
{
var t = searchInput.GetComponent<InputField>().text;
ftname = t;
Refresh();
}
void DisplayMaps(List<MapRoute> list)
private void DisplayMaps(List<MapRoute> list)
{
if (map != null)
{
@@ -485,8 +576,7 @@ public class GameRoomListController : PFUIPanel
}
}
}
async void GetList()
private async void GetList()
{
if (isEnd) return;
var res = await ConfigHelper.mapApi.GetList(pageIndex, pageSize, ftname, distance, string.Join(",", hands), is3d, sort, sortDire);
@@ -514,8 +604,6 @@ public class GameRoomListController : PFUIPanel
}
}
//创建房间
private void CreateGameRoom(BaseEventData data)
{