What are these circle icons called and how can I disable them?

Mark_82021

Chieftain
Joined
Aug 2, 2021
Messages
14
I am trying to find a way to suppress the UI from showing these little popup circle map pins but have not had any luck. Does any one know a way (either through game options, INI file settings, or even a MOD) to stop these little popup pins from showing (please see attached picture).

I am happy to even try to write a mod to do it myself if I know what they are called in the API.

I checked the user manuals for both CIV IV and BTS looking to find a way to suppress them or even just know what they are called so I that I can search for solutions but no luck.

I hope this is a correct location to post these questions. If not, I would appreciate if someone could point me in the right direction. I am new the to the CFC forums. Thanks in advance!


.
Map_Pins.jpg
 
Eh, there are a number of toggles bottom right of your UI that can turn them all off during your turn, but they're actually rather important to play the game no ?

If you mean those pop ups in between turns iirc they can be turned off in 'interface options' tab 'alerts'

Edit, after checking in-game # 2 is not correct apparently - maybe someone else :)
 
Last edited:
Eh, there are a number of toggles bottom right of your UI that can turn them all off during your turn, but they're actually rather important to play the game no ?

If you mean those pop ups in between turns iirc they can be turned off in 'interface options' tab 'alerts'

Edit, after checking in-game # 2 is not correct apparently - maybe someone else :)


@Snowgerry, yes I am able to toggle the static ones using the controls in the bottom right but unfortunately I am not able to disable the "alert/notification' type ones which pop up during turns.

I agree that these are important during normal play. However, I am running some autoplay games, and, unfortunately, during autoplay the alert/popup ones Never disappear like they do during normal play. This means that after 400 turns of autoplay it is difficult to see the map at all because every alert which has popped since the game started is still there, leading to massive map clutter.
During normal play, these alert icons disappear after about 10 seconds but during AI Autoplay they remain.

Part of the challenge of this one is knowing what these popups are called. If I knew how the application refers to them, I could likely design a mod to handle it or search the API (or google) for solutions.
But thank you for trying to help me out though. =)

Does anyone else have a solution or recommendation?
 
hmm...I don't even know what those are...I guess I disabled it many many years ago. You can try going into options and turn off Sid's Tips
 
To my knowledge, those flashing icons can only be suppressed through a change in the (game core) DLL. Here's how K-Mod does that: CvDLLInterfaceIFaceBase::addHumanMessage
And it replaces all addMessage calls throughout the DLL with calls to addHumanMessage. That latter part isn't actually necessary; one can simply rename the virtual addMessage function and then name the replacement function "addMessage". So, it looks like your options are to use K-Mod or to set up the environment for recompiling the DLL.

I've revised the K-Mod code a bit in my own mod, but it's still a little messy. Here's a cleaned up but (yet) untested version:
Spoiler :
Code:
/* (NB: Renaming virtual functions - or removing their default args -
   can't break EXE-to-DLL calls.) */
virtual void addMessageExternal(
       PlayerTypes, bool, int, CvWString,
       LPCTSTR, InterfaceMessageTypes, LPCSTR,
       ColorTypes, int, int, bool, bool) = 0;

#include "CvGame.h"
#include "CvPlayer.h"
// (Cleaner to implement this function in some .cpp file and include the headers there.)
void addMessage(
   PlayerTypes ePlayer, bool bForce,
   int iLength, CvWString szString,
   LPCTSTR pszSound = NULL,
   InterfaceMessageTypes eType = MESSAGE_TYPE_INFO,
   LPCSTR pszIcon = NULL,
   ColorTypes eFlashColor = NO_COLOR,
   int iFlashX = -1, int iFlashY = -1,
   bool bShowOffScreenArrows = false,
   bool bShowOnScreenArrows = false)
{
   CvPlayer& kPlayer = GET_PLAYER(ePlayer);
   bool const bHumanDisabled = (GC.getGame().getAIAutoPlay() > 0
           && GC.getGame().getActivePlayer() == ePlayer);
   // Or, if jdog5000's AI Auto Play mod (included in BBAI, K-Mod) is used:
   //= kPlayer.isHumanDisabled()
   if (bHumanDisabled) // Adjustments during AI Auto Play
   {
       if (eType != MESSAGE_TYPE_MAJOR_EVENT)
       {
           // Announce only major events during AI Auto Play
           return;
       }
       // Never delay messages until the start of the active player's next turn
       bForce = true;
       // Don't show any message longer than the default time
       iLength = std::min(iLength, GC.getEVENT_MESSAGE_TIME());
       pszSound = NULL; // No interface sound
       pszIcon = NULL; // No plot indicator icon!
       // (Toggling these off is probably redundant when there is no icon)
       bShowOffScreenArrows = false;
       bShowOnScreenArrows = false;
       /*  (Do not discard the "flash" info. It's used for the text color and the
           coordinates stored in the Event Log -- not just for the icon.) */
   }
   else if (!kPlayer.isHuman())
   {
       // Probably no point in adding interface messages to an AI player
       return;
   }
   addMessageExternal(ePlayer, bForce, iLength, szString, pszSound, eType, pszIcon,
           eFlashColor, iFlashX, iFlashY, bShowOffScreenArrows, bShowOnScreenArrows);
}
 
To my knowledge, those flashing icons can only be suppressed through a change in the (game core) DLL. Here's how K-Mod does that: CvDLLInterfaceIFaceBase::addHumanMessage
And it replaces all addMessage calls throughout the DLL with calls to addHumanMessage. That latter part isn't actually necessary; one can simply rename the virtual addMessage function and then name the replacement function "addMessage". So, it looks like your options are to use K-Mod or to set up the environment for recompiling the DLL.

I've revised the K-Mod code a bit in my own mod, but it's still a little messy. Here's a cleaned up but (yet) untested version:
Spoiler :
Code:
/* (NB: Renaming virtual functions - or removing their default args -
   can't break EXE-to-DLL calls.) */
virtual void addMessageExternal(
       PlayerTypes, bool, int, CvWString,
       LPCTSTR, InterfaceMessageTypes, LPCSTR,
       ColorTypes, int, int, bool, bool) = 0;

#include "CvGame.h"
#include "CvPlayer.h"
// (Cleaner to implement this function in some .cpp file and include the headers there.)
void addMessage(
   PlayerTypes ePlayer, bool bForce,
   int iLength, CvWString szString,
   LPCTSTR pszSound = NULL,
   InterfaceMessageTypes eType = MESSAGE_TYPE_INFO,
   LPCSTR pszIcon = NULL,
   ColorTypes eFlashColor = NO_COLOR,
   int iFlashX = -1, int iFlashY = -1,
   bool bShowOffScreenArrows = false,
   bool bShowOnScreenArrows = false)
{
   CvPlayer& kPlayer = GET_PLAYER(ePlayer);
   bool const bHumanDisabled = (GC.getGame().getAIAutoPlay() > 0
           && GC.getGame().getActivePlayer() == ePlayer);
   // Or, if jdog5000's AI Auto Play mod (included in BBAI, K-Mod) is used:
   //= kPlayer.isHumanDisabled()
   if (bHumanDisabled) // Adjustments during AI Auto Play
   {
       if (eType != MESSAGE_TYPE_MAJOR_EVENT)
       {
           // Announce only major events during AI Auto Play
           return;
       }
       // Never delay messages until the start of the active player's next turn
       bForce = true;
       // Don't show any message longer than the default time
       iLength = std::min(iLength, GC.getEVENT_MESSAGE_TIME());
       pszSound = NULL; // No interface sound
       pszIcon = NULL; // No plot indicator icon!
       // (Toggling these off is probably redundant when there is no icon)
       bShowOffScreenArrows = false;
       bShowOnScreenArrows = false;
       /*  (Do not discard the "flash" info. It's used for the text color and the
           coordinates stored in the Event Log -- not just for the icon.) */
   }
   else if (!kPlayer.isHuman())
   {
       // Probably no point in adding interface messages to an AI player
       return;
   }
   addMessageExternal(ePlayer, bForce, iLength, szString, pszSound, eType, pszIcon,
           eFlashColor, iFlashX, iFlashY, bShowOffScreenArrows, bShowOnScreenArrows);
}


@f1rpo , Thank you for this information! This looks very promising. I will look into it and let you know what I decide.

Thanks again for your continued support! You rock!!! :)
 
Top Bottom