坦克大战 八 网络模块:服务器

协议:

//添加玩家

       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);

       }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值