Пример #1
0
 //进入场景
 public void EnterScene(ObjDropItem _this, Scene scene, int delayTime = 0)
 {
     if (delayTime < 50)
     {
         scene.EnterScene(_this);
         return;
     }
     _this.mEnterSceneTrigger = SceneServerControl.Timer.CreateTrigger(DateTime.Now.AddMilliseconds(delayTime),
                                                                       () =>
     {
         scene.EnterScene(_this);
         _this.mEnterSceneTrigger = null;
     });
 }
Пример #2
0
        public ObjRetinue CreateRetinue(Scene _this,
                                        int dataId,
                                        ObjCharacter owner,
                                        Vector2 pos,
                                        Vector2 dir,
                                        int camp,
                                        int level = -1)
        {
            if (Table.GetNpcBase(dataId) == null)
            {
                Logger.Error("CreateRetinue retinue = {0},objId={1}", dataId, owner.ObjId);
                return(null);
            }
            var npc = new ObjRetinue();

            npc.Init(_this.GenerateNextId(), dataId, owner);
            npc.SetPosition(pos.X, pos.Y);
            npc.SetDirection(dir);
            if (level > 0)
            {
                npc.SetLevel(level);
                npc.InitData(level);
            }
            else
            {
                npc.InitData(level);
            }
            npc.SetCamp(camp);
            _this.EnterScene(npc);
            return(npc);
        }
Пример #3
0
        public ObjBoss CreateBoss(Scene _this, int dataId, Vector2 pos, Vector2 dir, string name = "", int level = -1)
        {
            var npc = new ObjBoss();

            npc.Init(_this.GenerateNextId(), dataId, level);

            if (!string.IsNullOrEmpty(name))
            {
                npc.SetName(name);
            }
            //if (level > 0)
            //{
            //    npc.SetLevel(level);
            //}

            if (!_this.ValidPosition(pos))
            {
                Logger.Warn("Npc postion is invalid. DataId={2},name={0},pos={1},scene={3}", npc.GetName(), pos, dataId,
                            _this.TypeId);
            }

            npc.SetPosition(pos.X, pos.Y);
            npc.SetDirection(dir);
            npc.BornPosition  = pos;
            npc.BornDirection = dir;
            _this.EnterScene(npc);
            return(npc);
        }
Пример #4
0
        public ObjNPC CreateNpc(Scene _this, SceneNpcRecord sceneNpcRecord, int dataId, Vector2 pos, Vector2 dir, string name = "", int level = -1)
        {
            if (Math.Abs(pos.X + 1) < 0.0001f && Math.Abs(pos.Y + 1) < 0.0001f)
            {
                return(null);
            }
            if (dataId != 999 && dataId != 998)
            {
                if (!_this.ValidPosition(pos))
                {
                    Logger.Warn("Npc postion is invalid. DataId={0},pos={1},scene={2}", dataId, pos, _this.TypeId);

                    var temp = _this.FindNearestValidPosition(pos, 10);
                    if (null != temp)
                    {
                        pos = temp.Value;
                    }
                    else
                    {
                        Logger.Error("null==FindNearestValidPosition. DataId={0},pos={1},scene={2}", dataId, pos, _this.TypeId);
                        return(null);
                    }
                }
            }

            var npc = new ObjNPC();

            npc.tbSceneNpc = sceneNpcRecord;
            npc.Init(_this.GenerateNextId(), dataId, level);
            npc.mBornTime = DateTime.Now;

            if (!string.IsNullOrEmpty(name))
            {
                npc.SetName(name);
            }
            //if (level > 0)840824

            //{
            //    npc.SetLevel(level);
            //}

            npc.SetPosition(pos.X, pos.Y);
            npc.SetDirection(dir);
            npc.BornPosition  = pos;
            npc.BornDirection = dir;
            _this.EnterScene(npc);
            return(npc);
        }
Пример #5
0
        public AutoPlayer CreateAutoPlayer(Scene _this, int RobotId, Vector2 pos, Vector2 dir)
        {
            var autoPlayer = new AutoPlayer();

            autoPlayer.InitByRobot(_this.GenerateNextId(), RobotId);

            if (!_this.ValidPosition(pos))
            {
                Logger.Error("Npc postion is invalid. RobotId={2},name={0}, pos={1}", autoPlayer.GetName(), pos, RobotId);
            }

            autoPlayer.SetPosition(pos.X, pos.Y);
            autoPlayer.SetDirection(dir);

            _this.EnterScene(autoPlayer);
            return(autoPlayer);
        }
Пример #6
0
        public ObjDropItem CreateDropItem(Scene _this,
                                          int type,
                                          List <ulong> ownerList,
                                          ulong teamId,
                                          int itemId,
                                          int count,
                                          Vector2 pos)
        {
            if (count <= 0)
            {
                return(null);
            }
            var item = new ObjDropItem(type, ownerList, teamId, itemId, count);

            item.InitBase(_this.GenerateNextId(), itemId);

            PlayerLog.WriteLog((int)LogType.DropItem, "CreateDropItem  Id ={0} SceneId={1} pos={2},{3}", item.ObjId,
                               _this.TypeId, pos.X, pos.Y);
            var randomRadian = MyRandom.Random() * 2 * Math.PI;

            const float MaxDistance = 10f;
            const float MinDistance = 6f;

            var distance  = MyRandom.Random((int)MinDistance, (int)MaxDistance) / 10.0f;
            var targetPos = pos +
                            new Vector2(distance * (float)Math.Cos(randomRadian), distance * (float)Math.Sin(randomRadian));

            if (SceneObstacle.ObstacleValue.Obstacle == _this.GetObstacleValue(targetPos.X, targetPos.Y))
            {
                item.SetPosition(pos);
            }
            else
            {
                item.SetPosition(targetPos);
            }
            item.OrginPos = pos;
            _this.EnterScene(item);

            return(item);
        }
Пример #7
0
        public AutoPlayer CreateAutoPlayer(Scene _this,
                                           LogicSimpleData logic,
                                           SceneSimpleData scene,
                                           Vector2 pos,
                                           Vector2 dir)
        {
            var autoPlayer = new AutoPlayer();

            autoPlayer.Init(_this.GenerateNextId(), logic, scene);

            if (!_this.ValidPosition(pos))
            {
                Logger.Error("CreateAutoPlayer postion is invalid. PlayerId={2},name={0}, pos={1}", autoPlayer.GetName(),
                             pos, logic.Id);
            }

            autoPlayer.SetPosition(pos.X, pos.Y);
            autoPlayer.SetDirection(dir);

            _this.EnterScene(autoPlayer);
            return(autoPlayer);
        }