1. 程式人生 > >坦克大戰 八 網路模組:伺服器

坦克大戰 八 網路模組:伺服器

協議:

//新增玩家

       public void AddPlayer(string id)

       {

              lock (list)

              {//給每一個連進來來的玩家都new一個自己的資料類  儲存自己的資訊

                     ScenePlayer p = new ScenePlayer();

                     p.id = id;

                     list.Add(p);

              }-

       }

 

 

//傳送列表

       public void SendPlayerList(Player player)

       {

              int count = list.Count;

              ProtocolBytes protocol = new ProtocolBytes();

              protocol.AddString("GetList");

              protocol.AddInt(count);

              for (int i = 0; i < count; i++)

              {

                     ScenePlayer p = list[i];

                     protocol.AddString(p.id);

                     protocol.AddFloat(p.x);

                     protocol.AddFloat(p.y);

                     protocol.AddFloat(p.z);

                     protocol.AddInt(p.score);

              }

              player.Send(protocol);

       }

 

 

//更新資訊

       public void UpdateInfo(string id, float x, float y, float z, int score)

       {

              int count = list.Count;

              ProtocolBytes protocol = new ProtocolBytes();

              ScenePlayer p = GetScenePlayer(id);//到玩家集合裡獲取玩家

              if (p == null)

                     return;

              p.x = x;

              p.y = y;

              p.z = z;

              p.score = score;

       }

 

 

 HandlePlayerMsg

{

       //獲取分數

       //協議引數:

       //返回協議:int分數

       public void MsgGetScore(Player player, ProtocolBase protoBase)

       {

              ProtocolBytes protocolRet = new ProtocolBytes ();

              protocolRet.AddString ("GetScore");

              protocolRet.AddInt (player.data.score);

              player.Send (protocolRet);

              Console.WriteLine ("MsgGetScore " + player.id + player.data.score);

       }

       //增加分數

       //協議引數:

       public void MsgAddScore(Player player, ProtocolBase protoBase)

       {

              //獲取數值

              int start = 0;

              ProtocolBytes protocol = (ProtocolBytes)protoBase;

              string protoName = protocol.GetString (start, ref start);

              //處理

              player.data.score += 1;

              Console.WriteLine ("MsgAddScore " + player.id + " " + player.data.score.ToString ());

       }

       //獲取玩家列表

       public void MsgGetList(Player player, ProtocolBase protoBase)

       {

              Scene.instance.SendPlayerList (player);

       }

       

-

      //更新資訊

       public void MsgUpdateInfo(Player player, ProtocolBase protoBase)

       {

              //獲取數值

              int start = 0;

              ProtocolBytes protocol = (ProtocolBytes)protoBase;

              string protoName = protocol.GetString (start, ref start);

              float x = protocol.GetFloat (start, ref start);

              float y = protocol.GetFloat (start, ref start);

              float z = protocol.GetFloat (start, ref start);

              int score = player.data.score;

              //更新資訊服務端村玩家資訊的資料類

              Scene.instance.UpdateInfo (player.id, x, y, z, score);

              //廣播 傳送

              ProtocolBytes protocolRet = new ProtocolBytes();

              protocolRet.AddString ("UpdateInfo");

              protocolRet.AddString (player.id);

              protocolRet.AddFloat (x);

              protocolRet.AddFloat (y);

              protocolRet.AddFloat (z);

              protocolRet.AddInt (score);

              ServNet.instance.Broadcast (protocolRet);

       }

}