We-the-People-civ4col-mod / Mod

This is the repository where the mod resides.
90 stars 37 forks source link

Notification #203

Open Villovik opened 6 years ago

Villovik commented 6 years ago

Can you guys change notification system like in civ5, Because I can't read all messages and I can't see all damages when I playing online with timer, it's will be more effective check all events, click on it and find locations and read what more important for me? When I playing so much events happened in one time, but notification pop up too slow. Thank you!

Nightinggale commented 6 years ago

I have been thinking about this and it's far from trivial to add as civ5 does this in the engine using features not present in civ4. The only thing I can think of is adding an (invisible if possible) list to show the notifications. The thing is the screen is already crowded and there is little room for such an addition. Also the file in question is the main interface, which already contains far too much to be readable.

I do however agree that the notifications are presented in a way, which is far from ideal. The question is what we can do about it with the engine we have available.

Villovik commented 6 years ago

I don't know about engine, but, may be you can add some indicators for deferent event, on boarder screen, for example all notifications about wild animals under 1 icon, or if my privateer or galeon was killed, this icon should be a little bit bigger and more visible, and we can decide Wich events more important and start do it and test this...

ShadesOT commented 6 years ago

"... but notifications pop up too slow."

regarding that, you can always open the message log and look up all notifications. they all are there already, before they slowly pop up.

ShadesOT commented 6 years ago

regarding grouped notifications: that would be helpful imo

with the current features we could do something like that, using specific tabs in the message log and make types of messages go to a specific tab. for your needs i can imagine a combat tab. where all messages about wins, losses and withdrawals go to. ...

Nightinggale commented 6 years ago

We could do with a special visual alert stating enemy spotted, combat took place etc. We should also try to prevent overflow/custom house spamming of each yield. It gets lengthy when it announces each yield for each colony.

While it's not impossible to use the current system, I do agree that it's far from perfect. The question is how we can make it work well without too much work.

ShadesOT commented 6 years ago

It gets lengthy when it announces each yield for each colony.

That is taken care of in the refactoring branch. Can be enabled/disabled via a flag.

ShadesOT commented 6 years ago

I do not like the popups very much, because they do not scale. The lenghty sales and losses messages aside, also all the other popups get useless once the empire has a certain size/ a lot of cities. If I do not want to follow them, I just ignore them and they are an annoyance and if I want to follow them, they pop up much too fast. In the later case I have to walk through them using the message log.

What I can imagine is to display summarizing messages as popups. Details, which do not popup, can be looked up in different tabs in the message log.

Examples for summarizing messages: "Due to abundance of food, 3 new colonists were born in your cities." "15 enemy units were spotted." "You lost 5 units in combat." "Your warehouses sold 340 goods for 1456 gold." etc. ...

In principle, one summarizing message per message type.

If the player wants details, then there are tabs in the message log, where they can be looked up.

Code wise I spotted the enumeration which determines to which tab a message is sent:

enum DllExport InterfaceMessageTypes
{
    NO_MESSAGE_TYPE = -1,

    MESSAGE_TYPE_INFO,
    MESSAGE_TYPE_LOG_ONLY,
    MESSAGE_TYPE_DISPLAY_ONLY,
    MESSAGE_TYPE_MAJOR_EVENT,
    MESSAGE_TYPE_MINOR_EVENT,
    MESSAGE_TYPE_CHAT,
    MESSAGE_TYPE_COMBAT_MESSAGE,
    MESSAGE_TYPE_QUEST,
    MESSAGE_TYPE_TUTORIAL,
}

These can be used to send a message to a specific tab.

What I do not know is, how to make new tabs, but I am sure it is possible, as the mod has many more tabs than vanilla has. Another question is, if the messaging system can be used to send messages to a log, without making them popup. Having distinct values for

    MESSAGE_TYPE_LOG_ONLY,
    MESSAGE_TYPE_DISPLAY_ONLY,

is something that let me hope. Certainly something worth testing. If it is not possible, then we COULD send the popup messages via the exe messaging system and COULD manage the detailed messages via the dll-code only. Which sounds like a lot more work though.

Nightinggale commented 6 years ago

If we want to do a message overhaul, the proper way would be to add a container for messages in CvPlayer. During doTurn, the messages are added to this list. On turn start, the messages can then be displayed like now, summary or not at all depending on settings in CvPlayer. Having all messages at once before sending to the exe message system also allows sorting as in combat, lost unit etc will be displayed before warehoue overflow, forest growth and other less important issues.