Ejemplo n.º 1
0
        // save cache to speed up load times
        // we store the MetalClassVersion to enable cache rebuild if algo changed
        void SaveCache()
        {
            string MapName       = aicallback.GetMapName();
            string cachefilepath = Path.Combine(csai.CacheDirectoryPath, MapName + "_metal.xml");

            XmlDocument cachedom = XmlHelper.CreateDom();
            XmlElement  metadata = XmlHelper.AddChild(cachedom.DocumentElement, "metadata");

            metadata.SetAttribute("type", "MetalCache");
            metadata.SetAttribute("map", MapName);
            metadata.SetAttribute("version", MetalClassVersion);
            metadata.SetAttribute("datecreated", DateTime.Now.ToString());
            metadata.SetAttribute("ismetalmap", isMetalMap.ToString());
            metadata.SetAttribute("extractorradius", aicallback.GetExtractorRadius().ToString());
            metadata.SetAttribute("mapheight", aicallback.GetMapHeight().ToString());
            metadata.SetAttribute("mapwidth", aicallback.GetMapWidth().ToString());

            XmlElement metalspots = XmlHelper.AddChild(cachedom.DocumentElement, "metalspots");

            foreach (MetalSpot metalspot in MetalSpots)
            {
                XmlElement metalspotnode = XmlHelper.AddChild(metalspots, "metalspot");
                //metalspotnode.SetAttribute( "pos", metalspot.Pos.ToCsv() );
                Float3Helper.WriteFloat3ToXmlElement(metalspot.Pos, metalspotnode);
                metalspotnode.SetAttribute("amount", metalspot.Amount.ToString());
            }

            cachedom.Save(cachefilepath);
        }