Changed: #1433 Merge changes from patch 1.13

This commit is contained in:
kervala 2012-03-08 16:59:03 +01:00
parent 033c2ecf0e
commit d5731ad5ea
5 changed files with 31 additions and 17 deletions

View file

@ -1347,6 +1347,7 @@ void CClientConfig::setValues()
if (stricmp(mode, "over") == 0) p.Mode = SSysInfoParam::Over; if (stricmp(mode, "over") == 0) p.Mode = SSysInfoParam::Over;
else if (stricmp(mode, "overonly") == 0) p.Mode = SSysInfoParam::OverOnly; else if (stricmp(mode, "overonly") == 0) p.Mode = SSysInfoParam::OverOnly;
else if (stricmp(mode, "center") == 0) p.Mode = SSysInfoParam::Center; else if (stricmp(mode, "center") == 0) p.Mode = SSysInfoParam::Center;
else if (stricmp(mode, "centeraround") == 0) p.Mode = SSysInfoParam::CenterAround;
else if (stricmp(mode, "around") == 0) p.Mode = SSysInfoParam::Around; else if (stricmp(mode, "around") == 0) p.Mode = SSysInfoParam::Around;
ClientCfg.SystemInfoParams[toLower(sic->asString(2 * k))] = p; ClientCfg.SystemInfoParams[toLower(sic->asString(2 * k))] = p;

View file

@ -635,12 +635,15 @@ struct CClientConfig
// Mode is the display settings : // Mode is the display settings :
// Normal : just display in the system info window // Normal : just display in the system info window
// Over : must be displayed at bottom of the screen and in system info window // Over : must be displayed at bottom of the screen and in system info window
// OverOnly : must be displayed at bottom of the screen
// Center ; must be displayed at the center of the screen and in system info window // Center ; must be displayed at the center of the screen and in system info window
// Around ; must be displayed in the around chat window
// CenterAround ; must be displayed at the center of the screen and in around chat window
struct SSysInfoParam struct SSysInfoParam
{ {
CRGBA Color; CRGBA Color;
std::string SysInfoFxName; std::string SysInfoFxName;
enum TMode { Normal, Over, OverOnly, Center, Around }; enum TMode { Normal, Over, OverOnly, Center, Around, CenterAround };
TMode Mode; TMode Mode;
SSysInfoParam() SSysInfoParam()
{ {

View file

@ -244,6 +244,7 @@ CInterfaceGroup *CInterfaceHelp::activateNextWindow(CDBCtrlSheet *elt, sint forc
i++; i++;
} }
bool showSlotAndCreator = false;
// If an active window get the same object, abort, but make it top. // If an active window get the same object, abort, but make it top.
for(i=0;i<_ActiveWindows.size();i++) for(i=0;i<_ActiveWindows.size();i++)
{ {
@ -251,10 +252,8 @@ CInterfaceGroup *CInterfaceHelp::activateNextWindow(CDBCtrlSheet *elt, sint forc
CDBCtrlSheet *ctrlSrc= elt; CDBCtrlSheet *ctrlSrc= elt;
// get the ctrl sheet in this help window. // get the ctrl sheet in this help window.
CDBCtrlSheet *ctrlDst= dynamic_cast<CDBCtrlSheet*>(group->getCtrl(":ctrl_slot")); CDBCtrlSheet *ctrlDst= dynamic_cast<CDBCtrlSheet*>(group->getCtrl(":ctrl_slot"));
bool showSlotAndCreator = false;
if(ctrlDst && ctrlSrc) if(ctrlDst && ctrlSrc)
{ {
showSlotAndCreator = true;
// if same Aspect // if same Aspect
if( ctrlSrc->sameAspect(ctrlDst) ) if( ctrlSrc->sameAspect(ctrlDst) )
{ {
@ -263,6 +262,8 @@ CInterfaceGroup *CInterfaceHelp::activateNextWindow(CDBCtrlSheet *elt, sint forc
// for items, must also test if they have the same itemSlotId, cause relies also on "ItemInfo system" // for items, must also test if they have the same itemSlotId, cause relies also on "ItemInfo system"
if(elt->getType() == CCtrlSheetInfo::SheetType_Item) if(elt->getType() == CCtrlSheetInfo::SheetType_Item)
{ {
showSlotAndCreator = true;
CDBCtrlSheet *realCtrlDst= _InfoWindows[_ActiveWindows[i]].CtrlSheet; CDBCtrlSheet *realCtrlDst= _InfoWindows[_ActiveWindows[i]].CtrlSheet;
if(!realCtrlDst) if(!realCtrlDst)
ok= false; ok= false;
@ -279,13 +280,6 @@ CInterfaceGroup *CInterfaceHelp::activateNextWindow(CDBCtrlSheet *elt, sint forc
} }
} }
} }
CInterfaceElement *ctrl = group->getElement(group->getId()+":content:ctrl_slot");
if (ctrl) ctrl->setActive(showSlotAndCreator);
ctrl = group->getElement(group->getId()+":content:creator");
if (ctrl) ctrl->setActive(showSlotAndCreator);
ctrl = group->getElement(group->getId()+":content:creator_header");
if (ctrl) ctrl->setActive(showSlotAndCreator);
} }
// If some free window possible, search which to take // If some free window possible, search which to take
@ -353,6 +347,13 @@ CInterfaceGroup *CInterfaceHelp::activateNextWindow(CDBCtrlSheet *elt, sint forc
CInterfaceGroup *group= _InfoWindows[newIndexWindow].Window; CInterfaceGroup *group= _InfoWindows[newIndexWindow].Window;
nlassert(group); nlassert(group);
CInterfaceElement *ctrl = group->getElement(group->getId()+":content:ctrl_slot");
if (ctrl) ctrl->setActive(showSlotAndCreator);
ctrl = group->getElement(group->getId()+":content:creator");
if (ctrl) ctrl->setActive(showSlotAndCreator);
ctrl = group->getElement(group->getId()+":content:creator_header");
if (ctrl) ctrl->setActive(showSlotAndCreator);
// activate it, set top, copy item watched // activate it, set top, copy item watched
group->setActive(true); group->setActive(true);
pIM->setTopWindow(group); pIM->setTopWindow(group);
@ -1226,6 +1227,7 @@ static void setupSkillToTradeHelp(CSheetHelpSetup &setup)
if(setup.DestSheet) if(setup.DestSheet)
{ {
setup.SrcSheet->copyAspect(setup.DestSheet); setup.SrcSheet->copyAspect(setup.DestSheet);
setup.DestSheet->setActive(true);
} }
ucstring skillText; ucstring skillText;
@ -2287,6 +2289,7 @@ static void setupItemHelp(CSheetHelpSetup &setup)
if(setup.DestSheet) if(setup.DestSheet)
{ {
setup.SrcSheet->copyAspect(setup.DestSheet); setup.SrcSheet->copyAspect(setup.DestSheet);
setup.DestSheet->setActive(true);
} }
// NB: for raw materials only, must do each once only, must not do it at refresh, cause combo reseted // NB: for raw materials only, must do each once only, must not do it at refresh, cause combo reseted
@ -2575,6 +2578,7 @@ static void setupPactHelp(CSheetHelpSetup &setup)
if(setup.DestSheet) if(setup.DestSheet)
{ {
setup.SrcSheet->copyAspect(setup.DestSheet); setup.SrcSheet->copyAspect(setup.DestSheet);
setup.DestSheet->setActive(true);
} }
@ -2612,6 +2616,7 @@ static void setupMissionHelp(CSheetHelpSetup &setup)
if(setup.DestSheet) if(setup.DestSheet)
{ {
setup.SrcSheet->copyAspect(setup.DestSheet); setup.SrcSheet->copyAspect(setup.DestSheet);
setup.DestSheet->setActive(true);
} }
// get detail text id from db // get detail text id from db
@ -2849,6 +2854,7 @@ void setupOutpostBuildingHelp(CSheetHelpSetup &setup)
if(setup.DestSheet) if(setup.DestSheet)
{ {
setup.SrcSheet->copyAspect(setup.DestSheet); setup.SrcSheet->copyAspect(setup.DestSheet);
setup.DestSheet->setActive(true);
} }
const COutpostBuildingSheet *pOBS = setup.SrcSheet->asOutpostBuildingSheet(); const COutpostBuildingSheet *pOBS = setup.SrcSheet->asOutpostBuildingSheet();
@ -3173,6 +3179,7 @@ void setupSabrinaPhraseHelp(CSheetHelpSetup &setup, const CSPhraseCom &phrase, u
if(setup.DestSheet) if(setup.DestSheet)
{ {
setup.SrcSheet->copyAspect(setup.DestSheet); setup.SrcSheet->copyAspect(setup.DestSheet);
setup.DestSheet->setActive(true);
} }
// **** setup the phrase Text info // **** setup the phrase Text info
@ -3242,6 +3249,7 @@ static void setupSabrinaBrickHelp(CSheetHelpSetup &setup, bool auraDisabled)
if(setup.DestSheet) if(setup.DestSheet)
{ {
setup.SrcSheet->copyAspect(setup.DestSheet); setup.SrcSheet->copyAspect(setup.DestSheet);
setup.DestSheet->setActive(true);
} }

View file

@ -4404,12 +4404,14 @@ void CInterfaceManager::displaySystemInfo(const ucstring &str, const string &cat
} }
} }
if (mode == CClientConfig::SSysInfoParam::Center || mode == CClientConfig::SSysInfoParam::CenterAround)
InSceneBubbleManager.addMessagePopupCenter(str, color);
// If over popup a string at the bottom of the screen // If over popup a string at the bottom of the screen
if ((mode == CClientConfig::SSysInfoParam::Over) || (mode == CClientConfig::SSysInfoParam::OverOnly)) if ((mode == CClientConfig::SSysInfoParam::Over) || (mode == CClientConfig::SSysInfoParam::OverOnly))
InSceneBubbleManager.addMessagePopup(str, color); InSceneBubbleManager.addMessagePopup(str, color);
else if (mode == CClientConfig::SSysInfoParam::Center) else if ( (mode == CClientConfig::SSysInfoParam::Around || mode == CClientConfig::SSysInfoParam::CenterAround)
InSceneBubbleManager.addMessagePopupCenter(str, color); && PeopleInterraction.AroundMe.Window)
else if (mode == CClientConfig::SSysInfoParam::Around && PeopleInterraction.AroundMe.Window)
PeopleInterraction.ChatInput.AroundMe.displayMessage(str, color, 2); PeopleInterraction.ChatInput.AroundMe.displayMessage(str, color, 2);
} }

View file

@ -1628,10 +1628,10 @@ vector<ucstring> CStringManagerClient::getTitleInfos(const std::string &titleId,
if (listInfos.size() > 0) if (listInfos.size() > 0)
{ {
string title = listInfos[0].toUtf8(); if (titleId[0] != '#')
if (titleId[0] == '#') {
title = "#" + title; listInfos[0] = getSpecialWord(listInfos[0].toUtf8(), women);
listInfos[0] = getSpecialWord(title, women); }
} }
return listInfos; return listInfos;