public void InitPlayers() { var aps = this.GetAllPlayers(); Dictionary <int, int> playerPosDic = new Dictionary <int, int>(); var poses = new TNet.List <int>(); foreach (var m in _cellStyleDic) { var style = (MapStyle)m.Value; if (style == MapStyle.CANYON || style == MapStyle.HILL) { continue; } poses.Add(m.Key); } foreach (var p in aps) { var idx = Random.Range(0, poses.Count); playerPosDic.Add(p.id, poses[idx]); poses.Remove(idx); } tno.Send("RFC_SyncPlayersPosInfoAndCreatePlayer", Target.All, playerPosDic.ToJsonString()); }
void RFC_SyncPlayersPosInfoAndCreatePlayer(string playersPosInfoDicStr) { Debug.Log(playersPosInfoDicStr); _playersOnCellDic = null; //var players = playersPosInfoDicStr.Split (','); //for (int i = 0; i < players.Length; i++) { // var pinfo = players [i].Split (':'); // _playersPosInfoDic.Add(int.Parse(pinfo[0]), int.Parse(pinfo[1])); //} _playersOnCellDic = playersPosInfoDicStr.ToNoramDic(); //foreach (var kvp in _playersOnCellDic) //{ // _mapCells [kvp.Value].SetPlayer (TNManager.GetPlayer(kvp.Key)); //} _playerGos = new TNet.List <PlayerGo> (); var pos = _mapCells [_playersOnCellDic [TNManager.player.id]].GetPlayerStandPos(); Color color = new Color(Random.value, Random.value, Random.value, 1f); TNManager.Instantiate(GameCtr.Instance.ChannelID, "RCC_SpawnPlayer", _playerPrefabName, true, pos, Quaternion.identity, color, TNManager.playerID); UICtr.Instance.HideReadyButton(); GameCtr.Instance.SetStateTo(GameState.PLAYING); }
// Update is called once per frame void Update() { if (Export) { var obbjs = new TNet.List <TNObject>(); obbjs.Add(gameObject.GetComponent <TNObject>()); TNManager.ExportObjects(obbjs, delegate(DataNode n){ Debug.Log("exported" + n.ToString()); }); Export = false; } }
private void InitMapByHoset() { // Let's not try to create objects unless we are in this channel if (TNManager.isConnected && !TNManager.IsInChannel(GameCtr.Instance.ChannelID)) { return; } if (!TNManager.isHosting) { return; } var aps = this.GetAllPlayers(); var mapStyleDic = new Dictionary <int, int> (); var poses = new TNet.List <int>(); for (int i = 0; i < MapMgr.Instance.MapCellCount; i++) { poses.Add(i); } for (int i = 0; i < aps.Count; i++) { var posIdx = Random.Range(0, poses.Count); mapStyleDic.Add(posIdx, (int)MapStyle.PLAIN); poses.Remove(posIdx); } foreach (var p in poses) { mapStyleDic.Add(p, Random.Range(0, System.Enum.GetNames(typeof(MapStyle)).Length)); } tno.Send("RFC_InitMap", Target.All, mapStyleDic.ToJsonString()); }
IEnumerator UpdatePlayerList() { while (true) { var playerTeam = TNManager.player.dataNode.GetChild <int>(NetworkManager.NODE_TeamId); var players = new TNet.List <PlayerListModel>(); foreach (var p in TNManager.players) { players.Add(GetPlayerListModel(p)); } players.Add(GetPlayerListModel(TNManager.player)); int lastTeamId = -2; int teamLcv = 0; int playerLcv = 0; foreach (var pr in players.ToArray() .OrderBy(p => p.TeamID) .ThenByDescending(p => p.Kills) .ThenBy(p => p.Name)) { if (lastTeamId != pr.TeamID) { lastTeamId = pr.TeamID; GameObject teamRow = null; if (TeamLines.Count <= teamLcv) { teamRow = GameObject.Instantiate(TeamRow) as GameObject; teamRow.transform.SetParent(TeamPanel.transform); teamRow.SetActive(false); TeamLines.Add(teamRow); } teamRow = TeamLines[teamLcv]; teamRow.transform.SetParent(TeamListPanel.transform); teamRow.SetActive(true); var tr = teamRow.GetComponent <TeamRow>(); if (playerTeam == -1) { tr.Name.text = "Not yet picked a team."; } else { tr.Name.text = "Team " + lastTeamId.ToString(); } teamLcv++; } GameObject playerRow = null; if (PlayerLines.Count <= playerLcv) { playerRow = GameObject.Instantiate(PlayerRow) as GameObject; playerRow.transform.SetParent(TeamPanel.transform); playerRow.SetActive(false); PlayerLines.Add(playerRow); } playerRow = PlayerLines[playerLcv]; playerRow.transform.SetParent(TeamListPanel.transform); playerRow.SetActive(true); var prScript = playerRow.GetComponent <PlayerRow>(); prScript.Name.text = pr.Name; prScript.Score.text = string.Format("K: {0} D: {1}", pr.Kills, pr.Deaths); prScript.Info.text = "stuff.."; playerLcv++; } // hide and move any unused panels until needed for (int lcv = teamLcv; lcv < TeamLines.Count; lcv++) { TeamLines[lcv].transform.SetParent(TeamPanel.transform); TeamLines[lcv].SetActive(false); } for (int lcv = playerLcv; lcv < PlayerLines.Count; lcv++) { PlayerLines[lcv].transform.SetParent(TeamPanel.transform); PlayerLines[lcv].SetActive(false); } yield return(new WaitForSeconds(refreshTime)); } }