Ejemplo n.º 1
0
        private bool associatePaletteMaterialToAtr()
        {
            foreach (var palette in this.palettes)
            {
                var nameCategory = palette.Key;
                var mapAtrs      = palette.Value;
                foreach (var mapAtr in mapAtrs)
                {
                    if (!(mapAtr.Value is DoGAAtrPaletteMaterial))
                    {
                        continue;
                    }
                    var paletteMaterial = mapAtr.Value as DoGAAtrPaletteMaterial;
                    var nameAtrInSuf    = mapAtr.Key;

                    var atr = new DoGAAtr(nameAtrInSuf, this.pathAtr);
                    atr.setColor("amb", new Rgb(paletteMaterial.valAmb, paletteMaterial.valAmb, paletteMaterial.valAmb));
                    atr.setColor("dif", new Rgb(paletteMaterial.valDif, paletteMaterial.valDif, paletteMaterial.valDif));
                    atr.setColor("tra", new Rgb(paletteMaterial.valTra, paletteMaterial.valTra, paletteMaterial.valTra));
                    atr.setColor("ref", new Rgb(paletteMaterial.valRef, paletteMaterial.valRef, paletteMaterial.valRef));
                    atr.setColor("spc", new Rgb(paletteMaterial.valSp1, paletteMaterial.valSp1, paletteMaterial.valSp1));
                    atr.setColor("spcsize", new Rgb(paletteMaterial.valSp2, paletteMaterial.valSp2, paletteMaterial.valSp2));
                    atr.spcH = paletteMaterial.valSp3;

                    mapAtr.Value.atr = atr;
                }
            }

            return(true);
        }
Ejemplo n.º 2
0
        private void extractMapAtr(Dictionary <string, string> profiles, string prefix, ref Dictionary <string, DoGAAtrPaletteBase> mapPalette, ref HashSet <string> setNamesFileAtr)
        {
            // Color1=C1,White,  color.atr,C1
            // Color14=C4,Light Purple, 0.95,0.64,0.86
            // Texture1=NO,None
            // T10,Camouflage 1,  meisai1.pic, texture.bmp,320,0,351,31

            var tablePostfix = new string[] { "s", "Max" };
            int numElems     = 0;

            foreach (var postfix in tablePostfix)
            {
                var labelNum = prefix + postfix;
                if (profiles.ContainsKey(labelNum))
                {
                    numElems = int.Parse(profiles[labelNum]);
                }
            }
            if (numElems == 0)
            {
                return;
            }

            for (int index = 1; index <= numElems; index++)
            {
                var key   = prefix + index.ToString();
                var value = profiles[key];
                var items = value.Split(',');
                if (items.Length < 4)                   // Texture1=NO,None
                {
                    continue;
                }
                var   nameAtrKey = items[0].Trim().ToLower();
                float valR = 0.0f, valG = 0.0f, valB = 0.0f;
                if (items.Length == 5 && float.TryParse(items[2], out valR) && float.TryParse(items[3], out valG) && float.TryParse(items[4], out valB))                   // Color14=C4,Light Purple, 0.95,0.64,0.86
                {
                    var atr = new DoGAAtr(nameAtrKey, this.pathAtr);
                    atr.setColor("col", new Rgb(valR, valG, valB));
                    var palette = new DoGAAtrPaletteFileAtr(nameAtrKey, atr);
                    mapPalette.Add(nameAtrKey, palette);
                }
                else
                {
                    var   regexpAtr = new Regex(@"\.atr$");
                    var   regexpImage = new Regex(@"\.(pic|png|bmp|jpg)$");
                    var   item2 = items[2].Trim().ToLower();
                    float valTra = 0.0f, valAmb = 0.0f, valDif = 0.0f, valSp1 = 0.0f, valSp2 = 0.0f, valSp3 = 0.0f, valRef = 0.0f;
                    if (regexpAtr.IsMatch(item2))
                    {
                        // Color1=C1,White,  color.atr,C1, ...
                        var nameFileAtr      = item2;
                        var nameAtrInFileAtr = items[3].Trim().ToLower();
                        if (!setNamesFileAtr.Contains(nameFileAtr))
                        {
                            setNamesFileAtr.Add(nameFileAtr);
                        }
                        var palette = new DoGAAtrPaletteFileAtr(nameAtrKey.ToLower(), nameFileAtr, nameAtrInFileAtr);
                        mapPalette.Add(nameAtrKey, palette);
                    }
                    else if (regexpImage.IsMatch(item2))
                    {
                        var nameFileImage = item2;
                        var palette       = new DoGAAtrPaletteFileImage(nameAtrKey.ToLower(), nameFileImage);
                        mapPalette.Add(nameAtrKey, palette);
                    }
                    else if (items.Length > 9 &&
                             float.TryParse(item2, out valTra) && float.TryParse(items[3], out valAmb) &&
                             float.TryParse(items[4], out valDif) &&
                             float.TryParse(items[5], out valSp1) && float.TryParse(items[6], out valSp2) &&
                             float.TryParse(items[7], out valSp3) &&
                             float.TryParse(items[8], out valRef))
                    {
                        var palette = new DoGAAtrPaletteMaterial(nameAtrKey.ToLower(), valTra, valAmb, valDif, valSp1, valSp2, valSp3, valRef);
                        mapPalette.Add(nameAtrKey, palette);
                    }
                    else
                    {
                        // Attribute1=Rough_C1, "White", C1, Rough, M4, ...
                        var nameAtrColorRef    = items[2].Trim().ToLower();
                        var nameAtrTextureRef  = items[3].Trim().ToLower();
                        var nameAtrMaterialRef = items[4].Trim().ToLower();
                        var palette            = new DoGAAtrPaletteRef(nameAtrColorRef, nameAtrTextureRef, nameAtrMaterialRef);
                        mapPalette.Add(nameAtrKey, palette);
                    }
                }
            }
            if (prefix == "Texture")
            {
                var nameAtrNo = "no";
                mapPalette.Add(nameAtrNo, new DoGAAtrPaletteFileAtr(nameAtrNo, new DoGAAtr(nameAtrNo, null)));
            }

//			return mapPalette;
        }