Exemple #1
0
        public virtual bool InitNPC(Scene _this)
        {
            List <SceneNpcRecord> tempList;

            if (!SceneManager.SceneNpcs.TryGetValue(_this.TypeId, out tempList))
            {
                return(true);
            }
            foreach (var record in tempList)
            {
                if (record.InitActivate == 0)
                {
                    continue;
                }

                var dataId = record.DataID;
                var pos    = new Vector2((float)record.PosX, (float)record.PosZ);
                var dir    = new Vector2((float)Math.Cos(record.FaceDirection), (float)Math.Sin(record.FaceDirection));
                try
                {
                    var npc = _this.CreateNpc(record, dataId, pos, dir);
                    if (null != npc)
                    {
                        npc.CanRelive = true; //只有场景初始化时造的怪才可以重生
                    }
                }
                catch (Exception ex)
                {
                    Logger.Error("InitNPC Error, SceneId={0},NpcId={1},dump={2}", record.SceneID, record.DataID, ex);
                }
            }
            return(true);
        }
Exemple #2
0
        //刷新怪物
        public ObjNPC CreateSceneNpc(Scene _this, int sceneNpcId, Vector2 pos = default(Vector2), int level = -1)
        {
            var record = Table.GetSceneNpc(sceneNpcId);
            var dataId = record.DataID;

            if (pos == default(Vector2))
            {
                if (Math.Abs(record.PosX - (-1)) > Double.Epsilon && Math.Abs(record.PosZ - (-1)) > Double.Epsilon)
                {
                    pos = new Vector2((float)record.PosX, (float)record.PosZ);
                }
                else
                {
                    pos = Utility.GetRandomPosFromTable(record.RandomStartID, record.RandomEndID);
                }
            }
            var dir = new Vector2((float)Math.Cos(record.FaceDirection), (float)Math.Sin(record.FaceDirection));
            var npc = _this.CreateNpc(record, dataId, pos, dir, "", level);

            return(npc);
        }