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 userIds = new List(); // Start is called before the first frame update void Start() { SyncCreateRoom.getroomusersRequset += OnGetRoomUsers; SyncCreateRoom.onlineRequset += OnOtherPlayerOnline; SyncPlayerTransform spt = Instantiate(playerTransformPrefab); 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); string msg = string.Format("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": int userId = int.Parse(data[1]); if (!userIds.Contains(userId)) { SyncPlayerTransform spt = Instantiate(playerTransformPrefab); 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) { 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(','); SyncPlayerTransform spt = Instantiate(playerTransformPrefab); 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(int.Parse(userInfo[0])); } string msg = string.Format("send2room "+ "online"); _ = SyncCreateRoom.SendMessageAsync(msg); } // Update is called once per frame void Update() { } public void OnBack() { SceneManager.LoadScene("TEstSync"); } }