Cities: Skylines

Cities: Skylines

Unlimited Trees Mod v1.12
Showing 11-20 of 20 entries
< 1  >
Update: Jan 7, 2016 @ 9:02am

1-5-2015 -v1.2.2-f3_build_004
+ corrected OnRemoved() vs OnDisabled() bug.

Update: Nov 29, 2015 @ 9:29am

11-18-2015 -v1.2.2-f3_Build_003
+ Added GUI option to change the max tree's scaling factor, option is disabled when a level is loaded.


11-13-2015 -v1.2.2-f3_Build_002 (beta)
Summary: Major reworking of treedata save formate and serialize and deserialze processes.
- removed Onplugin change related code finally, code still there in beta but it's dead code. Only possible effect really should be for anyone with pirated version < v1.1.1

+ Changed save format version from 1 to 3. (v2 was used during testing)
+ New format adds addtional header items to the saved byte array.
+ All saves are now in format v3
+ Deserialize methods will detect v1 and load using original method.
+ Deserialize methods will detect v2+ and load using new methods based on data in the header.
+ Serialize method now works as follows. First our serializer runs, if it finds that there are more then 266144 'created' trees it'll go ahead and save those trees in our private datastream.
It will now only save 'created' ones not all the empty entries like it used too. Then it will markup the header information with how many it saved. Next the overridden default serializer will run, if the list of real tress is empty for some reason, it'll just go ahead and save everything in tree buffer up to default limit of 262144. If list of 'created' trees exists then it will run through that list 262144 times but inserting real trees first, then dummy trees if it runs out for the rest. This way we're always storing the first 262144 real trees in the default space of the save.

+ Added <ScaleFactor>4</ScaleFactor> to configuation file options. It is not added in gui on purpose. The setting now controls the number of trees allowed in chunks of 262144. Valid settings are 4 (default),5,6,7,8; 4 == 1million 5=1.25million ect. If set higher then 8 or lower then 4, then 4 will be used. This now allows up to 2million trees. It's not added to the gui options because this is going to be technically 'unsupported feature' even though yes
it works and yes all the other code changes have been adjusted for everything.

+ Afore mentioned changes allows us to save adding lots of dead space to a save\map file.
As an example a save with 300k real trees previously using the 1048576limit would save about 1 Megabyte in the save file space with the new method. The savings goes up\down depending on the number of unused trees in the scaled size one uses. 8 bytes is saved per unused tree, additionally trees that used to be saved as part of our extra data are now saved\packed down into the default range, so even more space can be saved. This has the
added benefit that if the mod is disabled at least 262144 trees will be loaded, where as in the past it was luck of the draw based on what index a tree might have been saved in. ie if 500k trees and only 100 were in the index from 0-262144k then only 100k would be loaded if the mod was not loaded, now 262144k of them will be loaded.

~ These benefits are only noticed upon saving\resaving an existing file.

NOTE: the <ScaleFactor>4</ScaleFactor> may not show in your TreeUnlimiterConfig.xml config file by default (it'll only show up if you make a change via options setting), but you can just add it manually and it will be used on your next restart of CS.

Update: Oct 9, 2015 @ 1:58am

10-6-2015 - v1.2.1_Build_002
Summary: Basically just interal changes.
+ Minor enhancements for config file, add custom log file ability, and not dumping a trace when no config file exists.
~ Refactored initialization so that we don't 'depend' on PluginChange events anymore, though if someone has an old version out there pre 11b\c when Onenabled\OnRemoved were added - like a pirated version we still try to work.
Basically we now use OnEnable\OnRemove to trigger initialization. We also no longer fire our start up code upon the name being invoked, instead we just do that in the constructor which was more or less same result as before.

~ Added saving the config object to file upon the first time it gets created. This prevents the case of a new user loading the mod, having a 'config object' created and used, but if they never touched the options screen it technically never got saved and therefore we would go the exception re-create route upon every load till they did. This change is really just cosmetic so we don't log errors.

~ Changed most calls from Debug.log to our own Logger.dbgLog wrapper to match above mentioned enhancement.
Also the log wrapper automatically adds the calling method name. This saves work on my end, and also means we are technically storing less actual static text in our compiled dll. Only log call that doesn't use our new log wrapper is the initial "mod has loaded' call.

~ Comment documented more of the functions in source.

Update: Sep 25, 2015 @ 7:46pm

9-25-2015 - v1.2.0_Build_005
+ (Wind Fix Update) reverted calculation bug in calculate Area height introduced with the prior source code fkup
bug was difference between something being converted from float to int and back in CalculateAreaHeight().

Update: Sep 24, 2015 @ 11:27pm

9-25-2015 - v1.2.0_Build_004
+ Just a display name\title change in Content Manager from Trees Unlimiter 1.1 to Unlimited Trees Mod; internally namespace and such is unchanged.

Update: Sep 24, 2015 @ 11:51am

v1.2.0_Build_002
Afterdark patch update
+ Recompiled for Afterdark update; however prior version should still work.

+ Found the root of the -1\0 tree item bug in editors that I had previously manually hacked around, disabled that hack around code. Fix was a certain deserialize related line from the original that started at 0 instead of 1 for one of loops.

+ Split out and now re-direct calls to TreeManager.FinalizeTree() to our own.
Previously our ReleaseTreeimplementation() carried all the finalizetree() code inside itself instead of calling out... I don't know why that was originally done but for now unless there is a problem I've sperated it out to it's own proper redirected function. Maybe back in 1.0.0.0 of CSL C\O had it all combined. I can probably not redirect ReleaseTreeimplementation() anymore now that I've done the above, but leaving for now till I feel safe and this version has been in the wild a while.

Update: Sep 8, 2015 @ 9:47am

Updated to run in Asset Editor. Now fewer log messages.

9-8-2015 v111c_Build_005
+ Reworked redirection\detours code to be able to reverse the patching. Basically undid prior method in v003 of patching only once. Reworked the entire code so that we...
a) don't do redirection until map\game load if not already patched,
b) un-do patching upon unloading map\game to main menu or reloading.
c) revert patching upon entering asset editor.
d) This allows asset-editor to be used while mod is turned on (beta).


- Removed some unneccessary logging for each redirection call, it's was just polluting the log file.
+ Added additional logging for debug purposes but conditioned them to not appear for nomal users.
+ Added ability for the mod to work in the map editor, seems to work, extensive test not completed.
+ Had to add some code to flush\rebuild the tree buffer after a new-map; unlike game loads, fresh "new maps" were retaining trees loaded by a previous 'load map', very wierd.
+ Changed rediction code to only fire once per CSL load.. loads on start doesn't fire upon every map load.
+ Assembly Company Name field contains build string, done so main assembly ver stamp always matches C\O build# for now.

Update: Jul 1, 2015 @ 10:24am

Initial updates for CSL 1.1.1c compatibility (few lines added to mirror c\o function updates) nothing major.

Update: Jun 5, 2015 @ 12:06am

Small fix for issue that may cause the mod to not load for some users.

Update: Jun 4, 2015 @ 9:36pm

Original mod by Mabako with new updated code by KnigthawkGP. Now works with v1.1.0b.