yairm210 / Unciv

Open-source Android/Desktop remake of Civ V
Mozilla Public License 2.0
8.61k stars 1.58k forks source link

Feature Request: Scenario Nation Selector #11724

Closed PLynx01 closed 2 months ago

PLynx01 commented 5 months ago

Before creating

Problem Description

Despite scenarios were added some time ago, their development is very slow. That's because it is not currently possible to conveniently select the Nation to play as.

Related Issue Links

No response

Desired Solution

I would like to see the "Select Nation" panel in the scenario screen, similar to this from New Game screen.

Alternative Approaches

Alternatively, we can make it easier to choose a nation after loading the scenario, something like EU4.

Additional Context

For desired solution, we need to make asynchronous function that will obtain a list of playable civilizations from the scenario or save game.

SomeTroglodyte commented 5 months ago

Not very familiar with Scenarios, though I did one once - ah yes to see the new icon on the main menu button...

Wiki: https://yairm210.github.io/Unciv/Modders/Scenarios/ Doesn't say much about who will be playing as who... But UncivFiles.loadScenario does: The Spectator the wiki mentions (all if >1) is removed, if there's no humans the first civ is made human, then the first human starts play and any other humans are hotseat. So.... Select the intended player first when creating, that's all.

Simplest of my ideas: Define that hotseat scenarios are not supported. Then, in loadScenario - or maybe where PlayerReadyScreen is shown - offer the choice, if moreThanOnePlayer && isSingleplayer && isScenario. The latter has the advantage that killing the process and reloading an autosave will re-pop the question until resolved, but would need another persisted flag. Both variants don't need an extra async preview.

As for Info: Adding "included nations" info to the load scenario screen may be attractive - could be treated 100% independently from the idea above. Or maybe no such info - Scenario creator should choose a name divulging as much as they want about who is in there??? Or - define "add a png file with the same name and/or a txt with the same name to have the load scenario screen show them when your scenario is selected".

OR... Define a meta-Unique "Show before scenario load", UniqueTarget.Event, or as metamodifier to go on the trigger event unique, create a IHasUniques container on the GameInfo granularity, load these with a "Preview" class, and you have a rich presentation tool for the load scenario screen.

Then... A "turn 0" Event could use EventChoices for converting surplus hotseat players to AI - would still need a game- not mod- specific global Unique container. Also allows pretty rich decorations.

github-actions[bot] commented 2 months ago

This issue is stale because it has been open 90 days with no activity. Remove stale label or comment or this will be closed in 15 days.

yairm210 commented 2 months ago

Already done as part of 'opening scenario from new game screen'