Example #1
0
        /// <summary>活动内下线 </summary>
        private void ActivityOut(Int64 userid)
        {
            var mn = 0;

            if (Variable.Activity.ScenePlayer.Keys.Contains(string.Format("{0}_{1}", (int)ModuleNumber.SIEGE, userid)))
            {
                mn = (int)ModuleNumber.SIEGE;
            }
            if (Variable.Activity.ScenePlayer.Keys.Contains(string.Format("{0}_{1}", (int)ModuleNumber.BUILDING, userid)))
            {
                mn = (int)ModuleNumber.BUILDING;
            }
            var             otherplays = Scene.ActivityOtherPlayers(userid, mn);//活动内其他玩家
            var             key        = string.Format("{0}_{1}", mn, userid);
            view_scene_user scene;

            Variable.Activity.ScenePlayer.TryRemove(key, out scene);

            foreach (var item in otherplays)
            {
                var obj = new OnlineObject {
                    OffLine = userid, OtherPlayer = Variable.Activity.ScenePlayer[item].user_id
                };
                var tokenTest = new CancellationTokenSource();
                Task.Factory.StartNew(m =>
                {
                    var temp = m as OnlineObject;
                    if (temp == null)
                    {
                        return;
                    }
                    var aso = BuildData(temp.OffLine);
                    if (!Variable.OnlinePlayer.ContainsKey(temp.OtherPlayer))
                    {
                        return;
                    }
                    var othersession = Variable.OnlinePlayer[temp.OtherPlayer] as TGGSession;
                    if (othersession == null)
                    {
                        return;
                    }
                    if (mn == (int)ModuleNumber.BUILDING)
                    {
                        SendPushCommand(othersession, aso, (int)BuildingCommand.PUSH_PLAYER_EXIT, (int)ModuleNumber.BUILDING);
                    }
                    if (mn == (int)ModuleNumber.SIEGE)
                    {
                        SendPushCommand(othersession, aso, (int)SiegeCommand.PUSH_PLAYER_EXIT, (int)ModuleNumber.SIEGE);
                    }
                    tokenTest.Cancel();
                }, obj, tokenTest.Token);
            }
        }
Example #2
0
        /// <summary>正常下线</summary>
        private void NormalOut(view_scene_user userscene)
        {
            var otherplays = Scene.GetOtherPlayers(userscene.user_id, userscene.scene_id, (int)ModuleNumber.SCENE);

            if (!otherplays.Any())
            {
                return;
            }

            #region 场景拆分 2015-03-19
            var _plays = SceneSplit.GetSceneSplitPlayers(userscene.user_id, otherplays);
            #endregion

            foreach (var item in _plays)
            {
                var obj = new OnlineObject {
                    OffLine = userscene.user_id, OtherPlayer = item.user_id
                };
                var tokenTest = new CancellationTokenSource();
                Task.Factory.StartNew(m =>
                {
                    var temp = m as OnlineObject;
                    if (temp == null)
                    {
                        return;
                    }
                    if (!Variable.OnlinePlayer.ContainsKey(temp.OtherPlayer))
                    {
                        return;
                    }
                    var otherplayerssession = Variable.OnlinePlayer[temp.OtherPlayer] as TGGSession;
                    if (otherplayerssession == null)
                    {
                        return;
                    }
                    var aso = BuildData(temp.OffLine);
                    SendPushCommand(otherplayerssession, aso, (int)SceneCommand.PLAYER_EXIT_SCENET, (int)ModuleNumber.SCENE);
                    tokenTest.Cancel();
                }, obj, tokenTest.Token);
            }
        }
Example #3
0
        /// <summary>监狱内下线 </summary>
        private void PrisonOut(Int64 userid)
        {
            //推送玩家离开监狱
            var             prisoners = Scene.GetOtherPlayers(userid, (int)ModuleNumber.PRISON);
            var             key       = string.Format("{0}_{1}", (int)ModuleNumber.PRISON, userid);
            view_scene_user scene;

            Variable.SCENCE.TryRemove(key, out scene);
            if (!prisoners.Any())
            {
                return;                    //监狱内其他玩家
            }
            foreach (var item in prisoners)
            {
                var other = (string)item.Clone();
                var obj   = new OnlineObject {
                    OffLine = userid, OtherPlayer = Convert.ToInt32(other.Split("_")[1])
                };
                var tokenTest = new CancellationTokenSource();
                Task.Factory.StartNew(m =>
                {
                    var temp = m as OnlineObject;
                    if (temp == null)
                    {
                        return;
                    }
                    var aso = BuildData(temp.OffLine);
                    if (!Variable.OnlinePlayer.ContainsKey(temp.OtherPlayer))
                    {
                        return;
                    }
                    var othersession = Variable.OnlinePlayer[temp.OtherPlayer] as TGGSession;
                    if (othersession == null)
                    {
                        return;
                    }
                    SendPushCommand(othersession, aso, (int)PrisonCommand.PUSH_PLAYER_EXIT, (int)ModuleNumber.PRISON);
                    tokenTest.Cancel();
                }, obj, tokenTest.Token);
            }
        }
    public void TestSpawn2()
    {
        GameObject obj = OnlineObject.Instantiate(prefab2, new Vector3(0, -1, 175), Quaternion.identity);

        OnlineObject.Spawn(obj);
    }
Example #5
0
 public void AddGameObject(OnlineObject obj)
 {
     onlineObjects.Add(obj);
     if (obj is Projectile) {
         projectiles.Add(obj as Projectile);
     }
 }
Example #6
0
    private void addInGameObject(OnlineObject o)
    {
        lock (TanksGame.Lock) {

            tankGame.AddGameObject(o);

        }
    }
Example #7
0
    public void SpawnObject(OnlineObject ob)
    {
        //Set the owner
        ob.setOwner(PlayerID);

        //insert all json objects
        JObject obj = new JObject(
            new JProperty(KEY_OBJECT_TYPE, ob.GetType().ToString()), //obj type
            new JProperty(KEY_MSG_TYPE, MSG_TYPE.SPAWN.ToString()), // msg type
            new JProperty(KEY_OWNER, PlayerID), //the player owner
            new JProperty(KEY_JOBJECT, ob.getJSONObject())  //the jobject
        );

        //set the msg content and send
        NRawGameMessage msg = new NRawGameMessage();
        msg.setContent(obj.ToString());
        SendGameMessage(msg);

        //add it locally
        addInGameObject(ob);
    }