Hey everyone, So I wanted to do some work with the config files, but I couldn't load them procedurally. @geostar1024 said that he could use the data in python, so I made a python library for parsing ECF files it's available here https://github.com/lostinplace/ecf-parser the documentation is horrible, but if there's any interest I'll flesh it out better
This looks awesome! And you packaged it so nicely too! I'll let you know when I've gotten a chance to try it out.
@cmwhee: I've installed your tool, but it only seems to function on the command line; there's apparently no python module available for importing (I get an error trying to do "import ecf_parser"). Have I overlooked something, or was that just how you designed it?
there should be several functions available on ecf_parser, have you tried import * from ecf_parser? I just tried this on a fresh install and it worked: ``` ~ pip install ecf_parser Collecting ecf_parser Downloading ecf_parser-0.1.2.tar.gz Building wheels for collected packages: ecf-parser Running setup.py bdist_wheel for ecf-parser ... done Stored in directory: /Users/xxx/Library/Caches/pip/wheels/c0/aa/f6/d28aa8a7d1eed5a44713cf8936f3ed127e1b0d91096b0a6ea4 Successfully built ecf-parser Installing collected packages: ecf-parser Successfully installed ecf-parser-0.1.2 (christopherwheeler-RXuGlzBg) ➜ ~ python Python 3.6.5 (default, Mar 30 2018, 06:41:53) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import ecf_parser Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/Users/xxx/.local/share/virtualenvs/christopherwheeler-RXuGlzBg/lib/python3.6/site-packages/ecf_parser/__init__.py", line 3, in <module> import jsonpickle ModuleNotFoundError: No module named 'jsonpickle' >>> (xxx-RXuGlzBg) ➜ ~ pip install jsonpickle Collecting jsonpickle Downloading jsonpickle-0.9.6.tar.gz (67kB) 100% |████████████████████████████████| 71kB 3.0MB/s Building wheels for collected packages: jsonpickle Running setup.py bdist_wheel for jsonpickle ... done Stored in directory: /Users/xxx/Library/Caches/pip/wheels/c8/c5/88/0975a9ef0ae87799d3a4ae54244ca8f76eaaf03395f48a5129 Successfully built jsonpickle Installing collected packages: jsonpickle Successfully installed jsonpickle-0.9.6 (christopherwheeler-RXuGlzBg) ➜ ~ python Python 3.6.5 (default, Mar 30 2018, 06:41:53) [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import ecf_parser >>> ecf_parser.parse_ecf_entry <function parse_ecf_entry at 0x10bab1268> >>> ``` although apparently it doesn't auto-install jsonpickle, I'll fix that shortly
As it turns out, my system was running python 3.5 and I'd messed up my pip packages environment somehow (so fixed that enroute). With python 3.6, I was able to install ecf_parser (along with jsonpickle), and it imports ok now.
I'm happy to see these ECF tools. I've been toying with Python (never having learned it) and thinking of Empyrion and thought ECF files were YAML, but eventually realized they weren't. I found this discussion while searching the boards. I had taken a look at RimWorld mods and found many are just changes to the game's XML files. In some cases just a few lines of XSLT. Then I though there must be something like this for Empyrion and that maybe I could use a mod to change the default maximum number of Solar Panels allowed in my Single Player game, rather than change the Config_Example.ecf file. Then, perhaps a type of mod could be just ECF changes. When a new game is created, load up the Config_Example.ecf file, loop through the ECF mods in some player determined order, and place the resulting Config.ecf file into the saved game. Being a Python newb, I'm not sure what pieces are missing. It looks like folks use XSLT on JSON. (Oops, by converting JSON to XML.) It looks like the game _doesn't_ use a Config.ecf from the Saves/Games/* folders. The format of a mod file might need extra stuff, like a way to identify what version of the game it addresses. There'd have to be a way to specify an order to apply the mod files. I dunno, just thinking. Tonight I had time to dig and look around.
I have a github PR up for cmwhee; to update the tests. Trying to read the code still at this stage. You apparently did push a exported JSON file up, but it's currently zero length, may want to look into that. What did and did the library not do? I mean it converts to easier to use json, but what did you do with it at the time Chris? Also, the "jsonl" file - your code fails to load it going .ecf => json and then back is borked on my interpreter. I'm no guru on python generators, but the json decoding of agenerator is jsut beyonf my skillz with the language to tell where it is broken.
Oof, I just noticed this. I haven't paid attention to this in a while. I've just recently started getting back into Empyrion in preparation for v12. Let me know if there are any tools you'd like ot see, or if you'd like this one actually finished