Exemplo n.º 1
0
        //角色增加广播
        public virtual void BroadcastCreateMe(ObjBase _this, ReasonType reason = ReasonType.VisibilityChanged)
        {
            if (null == _this.Zone)
            {
                return;
            }
            var data = _this.DumpObjData(reason);

            if (ObjBase.BroadcastCreateObjType == 1)
            {
                _this.Zone.PushCreateObj(data);
                return;
            }
            var msg2Other = new CreateObjMsg();

            msg2Other.Data.Add(data);
            var list = _this.EnumAllVisiblePlayerIdExclude(_this.ObjId).ToArray();

            SceneServer.Instance.ServerControl.CreateObj(list, msg2Other);
            _this.NotifyCharactersToSyncMe(list);
        }
Exemplo n.º 2
0
    public void CreateObj(CreateObjMsg msg)
    {
        if (ObjManager.Instance == null)
        {
            Logger.Log2Bugly("ObjManager.Instance == null");
            return;
        }
        if (PlayerDataManager.Instance == null)
        {
            Logger.Log2Bugly("PlayerDataManager.Instance == null");
            return;
        }
        {
            var __list1      = msg.Data;
            var __listCount1 = __list1.Count;
            for (var __i1 = 0; __i1 < __listCount1; ++__i1)
            {
                var data = __list1[__i1];
                {
                    if (data.ObjId == PlayerDataManager.Instance.GetGuid())
                    {
                        continue;
                    }
                    switch ((OBJ.TYPE)data.Type)
                    {
                    case OBJ.TYPE.NPC:
                    {
                        var init = new InitNPCData();
                        AssignInitCharacterData(init, data);
                        ObjManager.Instance.CreateNPCAsync(init);
                    }
                    break;

                    case OBJ.TYPE.AUTOPLAYER:
                    case OBJ.TYPE.OTHERPLAYER:
                    {
                        var init = new InitOtherPlayerData();
                        if (data.ExtData.Count > 0)
                        {
                            init.ServerId = data.ExtData[0];
                        }
                        for (var i = 0; i < data.Titles.Count; i++)
                        {
                            init.TitleList.Add(i, data.Titles[i]);
                        }
                        if (data.Owner != null && data.Owner.Items != null && data.Owner.Items.Count == 1)
                        {
                            init.RobotId = data.Owner.Items[0];
                        }
                        else
                        {
                            init.RobotId = 0ul;
                        }
                        init.AllianceName = data.AllianceName;
                        AssignInitCharacterData(init, data);
                        ObjManager.Instance.CreateOtherPlayerAsync(init);
                    }
                    break;

                    case OBJ.TYPE.RETINUE:
                    {
                        var init = new InitRetinueData();
                        AssignInitCharacterData(init, data);
                        if (data.Owner != null && data.Owner.Items != null && data.Owner.Items.Count == 1)
                        {
                            init.Owner = data.Owner.Items[0];
                        }
                        ObjManager.Instance.CreateRetinueAsync(init);
                    }
                    break;

                    case OBJ.TYPE.DROPITEM:
                    {
                        var init = new InitDropItemData();
                        AssignInitBaseData(init, data);
                        init.Owner.AddRange(data.Owner.Items);
                        init.RemianSeconds = data.ExtData[0];
                        init.PlayDrop      = 1 == data.ExtData[1] ? true : false;
                        init.TargetPos     = new Vector2(GameUtils.DividePrecision(data.TargetPos[0].x),
                                                         GameUtils.DividePrecision(data.TargetPos[0].y));

                        ObjManager.Instance.CreateDropItemAsync(init);
                    }
                    break;

                    default:
                    {
                        Logger.Fatal("Obj[{0}] is unknow type[{1}]", data.ObjId, data.Type);
                    }
                    break;
                    }
                }
            }
        }
    }