コード例 #1
0
        public static void Update()
        {
            var          addedScenes = new List <WorldScene>();
            List <Scene> newScenes;

            try
            {
                newScenes =
                    ZetaDia.Scenes.Where(
                        s => s.IsAlmostValid() && !CurrentWorldSceneIds.Contains(s.GetSceneNameString())).ToList();
            }
            catch (NullReferenceException)
            {
                return;
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("ReadProcessMemory"))
                {
                    return;
                }
                throw;
            }
            foreach (var scene in newScenes)
            {
                try
                {
                    if (!scene.IsAlmostValid())
                    {
                        continue;
                    }
                    if (scene.IsAlmostValid() && scene.Mesh.ParentSceneId <= 0 &&
                        scene.Mesh.DynamicWorldId == ZetaDia.CurrentWorldDynamicId &&
                        !scene.Name.ToLowerInvariant().Contains("fill"))
                    {
                        var adventurerScene = new WorldScene(scene);
                        if (adventurerScene.Cells.Count > 0)
                        {
                            CurrentWorldScenes.Add(adventurerScene);
                            addedScenes.Add(adventurerScene);
                        }
                    }
                    CurrentWorldSceneIds.Add(scene.GetSceneNameString());
                }
                catch (NullReferenceException)
                {
                }
            }
            if (addedScenes.Count > 0)
            {
                //Logger.Debug("[ScenesStorage] Found {0} new scenes", addedScenes.Count);
                var nodes = addedScenes.SelectMany(s => s.Nodes).ToList();
                TrinityGrid.Instance.Update(nodes);
            }
        }
コード例 #2
0
ファイル: ScenesStorage.cs プロジェクト: mythsya/db-plugins
        public static void Update()
        {

            var addedScenes = new List<WorldScene>();
            List<Scene> newScenes;
            try
            {
                newScenes =
                    ZetaDia.Scenes.Where(
                        s => s.IsAlmostValid() && !CurrentWorldSceneIds.Contains(s.GetSceneNameString())).ToList();
            }
            catch (NullReferenceException)
            {
                return;
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("ReadProcessMemory"))
                {
                    return;
                }
                throw;
            }
            foreach (var scene in newScenes)
            {
                try
                {
                    if (!scene.IsAlmostValid()) continue;
                    if (scene.IsAlmostValid() && scene.Mesh.ParentSceneId <= 0 &&
                        scene.Mesh.DynamicWorldId == ZetaDia.CurrentWorldDynamicId &&
                        !scene.Name.ToLowerInvariant().Contains("fill"))
                    {
                        var adventurerScene = new WorldScene(scene);
                        if (adventurerScene.Cells.Count > 0)
                        {
                            CurrentWorldScenes.Add(adventurerScene);
                            addedScenes.Add(adventurerScene);
                        }
                    }
                    CurrentWorldSceneIds.Add(scene.GetSceneNameString());
                }
                catch (NullReferenceException)
                {

                }
            }
            if (addedScenes.Count > 0)
            {
                //Logger.Debug("[ScenesStorage] Found {0} new scenes", addedScenes.Count);
                var nodes = addedScenes.SelectMany(s => s.Nodes).ToList();
                TrinityGrid.Instance.Update(nodes);
            }

        }
コード例 #3
0
ファイル: WorldScene.cs プロジェクト: mythsya/db-plugins
        public WorldScene(Scene scene)
        {
            //using (new PerformanceLogger("[WorldScene] ctor", false))
            //{
            //                Logger.Debug("[WorldScene] Scene GridSquare Size: {0} X:{1} Y:{2}", scene.Mesh.Zone.NavZoneDef.GridSquareSize,scene.Mesh.Zone.NavZoneDef.NavGridSquareCountX, scene.Mesh.Zone.NavZoneDef.NavGridSquareCountY);

            Scene = scene;
            Name = scene.Name;
            HashName = scene.GetSceneNameString();
            LevelAreaId = Scene.Mesh.LevelAreaSNO;
            Min = Scene.Mesh.Zone.ZoneMin;
            Max = Scene.Mesh.Zone.ZoneMax;
            Center = (Max + Min) / 2;
            //Rect = new Rect(new Point(Center.X, Center.Y), new Size(_boxSize, _boxSize));
            HasChild = Scene.Mesh.SubSceneId > 0;
            HasParent = Scene.Mesh.ParentSceneId > 0;
            DynamicWorldId = Scene.Mesh.DynamicWorldId;
            SceneId = scene.Mesh.SceneId;
            if (HasChild)
            {
                SubScene = new WorldScene(Scene.Mesh.SubScene);
                if (SubScene.HasChild)
                {
                    //Logger.Error("[ScenesStorage] Found sub sub scene!!!");
                    SubScene.SubScene = new WorldScene(SubScene.Scene.Mesh.SubScene);
                }
            }
            //Logger.Verbose("[WorldScene] Created a new world scene. Name: {0} LevelArea: {1} ({2})", Name, (SNOLevelArea)LevelAreaId, LevelAreaId);
            //if (LevelAreaId != AdvDia.CurrentLevelAreaId && !ExplorationData.OpenWorldIds.Contains(AdvDia.CurrentWorldId))
            //{
            //    Logger.Verbose("[WorldScene] The scene LevelAreaID is different than the CurrentLevelAreaID");
            //    Logger.Verbose("[WorldScene] Scene Name: {0}", Name);
            //    Logger.Verbose("[WorldScene] Scene: {0} ({1})", (SNOLevelArea)LevelAreaId, LevelAreaId);
            //    Logger.Verbose("[WorldScene] Current: {0} ({1})", (SNOLevelArea)AdvDia.CurrentLevelAreaId, AdvDia.CurrentLevelAreaId);
            //}
            CreateGrid();
            //}
        }
コード例 #4
0
ファイル: WorldScene.cs プロジェクト: shmilyzxt/db-plugins
        public WorldScene(Scene scene)
        {
            //using (new PerformanceLogger("[WorldScene] ctor", false))
            //{
            //                Logger.Debug("[WorldScene] Scene GridSquare Size: {0} X:{1} Y:{2}", scene.Mesh.Zone.NavZoneDef.GridSquareSize,scene.Mesh.Zone.NavZoneDef.NavGridSquareCountX, scene.Mesh.Zone.NavZoneDef.NavGridSquareCountY);

            Scene       = scene;
            Name        = scene.Name;
            HashName    = scene.GetSceneNameString();
            LevelAreaId = Scene.Mesh.LevelAreaSNO;
            Min         = Scene.Mesh.Zone.ZoneMin;
            Max         = Scene.Mesh.Zone.ZoneMax;
            Center      = (Max + Min) / 2;
            //Rect = new Rect(new Point(Center.X, Center.Y), new Size(_boxSize, _boxSize));
            HasChild       = Scene.Mesh.SubSceneId > 0;
            HasParent      = Scene.Mesh.ParentSceneId > 0;
            DynamicWorldId = Scene.Mesh.DynamicWorldId;
            SceneId        = scene.Mesh.SceneId;
            if (HasChild)
            {
                SubScene = new WorldScene(Scene.Mesh.SubScene);
                if (SubScene.HasChild)
                {
                    //Logger.Error("[ScenesStorage] Found sub sub scene!!!");
                    SubScene.SubScene = new WorldScene(SubScene.Scene.Mesh.SubScene);
                }
            }
            //Logger.Verbose("[WorldScene] Created a new world scene. Name: {0} LevelArea: {1} ({2})", Name, (SNOLevelArea)LevelAreaId, LevelAreaId);
            //if (LevelAreaId != AdvDia.CurrentLevelAreaId && !ExplorationData.OpenWorldIds.Contains(AdvDia.CurrentWorldId))
            //{
            //    Logger.Verbose("[WorldScene] The scene LevelAreaID is different than the CurrentLevelAreaID");
            //    Logger.Verbose("[WorldScene] Scene Name: {0}", Name);
            //    Logger.Verbose("[WorldScene] Scene: {0} ({1})", (SNOLevelArea)LevelAreaId, LevelAreaId);
            //    Logger.Verbose("[WorldScene] Current: {0} ({1})", (SNOLevelArea)AdvDia.CurrentLevelAreaId, AdvDia.CurrentLevelAreaId);
            //}
            CreateGrid();
            //}
        }