From: zifnabbe <zif...@us...> - 2003-07-24 20:06:49
|
Hi John, Thanks! I hope you meant .AuSX instead of .AuRS I've made a very small change to the code, which was something that annoyed me. Now, when calling Save As, the previous name is set as default. This makes it easy to convert a map from .AuR to .AuRX. Regards, Tom. John wrote: > Sorry for the late reply. I've been busy with some other projects, > but I've > been contemplating switching back to working on AutoREALM... > > 1. Added XML support for .AuRX map files and .AuRS symbol files. > Whenever a > symbol is added, changed, etc., the symbol set is saved as an .AuRS > file. > > 2. Implemented object caching to accommodate the additional memory > requirements > of XML support. > > When I added XML support I found that the XML tree can take an > *enormous* > amount of RAM, to such a degree that large maps (e.g. Femora) were > causing my > PC to run out of memory! The solution was to optimize the XML format > and to > implement object caching. > > When the program loads a standard .AuR map, it checks it for objects > with the > same "shape". This is done with a series of IsSimilarTo() virtual > methods. If > two objects are found that are essentially the same, it only saves a > complete > version of the object once (the "base" object) and creates an alias > for each > additional copy. An example is the mountains in Femora.AuR: they are > all the > same shape, so it only needs to store the polyline for it once, and > only needs > to remember the positions of any additional copies. > > The basic mechanism for all of this uses two objects: Base and > Copies. EVERY > AUTOREALM OBJECT HAS THEM. Base is a pointer to the "base" object > that > contains all of the shape information. For a polyline, it points to > the > instance that actually contains the list of points. If an object is > itself the > base object for a group of identical objects, then its Base value is > Nil. > > Copies is a TStringList that contains a list of draw objects that are > copies of > the base object. For instance, if you have a base polyline object, > its Copies > list will contain a list of pointers to all other draw objects that > are > identical (but are at different positions). Likewise, in each of > those alias > objects, the Copies list will be empty, since they aren't base objects > themselves. Instead, those objects will have X and Y coordinates that > specify > where they are located. > > I had to modify just about every method that deals with draw objects > to > implement this mechanism, and I took care to document my code as much > as I > could. Whenever maps are saved as XML .AuRX maps the base/alias > information is > preserved, so it only has to be generated when an old-style .AuR map > is loaded. It causes .AuR maps to take a little longer to load, but > .AuRX maps load very > quickly and can take a lot less room in terms of RAM and disk space. > > ===== > "Government's view of the economy could be summed up in a few short > phrases: If it moves, tax it. If it keeps moving, regulate it. And if > it stops moving, subsidize it." > > - Ronald Reagan > > __________________________________ > Do you Yahoo!? > Yahoo! SiteBuilder - Free, easy-to-use web site design software > http://sitebuilder.yahoo.com > > > ------------------------------------------------------- > This SF.Net email sponsored by: Free pre-built ASP.NET sites including > Data Reports, E-commerce, Portals, and Forums are available now. > Download today and enter to win an XBOX or Visual Studio .NET. > http://aspnet.click-url.com/go/psa00100003ave/direct;at.aspnet_072303_01/01 > _______________________________________________ > Autorealm-develop mailing list > Aut...@li... > https://lists.sourceforge.net/lists/listinfo/autorealm-develop |