I've wired up the Wait and Fortify buttons so they do what they're supposed to. For now, a unit that is Fortified is forever un-interactable, but that will be changing Soon(TM) now that units display on the map. Wait works just like you'd expect, using a queue behind the scenes so that Wait'ed units show up again in the order they are wait'ed - including if you wait a unit more than once on a turn, and if you end the turn without interacting with some Wait'ed units.
I've also switched out the hard-coded 4000 BC for a turn counter in the UI, which provides feedback that turn processing is going on. That area will evolve a lot over time (don't forget the month/week turn options!), but until the concept of years is present, I think this makes sense.
Most recently I've been adding keyboard shortcuts, and fine-tuning how the Advisor overlay interacts with keyboard shortcuts (found a gremlin I missed last night), as well as UI overlays. In the latter, my increasing knowledge of Godot means that I see the road to having buttons outside the Advisor area not be interactable while the advisor is open, just like in Civ; I also have wired up Escape to close the advisor. But I have to change how I did the centering to make that work, as the way I'd done it wound up being the "wrong" way, even though it did work for a time.
I keep getting distracted by singing sea shanties, though. At least they're good for morale.
Good points.
I presume it *is* possible in C# to run code synchronously. Looks like there is a wait method.
About interturn processing...oh yeah. I would propose we allow both. A lot of folks really want "Civ3 with limits removed" but otherwise exactly the same, which I presume includes things like age change popups where you can then switch to the trade advisor and do some trade shenanigans with any free techs earned. Same with free techs on wonder completion or first to Philosophy.
Maybe that could be a flag that mods could set. Or possibly each processing phase (research, tech, production, etc.) could have it's own "interruptible on interturn" flag.
I'm really hoping we can design this so we're not limited to 3 factors of production, and if we have pluggable fops then each fop will be heavily moddable in behavior.
I still think we could probably work age change shenanigans and bonus techs into the "after the turn is finished" side of things. Usually, tech would finish based on research accumulated, but the game engine could still auto-finish current research based on buildings, tell the UI 'the player needs to select free techs', and receive that update on the player's turn, validating that the player is eligible for a free tech when it gets that response (that's the network security part of me writing). Trade shenanigans might be a little tougher, but if we stick to "UI interactions are after the turn is finished", then the "Choose next tech" would only appear on the subsequent turn after entering an Age. Thus, we could similarly have a call to the engine for "give me my free Age tech", which the UI would call after the user has closed the "choose next tech" dialog, including potentially gone into the advisors and done some trade shenanigans. It might be a bit of a pain to work around, but it's still probably preferable to inconsistencies around what happens during the IBT.
Edit: I think different phases being interruptible is a lot of what got Civ III into trouble with e.g. the science slider exploit. The exploit came about because of the interruptions and not being able to anticipate how the user would use the UI to change the inputs into the next phase of the turn calculation, before the interruption ended. We could try to do the same thing but with more foresight, but I suspect we'd be setting ourselves up for missing edge cases just like Firaxis did.
---
By three factors, you mean food/shields/commerce, right? If so, it's an interesting thought, which crossed my mind the other night as well. I was reading up on GalCiv III on Explorminate last night, and saw today that they recently did an interview with Illwinter Game Design, whose games have a zillion types of production compared to Civ. I wonder if they code in each one or have a more general system? I feel like supporting more, particularly more than just "one new hard coded one" could be a challenge, though it could also open a lot of doors to expansion. I also wonder how configurable that is in Civ IV. I kind of want to say some mods (Fall From Heaven) had more types of production, but I am not sure about that. Some third-party games which use the Civ IV/V engine also appear to have new types of production (Warlock Master of the Arcane, Fallen Enchantress... though I haven't played either enough to speak with confidence), but if they licensed the engine they may have added their own types at the code level within the engine.
The game that comes to mind where adding more resources would (theoretically, famous last words) be easy is Victoria II, which has a whole production chain, and techs that modify the production rates of specific resources. They clearly thought about that upfront. But they also have a UI that's designed to accommodate that they might have had 6 resources on day 1 and 44 at the end. In all likelihood we'd need a new UI for more factors of production. The right click on a tile could handle arbitrarily many fairly easily, but what about city screens and other areas that would have to know about the new means of production?
Which is why I'm thinking that going beyond the Civ three means of production might be making it into another game. I could see an argument that by abstracting the means of production to one level, we could make it easier to add more types to the engine in the future. But I'm not convinced it's something we should try to make moddable before 2027, or that it would "play like Civ" if we did that. It almost reminds me of Jon Shafer's "At the Gates", which is tile based and has a bunch of types of resources, and is another game I should fire up again.