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); }
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; }