v50 Steam/Premium information for editors
  • v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
  • Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.

Editing User talk:Jifodus/Dwarf Fortress Utility Framework

Jump to navigation Jump to search

Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.


The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.

Latest revision Your text
Line 294: Line 294:
 
I think I've covered just about everything worth covering.
 
I think I've covered just about everything worth covering.
 
-- [[User:Jifodus|Jifodus]] 04:24, 13 December 2007 (EST)
 
-- [[User:Jifodus|Jifodus]] 04:24, 13 December 2007 (EST)
::Forgot to point out something that may caused misunderstanding, everything that was before the "additional notes" part of my comments actually refers to the persistent data format rather than the run-time format :)  I just choose something that is similar to the lua structs that you used.  When defining the persistent data, I think it would be nice to allow various ways of doing the same thing to suit potential users.  And I think even if the specification data is defined inline, the framework you have should be able to resolve it nicely during parsing (e.g. when encountering an inlined map, just create that map first, give it some name/reference and then continue the parsing the current map with the new map id, as if it was defined much earlier).  It can all be resolved nicely into separate entries in your Type map. 
 
::Another thing.  You could extend your map all the way to the process itself.  Looking up something like creature vector is just looking up an offset in the process's map just like any other complex type, so that you don't need to deal with a separate "AddressMaps" structure.  Just a comment though, as you might want to keep things working as they are.
 
<pre>
 
Types[V0_27_169_33E]["process"] = {
 
    members = {
 
        main_creatures = {type = "vector", subtypes = { type = "pointer", subtypes = { "creature" }}.
 
        offset = 0x01240AC8
 
    }
 
}
 
df_process = { type = "process", version = V0_27_169_33E, pointer = 0x00 } ??
 
</pre>
 
::[[User:Sphr|Sphr]] 04:56, 13 December 2007 (EST)
 
:::I just realized something, type inlining would fairly difficult to implement with lua. I've been using lua_next, so I can't assume anything about the order that the keys will be returned. Which basically means I would have to scan the entire tree multiple times, to locate all types first.
 
:::Though I just had an idea, I could always change the way the system parses. If it encounters a type not previously defined, it could create the a new type with that information, and subclass from there. This, of course, would have to come after I enable subclassing/extending of the member map.
 
:::I however, will not get to this for the first release. Down the road, having inline type definitions would be incredibly useful.
 
:::[[User:Jifodus|Jifodus]] 15:37, 13 December 2007 (EST)
 
::::I'm just commenting based on the presumed desired outcome.  No need to get there in one large leap.  Small steps are fine.  Not implementing that is ok too.  It's nice to give more convenience to the end users, but it is not necessary, esp at a cost too great to be economic for the implementors :)  Btw, I hope that your parser does have convenient ways to ignore parts that it doesn't recognize or use?  If we are working towards a common persistent format, chances are, there may be data that are only used by one party and not by the other.  Ideal case is that the unused data gets ignored safely (or just generate warnings without killing the whole process).  I'll be occupied this weekend, but if I have time next week, I'll see if I can come up with a xml alternative to what you have.  (xml easier for me if I'm using existing library, like tiny.  otherwise, I'll have to define the lua grammar manually for the parser, which could take quite a few rounds of grammar debugging.  Once the formats stabilizes, the next step could be a converter tool to freely transform one file format to the other. :) ) [[User:Sphr|Sphr]] 07:57, 15 December 2007 (EST)
 
:::::Heh, at the moment it ignores parts that it doesn't understand or not formatted correctly. In fact, when I was debugging StartProfile, nearly (if not) all the problems I had were caused by incorrectly formatted data. So I will come up with an additional tag:
 
some_member = { type_ptr = "creature" }
 
:::::Which is the same as doing:
 
some_member = { type = { type = "pointer, subtypes = { "creature" } } }
 
:::::Not properly formatting pointers alone caused the majority of my problems. As to writing a parser for the lua data files, why not use the Lua library itself? It's small and relatively easy to use (if you need an example, you can always take a look at my loading code.) [[User:Jifodus|Jifodus]] 00:55, 16 December 2007 (EST)
 

Please note that all contributions to Dwarf Fortress Wiki are considered to be released under the GFDL & MIT (see Dwarf Fortress Wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

Please sign comments with ~~~~

To protect the wiki against automated edit spam, we kindly ask you to solve the following CAPTCHA:

Cancel Editing help (opens in new window)