using UnityEngine;
using TNet;
using System.IO;
using System.Net;
public class LobbyManager : MonoBehaviour
{
public GameObject playerNamePrefab;
public GameObject teamOneParent;
public GameObject teamTwoParent;
public int playerCount = 0;
TNObject tno;
List
<PlayerName
> onePlayers
= new List
<PlayerName
>(); List
<PlayerName
> twoPlayers
= new List
<PlayerName
>(); bool mRebuild = true;
bool mShown = false;
void OnNetworkJoinChannel (bool result, string message) {
if(TNManager.isHosting) {
playerCount++;
TNManager.player.team = 1;
}
mRebuild = true;
}
void OnNetworkPlayerJoin (Player p) {
if(TNManager.isHosting) {
playerCount++;
tno.Send("UpdatePlayerCount", Target.OthersSaved, playerCount);
if(playerCount <= 5) {
p.team = 1;
tno.Send("UpdatePlayerTeam", Target.OthersSaved, p.team);
}
else {
p.team = 2;
tno.Send("UpdatePlayerTeam", Target.OthersSaved, p.team);
}
}
mRebuild = true;
}
void OnNetworkPlayerLeave (Player p) {
if(TNManager.isHosting) {
playerCount--;
tno.Send("UpdatePlayerCount", Target.OthersSaved, playerCount);
p.team = 0;
tno.Send("UpdatePlayerTeam", Target.OthersSaved, p.team);
}
mRebuild = true;
}
void Start() { tno = GetComponent<TNObject>(); }
void Update ()
{
if (mRebuild)
{
mRebuild = false;
for (int i = 0; i < onePlayers.size; ++i)
{
PlayerName p = onePlayers[i];
Destroy(p.gameObject);
}
for (int i = 0; i < twoPlayers.size; ++i)
{
PlayerName p = twoPlayers[i];
Destroy(p.gameObject);
}
onePlayers.Clear();
twoPlayers.Clear();
AddPlayer(TNManager.player);
for (int i = 0; i < TNManager.players.size; ++i)
AddPlayer(TNManager.players[i]);
}
}
void AddPlayer (Player p)
{
PlayerName pn = GetPlayerEntry(p);
if (pn == null)
{
if(p.team == 1) {
GameObject go = MainMenuNetwork.AddChild(teamOneParent, playerNamePrefab);
pn = go.GetComponent<PlayerName>();
pn.player = p;
pn.UpdateInfo(mShown);
onePlayers.Add(pn);
}
else if (p.team == 2) {
GameObject go = MainMenuNetwork.AddChild(teamTwoParent, playerNamePrefab);
pn = go.GetComponent<PlayerName>();
pn.player = p;
pn.UpdateInfo(mShown);
twoPlayers.Add(pn);
}
}
}
PlayerName GetPlayerEntry (Player p)
{
if(p.team == 1) {
for (int i = 0; i < onePlayers.size; ++i)
{
PlayerName pn = onePlayers[i];
if (pn.player == p) return pn;
}
}
else if (p.team == 2) {
for (int i = 0; i < twoPlayers.size; ++i)
{
PlayerName pn = twoPlayers[i];
if (pn.player == p) return pn;
}
}
return null;
}
[RFC] void UpdatePlayerCount(int count) { playerCount = count; }
[RFC] void UpdatePlayerTeam(int team) { TNManager.player.team = team; }
}