Beispiel #1
0
    //增加展厅留言
    public void MsgAddRoomChat(Player player, ProtocolBase protoBase)
    {
        //初始化数值
        int           start       = 0;
        ProtocolBytes protocol    = (ProtocolBytes)protoBase;
        string        protoName   = protocol.GetString(start, ref start);
        string        ChatMessage = protocol.GetString(start, ref start);//解码留言
        //获取展厅
        Room room = player.tempData.room;

        room.AddChatMessgae(player.id, ChatMessage);//将留言记录增添到数据库
        ProtocolBytes protocolRet = new ProtocolBytes();

        protocolRet.AddString("AddRoomChat"); //添加协议名
        protocolRet.AddString(player.id);     //添加留言者
        protocolRet.AddString(ChatMessage);   //添加留言
        room.Broadcast(protocolRet);          //广播
    }
Beispiel #2
0
    public void SendGetRoomList()
    {
        ProtocolBytes protocol = new ProtocolBytes();

        // 协议名
        protocol.AddString("GetRoomList");

        NetWorkManager.Instance.Send(protocol);
    }
Beispiel #3
0
    // 心跳
    public ProtocolBase GetHeartBeatProtocol()
    {
        //具体的发送内容根据服务端设定改动
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString(Constant.HeartBeat);

        return(protocol);
    }
Beispiel #4
0
    public void OnMsgSend()
    {
        if (chatInput.text == "")
        {
            return;
        }
        if (NetMgr.srvConn.status != Connection.Status.Connected)
        {
            Debug.Log("网络出问题了");
            return;
        }
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("SendChat");
        protocol.AddString(chatInput.text);
        Debug.Log("发送" + protocol.GetDesc());
        NetMgr.srvConn.Send(protocol, OnMsgBack);
    }
Beispiel #5
0
    public void SendShoot(string id, int isPlayer, int forward, Vector3 pos, int addforce)
    {
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("Shoot");
        protocol.AddString(id);
        protocol.AddInt(isPlayer);

        protocol.AddInt(forward);

        protocol.AddFloat(pos.x);
        protocol.AddFloat(pos.y);
        protocol.AddFloat(pos.z);

        protocol.AddInt(addforce);

        Send(protocol);
    }
    /// <summary>
    /// 同步调用其他玩家客户端中此GameObject中此脚本中的此方法
    /// </summary>
    /// <param name="_this">此脚本类的object,统一用this</param>
    /// <param name="methodName">函数名字</param>
    /// <param name="args">函数的参数,可动态扩充长度</param>
    /// <returns></returns>
    public void RPC(object _this, string methodName, params object[] args)
    {
        if (!GameMgr.instance)//GameMgr.instance没被初始化,则此时是离线状态
        {
            return;
        }
        ProtocolBytes proto = new ProtocolBytes();

        proto.AddString("RPC");
        proto.AddString(sync_id + "RPC");
        // componentName
        proto.AddString(_this.GetType().ToString());

        proto.AddString(methodName);
        // 问题1, 发送obj数组
        proto.AddObjects(args);
        NetMgr.srvConn.Send(proto);
    }
Beispiel #7
0
    //获取分数
    //协议参数
    //返回协议:int分数
    public void MsgGetScore(Player player, ProtocolBase protoBase)
    {
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("GetScore");
        protocol.AddInt(player.data.score);
        player.Send(protocol);
        Console.WriteLine("MsgGetScore " + player.id + " " + player.data.score);
    }
        /// <summary>
        /// 向指定玩家发送 该场景中的角色列表
        /// </summary>
        /// <param name="player">玩家</param>
        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);
        }
    private void OnJoinClick(string name)
    {
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("EnterRoom");
        protocol.AddInt(int.Parse(name));
        NetMgr.srvConn.Send(protocol, OnJoinClickBack);
        Debug.Log("请求进入房间:" + name);
    }
    private void Serialize()
    {
        p.Clear();
        p.AddString(currentType.Name);

        p.Serialize(startPrcedureTemplate);

        File.WriteAllBytes(savePath + currentType.Name, p.Encode());
    }
Beispiel #11
0
    public void OnRegClick()
    {
        if (idInput.text == "" || pwInput.text == "")
        {
            Debug.Log("用户名密码不能为空");
            return;
        }
        if (NetMgr.srvConn.status == Connection.Status.None)
        {
            NetMgr.srvConn.Connect();
        }
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("Register");
        protocol.AddString(idInput.text);
        protocol.AddString(pwInput.text);
        NetMgr.srvConn.Send(protocol, OnRegBack);
    }
Beispiel #12
0
    //获取图片、视频、模型的信息
    //协议参数:
    //返回协议:byte数组
    public void MsgGetResoure(Player player, ProtocolBase protoBase)
    {
        ProtocolBytes protocolRet = new ProtocolBytes();

        protocolRet.AddString("GetResoure");
        Room room = player.tempData.room;

        protocolRet.AddInt(room.resouredata.Count);
        foreach (string resoure in room.resouredata.Keys)
        {
            protocolRet.AddString(room.resouredata[resoure].resourename);
            protocolRet.AddString(room.resouredata[resoure].resoureins);
            protocolRet.AddString(room.resouredata[resoure].resouresort);
            protocolRet.AddString(room.resouredata[resoure].resoureadress);
        }
        player.Send(protocolRet);
        Console.WriteLine("MsgGetResoure " + player.id);
    }
Beispiel #13
0
    public void SetMyBattleCardList()
    {
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("SetMyBattleCardList");
        Debug.Log("发送 " + protocol.GetDesc());
        protocol.AddIntList(MyPlayer.Instance.data.BattleCardList);
        NetMgr.srvConn.Send(protocol, OnSetMyBattleCardListBack);
    }
Beispiel #14
0
        //登录
        //协议参数:str用户名,str密码
        //返回协议:-1表示失败 0表示成功
        public void MsgLogin(Conn conn, ProtocolBase protoBase)
        {
            //获取数值
            int           start     = 0;
            ProtocolBytes protocol  = (ProtocolBytes)protoBase;
            string        protoName = protocol.GetString(start, ref start);
            string        id        = protocol.GetString(start, ref start);
            string        pw        = protocol.GetString(start, ref start);
            string        strFormat = "[收到登录协议]" + conn.GetAddress();

            WbeService.instance.WriteLine(strFormat + " 用户名:" + id + " 密码:" + pw);
            //构建返回协议
            ProtocolBytes protocolRet = new ProtocolBytes();

            protocolRet.AddString("Login");
            //验证
            if (!DataMgr.instance.CheckPassword(id, pw))
            {
                protocolRet.AddInt(-1);
                Console.WriteLine("-1");
                conn.Send(protocolRet);
                return;
            }
            //是否已经登录
            ProtocolBytes protocolLogout = new ProtocolBytes();

            protocolLogout.AddString("Logout");
            if (!Player.KickOff(id, protocolLogout))
            {
                protocolRet.AddInt(-1);
                conn.Send(protocolRet);
                return;
            }

            //获取玩家数据
            PlayerData playerData = DataMgr.instance.GetPlayerData(id);

            //Console.WriteLine(playerData.name);

            if (playerData == null)
            {
                protocolRet.AddInt(-1);
                Console.WriteLine("-2");
                conn.Send(protocolRet);
                return;
            }
            conn.player      = new Player(id, conn);
            conn.player.data = playerData;
            //事件触发
            ServiceNet.instance.handlePlayerEvent.OnLogin(conn.player);

            //返回
            protocolRet.AddInt(0);
            Console.WriteLine("0");
            conn.Send(protocolRet);
            return;
        }
Beispiel #15
0
    public void OnScoreClick()
    {
        //PanelMgr.instance.OpenPanel<ScoreTips>("");
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("GetScore");
        Debug.Log("发送:" + protocol.GetDesc());
        NetMgr.srvConn.Send(protocol, OnScoreBack);
    }
Beispiel #16
0
    // 排行榜绑定事件
    public void OnLeaderBoardClick()
    {
        // 发送协议
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("LeaderBoard");
        Debug.Log("发送 " + protocol.GetDesc());
        NetMgr.srvConn.Send(protocol, OnLeaderBoardBack);
    }
Beispiel #17
0
    /// <summary>
    /// 根据用户名和密码构造登录协议
    /// </summary>
    /// <param name=""></param>
    public void SendLogin(string userName, string password)
    {
        if (connection == null)
        {
            Connect();
        }

        ProtocolBytes protocolBytes = new ProtocolBytes();

        // 协议名
        protocolBytes.AddString("LoginConn");

        // 协议参数
        protocolBytes.AddString(userName);
        protocolBytes.AddString(password);

        connection.Send(protocolBytes);
    }
Beispiel #18
0
    //死亡,并且同步信息到其他玩家实体上
    public void Die()
    {
        ProtocolBytes proto = new ProtocolBytes();

        proto.AddString("SyncPlayerDie");

        NetMgr.srvConn.Send(proto);
        RecvDie();
    }
Beispiel #19
0
    //通用
    public void SendStartScene(int index)
    {
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("StartScene");
        protocol.AddInt(index);

        Send(protocol);
    }
Beispiel #20
0
    /// <summary>
    /// 获取玩家战绩查询
    /// </summary>
    /// <param name="player"></param>
    /// <param name="protoBase"></param>
    public void MsgGetAchieve(Player player, ProtocolBase protoBase)
    {
        ProtocolBytes protocolRet = new ProtocolBytes();

        protocolRet.AddString("GetAchieve");
        protocolRet.AddInt(player.data.win);
        protocolRet.AddInt(player.data.fail);
        player.Send(protocolRet);
    }
Beispiel #21
0
    public override void OnShowing()
    {
        base.OnShowing();
        Transform skinTrans = skin.transform;

        //组件
        for (int i = 0; i < 6; i++)
        {
            string    name   = "PlayerPrefab" + i.ToString();
            Transform prefab = skinTrans.Find(name);
            prefabs.Add(prefab);
        }
        closeBtn = skinTrans.Find("CloseBtn").GetComponent <Button> ();
        startBtn = skinTrans.Find("StartBtn").GetComponent <Button> ();
        closeBtn.onClick.AddListener(OnCloseClick);
        startBtn.onClick.AddListener(OnStartClick);

        NetMgr.srvConn.msgDist.AddListener("GetRoomInfo", RecvGetRoomInfo);
        NetMgr.srvConn.msgDist.AddListener("Fight", RecvFight);

        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("GetRoomInfo");
        NetMgr.srvConn.Send(protocol);


        ProtocolBytes a = new ProtocolBytes();

        a.AddString("GetRoomInfo");
        a.AddInt(2);

        a.AddString("Killer");
        a.AddInt(1);
        a.AddInt(15);
        a.AddInt(18);
        a.AddInt(0);

        a.AddString("FireGod");
        a.AddInt(2);
        a.AddInt(3);
        a.AddInt(8);
        a.AddInt(1);
        RecvGetRoomInfo(a);
    }
Beispiel #22
0
    public void MsgSerachEnemy(Player player, ProtocolBase protoBase)
    {
        int           start     = 0;
        ProtocolBytes protocol  = (ProtocolBytes)protoBase;
        string        protoName = protocol.GetString(start, ref start);

        ProtocolBytes protocolRet = new ProtocolBytes();

        protocolRet.AddString("SerachEnemy");
        protocolRet.AddString("Test");
        List <int> EnemyBattleCardList = new List <int>()
        {
            5, 6, 7, 8, 9, 10
        };

        protocolRet.AddIntList(EnemyBattleCardList);

        player.conn.Send(protocolRet);
    }
Beispiel #23
0
    public void OnSignupClick()
    {
        if (usernameInput.text == "" || passwordInput.text == "")
        {
            Debug.Log("用户名密码不能为空!");
            return;
        }
        if (passwordInput.text != passwordInput2.text)
        {
            Debug.Log("两次密码不相同,请重新输入");
            return;
        }
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("Register");
        protocol.AddString(usernameInput.text);
        protocol.AddString(passwordInput.text);
        NetMgr.srvConn.Send(protocol, OnSignupBack);
    }
Beispiel #24
0
    //房间信息
    public ProtocolBytes GetRoomInfo()
    {
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("GetRoomInfo");
        //房间信息
        protocol.AddInt(list.Count);
        //每个玩家信息
        foreach (Player p in list.Values)
        {
            protocol.AddString(p.id);
            protocol.AddInt(p.tempData.team);
            protocol.AddInt(p.data.win);
            protocol.AddInt(p.data.fail);
            int isOwner = p.tempData.isOwner? 1: 0;
            protocol.AddInt(isOwner);
        }
        return(protocol);
    }
        /// <summary>
        /// 删除玩家
        /// </summary>
        /// <param name="id">角色ID</param>
        public void DelPlayer(string id)
        {
            lock (list)
            {
                ScenePlayer p = GetScenePlayer(id);
                if (p != null)
                {
                    list.Remove(p);
                }
            }
            //广播通知 其他玩家 该角色离开
            //发送 PlayerLeave
            ProtocolBytes protocol = new ProtocolBytes();

            protocol.AddString("PlayerLeave");
            protocol.AddString(id);
            //广播
            ServNet.instance.Broadcast(protocol);
        }
        public void StartFight()
        {
            //协议
            ProtocolBytes protocol = new ProtocolBytes();

            protocol.AddString("StartFight");
            NetMgr.srvConn.Send(protocol);
            //监听
            NetMgr.srvConn.msgDist.AddListener("StartFight", RecvStartFight);
        }
Beispiel #27
0
        //获取玩家信息
        public void MsgGetAchieve(Player player, ProtocolBase protoBase)
        {
            ProtocolBytes protocolRet = new ProtocolBytes();

            protocolRet.AddString("GetAchieve");
            protocolRet.AddInt(player.data.win);
            protocolRet.AddInt(player.data.fail);
            player.Send(protocolRet);
            Console.WriteLine("MsgGetScore " + player.id + player.data.win);
        }
Beispiel #28
0
    public void SendRoomNum(Conn conn)
    {
        ProtocolBytes proto = new ProtocolBytes();

        proto.AddString("RoomNum");
        int num = rooms[conn.roomid].num;

        proto.AddInt(num);
        rooms[conn.roomid].Broadcast(proto);
    }
Beispiel #29
0
    public void OnConfirmClick()
    {
        if (nameInput.text == "")
        {
            Debug.Log("姓名不能为空!");
            return;
        }
        if (NetMgr.srvConn.status != Connection.Status.Connected)
        {
            Debug.Log("网络出问题了");
            return;
        }
        ProtocolBytes protocol = new ProtocolBytes();

        protocol.AddString("EditName");
        protocol.AddString(nameInput.text);
        Debug.Log("发送" + protocol.GetDesc());
        NetMgr.srvConn.Send(protocol, OnConfirmBack);
    }
Beispiel #30
0
 //按下准备按钮
 public void OnReadyClick()
 {
     if (!isReady)
     {
         ProtocolBytes protocol = new ProtocolBytes();
         protocol.AddString("ReadyFight");
         Debug.Log("发送:" + protocol.GetDesc());
         NetMgr.srvConn.Send(protocol, OnReadyBack);
     }
 }