示例#1
0
 public override void Close()
 {
     archive.Close();
     wdt          = null;
     wdtf         = null;
     modelmanager = null;
     wmomanager   = null;
     zoneToMapId  = null;
     mapIdToFile  = null;
     areaIdToName = null;
     archive      = null;
     base.Close();
 }
示例#2
0
        public MPQTriangleSupplier()
        {
            string[] archiveNames =
            {
                "patch.MPQ",
                "enUS\\patch-enUS.MPQ",
                "enGB\\patch-enGB.MPQ",
                "lichking.MPQ",
                "common-2.MPQ",
                "common.MPQ",
                "expansion.MPQ",
                "enUS\\lichking-locale-enUS.MPQ","enUS\\locale-enUS.MPQ",  "enUS\\expansion-locale-enUS.MPQ",
                "enGB\\lichking-locale-enGB.MPQ","enGB\\locale-enGB.MPQ",  "enGB\\expansion-locale-enGB.MPQ",
                "enUS\\base-enUS.MPQ",
                "enGB\\base-enGB.MPQ",
                "enUS\\backup-enUS.MPQ",
                "enGB\\backup-enGB.MPQ"
            };

            //StormDll.ArchiveSet archive = null;
            Directory.SetCurrentDirectory(AppDomain.CurrentDomain.BaseDirectory);
            archive = new ArchiveSet();
            string regGameDir = archive.SetGameDirFromReg();

            //string gameDir = @"C:\WoW 335\Data\";
            //archive.SetGameDir(gameDir);

            zoneToMapId  = new Dictionary <string, int>();
            mapIdToFile  = new Dictionary <int, string>();
            areaIdToName = new Dictionary <int, string>();

            PathGraph.Log("Game dir is " + regGameDir);
            archive.AddArchives(archiveNames);
            modelmanager = new ModelManager(archive, 80);
            wmomanager   = new WMOManager(archive, modelmanager, 30);


            archive.ExtractFile("DBFilesClient\\AreaTable.dbc", "PPather\\AreaTable.dbc");
            var areas = new DBC();
            var af    = new DBCFile("PPather\\AreaTable.dbc", areas);

            for (int i = 0; i < areas.recordCount; i++)
            {
                var    AreaID  = (int)areas.GetUint(i, 0);
                var    WorldID = (int)areas.GetUint(i, 1);
                var    Parent  = (int)areas.GetUint(i, 2);
                string Name    = areas.GetString(i, 11);

                areaIdToName.Add(AreaID, Name);


                if (WorldID != 0 && WorldID != 1 && WorldID != 530)
                {
                    ////   PathGraph.Log(String.Format("{0,4} {1,3} {2,3} {3}", AreaID, WorldID, Parent, Name));
                }
                //0      uint    AreaID
                //1     uint    Continent (refers to a WorldID)
                //2     uint    Region (refers to an AreaID)
            }

            for (int i = 0; i < areas.recordCount; i++)
            {
                var    AreaID  = (int)areas.GetUint(i, 0);
                var    WorldID = (int)areas.GetUint(i, 1);
                var    Parent  = (int)areas.GetUint(i, 2);
                string Name    = areas.GetString(i, 11);

                string TotalName = "";
                //areaIdToName.Add(AreaID, Name);
                //areaIdParent.Add(AreaID, Parent);
                string ParentName = "";
                if (!areaIdToName.TryGetValue(Parent, out ParentName))
                {
                    TotalName = ":" + Name;
                }
                else
                {
                    TotalName = Name + ":" + ParentName;
                }

                if (!zoneToMapId.ContainsKey(Name) && !zoneToMapId.ContainsKey(TotalName))
                {
                    zoneToMapId.Add(TotalName, WorldID);
                    //PathGraph.Log(TotalName + " => " + WorldID);
                }
                else
                {
                    int id;
                    zoneToMapId.TryGetValue(TotalName, out id);
                    ////  PathGraph.Log("Duplicate: " + TotalName + " " + WorldID +" " + id);
                }
                //0      uint    AreaID
                //1     uint    Continent (refers to a WorldID)
                //2     uint    Region (refers to an AreaID)
            }
        }