Exemplo n.º 1
0
    public void Complete()
    {
        foreach (GameObject pannel in teamPannels)
        {
            Team team = Match.MakeTeam();
            team.color   = pannel.GetComponent <Image>().color;
            team.color.a = 1;

            foreach (Transform js in pannel.transform)
            {
                JavascriptPannel jsPannel = js.gameObject.GetComponent <JavascriptPannel>();
                team.AddJSInfo(jsPannel.jsInfo);

                if (jsPannel.jsInfo.isMine && !Match.myTeam.Contains(team))
                {
                    Match.myTeam.Add(team);
                }
            }
        }
        Match.CompleteMakeTeams();

        if (NetworkValues.isServer)
        {
            Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.START));
        }
        ScreenFader.MoveSceneGlobal("Playground");
    }
Exemplo n.º 2
0
    void SendMessagesToNewbie(TcpClient client, NetworkDecorator.NetworkMessage message)
    {
        if (message.header != NetworkHeader.NEWBIE)
        {
            return;
        }

        Debug.Log("NEWBIE COMES!");

        int numTeam = teamList.transform.childCount;

        if (numTeam > 2)
        {
            for (int i = 0; i < numTeam - 2; ++i)
            {
                Server.instance.SendToCleint(client, NetworkDecorator.AttachHeader(NetworkHeader.ADDTEAM));
            }
        }
        foreach (Transform team in teamList.transform)
        {
            foreach (Transform fleet in team)
            {
                string str = team.gameObject.GetComponent <NetworkTeamPannel>().MakeNetworkMessage(NetworkHeader.ADDJS, fleet.gameObject, true);
                Debug.Log("NEWBIE : " + str);
                Server.instance.SendToCleint(client, str);
            }
        }
        Server.instance.SendToCleint(client, NetworkDecorator.AttachHeader(NetworkHeader.CHANGEGROUNDSIZE, GameValueSetter.groundSize.ToString()));
        Server.instance.SendToCleint(client, NetworkDecorator.AttachHeader(NetworkHeader.CHANGESHIPSPERFLEET, GameValueSetter.numShipsPerFleet.ToString()));
    }
Exemplo n.º 3
0
    public void Send(string msg)
    {
        string message = NetworkValues.name + ":" + input.text;

        Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.CHAT, message));
        AddMessage(message);
    }
Exemplo n.º 4
0
 void OnMessageReceived(NetworkDecorator.NetworkMessage m)
 {
     if (m.header == NetworkHeader.CHAT)
     {
         AddMessage(m.message);
     }
 }
Exemplo n.º 5
0
 public void Restart()
 {
     if (NetworkValues.isServer)
     {
         Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.RESTART));
     }
 }
Exemplo n.º 6
0
 public void Close()
 {
     Debug.Log("close client");
     Send(NetworkDecorator.AttachHeader(NetworkHeader.ClOSE, NetworkValues.name));
     NetworkValues.isNetwork = false;
     client.GetStream().Close();
     client.Close();
 }
Exemplo n.º 7
0
    public void Update()
    {
        if (server.Pending())
        {
            clients.Add(server.AcceptTcpClient());
        }
        foreach (TcpClient client in clients)
        {
            var stream = client.GetStream();
            if (stream.DataAvailable)
            {
                byte[] buffer = NetworkStreamReader.Read(stream, client.ReceiveBufferSize);

                Mirroring(client, buffer);

                var message = restMessage + System.Text.Encoding.UTF8.GetString(buffer);
                restMessage = "";
                string[] messages = message.Split('뷁');

                for (int i = 1; i < messages.Length; ++i)
                {
                    string   msgRaw = messages[i];
                    string[] msgs   = msgRaw.Split('끊');

                    if (msgs.Length == 1)
                    {
                        restMessage = msgs[0];
                        continue;
                    }
                    string msg = msgs[0];

                    if (msg.Length == 0)
                    {
                        continue;
                    }
                    if (msg.Length == 0)
                    {
                        continue;
                    }
                    foreach (OnMessageReceived fn in onMessageReceived)
                    {
                        NetworkDecorator.NetworkMessage m = NetworkDecorator.StringToMessage(msg);
                        fn(client, m);
                        if (m.header == NetworkHeader.ClOSE)
                        {
                            removingClients.Add(client);
                        }
                    }
                }
            }
        }
        foreach (TcpClient client in removingClients)
        {
            clients.Remove(client);
        }
        removingClients.Clear();
    }
Exemplo n.º 8
0
 public void Close()
 {
     Debug.Log("close server");
     Send(NetworkDecorator.AttachHeader(NetworkHeader.ClOSESERVER));
     NetworkValues.isServer = false;
     server.Stop();
     clients.Clear();
     removingClients.Clear();
 }
Exemplo n.º 9
0
 public static void GameOver()
 {
     if (NetworkValues.isNetwork)
     {
         Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.GAMEOVER, NetworkValues.name));
     }
     isGameOver = true;
     ScreenFader.MoveSceneGlobal("Score");
 }
Exemplo n.º 10
0
 void Start()
 {
     if (!NetworkValues.isNetwork)
     {
         return;
     }
     shouldRemoveListener = true;
     Client.instance.onMessageReceived.Add(OnMessageReceived);
     Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.NEWBIE, NetworkValues.name));
 }
Exemplo n.º 11
0
 public void ChangeGroundSize(string groundSize)
 {
     if (NetworkValues.isServer)
     {
         Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.CHANGEGROUNDSIZE, groundSize));
     }
     else
     {
         GameValueSetter.groundSize = int.Parse(groundSize);
         textGroundSize.text        = groundSize;
     }
 }
Exemplo n.º 12
0
 public void ChangeShipsPerFleet(string shipsPerFleet)
 {
     if (NetworkValues.isServer)
     {
         Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.CHANGESHIPSPERFLEET, shipsPerFleet));
     }
     else
     {
         GameValueSetter.numShipsPerFleet = int.Parse(shipsPerFleet);
         textShipsPerFleet.text           = shipsPerFleet;
     }
 }
Exemplo n.º 13
0
    public string MakeNetworkMessage(string header, GameObject pannel, bool code = false)
    {
        StringBuilder b = new StringBuilder(transform.GetSiblingIndex().ToString());

        b.Append(":");
        b.Append(pannel.name);
        if (code)
        {
            b.Append(":콛");
            b.Append(pannel.GetComponent <JavascriptPannel>().jsInfo.code);
        }

        return(NetworkDecorator.AttachHeader(header, b.ToString()));
    }
Exemplo n.º 14
0
 void OnMessageReceived(NetworkDecorator.NetworkMessage m)
 {
     switch (m.header)
     {
         case NetworkHeader.RESTART:
             ScreenFader.MoveSceneGlobal("MakeTeam");
             break;
         case NetworkHeader.ClOSESERVER:
             Client.instance.Close();
             ScreenFader.MoveSceneGlobal("MainMenu");
             break;
         case NetworkHeader.ClOSE:
             chat.AddMessage("<color='#ff0000'>" + m.message + " gone.." + "</color>");
             break;
     }
 }
Exemplo n.º 15
0
 void OnMessageReceived(NetworkDecorator.NetworkMessage m)
 {
     switch (m.header)
     {
         case NetworkHeader.ClOSESERVER:
             Client.instance.Close();
             SceneManager.LoadScene("MainMenu");
             break;
         case NetworkHeader.ACCEPTTICK:
             NetworkValues.acceptedTick = int.Parse(m.message);
             break;
         case NetworkHeader.CONSOLE:
             console.AddPendingCommand(m.message);
             break;
     }
 }
Exemplo n.º 16
0
    public void AddTeam(bool sendMessage = true)
    {
        GameObject pannel = (GameObject)Instantiate(Resources.Load("TeamPannel"));

        pannel.transform.SetParent(transform);
        pannel.transform.localScale = Vector3.one;

        pannel.GetComponent <Image>().color = GoodColor.DequeueColor();

        teamPannels.Add(pannel);

        if (NetworkValues.isServer && NetworkValues.isNetwork && sendMessage)
        {
            Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.ADDTEAM));
        }
    }
Exemplo n.º 17
0
    public void Update()
    {
        if (!NetworkValues.isNetwork)
        {
            return;
        }
        var stream = client.GetStream();

        if (stream.CanRead && stream.DataAvailable)
        {
            byte[] buffer = NetworkStreamReader.Read(stream, client.ReceiveBufferSize);

            var message = restMessage + System.Text.Encoding.UTF8.GetString(buffer);
            restMessage = "";
            string[] messages = message.Split('뷁');

            if (onMessageReceived.Count > 0)
            {
                for (int i = 1; i < messages.Length; ++i)
                {
                    string   msgRaw = messages[i];
                    string[] msgs   = msgRaw.Split('끊');

                    if (msgs.Length == 1)
                    {
                        restMessage = msgs[0];
                        continue;
                    }
                    string msg = msgs[0];

                    if (msg.Length == 0)
                    {
                        continue;
                    }

                    NetworkDecorator.NetworkMessage m = NetworkDecorator.StringToMessage(msg);
                    foreach (OnMessageReceived fn in onMessageReceived)
                    {
                        fn(m);
                    }
                }
            }
        }
    }
Exemplo n.º 18
0
    void OnMessageReceived(NetworkDecorator.NetworkMessage m)
    {
        switch (m.header)
        {
            case NetworkHeader.ADDJS:
                string[] strings = m.message.Split(':');
                AddJS(int.Parse(strings[0]), strings[1], m.message.Split('콛')[1]);
                break;

            case NetworkHeader.REMOVEJS:
                string[] strings2 = m.message.Split(':');
                RemoveJS(int.Parse(strings2[0]), strings2[1]);
                break;
            case NetworkHeader.ADDTEAM:
                teamList.GetComponent<TeamListPannel>().AddTeam();
                break;
            case NetworkHeader.REMOVETEAM:
                teamList.GetComponent<TeamListPannel>().RemoveTeam();
                break;
            case NetworkHeader.START:
                teamList.GetComponent<TeamListPannel>().Complete();
                ScreenFader.MoveSceneGlobal("Playground");
                break;
            case NetworkHeader.ClOSESERVER:
                Client.instance.Close();
            SceneManager.LoadScene("MainMenu");
                break;
            case NetworkHeader.CHANGEGROUNDSIZE:
                ChangeGroundSize(m.message);
                break;
            case NetworkHeader.CHANGESHIPSPERFLEET:
                ChangeShipsPerFleet(m.message);
                break;
            case NetworkHeader.NEWBIE:
                chat.AddMessage("<color='#ffff00'>" + m.message + " entered" + "</color>");
                break;
            case NetworkHeader.ClOSE:
                chat.AddMessage("<color='#ff0000'>" + m.message + " gone.." + "</color>");
                break;
        }
    }
Exemplo n.º 19
0
    void OnMessageReceivedAsServer(TcpClient client, NetworkDecorator.NetworkMessage m)
    {
        switch (m.header)
        {
            case NetworkHeader.NEWBIE:

                break;
            case NetworkHeader.REQUESTTICK:
                numRequest++;
                if (numRequest >= Server.instance.GetNumClients() && NetworkValues.requestedTick > NetworkValues.acceptedTick)
                {
                    Server.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.ACCEPTTICK, m.message));
                    numRequest = 0;
                }
                break;
            case NetworkHeader.GAMEOVER:
                NetworkValues.acceptedTick += 1000;
                break;

        }
    }
Exemplo n.º 20
0
    void OnMessageReceivedAsServer(TcpClient client, NetworkDecorator.NetworkMessage m)
    {
        switch (m.header)
        {
        case NetworkHeader.NEWBIE:

            break;

        case NetworkHeader.REQUESTTICK:
            numRequest++;
            if (numRequest >= Server.instance.GetNumClients() && NetworkValues.requestedTick > NetworkValues.acceptedTick)
            {
                Server.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.ACCEPTTICK, m.message));
                numRequest = 0;
            }
            break;

        case NetworkHeader.GAMEOVER:
            NetworkValues.acceptedTick += 1000;
            break;
        }
    }
Exemplo n.º 21
0
    public void RemoveTeam()
    {
        if (teamPannels.Count <= 2)
        {
            return;
        }
        foreach (GameObject pannel in teamPannels)
        {
            if (pannel.transform.childCount <= 0)
            {
                GoodColor.EnQueueColor(pannel.GetComponent <Image>().color);
                teamPannels.Remove(pannel);
                Destroy(pannel);
                break;
            }
        }

        if (NetworkValues.isServer)
        {
            Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.REMOVETEAM));
        }
    }
Exemplo n.º 22
0
 public void ExcuteCommand(string command, bool syncronized = false, FleetAILoader ai = null)
 {
     if (ai == null)
     {
         ai = selectedAI;
     }
     if (ai != null)
     {
         if (NetworkValues.isNetwork && !syncronized)
         {
             StringBuilder b = new StringBuilder(ai.fleet.name);
             b.Append("콛");
             b.Append(command);
             Client.instance.Send(NetworkDecorator.AttachHeader(NetworkHeader.CONSOLE, b.ToString()));
             AddPendingCommand(b.ToString());
         }
         else
         {
             ai.ExcuteCommand(command);
             WriteLog(command);
         }
     }
 }
Exemplo n.º 23
0
    void SendMessagesToNewbie(TcpClient client, NetworkDecorator.NetworkMessage message)
    {
        if (message.header != NetworkHeader.NEWBIE) return;

        Debug.Log("NEWBIE COMES!");

        int numTeam = teamList.transform.childCount;
        if (numTeam > 2)
        {
            for (int i = 0; i < numTeam - 2; ++i)
            {
                Server.instance.SendToCleint(client,NetworkDecorator.AttachHeader(NetworkHeader.ADDTEAM));
            }
        }
        foreach (Transform team in teamList.transform)
        {
            foreach (Transform fleet in team)
            {
                string str = team.gameObject.GetComponent<NetworkTeamPannel>().MakeNetworkMessage(NetworkHeader.ADDJS,fleet.gameObject, true);
                Debug.Log("NEWBIE : " + str);
                Server.instance.SendToCleint(client, str);
            }
        }
        Server.instance.SendToCleint(client, NetworkDecorator.AttachHeader(NetworkHeader.CHANGEGROUNDSIZE, GameValueSetter.groundSize.ToString()));
        Server.instance.SendToCleint(client, NetworkDecorator.AttachHeader(NetworkHeader.CHANGESHIPSPERFLEET, GameValueSetter.numShipsPerFleet.ToString()));
    }