Esempio n. 1
0
        private static Dictionary <TEX0.DictPlttData> GetDictPlttData(Imd imd)
        {
            var dict = new Dictionary <TEX0.DictPlttData>();

            foreach (var plt in imd.Body.TexPaletteArray.TexPalettes)
            {
                var data = new TEX0.DictPlttData
                {
                    Data = plt.Bytes
                };

                dict.Add(plt.Name.Length > 16 ? plt.Name.Substring(0, 16) : plt.Name, data);
            }

            return(dict);
        }
Esempio n. 2
0
        private static Dictionary <TEX0.DictPlttData> GetDictPlttData(List <Texture.Texture> textures)
        {
            var dict = new Dictionary <TEX0.DictPlttData>();

            foreach (var tex in textures)
            {
                var data = new TEX0.DictPlttData
                {
                    Data = tex.RawPalette
                };

                dict.Add(tex.PaletteName.Length > 16 ? tex.PaletteName.Substring(0, 16) : tex.PaletteName, data);
            }

            return(dict);
        }
 private void LoadTex()
 {
     try
     {
         TEX0 tt;
         if (mod.TexPlttSet != null)
         {
             tt = mod.TexPlttSet;
         }
         else if (tex != null)
         {
             tt = tex.TexPlttSet;
         }
         else
         {
             return;
         }
         for (int i = 0; i < mod.ModelSet.models.Length; i++)
         {
             for (int j = 0; j < mod.ModelSet.models[i].materials.materials.Length; j++)
             {
                 TEX0.DictTexData t = null;
                 for (int k = 0; k < mod.ModelSet.models[i].materials.dictTexToMatList.numEntry; k++)
                 {
                     if (mod.ModelSet.models[i].materials.dictTexToMatList[k].Value.Materials.Contains((byte)j))
                     {
                         int texid = k;
                         for (int l = 0; l < tt.dictTex.numEntry; l++)
                         {
                             if (tt.dictTex[l].Key == mod.ModelSet.models[i].materials.dictTexToMatList[k].Key)
                             {
                                 texid = l; break;
                             }
                         }
                         t = tt.dictTex[texid].Value;
                         break;
                     }
                 }
                 if (t == null)
                 {
                     continue;
                 }
                 mod.ModelSet.models[i].materials.materials[j].Fmt        = t.Fmt;
                 mod.ModelSet.models[i].materials.materials[j].origHeight = t.T;
                 mod.ModelSet.models[i].materials.materials[j].origWidth  = t.S;
                 TEX0.DictPlttData p = null;
                 if (t.Fmt != Textures.ImageFormat.DIRECT)
                 {
                     for (int k = 0; k < mod.ModelSet.models[i].materials.dictPlttToMatList.numEntry; k++)
                     {
                         if (mod.ModelSet.models[i].materials.dictPlttToMatList[k].Value.Materials.Contains((byte)j))
                         {
                             int palid = k;
                             for (int l = 0; l < tt.dictPltt.numEntry; l++)
                             {
                                 if (tt.dictPltt[l].Key == mod.ModelSet.models[i].materials.dictPlttToMatList[k].Key)
                                 {
                                     palid = l; break;
                                 }
                             }
                             p = tt.dictPltt[palid].Value;
                             break;
                         }
                     }
                 }
                 UploadTex(t.ToBitmap(p), mod.ModelSet.models[i].materials.materials[j], j + 1);                        //+ offset);
             }
         }
     }
     catch { }
 }