コード例 #1
0
 private void AddModelsSekiro(IMsb msb)
 {
     foreach (var mk in LoadedModels.OrderBy(q => q.Key))
     {
         var m = mk.Key;
         if (m.StartsWith("m"))
         {
             AddModelSekiro(msb, new MSBS.Model.MapPiece()
             {
                 Name = m
             }, m);
         }
         if (m.StartsWith("h"))
         {
             AddModelSekiro(msb, new MSBS.Model.Collision()
             {
                 Name = m
             }, m);
         }
         if (m.StartsWith("o"))
         {
             AddModelSekiro(msb, new MSBS.Model.Object()
             {
                 Name = m
             }, m);
         }
         if (m.StartsWith("c"))
         {
             AddModelSekiro(msb, new MSBS.Model.Enemy()
             {
                 Name = m
             }, m);
         }
     }
 }
コード例 #2
0
        private void AddModel <T>(IMsb m, string name) where T : IMsbModel, new()
        {
            var model = new T();

            model.Name = name;
            m.Models.Add(model);
        }
コード例 #3
0
 private void AddModelsDS1(IMsb msb)
 {
     foreach (var mk in LoadedModels.OrderBy(q => q.Key))
     {
         var m = mk.Key;
         if (m.StartsWith("m"))
         {
             AddModelDS1(msb, new MSB1.Model.MapPiece(), m);
         }
         if (m.StartsWith("h"))
         {
             AddModelDS1(msb, new MSB1.Model.Collision(), m);
         }
         if (m.StartsWith("o"))
         {
             AddModelDS1(msb, new MSB1.Model.Object(), m);
         }
         if (m.StartsWith("c"))
         {
             AddModelDS1(msb, new MSB1.Model.Enemy(), m);
         }
         if (m.StartsWith("n"))
         {
             AddModelDS1(msb, new MSB1.Model.Navmesh(), m);
         }
     }
 }
コード例 #4
0
 private void AddModelSekiro(IMsb m, MSBS.Model model, string name)
 {
     if (LoadedModels[name] != null)
     {
         m.Models.Add(LoadedModels[name]);
         return;
     }
     model.Name = name;
     if (model is MSBS.Model.MapPiece)
     {
         model.SibPath = $@"N:\FDP\data\Model\map\{Name}\sib\{name}.sib";
     }
     else if (model is MSBS.Model.Object)
     {
         model.SibPath = $@"N:\FDP\data\Model\obj\{name}\sib\{name}.sib";
     }
     else if (model is MSBS.Model.Enemy)
     {
         model.SibPath = $@"N:\FDP\data\Model\chr\{name}\sib\{name}.sib";
     }
     else if (model is MSBS.Model.Collision)
     {
         model.SibPath = $@"N:\FDP\data\Model\map\{Name}\hkt\{name}.hkt";
     }
     else if (model is MSBS.Model.Player)
     {
         model.SibPath = $@"";
     }
     m.Models.Add(model);
 }
コード例 #5
0
 private void AddModelDS1(IMsb m, MSB1.Model model, string name)
 {
     if (LoadedModels[name] != null)
     {
         m.Models.Add(LoadedModels[name]);
         return;
     }
     model.Name = name;
     if (model is MSB1.Model.MapPiece)
     {
         model.SibPath = $@"N:\FRPG\data\Model\map\{Name}\sib\{name}.sib";
     }
     else if (model is MSB1.Model.Object)
     {
         model.SibPath = $@"N:\FRPG\data\Model\obj\{name}\sib\{name}.sib";
     }
     else if (model is MSB1.Model.Enemy)
     {
         model.SibPath = $@"N:\FRPG\data\Model\chr\{name}\sib\{name}.sib";
     }
     else if (model is MSB1.Model.Collision)
     {
         model.SibPath = $@"N:\FRPG\data\Model\map\{Name}\hkxwin\{name}.hkxwin";
     }
     else if (model is MSB1.Model.Navmesh)
     {
         model.SibPath = $@"N:\FRPG\data\Model\map\{Name}\navimesh\{name}.sib";
     }
     m.Models.Add(model);
 }
コード例 #6
0
        public void LoadMSB(IMsb msb)
        {
            foreach (var m in msb.Models.GetEntries())
            {
                LoadedModels.Add(m.Name, m);
            }

            foreach (var p in msb.Parts.GetEntries())
            {
                var n = new MapEntity(this, p, MapEntity.MapEntityType.Part);
                Objects.Add(n);
                RootObject.AddChild(n);
            }

            foreach (var p in msb.Regions.GetEntries())
            {
                var n = new MapEntity(this, p, MapEntity.MapEntityType.Region);
                Objects.Add(n);
                RootObject.AddChild(n);
            }

            foreach (var p in msb.Events.GetEntries())
            {
                var n = new MapEntity(this, p, MapEntity.MapEntityType.Event);
                Objects.Add(n);
                RootObject.AddChild(n);
            }

            foreach (var m in Objects)
            {
                m.BuildReferenceMap();
            }
        }
コード例 #7
0
 private void AddModelDS2(IMsb m, MSB2.Model model, string name)
 {
     if (LoadedModels[name] != null)
     {
         m.Models.Add(LoadedModels[name]);
         return;
     }
     model.Name = name;
     m.Models.Add(model);
 }
コード例 #8
0
        public void SerializeToMSB(IMsb msb, GameType game)
        {
            foreach (var m in Objects)
            {
                if (m.WrappedObject != null && m.WrappedObject is IMsbPart p)
                {
                    msb.Parts.Add(p);
                    if (p.ModelName != null && !LoadedModels.ContainsKey(p.ModelName))
                    {
                        LoadedModels.Add(p.ModelName, null);
                    }
                }
                else if (m.WrappedObject != null && m.WrappedObject is IMsbRegion r)
                {
                    msb.Regions.Add(r);
                }
                else if (m.WrappedObject != null && m.WrappedObject is IMsbEvent e)
                {
                    msb.Events.Add(e);
                }
            }

            if (game == GameType.DemonsSouls)
            {
                AddModelsDeS(msb);
            }
            else if (game == GameType.DarkSoulsPTDE)
            {
                AddModelsDS1(msb);
            }
            else if (game == GameType.DarkSoulsIISOTFS)
            {
                AddModelsDS2(msb);
            }
            else if (game == GameType.Bloodborne)
            {
                AddModelsBB(msb);
            }
            else if (game == GameType.DarkSoulsIII)
            {
                AddModelsDS3(msb);
            }
            else if (game == GameType.Sekiro)
            {
                AddModelsSekiro(msb);
            }
        }
コード例 #9
0
        private void AddModelBB(IMsb m, MSBB.Model model, string name)
        {
            if (LoadedModels[name] != null)
            {
                m.Models.Add(LoadedModels[name]);
                return;
            }
            var a = $@"A{Name.Substring(1, 2)}";

            model.Name = name;
            if (model is MSBB.Model.MapPiece)
            {
                model.SibPath = $@"N:\SPRJ\data\Model\map\{Name}\sib\{name}{a}.sib";
            }
            else if (model is MSBB.Model.Object)
            {
                model.SibPath = $@"N:\SPRJ\data\Model\obj\{name.Substring(0, 3)}\{name}\sib\{name}.sib";
            }
            else if (model is MSBB.Model.Enemy)
            {
                // Not techincally required but doing so means that unedited bloodborne maps
                // will write identical to the original byte for byte
                if (name == "c0000")
                {
                    model.SibPath = $@"N:\SPRJ\data\Model\chr\{name}\sib\{name}.SIB";
                }
                else
                {
                    model.SibPath = $@"N:\SPRJ\data\Model\chr\{name}\sib\{name}.sib";
                }
            }
            else if (model is MSBB.Model.Collision)
            {
                model.SibPath = $@"N:\SPRJ\data\Model\map\{Name}\hkt\{name}{a}.hkt";
            }
            else if (model is MSBB.Model.Navmesh)
            {
                model.SibPath = $@"N:\SPRJ\data\Model\map\{Name}\navimesh\{name}{a}.sib";
            }
            else if (model is MSBB.Model.Other)
            {
                model.SibPath = $@"";
            }
            m.Models.Add(model);
        }