I wonder how it could be done, so if you conquer city of civilization with different base culture, then you get their base culture too.
Following Toffer's suggestion, I think we put the native culture enumeration in a mutually-exclusive enum with each bit representing one culture type and store this data in a Player's accomplishments. When one founds a city, the system checks this data to establish one or multiple native cultures in it.
When we acquire a city, it checks for its resident culture type. By chance (based on acquired city's population, cultural level, and some factors to make the game not too easy), we'll be able to keep that new resident culture.
I want to open some discussion here about the design of culture assimilation. There are two ways to do this:
One is to make this new culture available to the whole area under one's control, which is the current way to assimilate cultures, but it's unrealistic for a culture to immediately spread out to the whole empire.
The other is to make the conquered culture stay within its developmental range. This can be done if we make the culture of dead civilizations persist on their historical areas (some other mods implement this feature). Based on their accumulated culture, cities within this range will be able to keep their resident culture, and cities that sat outside the borders may one day establish the conquered culture as well.
If we use the latter system, we may still keep track of a player's conquest accomplishments, but we don't need to use an enumeration to keep track of the types of continental cultures a player gathers.
Think of this scenario:
Player A attacks player B, and he conquers B's two cities.
In these two cities, player A's culture will migrate in, and based on their developmental level, player B's culture may or may not be kept.
After some peaceful time period, now another player C attacks player A, and he takes those two cities too.
In these two cities, player C's culture will migrate in. But based on player A and B's development in them, player C may or may not acquire A or B's culture in them.
Further ideas:
Let's name these two cities P and Q. P is the larger city that A managed to establish his root in. Both cities were lucky to have player B's culture preserved upon player A's invasion.
As player C conquered P and Q, he also got lucky to preserve all of player B's culture. And for the larger city P, player A's culture also made an addition to the cultural mixture.
Now P is a city with all of A, B, and C's cultures, and Q is a city with B and C's cultures.
When player C builds a settler in city P, his settler will bring the cultures of A and B in addition to his own to the newly founded city.
Player C's own native culture, and only his own culture, is auto-built whenever he founds a city.
He needs to gather people in foreign cities, represented as promotions on the settler unit, to found a city with more than his native culture.
This settler may also be used to mix new cultures in old cities (or we can create specific emigrant units to fit this purpose), although there is a chance the old cities reject foreign groups of people, especially when the local population is overcrowded. (Crowdedness being defined by a calculation based on the era and other factors.)
Capturing a settler or an emigrant unit will not be possible. I think the current method of turning captured settlers into civilian captives automatically is the way to go.