Ejemplo n.º 1
0
        public IVirtualFileEntry GetFile(out bool couldFind, VirtualFileAddress address)
        {
            couldFind = false;
            IVirtualFileEntry file = null;

            var gameFolder = RootFolder.SubFolders.FirstOrDefault(
                x => string.Equals(x.Name, address.Game, StringComparison.OrdinalIgnoreCase));

            var game = (GameEnum)Enum.Parse(typeof(GameEnum), address.Game, true);

            if (game == GameEnum.Exile)
            {
                file = GetExileFile(out couldFind, gameFolder, address);
            }
            else if (game == GameEnum.Revelation)
            {
                file = GetRevelationFile(out couldFind, gameFolder, address);
            }

            if (file != null)
            {
                couldFind = true;
            }
            return(file);
        }
        public IVirtualFileEntry FindFile(VirtualFileAddress address)
        {
            var  lookup    = new FileLookupService(_context.VirtualFiles);
            bool couldFind = false;

            return(lookup.GetFile(out couldFind, address));
        }
        public byte[] LookupFileImageData(Node node, string fileName)
        {
            var game = SelectedGame;

            if (game == "Revelation" && (!MapTypeColorSelected))
            {
                fileName += "_depth";
            }
            var fileAddress = new VirtualFileAddress(game, node.Scene, node.Zone, node.Number, fileName);
            var file        = FindFile(fileAddress);

            if (file != null)
            {
                var imageData = GetDataForFile(file);
                return(imageData);
            }
            return(new byte[0]);
        }
        public void FindRevFile()
        {
            var  lookupService = new FileLookupService(_context.VirtualFiles);
            var  address       = new VirtualFileAddress(GameEnum.Revelation.ToString(), "Haven", "Gate", "010", "front");
            bool fileFound;
            var  stopwatch = new Stopwatch();

            stopwatch.Start();
            var file = lookupService.GetFile(out fileFound, address);

            stopwatch.Stop();
            if (fileFound)
            {
                WriteToConsole(Color.Cyan, file.Name + " found in " + stopwatch.ElapsedMilliseconds + " ms");
            }
            else
            {
                WriteToConsole(Color.Red, "File not found. Lookup took " + stopwatch.ElapsedMilliseconds + " ms");
            }
        }
Ejemplo n.º 5
0
        public IVirtualFileEntry GetExileFile(out bool couldFind, IVirtualFolder gameFolder, VirtualFileAddress address)
        {
            if (string.IsNullOrEmpty(address.Scene))
            {
                couldFind = false;
                return(null);
            }

            ExileSceneCode       sceneCode;
            ExileSceneProperName scene;

            if (address.Scene.Length < 3)
            {
                // verify it's proper scenecode
                sceneCode = (ExileSceneCode)Enum.Parse(typeof(ExileSceneCode), address.Scene, true);
                scene     = (ExileSceneProperName)sceneCode;
            }
            else
            {
                // get the scenecode from the proper name
                scene     = (ExileSceneProperName)Enum.Parse(typeof(ExileSceneProperName), address.Scene, true);
                sceneCode = (ExileSceneCode)scene;
            }

            Type type = null;

            if (scene == ExileSceneProperName.Amateria)
            {
                type = typeof(ExileAmateriaZoneCode);
            }
            else if (scene == ExileSceneProperName.Edanna)
            {
                type = typeof(ExileEdannaZoneCode);
            }
            else if (scene == ExileSceneProperName.Jnanin)
            {
                type = typeof(ExileJnaninZoneCode);
            }
            else if (scene == ExileSceneProperName.Narayan)
            {
                type = typeof(ExileNarayanZoneCode);
            }
            else if (scene == ExileSceneProperName.Tomahna)
            {
                type = typeof(ExileTomahnaZoneCode);
            }
            else if (scene == ExileSceneProperName.Voltaic)
            {
                type = typeof(ExileVoltaicZoneCode);
            }

            var    zoneName = Enum.Parse(type, address.Zone, true);
            string zoneCode = zoneName.ToString();

            var fileName = sceneCode + zoneCode + "nodes.m3a";

            if (gameFolder != null)
            {
                var dataFile = gameFolder.SubFolders.FirstOrDefault(x => x.Name == fileName);

                if (dataFile != null)
                {
                    var file = dataFile.Files.FirstOrDefault(x => x.Name == address.FileName);
                    if (file != null)
                    {
                        couldFind = true;
                        return(file);
                    }
                }
            }

            couldFind = false;
            return(null);
        }
Ejemplo n.º 6
0
        public IVirtualFileEntry GetRevelationFile(out bool couldFind, IVirtualFolder gameFolder, VirtualFileAddress address)
        {
            var    sceneName    = (RevelationScene)Enum.Parse(typeof(RevelationScene), address.Scene, true);
            int    sceneCode    = (int)sceneName;
            string sceneCodeStr = "w" + sceneCode.ToString("D1");

            Type type = null;

            if (sceneName == RevelationScene.TomahnaNight)
            {
                type = typeof(RevelationTomahnaZone);
            }
            else if (sceneName == RevelationScene.Haven)
            {
                type = typeof(RevelationHavenZone);
            }
            else if (sceneName == RevelationScene.Spire)
            {
                type = typeof(RevelationSpireZone);
            }
            else if (sceneName == RevelationScene.Serenia)
            {
                type = typeof(RevelationSereniaZone);
            }
            else if (sceneName == RevelationScene.TomahnaDay)
            {
                type = typeof(RevelationTomahnaZone);
            }
            //else if (sceneName == RevelationScene.Menu)
            //    type = typeof(RevelationTomahnaZone);

            var    zoneName    = Enum.Parse(type, address.Zone, true);
            int    zoneCode    = (int)zoneName;
            string zoneCodeStr = "z" + zoneCode.ToString("D2");
            string nodeCodeStr = "n" + address.Node;

            if (gameFolder != null)
            {
                var dataFile = GetSubFolder(gameFolder, "data.m4b");
                if (dataFile != null)
                {
                    var global = GetSubFolder(dataFile, "global");
                    if (global != null)
                    {
                        var sceneFolder = GetSubFolder(global, sceneCodeStr);
                        if (sceneFolder != null)
                        {
                            var zoneFolder = GetSubFolder(sceneFolder, zoneCodeStr);
                            if (zoneFolder != null)
                            {
                                var nodeFolder = GetSubFolder(zoneFolder, nodeCodeStr);
                                if (nodeFolder != null)
                                {
                                    var filename       = sceneCodeStr + zoneCodeStr + nodeCodeStr + ".m4b";
                                    var fileNameFolder = GetSubFolder(nodeFolder, filename);
                                    if (fileNameFolder != null)
                                    {
                                        var cubeFolder = GetSubFolder(fileNameFolder, "cube");
                                        if (cubeFolder != null)
                                        {
                                            IVirtualFolder layerDefaultFolder;
                                            if (address.FileName.Contains("_depth"))
                                            {
                                                layerDefaultFolder = GetSubFolder(cubeFolder, "z_layer_default.m4b");
                                            }
                                            else
                                            {
                                                layerDefaultFolder = GetSubFolder(cubeFolder, "layer_default.m4b");
                                            }
                                            if (layerDefaultFolder != null)
                                            {
                                                var setDefaultFolder = GetSubFolder(layerDefaultFolder, "set_default");
                                                if (setDefaultFolder != null)
                                                {
                                                    var fileName = address.FileName.Replace(".jpg", "").Replace("_depth", "");
                                                    // finally the files
                                                    var file = setDefaultFolder.Files.FirstOrDefault(x => x.Name == fileName);

                                                    if (file != null)
                                                    {
                                                        couldFind = true;
                                                        return(file);
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }

            couldFind = false;
            return(null);
        }
 internal IVirtualFileEntry FindFile(VirtualFileAddress fileAddress)
 {
     return(MainApp.FindFile(fileAddress));
 }