this is really long and a little technical, or at least not casual. if anyone reads it all the way through i'll be surprised but would LOVE feedback from people smarter than myself. concerning menus, custom content, and the ability to add subgroups to the in-game menus for organizing ploppable lots.
my experience with custom content for other games/game engines made me wonder about adding menus for lots, which I realize has been considered impossible. However, before I start with the DAMN, I wondered what the technical limitations were which prevented modders from using submenus? i just picked up simcity again and again am overwhelmed by the amount of custom content; i saw the DAMN but haven't looked at it yet because i am stubborn and determined that the modular menu system is possible.
about modding and plugins - generally there is a load order to the mods within your directory. i also imagine that a plugin will ovverride any resources of the main program? if i make a .dat which contains a modified copy of a game resource (change a texture), the game will use my modified version instead of the original? if this is the case...
i am not a programmer, but have modded and tweaked other games a bit more, including referencing new resources in toolsets through custom menus and the like; and...well, simcity as a game IS a toolseti have spent much time on other engines/toolsets and know how to find my away around resource files and the like. i imagine the mechanics are much the same. and hell, simcity as a game IS basically the toolset (to a large degree, at least from the perspective of a world-builder), and adding new groups of resources should be similar. so add new categories (occupant groups?) and redirect custom content by referencing the new groups. build a graphical submenu for each new subgroup, and associate with the parent (i.e. landmarks) to allow access in the game. (landmarks - stadiums, landmarks - castles, whatever).
can you not ovverride and/or extend the graphical ingame menu system the same way? instead of textures, now we'll pull out the menus we need. we can modify and edit, add another level of menus and change all the corresponding references to redirect as necessary. package it up as a DAT and drop it in the plugins folder? now the game would reference our mod instead of original .dat? we would also have to edit every lot to utilize our modified resources (so instead of a public pool occupying a 'park' slot it will now occupy a 'leisure' slot which is a child/clone of the 'parks' slot.) you follow? we modify the category by tweaking references and associating with proper parent types. we are not modifying the process (display lots to choose and plop), only the references (WHICH lots to offer as choices).
we can access the buttons and menu structures in simcity1.dat - sort by type, find UI and look for group 08000600 to find the graphical data related to the on-screen menus. is it possible to copy a submenu, change its ID and then refer it back to its original instance? this would create another layer of menus for the category. the trick is that we are adding a function-the new submenu BUT the function itself is the same as it was; technically we are just re-using the same function with different inputs (our new IDs)
(the transport menu i copied/pasted just to look at.) anywho the buttons are changeable. so take one menu, swap out the references to reflect our new set of tiles. lots. i'm used to tiles, sorry. so above the landmarks button would reference a new game resource, which would be a menu we've modified from the original game data and packed as a dat. instead of transportation, consider new landmark categories which would then provide the lots of each type. so above, the 'road' button in our cloned/modified/new menu would be 'stadiums' or some such subgroup. i just don't know how to change the function of the button UNLESS it is as simple as changing the reference.
again, i am not a programmer, but i assume the following.
action we press the 'landmark' button, which calls a function (present the contents of the button). my question is whether that call is independent of the target? that is, is there a resource in the simcity.dat which could be modified to redirect it?
in other games i've played with we are able to create and customize new resources either from scratch or from the properties of a similar object, and to add a category you just use a reference string which is not used by the original game. so here are the categories so far:
; building categories
(note: there are lots more specific categories as well, subcategories which may also be of use?)
to add a new category, we just use the next sequential number; in this case 0x100b. (i wonder what 0x1007 and 0x1008 were if anything? they are empty now) we'll likely use some of the sub-designations (0x1500=Building: Police, for example; we could add 0x1550 for police stations, 0x1551 for prisons/jails, 0x1552 for military) i chose 0x1551 because it was available and not likely to interfere with other resources. our new category should have all the same properties as the one we copied; it will just have a new identifier to be referenced by the third menu. now we build a menu and associate each subcategory with these new resource types, and edit the occupant group of each lot to conform to our new categories instead of the old ones. alternately, it may be possible to just use the groups already defined, although there are too many of those and i believe they are just secondary and tertiary designations? (i.e. 0x1700=Building: Cemetary, 0x1907=Building: Worship)
so if we build submenus and reference them properly back to the parent groups, edit the lots to populate the new groups (which should obviously retain the properties of the parent groups). no? this is where it gets fuzzy for me because so many categories refer to other functions (mysim, udriveit) whereas i am only concerned with modifying ploppable models, largely disregarding game dynamics. for my puposes you could almost break gameplay entirely, so long as i could layout cities in a simpler fashion.
i am wondering about the following.
to what extent does the occupant group determine the function of the lot? if the group determines lot behavior instead of some other data field, then farking around with new resource types will break lots of game functioning. i hope you can set this independently of the type of lot, but am unsure so far.
in other games i have had access to nearly the entire toolset, which we do not have for simcity, but again as the game itself functions as the world-builder for many other games, i just thought it was worth a thought. we may encounter any number of problems of functioning depending on how integrated the IDs for lot types are to the program as a whole (for example we end up making a new group, and reference it properly for it to show up in the menu as a ploppable, but data views are broken, etc. because other functions refer to the original group designations.)
"Update ISC4OccupantGroups.h after adding/removing/changing occupant groups!" we do not have source, so may not be able to do this. although some part of the DAMN requires rebuilding an index? i have not set up the DAMN on my damn computer yet, so don't know the details of how it functions. anyway, is this a stumbling block? AGAIN i have very incomplete understanding of programming, but i understand game resources...
in regard to the menu and buttons themselves which we want to have appear in game, can we successfully modify the game to refer to the new menus/buttons. i expect it is relatively simple to modify the existing ones (labels, buttons, etc), but i don't know about ADDING the functionality of the submenu system. because i don't really know how programming works. would we need the source for this? i've not so much as made a lot, but know adding lots is possible...what about other game resources? what are the limitations?
sorry for the length and for possibly having no clue what i'm talking about...any wisdom/thoughts/insights would be much appreciated.