Esempio n. 1
0
        // 进入房间这个协议, authudp
        public void join(uint session, SprotoTypeBase responseObj)
        {
            C2sSprotoType.join.response o = responseObj as C2sSprotoType.join.response;
            GameService service           = (GameService)_ctx.QueryService(GameService.Name);

            service.Join(responseObj);
        }
Esempio n. 2
0
        private void Parse()
        {
            JSONObject json = new JSONObject(_r);

            if (json.type == JSONObject.Type.ARRAY)
            {
                for (int i = 0; i < json.list.Count; i++)
                {
                    string     key      = string.Format("Play{0}", i);
                    JSONObject tnode    = json.list[i];
                    string     protocol = tnode["protocol"].str;
                    long       pt       = tnode["pt"].i;
                    JSONObject args     = tnode["args"];
                    if (protocol == "players")
                    {
                        C2sSprotoType.join.response obj = new C2sSprotoType.join.response();
                        for (int j = 0; j < args.list.Count; j++)
                        {
                            C2sSprotoType.player player = new C2sSprotoType.player();
                            JSONObject           p      = args.list[i];
                            if (p["uid"].i == _ctx.U.Uid)
                            {
                                player.idx = p["idx"].i;
                                obj.me     = player;
                            }
                            else
                            {
                                player.idx = p["idx"].i;
                                if (obj.ps == null)
                                {
                                    obj.ps = new List <C2sSprotoType.player>();
                                }
                                obj.ps.Add(player);
                            }
                        }
                        GameService service = _ctx.QueryService <GameService>(GameService.Name);
                        service.OnRspJoin(obj);
                    }
                    else if (protocol == "peng")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.peng.request request = new S2cSprotoType.peng.request();
                            request.idx  = args["idx"].i;
                            request.card = args["card"].i;
                            request.code = args["code"].i;
                            request.hor  = args["hor"].i;
                            _controller.OnPeng(request);
                        });
                    }
                    else if (protocol == "gang")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.gang.request request = new S2cSprotoType.gang.request();
                            request.idx        = args["idx"].i;
                            request.card       = args["card"].i;
                            request.code       = args["code"].i;
                            request.hor        = args["hor"].i;
                            request.dian       = args["dian"].i;
                            JSONObject settles = args["settles"];
                            request.settles    = new List <S2cSprotoType.settle>();
                            for (int j = 0; j < settles.list.Count; j++)
                            {
                                JSONObject jsettle           = settles.list[j];
                                S2cSprotoType.settle ssettle = new S2cSprotoType.settle();
                                for (int m = 1; m < 5; m++)
                                {
                                    string pkey  = string.Format("p{0}", m);
                                    JSONObject p = jsettle.GetField(pkey);
                                    if (p != null && !p.IsNull)
                                    {
                                        S2cSprotoType.settlementitem item = new S2cSprotoType.settlementitem();
                                        item.idx  = p["idx"].i;
                                        item.chip = p["chip"].i;
                                        item.left = p["left"].i;

                                        JSONObject win = p["win"];
                                        item.win       = new List <long>();
                                        for (int k = 0; k < win.list.Count; k++)
                                        {
                                            item.win.Add(win.list[j].i);
                                        }
                                        JSONObject lose = p["lose"];
                                        for (int k = 0; k < lose.list.Count; k++)
                                        {
                                            item.lose.Add(lose.list[j].i);
                                        }
                                        item.gang   = p["gang"].i;
                                        item.hucode = p["hucode"].i;
                                        item.hujiao = p["hujiao"].i;
                                        item.hugang = p["hugang"].i;
                                        item.huazhu = p["huazhu"].i;
                                        item.dajiao = p["dajiao"].i;
                                        item.tuisui = p["tuisui"].i;

                                        if (m == 1)
                                        {
                                            ssettle.p1 = item;
                                        }
                                        else if (m == 2)
                                        {
                                            ssettle.p2 = item;
                                        }
                                        else if (m == 3)
                                        {
                                            ssettle.p3 = item;
                                        }
                                        else if (m == 4)
                                        {
                                            ssettle.p4 = item;
                                        }
                                    }
                                }
                                request.settles.Add(ssettle);
                            }
                            _controller.OnGang(request);
                        });
                    }
                    else if (protocol == "hu")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.hu.request request = new S2cSprotoType.hu.request();
                            request.hus    = new List <S2cSprotoType.huinfo>();
                            JSONObject hus = args["hus"];
                            for (int m = 0; m < hus.list.Count; m++)
                            {
                                JSONObject huinfo         = hus.list[m];
                                S2cSprotoType.huinfo item = new S2cSprotoType.huinfo();
                                item.idx  = huinfo["idx"].i;
                                item.card = huinfo["card"].i;
                                item.code = huinfo["code"].i;
                                item.jiao = huinfo["jiao"].i;
                                item.dian = huinfo["dian"].i;
                                item.gang = huinfo["gang"].i;
                                request.hus.Add(item);
                            }
                            JSONObject settles = args["settles"];
                            request.settles    = new List <S2cSprotoType.settle>();
                            for (int j = 0; j < settles.list.Count; j++)
                            {
                                JSONObject jsettle           = settles.list[j];
                                S2cSprotoType.settle ssettle = new S2cSprotoType.settle();
                                for (int m = 1; m < 5; m++)
                                {
                                    string pkey  = string.Format("p{0}", m);
                                    JSONObject p = jsettle.GetField(pkey);
                                    if (p != null && !p.IsNull)
                                    {
                                        S2cSprotoType.settlementitem item = new S2cSprotoType.settlementitem();
                                        item.idx  = p["idx"].i;
                                        item.chip = p["chip"].i;
                                        item.left = p["left"].i;

                                        JSONObject win = p["win"];
                                        item.win       = new List <long>();
                                        for (int k = 0; k < win.list.Count; k++)
                                        {
                                            item.win.Add(win.list[j].i);
                                        }
                                        JSONObject lose = p["lose"];
                                        for (int k = 0; k < lose.list.Count; k++)
                                        {
                                            item.lose.Add(lose.list[j].i);
                                        }
                                        item.gang   = p["gang"].i;
                                        item.hucode = p["hucode"].i;
                                        item.hujiao = p["hujiao"].i;
                                        item.hugang = p["hugang"].i;
                                        item.huazhu = p["huazhu"].i;
                                        item.dajiao = p["dajiao"].i;
                                        item.tuisui = p["tuisui"].i;

                                        if (m == 1)
                                        {
                                            ssettle.p1 = item;
                                        }
                                        else if (m == 2)
                                        {
                                            ssettle.p2 = item;
                                        }
                                        else if (m == 3)
                                        {
                                            ssettle.p3 = item;
                                        }
                                        else if (m == 4)
                                        {
                                            ssettle.p4 = item;
                                        }
                                    }
                                }
                                request.settles.Add(ssettle);
                            }
                            _controller.OnHu(request);
                        });
                    }
                    else if (protocol == "shuffle")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.shuffle.request request = new S2cSprotoType.shuffle.request();
                            request.first = args["first"].i;
                            request.p1    = new List <long>();
                            {
                                JSONObject p1 = args["p1"];
                                for (int j = 0; j < p1.list.Count; j++)
                                {
                                    request.p1.Add(p1.list[i].i);
                                }
                            }
                            {
                                JSONObject p2 = args["p2"];
                                for (int j = 0; j < p2.list.Count; j++)
                                {
                                    request.p2.Add(p2.list[i].i);
                                }
                            }
                            {
                                JSONObject p3 = args["p3"];
                                for (int j = 0; j < p3.list.Count; j++)
                                {
                                    request.p3.Add(p3.list[i].i);
                                }
                            }
                            {
                                JSONObject p4 = args["p4"];
                                for (int j = 0; j < p4.list.Count; j++)
                                {
                                    request.p4.Add(p4.list[i].i);
                                }
                            }
                            _controller.OnHu(request);
                        });
                    }
                    else if (protocol == "dice")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.dice.request request = new S2cSprotoType.dice.request();
                            request.first     = args["first"].i;
                            request.firsttake = args["firsttake"].i;
                            request.d1        = args["d1"].i;
                            request.d2        = args["d2"].i;
                            _controller.OnDice(request);
                        });
                    }
                    else if (protocol == "lead")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.lead.request request = new S2cSprotoType.lead.request();
                            request.idx  = args["idx"].i;
                            request.card = args["card"].i;
                            _controller.OnLead(request);
                        });
                    }
                    else if (protocol == "deal")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.deal.request request = new S2cSprotoType.deal.request();
                            request.firstidx  = args["firstidx"].i;
                            request.firsttake = args["firsttake"].i;
                            {
                                JSONObject p1 = args["p1"];
                                for (int j = 0; j < p1.list.Count; j++)
                                {
                                    request.p1.Add(p1.list[i].i);
                                }
                            }
                            {
                                JSONObject p2 = args["p2"];
                                for (int j = 0; j < p2.list.Count; j++)
                                {
                                    request.p2.Add(p2.list[i].i);
                                }
                            }
                            {
                                JSONObject p3 = args["p3"];
                                for (int j = 0; j < p3.list.Count; j++)
                                {
                                    request.p3.Add(p3.list[i].i);
                                }
                            }

                            {
                                JSONObject p4 = args["p4"];
                                for (int j = 0; j < p4.list.Count; j++)
                                {
                                    request.p4.Add(p4.list[i].i);
                                }
                            }
                            _controller.OnDeal(request);
                        });
                    }
                    else if (protocol == "over")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            _controller.OnOver(null);
                        });
                    }
                    else if (protocol == "xuanpao")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            _controller.OnXuanPao(null);
                        });
                    }
                    else if (protocol == "take_xuanque")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.take_xuanque.request request = new S2cSprotoType.take_xuanque.request();
                            request.countdown = args["countdown"].i;
                            request.your_turn = args["your_turn"].i;
                            request.card      = args["card"].i;
                            _controller.OnXuanQue(request);
                        });
                    }
                    else if (protocol == "xuanque")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.xuanque.request request = new S2cSprotoType.xuanque.request();
                            request.idx = args["idx"].i;
                            request.que = args["que"].i;
                            _controller.OnXuanQue(request);
                        });
                    }
                    else if (protocol == "settle")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.settle.request request = new S2cSprotoType.settle.request();

                            JSONObject settles = args["settles"];
                            request.settles    = new List <S2cSprotoType.settle>();
                            for (int j = 0; j < settles.list.Count; j++)
                            {
                                JSONObject jsettle           = settles.list[j];
                                S2cSprotoType.settle ssettle = new S2cSprotoType.settle();
                                for (int m = 1; m < 5; m++)
                                {
                                    string pkey  = string.Format("p{0}", m);
                                    JSONObject p = jsettle.GetField(pkey);
                                    if (p != null && !p.IsNull)
                                    {
                                        S2cSprotoType.settlementitem item = new S2cSprotoType.settlementitem();
                                        item.idx  = p["idx"].i;
                                        item.chip = p["chip"].i;
                                        item.left = p["left"].i;

                                        JSONObject win = p["win"];
                                        item.win       = new List <long>();
                                        for (int k = 0; k < win.list.Count; k++)
                                        {
                                            item.win.Add(win.list[j].i);
                                        }
                                        JSONObject lose = p["lose"];
                                        for (int k = 0; k < lose.list.Count; k++)
                                        {
                                            item.lose.Add(lose.list[j].i);
                                        }
                                        item.gang   = p["gang"].i;
                                        item.hucode = p["hucode"].i;
                                        item.hujiao = p["hujiao"].i;
                                        item.hugang = p["hugang"].i;
                                        item.huazhu = p["huazhu"].i;
                                        item.dajiao = p["dajiao"].i;
                                        item.tuisui = p["tuisui"].i;

                                        if (m == 1)
                                        {
                                            ssettle.p1 = item;
                                        }
                                        else if (m == 2)
                                        {
                                            ssettle.p2 = item;
                                        }
                                        else if (m == 3)
                                        {
                                            ssettle.p3 = item;
                                        }
                                        else if (m == 4)
                                        {
                                            ssettle.p4 = item;
                                        }
                                    }
                                }
                                request.settles.Add(ssettle);
                            }

                            _controller.OnSettle(request);
                        });
                    }
                    else if (protocol == "final_settle")
                    {
                        _ctx.Countdown(key, (int)pt, null, () => {
                            S2cSprotoType.final_settle.request request = new S2cSprotoType.final_settle.request();

                            JSONObject p1 = args["p1"];
                            request.p1    = new List <S2cSprotoType.settlementitem>();
                            for (int j = 0; j < p1.list.Count; j++)
                            {
                                S2cSprotoType.settlementitem item = new S2cSprotoType.settlementitem();
                                item.idx  = p1.list[j]["idx"].i;
                                item.chip = p1.list[j]["chip"].i;
                                item.left = p1.list[j]["left"].i;

                                JSONObject win = p1.list[j]["win"];
                                item.win       = new List <long>();
                                for (int k = 0; k < win.list.Count; k++)
                                {
                                    item.win.Add(win.list[j].i);
                                }
                                JSONObject lose = p1.list[j]["lose"];
                                for (int k = 0; k < lose.list.Count; k++)
                                {
                                    item.lose.Add(lose.list[j].i);
                                }
                                item.gang   = p1.list[j]["gang"].i;
                                item.hucode = p1.list[j]["hucode"].i;
                                item.hujiao = p1.list[j]["hujiao"].i;
                                item.hugang = p1.list[j]["hugang"].i;
                                item.huazhu = p1.list[j]["huazhu"].i;
                                item.dajiao = p1.list[j]["dajiao"].i;
                                item.tuisui = p1.list[j]["tuisui"].i;
                                request.p1.Add(item);
                            }

                            JSONObject p2 = args["p2"];
                            request.p2    = new List <S2cSprotoType.settlementitem>();
                            for (int j = 0; j < p2.list.Count; j++)
                            {
                                S2cSprotoType.settlementitem item = new S2cSprotoType.settlementitem();
                                item.idx  = p2.list[j]["idx"].i;
                                item.chip = p2.list[j]["chip"].i;
                                item.left = p2.list[j]["left"].i;

                                JSONObject win = p2.list[j]["win"];
                                item.win       = new List <long>();
                                for (int k = 0; k < win.list.Count; k++)
                                {
                                    item.win.Add(win.list[j].i);
                                }
                                JSONObject lose = p2.list[j]["lose"];
                                for (int k = 0; k < lose.list.Count; k++)
                                {
                                    item.lose.Add(lose.list[j].i);
                                }
                                item.gang   = p2.list[j]["gang"].i;
                                item.hucode = p2.list[j]["hucode"].i;
                                item.hujiao = p2.list[j]["hujiao"].i;
                                item.hugang = p2.list[j]["hugang"].i;
                                item.huazhu = p2.list[j]["huazhu"].i;
                                item.dajiao = p2.list[j]["dajiao"].i;
                                item.tuisui = p2.list[j]["tuisui"].i;
                                request.p2.Add(item);
                            }

                            JSONObject p3 = args["p3"];
                            request.p3    = new List <S2cSprotoType.settlementitem>();
                            for (int j = 0; j < p3.list.Count; j++)
                            {
                                S2cSprotoType.settlementitem item = new S2cSprotoType.settlementitem();
                                item.idx  = p3.list[j]["idx"].i;
                                item.chip = p3.list[j]["chip"].i;
                                item.left = p3.list[j]["left"].i;

                                JSONObject win = p3.list[j]["win"];
                                item.win       = new List <long>();
                                for (int k = 0; k < win.list.Count; k++)
                                {
                                    item.win.Add(win.list[j].i);
                                }
                                JSONObject lose = p3.list[j]["lose"];
                                for (int k = 0; k < lose.list.Count; k++)
                                {
                                    item.lose.Add(lose.list[j].i);
                                }
                                item.gang   = p3.list[j]["gang"].i;
                                item.hucode = p3.list[j]["hucode"].i;
                                item.hujiao = p3.list[j]["hujiao"].i;
                                item.hugang = p3.list[j]["hugang"].i;
                                item.huazhu = p3.list[j]["huazhu"].i;
                                item.dajiao = p3.list[j]["dajiao"].i;
                                item.tuisui = p3.list[j]["tuisui"].i;
                                request.p3.Add(item);
                            }

                            JSONObject p4 = args["p4"];
                            request.p4    = new List <S2cSprotoType.settlementitem>();
                            for (int j = 0; j < p4.list.Count; j++)
                            {
                                S2cSprotoType.settlementitem item = new S2cSprotoType.settlementitem();
                                item.idx  = p4.list[j]["idx"].i;
                                item.chip = p4.list[j]["chip"].i;
                                item.left = p4.list[j]["left"].i;

                                JSONObject win = p4.list[j]["win"];
                                item.win       = new List <long>();
                                for (int k = 0; k < win.list.Count; k++)
                                {
                                    item.win.Add(win.list[j].i);
                                }
                                JSONObject lose = p4.list[j]["lose"];
                                for (int k = 0; k < lose.list.Count; k++)
                                {
                                    item.lose.Add(lose.list[j].i);
                                }
                                item.gang   = p4.list[j]["gang"].i;
                                item.hucode = p4.list[j]["hucode"].i;
                                item.hujiao = p4.list[j]["hujiao"].i;
                                item.hugang = p4.list[j]["hugang"].i;
                                item.huazhu = p4.list[j]["huazhu"].i;
                                item.dajiao = p4.list[j]["dajiao"].i;
                                item.tuisui = p4.list[j]["tuisui"].i;
                                request.p4.Add(item);
                            }
                            request.over = args.GetField("over").b;
                            _controller.OnFinalSettle(request);
                        });
                    }
                }
            }
        }
Esempio n. 3
0
        public void OnRspJoin(SprotoTypeBase responseObj)
        {
            C2sSprotoType.join.response obj = responseObj as C2sSprotoType.join.response;
            if (obj.errorcode == Errorcode.SUCCESS)
            {
                _roomid = obj.roomid;
                _max    = obj.room_max;
                //_host = false;

                _controller = (GameController)_ctx.Push(typeof(GameController));

                Player player = new Bacon.Game.BottomPlayer(_ctx, this);
                player.Sid        = (uint)obj.me.sid;
                player.Idx        = (int)obj.me.idx;
                player.Chip       = (int)obj.me.chip;
                player.Sex        = (int)obj.me.sex;
                player.Name       = obj.me.name;
                player.Controller = _controller;
                player.Init();

                _myidx          = obj.me.idx;
                _playes[_myidx] = player;
                UnityEngine.Debug.Assert(_ctx.U.Subid == obj.me.sid);

                _joined++;
                _online++;

                if (obj.ps != null && obj.ps.Count > 0)
                {
                    for (int i = 0; i < obj.ps.Count; i++)
                    {
                        var  item   = obj.ps[i];
                        long offset = 0;
                        if (item.idx > _myidx)
                        {
                            offset = item.idx - _myidx;
                        }
                        else
                        {
                            offset = item.idx + 4 - _myidx;
                        }
                        switch (offset)
                        {
                        case 1: {
                            var rplayer = new Bacon.Game.RightPlayer(_ctx, this);
                            rplayer.Sid        = (uint)item.sid;
                            rplayer.Idx        = (int)item.idx;
                            rplayer.Chip       = (int)item.chip;
                            rplayer.Sex        = (int)item.sex;
                            rplayer.Name       = item.name;
                            rplayer.Controller = _controller;
                            rplayer.Init();
                            _playes[item.idx] = rplayer;
                        }
                        break;

                        case 2: {
                            var tplayer = new Bacon.Game.TopPlayer(_ctx, this);
                            tplayer.Sid        = (uint)item.sid;
                            tplayer.Idx        = (int)item.idx;
                            tplayer.Chip       = (int)item.chip;
                            tplayer.Sex        = (int)item.sex;
                            tplayer.Name       = item.name;
                            tplayer.Controller = _controller;
                            tplayer.Init();
                            _playes[item.idx] = tplayer;
                        }
                        break;

                        case 3: {
                            var lplayer = new Bacon.Game.LeftPlayer(_ctx, this);
                            lplayer.Sid        = (uint)item.sid;
                            lplayer.Idx        = (int)item.idx;
                            lplayer.Chip       = (int)item.chip;
                            lplayer.Sex        = (int)item.sex;
                            lplayer.Name       = item.name;
                            lplayer.Controller = _controller;
                            lplayer.Init();
                            _playes[item.idx] = lplayer;
                        }
                        break;

                        default:
                            break;
                        }
                        _joined++;
                        _online++;
                    }
                }
                SendStep();
            }
            else if (obj.errorcode == Errorcode.NOEXiST_ROOMID)
            {
                AppContext ctx = _ctx as AppContext;
                TipsMgr    mgr = ctx.GetTipsMgr();
                mgr.TipsContent = "不存在相应的房间号";

                MainController controller = _ctx.Peek <MainController>();

                //_ctx.EnqueueRenderQueue(controller.render)
            }
            else if (obj.errorcode == Errorcode.ROOM_FULL)
            {
                MainController controller = _ctx.Peek <MainController>();
                //controller.ShowTips("房间已经满了");
            }
        }
Esempio n. 4
0
        //public void SetupScene(EventCmd e) {
        //    GameObject word = e.Orgin;
        //    _scene = new Scene(_ctx, this, word);
        //}



        //public void OnMoveStart() {
        //    _moveflag = true;
        //}

        //public void OnMove(Vector2 d) {
        //    if (_moveflag) {
        //        UnityEngine.Debug.Log(string.Format("move: x {0}, y {1}", d.x, d.y));
        //        _moveflag = false;

        //        ////Vector2 dir = d.normalized;
        //        //Vector2 dir = d;
        //        //float speed = 10f;
        //        //Vector2 shift = dir * speed;
        //        //_myball.MoveBy(shift);
        //    }
        //}

        //public void OnMoveSpeed(Vector2 s) {
        //    if (_moveflag) {
        //        UnityEngine.Debug.Log(string.Format("speed: x {0}, y {1}", s.x, s.y));
        //    }
        //}


        #region response
        // 游戏协议
        // 主要是同步场景中已经加入的其他玩家
        public void Join(SprotoTypeBase responseObj)
        {
            C2sSprotoType.join.response obj = responseObj as C2sSprotoType.join.response;
            UnityEngine.Debug.Assert(obj.errorcode == Errorcode.SUCCESS);
        }