91 lines
3.2 KiB
C#
91 lines
3.2 KiB
C#
using AdamSync;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.SceneManagement;
|
|
using UnityEngine.UI;
|
|
|
|
public class GameManager : MonoBehaviour
|
|
{
|
|
public SyncPlayerTransform playerTransformPrefab;
|
|
public Transform spawnPos;
|
|
public List<ulong> userIds = new List<ulong>();
|
|
// Start is called before the first frame update
|
|
private void Start()
|
|
{
|
|
SyncCreateRoom.getroomusersRequset += OnGetRoomUsers;
|
|
SyncCreateRoom.send2roomRequset += OnOtherPlayerOnline;
|
|
SyncPlayerTransform spt = Instantiate(playerTransformPrefab);
|
|
spt.gameObject.SetActive(true);
|
|
spt.gameObject.transform.position = spawnPos.position;
|
|
spt.gameObject.transform.eulerAngles = spawnPos.eulerAngles;
|
|
spt.SetPlayerInfo(ulong.Parse(GlobalFlag.currentUser.user_id), GlobalFlag.currentUser.login_name, ulong.Parse(GlobalFlag.roomID), true);
|
|
userIds.Add(ulong.Parse(GlobalFlag.currentUser.user_id));
|
|
string msg = "getroomusers ";
|
|
_ = SyncCreateRoom.SendMessageAsync(msg);
|
|
}
|
|
|
|
|
|
|
|
|
|
public void OnOtherPlayerOnline(string msg)
|
|
{
|
|
StopCoroutine(WaitSpawn(msg));
|
|
StartCoroutine(WaitSpawn(msg));
|
|
}
|
|
|
|
private IEnumerator WaitSpawn(string msg)
|
|
{
|
|
yield return new WaitForSeconds(0.5f);
|
|
Debug.Log(msg);
|
|
string[] data = msg.Split(',');
|
|
switch (data[0])
|
|
{
|
|
case "online":
|
|
ulong userId = ulong.Parse(data[1]);
|
|
if (!userIds.Contains(userId))
|
|
{
|
|
SyncPlayerTransform spt = Instantiate(playerTransformPrefab);
|
|
spt.gameObject.SetActive(true);
|
|
spt.gameObject.transform.position = spawnPos.position;
|
|
spt.gameObject.transform.eulerAngles = spawnPos.eulerAngles;
|
|
spt.SetPlayerInfo(ulong.Parse(data[1]), data[2], ulong.Parse(data[3]), false);
|
|
}
|
|
break;
|
|
case "offline":
|
|
break;
|
|
}
|
|
}
|
|
|
|
private void OnGetRoomUsers(string obj)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(obj)) return;
|
|
string[] data = obj.Split(';');
|
|
Debug.Log("datas=" + data[0]);
|
|
for (int i = 0; i < data.Length; i++)
|
|
{
|
|
int index = i;
|
|
string[] userInfo = data[index].Split(',');
|
|
if (!userIds.Contains(ulong.Parse(userInfo[0])))
|
|
{
|
|
SyncPlayerTransform spt = Instantiate(playerTransformPrefab);
|
|
spt.gameObject.SetActive(true);
|
|
spt.SetPlayerInfo(ulong.Parse(userInfo[0]), userInfo[1], ulong.Parse(userInfo[2]), false);
|
|
spt.transform.position = new Vector3(spawnPos.position.x + index * 0.5f, spawnPos.position.y, spawnPos.position.z + index * 0.5f);
|
|
spt.transform.eulerAngles = spawnPos.eulerAngles;
|
|
userIds.Add(ulong.Parse(userInfo[0]));
|
|
}
|
|
}
|
|
string msg = string.Format("send2room " + "online,"+ ulong.Parse(GlobalFlag.currentUser.user_id));
|
|
_ = SyncCreateRoom.SendMessageAsync(msg);
|
|
}
|
|
|
|
|
|
|
|
public void OnBack()
|
|
{
|
|
SceneManager.LoadScene("TEstSync");
|
|
}
|
|
}
|