Exemplo n.º 1
0
        /// <summary> 向其他玩家推送在监狱移动</summary>
        public void PusuMovingActivity(Int64 userid, view_scene_user scene)
        {
            if (!Variable.OnlinePlayer.ContainsKey(userid))
            {
                return;
            }
            var otherplays = Core.Common.Scene.ActivityOtherPlayers(userid, (int)ModuleNumber.BUILDING);   //监狱内其他玩家

            foreach (var item in otherplays)
            {
                var tokenTest = new CancellationTokenSource();
                var temp      = new ScenePush()
                {
                    user_id       = userid,
                    scene_key     = item,
                    user_scene    = scene.CloneEntity(),
                    other_user_id = Variable.Activity.ScenePlayer[item].user_id
                };
                Task.Factory.StartNew(m =>
                {
                    var t = m as ScenePush;
                    if (t == null)
                    {
                        return;
                    }
                    var aso = new ASObject(BuildData((int)ResultType.SUCCESS, t.user_id, t.user_scene.X, t.user_scene.Y));
                    SendPv(t.other_user_id, aso, (int)BuildingCommand.PUSH_PLAYER_MOVING, (int)ModuleNumber.BUILDING);
                    tokenTest.Cancel();
                }, temp, tokenTest.Token);
            }
        }
Exemplo n.º 2
0
        /// <summary> 向其他玩家推送A玩家回到活动出生点</summary>
        public void PushRestartActivity(Int64 userid)
        {
            if (!Variable.OnlinePlayer.ContainsKey(userid))
            {
                return;
            }
            var otherplays = Core.Common.Scene.ActivityOtherPlayers(userid, (int)ModuleNumber.BUILDING);

            foreach (var item in otherplays)
            {
                var tokenTest = new CancellationTokenSource();
                var temp      = new ScenePush()
                {
                    user_id       = userid,
                    scene_key     = item,
                    other_user_id = Variable.Activity.ScenePlayer[item].user_id
                };
                Task.Factory.StartNew(m =>
                {
                    var t = m as ScenePush;
                    if (t == null)
                    {
                        tokenTest.Cancel();
                    }
                    var dic = new Dictionary <string, object>()
                    {
                        { "userId", t.user_id }
                    };
                    SendPv(t.other_user_id, new ASObject(dic), (int)BuildingCommand.PUSH_PLAYER_CHANGE, (int)ModuleNumber.BUILDING);
                    tokenTest.Cancel();
                }, temp, tokenTest.Token);
            }
        }
Exemplo n.º 3
0
        private void StartTask(ScenePush temp)
        {
            if (temp == null)
            {
                return;
            }
            var dic = new Dictionary <string, object>
            {
                { "result", (int)ResultType.SUCCESS },
                { "userId", temp.user_id }
            };
            var aso = new ASObject(dic);

            SendPv(temp.other_user_id, aso, (int)SceneCommand.PLAYER_EXIT_SCENET, (int)ModuleNumber.SCENE);
        }
Exemplo n.º 4
0
        /// <summary> 推送玩家进入场景并向其他人推送 </summary>
        public void PushMyEnterScene(Int64 userid, view_scene_user userscene)
        {
            if (!Variable.OnlinePlayer.ContainsKey(userid))
            {
                return;
            }
            if (userscene == null)
            {
                return;
            }
            userscene.model_number = (int)ModuleNumber.SCENE;
            var key = string.Format("{0}_{1}", (int)ModuleNumber.SCENE, userid);

            if (Variable.SCENCE.ContainsKey(key))
            {
                Variable.SCENCE[key].model_number = (int)ModuleNumber.SCENE;
            }
            var otherplays = Core.Common.Scene.GetOtherPlayers(userid, userscene.scene_id, (int)ModuleNumber.SCENE);//同场景内的其他玩家
            var aso        = new ASObject(BuildData((int)ResultType.SUCCESS, userscene.scene_id, userscene.X, userscene.Y, otherplays));

            SendPv(userid, aso, (int)SceneCommand.PUSH_ENTER_SCENET, (int)ModuleNumber.SCENE);
            foreach (var item in otherplays)
            {
                var temp = new ScenePush()
                {
                    user_id       = userid,
                    other_user_id = item.user_id,
                    user_scene    = userscene.CloneEntity()
                };
                var tokentest = new CancellationTokenSource();
                Task.Factory.StartNew(m =>
                {
                    var t = m as ScenePush;
                    if (t == null)
                    {
                        return;
                    }
                    var aso1 = new ASObject(BuildData((int)ResultType.SUCCESS, t.user_scene));
                    SendPv(t.other_user_id, aso1, (int)SceneCommand.PLAYER_ENTER_SCENE, (int)ModuleNumber.SCENE);// 向其他玩家推送A玩家退出后的场景
                    tokentest.Cancel();
                }, temp, tokentest.Token);
            }
        }
Exemplo n.º 5
0
        /// <summary> 推送玩家离开场景 </summary>
        public void PushMyLeaveScene(Int64 userid, view_scene_user userscene)
        {
            if (!Variable.OnlinePlayer.ContainsKey(userid))
            {
                return;
            }
            if (userscene == null)
            {
                return;
            }
            userscene.model_number = (int)ModuleNumber.BUILDING;
            var session = Variable.OnlinePlayer[userid] as TGGSession;

            if (session == null)
            {
                return;
            }
            session.Player.Scene.model_number = (int)ModuleNumber.BUILDING;
            var otherplays = Core.Common.Scene.GetOtherPlayers(userid, userscene.scene_id, (int)ModuleNumber.SCENE);

            foreach (var item in otherplays)
            {
                var tokentest = new CancellationTokenSource();
                var temp      = new ScenePush()
                {
                    user_id       = userid,
                    other_user_id = item.user_id
                };
                Task.Factory.StartNew(m =>
                {
                    var t = m as ScenePush;
                    StartTask(t);
                    tokentest.Cancel();
                }, temp, tokentest.Token);
            }
        }
Exemplo n.º 6
0
        /// <summary>向其他玩家推送A玩家离开活动 </summary>
        public void PusuLeaveActivity(Int64 userid)
        {
            if (!Variable.OnlinePlayer.ContainsKey(userid))
            {
                return;
            }
            var             otherplays = Core.Common.Scene.ActivityOtherPlayers(userid, (int)ModuleNumber.BUILDING); //活动内内其他玩家
            var             key        = string.Format("{0}_{1}", (int)ModuleNumber.BUILDING, userid);
            view_scene_user scene;

            Variable.Activity.ScenePlayer.TryRemove(key, out scene);
            foreach (var item in otherplays)
            {
                var tokenTest = new CancellationTokenSource();
                var temp      = new ScenePush()
                {
                    user_id       = userid,
                    scene_key     = item,
                    other_user_id = Variable.Activity.ScenePlayer[item].user_id
                };
                Task.Factory.StartNew(m =>
                {
                    var t = m as ScenePush;
                    if (t == null)
                    {
                        return;
                    }
                    var dic = new Dictionary <string, object>()
                    {
                        { "userId", t.user_id }
                    };
                    var aso = new ASObject(dic);
                    SendPv(t.other_user_id, aso, (int)BuildingCommand.PUSH_PLAYER_EXIT, (int)ModuleNumber.BUILDING);
                }, temp, tokenTest.Token);
            }
        }