bszonye / civ6-maptacks Goto Github PK
View Code? Open in Web Editor NEWMap Tacks mod for Civilization VI
Home Page: https://steamcommunity.com/sharedfiles/filedetails/?id=1122081356
Map Tacks mod for Civilization VI
Home Page: https://steamcommunity.com/sharedfiles/filedetails/?id=1122081356
A few parts of the map pin interface could use better hotkey support, especially adding and deleting pins. The challenges here are configuration – is it possible to hook into the stock hotkey configuration panel? – and awkward interactions with other controls like the name editor control.
Add icons for Liang’s fishery and city park improvements.
As a debug or power-user feature, the pin styling functions could interpret icon IDs in the pin name field. For example, if a pin were named ICON_UNITCOMMAND_CANCEL
, the styling functions would render it as an unnamed pin with the cancel icon. This would help with implementing and testing #26 and might provide a workaround for #19.
The game benchmark sets the active player ID to -1, which causes an attempt to index a nil value
error in MapTacks.PlayerTraits. The function should return an empty set of traits if the player ID is invalid.
The popup grid determines most of the pins dynamically, and while the layout is fairly stable, it can vary depending on game version and DLC. This might be a problem for the Great Person section of the grid. As a quick fix, I could shift that section to the right, to guard against it underflowing the edge of the grid. Longer-term, it might be nice to handle the grid chunks intelligently, so that blocks of similar icons stay between the edges, and single icons (like “Spy” and “Form Army”) flow around them.
Dear bszonye;
First, my apology if requests belong elsewhere; Github is new to me and I couldn't find an obvious place to post this.
I would greatly appreciate an export/import as plain text capability for Map Tacks.
I'm a bit OCD, so I am often updating the Tack titles so that they are grouped by category in the (sorted) map tacks list screen.
Exporting the list as text (one title per line), editing it in a text editor, then importing it would improve this tremendously.
I tried modifying this mod for that purpose, but I am new to programming mods for CIV VI, and have so far not made much progress.
Assuming it is not difficult, even a tip or 2 on the best way to accomplish this would be appreciated ; ).
The districts routine handles unique districts if they replace a regular district. All of the stock districts like the Bath and Seowon are replacements, but mods like p0kiehl's Satrap's Court include some non-replacement unique districts.
A shortcut for pin deletion would be handy. The stock code has a handler, commented out, for deleting pins with a right-click. I can see why – that seems prone to accidental deletion. CQUI uses a right click on the pins list instead, which seems safer but I’m not totally convinced. A hotkey on the edit popup (#18) would also make sense if it doesn’t conflict with the edit box.
Need a script to collect all release files and prepare them for upload. Ideally it should also prepare change notes for the update.
Replace the Map Pins popup title with Map Tacks. I did this temporarily for the logo screenshot, but it would be nice to change the popup permanently with a properly localized version.
Initial release omits Wonder icons, because they’re not very legible, and because they don’t fit neatly into the grid. Instead, the icon grid includes the generic DISTRICT_WONDER
icon, which you can label with the Wonder name. However, it would be handy to have some way of adding Wonder icons for folks who want them. One hacky way to do it would be to interpret the pin name as an icon. A less hacky way would be to add Wonder menu that could present a cleaner interface to the full list.
Need to survey popular UI mods and determine how they interact with this one, and possibly resolve incompatibilities.
While testing with large pin arrays, there was an obvious performance bug that got worse with each new pin. Steam Workshop user mendaere found the root cause:
This will be a bit convoluted. In mappinmanager.lua there is a Refresh() function that rebuilds the pin flags. This function loops over all the pins for all players and calls CreateMapPinFlag on each of them. This calls MapPinFlag:UpdatePosition which calls MapPinFlag:SetPosition. This last function loops through the entire set of previously seen flags looking for ones on the same hex. In other words, its looping over every previous item in the pin list for every item in the pin list, a classic order n-squared algorithm. Put in layman's terms, the time it takes to perofrm this refresh (which it does on initial load, every new pin and every pin update) is proportional to the square of the number of tacks. At 100 tacks its noticable, at 200 its painful, by the time you get to around 300 its pretty much unusable with (on my PC at least) a 30+ second gap every time you try to add/remove/modify a pin.
Specifically, the loop here in MapPinFlag.SetPosition() iterates over the same elements as its caller, creating quadratic behavior that is quite noticeable with dozens of pins. The Refresh routine should pre-calculate the pins per space in a separate pass, rather than doing it on the fly and then throwing away the result for each pin.
ToggoStar requested:
Is there any way to toggle the display of pins on the map with this mod? I would love to use pins and especially this mod quite a lot, but I hate the cluttered look all of the pins leave on the map. I only need to glance at the pins from time to time and toggleing would be perfect!
This would not be too difficult technically. The challenging part would be avoiding conflicts with other mods, as an easily-accessible toggle switch would probably need to go into the minimap code.
BLÀde reports:
it works with fall patch however you can't close the map pin menu you have to click on anther menu item to close it. it overlaps the map pin button once opened making it not possible to close
With #24 resolved, you can now layer Map Tacks on top of NQ/CQUI and other general UI mods. Those mods have different icon options (notably the individual wonder icons, see #19). Thus, player maps might have icons outside the currently supported range. The typing and styling fuctions (MapTacksType
, MapPinFlag.SetColor
, MapPinFlag.SetFlagUnitEmblem
) should recognize and adapt to a wider range of icons: at least wonder icons, and ideally anything that could reasonably fit on a pin head.
A few subscribers have reported problems when continuing a saved game:
View The Phenom: Does anyone else experience an issue where a game does not save the "Map Tacks" mod under additional content? So when continuing a game the mod isn't loaded?
BLÀde: it was working until the sep 3 update now they don't show up at all.
kevblackwel: it doesn't work when you load a game :)
View The Phenom said that they had similar problems with other mods on the Clean Interface list. BLÀde said that the problem went away after unsubscribing and re-subscribing to Map Tacks.
Altogether, this sounds like the 0.9.1 update does not reliably ensure compatibility with conflicting mods like NQ & CQUI. It would help to know what other mods are present in the conflicting games.
After redesigning the list popup, the mod needs a new logo! Ideally, the logo should adjust the layout to compress empty space and make features more obvious.
The README needs to document major features, changes, and external links (like the Steam Workshop page for the mod).
I currently use the Pillage and Plunder icons for barbarian camps and tribal villages, but it would be better to add the barbarian & village notification icons instead.
... so you don’t have to go hunting for it with your mouse.
When the map tack list grows long enough to get a scroll bar, the mouse wheel only works in part of the pop-up window. Steam user [COLOR_Culture][NQ] je
offers this suggestion:
hey just thought I would help speed up the process.. its the
ConsumeAllMouse="1"
change to0
in theMapPinListEntry
Instance. on theGridButton ID="MapPinListButton"
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.