Added: home propertie of html group (so lua scripts can setup the home)

Fixed: adding new landmarks with lua don't remove respawn points if player is not in an island

--HG--
branch : patches-from-atys
hg/hotfix/patches-from-atys
Ulukyn 6 years ago
parent c0037fc55a
commit 36036faffd

@ -78,7 +78,7 @@ namespace NLGUI
// ImageDownload system
enum TDataType {ImgType= 0, BnpType, StylesheetType};
enum TImageType {NormalImage=0, OverImage};
// Constructor
CGroupHTML(const TCtorParam &param);
~CGroupHTML();
@ -122,7 +122,7 @@ namespace NLGUI
// End of the paragraph
void endParagraph();
// add image download (used by view_bitmap.cpp to load web images)
void addImageDownload(const std::string &url, CViewBase *img, const CStyleParams &style = CStyleParams(), const TImageType type = NormalImage);
std::string localImageName(const std::string &url);
@ -228,6 +228,8 @@ namespace NLGUI
std::string getHTML() const { return _DocumentHtml; }
void setHTML(const std::string &html);
void setHome(const std::string &home);
int luaClearRefresh(CLuaState &ls);
int luaClearUndoRedo(CLuaState &ls);
int luaBrowse(CLuaState &ls);
@ -256,6 +258,7 @@ namespace NLGUI
REFLECT_LUA_METHOD("setBackground", luaSetBackground)
REFLECT_STRING("url", getURL, setURL)
REFLECT_STRING("html", getHTML, setHTML)
REFLECT_STRING("home", home, setHome)
REFLECT_FLOAT("timeout", getTimeout, setTimeout)
REFLECT_STRING("title", getTitle, setTitle)
REFLECT_EXPORT_END
@ -714,7 +717,7 @@ namespace NLGUI
return 0;
return _Indent.back();
}
// Current node is a title
@ -806,7 +809,7 @@ namespace NLGUI
// decode all HTML entities
static ucstring decodeHTMLEntities(const ucstring &str);
struct CDataImageDownload
{
public:

@ -318,10 +318,10 @@ namespace NLGUI
sint32 height = style.Height;
sint32 maxw = style.MaxWidth;
sint32 maxh = style.MaxHeight;
sint32 imageWidth, imageHeight;
bool changed = true;
// get image texture size
// if image is being downloaded, then correct size is set after thats done
CCtrlButton *btn = dynamic_cast<CCtrlButton*>(view);
@ -346,14 +346,14 @@ namespace NLGUI
return;
}
}
// if width/height is not requested, then use image size
// else recalculate missing value, keep image ratio
if (width == -1 && height == -1)
{
width = imageWidth;
height = imageHeight;
changed = false;
}
else
@ -364,7 +364,7 @@ namespace NLGUI
else
height = width / ratio;
}
// apply max-width, max-height rules if asked
if (maxw > -1 || maxh > -1)
{
@ -1555,12 +1555,12 @@ namespace NLGUI
}
else
if( name == "error_color_global_color" )
{
{
return toString( ErrorColorGlobalColor );
}
else
if( name == "link_color_global_color" )
{
{
return toString( LinkColorGlobalColor );
}
else
@ -1570,67 +1570,67 @@ namespace NLGUI
}
else
if( name == "h1_color_global_color" )
{
{
return toString( H1ColorGlobalColor );
}
else
if( name == "h2_color_global_color" )
{
{
return toString( H2ColorGlobalColor );
}
else
if( name == "h3_color_global_color" )
{
{
return toString( H3ColorGlobalColor );
}
else
if( name == "h4_color_global_color" )
{
{
return toString( H4ColorGlobalColor );
}
else
if( name == "h5_color_global_color" )
{
{
return toString( H5ColorGlobalColor );
}
else
if( name == "h6_color_global_color" )
{
{
return toString( H6ColorGlobalColor );
}
else
if( name == "text_font_size" )
{
{
return toString( TextFontSize );
}
else
if( name == "h1_font_size" )
{
{
return toString( H1FontSize );
}
else
if( name == "h2_font_size" )
{
{
return toString( H2FontSize );
}
else
if( name == "h3_font_size" )
{
{
return toString( H3FontSize );
}
else
if( name == "h4_font_size" )
{
{
return toString( H4FontSize );
}
else
if( name == "h5_font_size" )
{
{
return toString( H5FontSize );
}
else
if( name == "h6_font_size" )
{
{
return toString( H6FontSize );
}
else
@ -1839,7 +1839,7 @@ namespace NLGUI
}
else
if( name == "error_color_global_color" )
{
{
bool b;
if( fromString( value, b ) )
ErrorColorGlobalColor = b;
@ -1847,7 +1847,7 @@ namespace NLGUI
}
else
if( name == "link_color_global_color" )
{
{
bool b;
if( fromString( value, b ) )
LinkColorGlobalColor = b;
@ -1863,7 +1863,7 @@ namespace NLGUI
}
else
if( name == "h1_color_global_color" )
{
{
bool b;
if( fromString( value, b ) )
H1ColorGlobalColor = b;
@ -1871,7 +1871,7 @@ namespace NLGUI
}
else
if( name == "h2_color_global_color" )
{
{
bool b;
if( fromString( value, b ) )
H2ColorGlobalColor = b;
@ -1879,7 +1879,7 @@ namespace NLGUI
}
else
if( name == "h3_color_global_color" )
{
{
bool b;
if( fromString( value, b ) )
H3ColorGlobalColor = b;
@ -1887,7 +1887,7 @@ namespace NLGUI
}
else
if( name == "h4_color_global_color" )
{
{
bool b;
if( fromString( value, b ) )
H4ColorGlobalColor = b;
@ -1895,7 +1895,7 @@ namespace NLGUI
}
else
if( name == "h5_color_global_color" )
{
{
bool b;
if( fromString( value, b ) )
H5ColorGlobalColor = b;
@ -1903,7 +1903,7 @@ namespace NLGUI
}
else
if( name == "h6_color_global_color" )
{
{
bool b;
if( fromString( value, b ) )
H6ColorGlobalColor = b;
@ -1911,7 +1911,7 @@ namespace NLGUI
}
else
if( name == "text_font_size" )
{
{
uint i;
if( fromString( value, i ) )
TextFontSize = i;
@ -1919,7 +1919,7 @@ namespace NLGUI
}
else
if( name == "h1_font_size" )
{
{
uint i;
if( fromString( value, i ) )
H1FontSize = i;
@ -1927,7 +1927,7 @@ namespace NLGUI
}
else
if( name == "h2_font_size" )
{
{
uint i;
if( fromString( value, i ) )
H2FontSize = i;
@ -1935,7 +1935,7 @@ namespace NLGUI
}
else
if( name == "h3_font_size" )
{
{
uint i;
if( fromString( value, i ) )
H3FontSize = i;
@ -1943,7 +1943,7 @@ namespace NLGUI
}
else
if( name == "h4_font_size" )
{
{
uint i;
if( fromString( value, i ) )
H4FontSize = i;
@ -1951,7 +1951,7 @@ namespace NLGUI
}
else
if( name == "h5_font_size" )
{
{
uint i;
if( fromString( value, i ) )
H5FontSize = i;
@ -1959,7 +1959,7 @@ namespace NLGUI
}
else
if( name == "h6_font_size" )
{
{
uint i;
if( fromString( value, i ) )
H6FontSize = i;
@ -2144,7 +2144,7 @@ namespace NLGUI
xmlSetProp( node, BAD_CAST "h4_color", BAD_CAST toString( H4Color ).c_str() );
xmlSetProp( node, BAD_CAST "h5_color", BAD_CAST toString( H5Color ).c_str() );
xmlSetProp( node, BAD_CAST "h6_color", BAD_CAST toString( H6Color ).c_str() );
xmlSetProp( node, BAD_CAST "error_color_global_color",
BAD_CAST toString( ErrorColorGlobalColor ).c_str() );
xmlSetProp( node, BAD_CAST "link_color_global_color",
@ -2781,7 +2781,7 @@ namespace NLGUI
getParagraph()->addChild (buttonGroup);
paragraphChange ();
}
}
else
{
@ -4529,14 +4529,14 @@ namespace NLGUI
}
// ***************************************************************************
int CGroupHTML::luaInsertText(CLuaState &ls)
int CGroupHTML::luaInsertText(CLuaState &ls)
{
const char *funcName = "insertText";
CLuaIHM::checkArgCount(ls, funcName, 3);
CLuaIHM::checkArgType(ls, funcName, 1, LUA_TSTRING);
CLuaIHM::checkArgType(ls, funcName, 2, LUA_TSTRING);
CLuaIHM::checkArgType(ls, funcName, 3, LUA_TBOOLEAN);
string name = ls.toString(1);
ucstring text;
@ -4639,6 +4639,11 @@ namespace NLGUI
renderHtmlString(html);
}
void CGroupHTML::setHome(const std::string &home)
{
Home = home;
}
// ***************************************************************************
void CGroupHTML::parseStylesheetFile(const std::string &fname)
{
@ -4940,7 +4945,7 @@ namespace NLGUI
css += "progress::-webkit-progress-value { background-color: rgb(0, 100, 180);}";
_Style.parseStylesheet(css);
}
// ***************************************************************************
std::string CGroupHTML::HTMLOListElement::getListMarkerText() const
{

@ -32,6 +32,7 @@
#include "nel/gui/action_handler.h"
#include "../dummy_progress.h"
#include "group_compas.h"
#include "group_html_cs.h"
#include "../connection.h"
#include "../net_manager.h"
#include "people_interraction.h" // for MaxNumPeopleInTeam
@ -114,10 +115,10 @@ static void popupLandMarkNameDialog()
gc->center();
CWidgetManager::getInstance()->setTopWindow(gc);
gc->enableBlink(1);
CGroupEditBox *eb = dynamic_cast<CGroupEditBox *>(gc->getGroup("eb"));
if (!eb) return;
if (!eb) return;
// Load ComboBox for Landmarks & sort entries
CDBGroupComboBox *cb = dynamic_cast<CDBGroupComboBox *>(gc->getGroup("landmarktypes"));
cb->sortText();
@ -126,7 +127,7 @@ static void popupLandMarkNameDialog()
{
CGroupMap *map = dynamic_cast<CGroupMap *>(LastSelectedLandMark->getParent());
if (!map) return;
const CUserLandMark userLM = map->getUserLandMark(LastSelectedLandMark);
NLGUI::CDBManager::getInstance()->getDbProp( "UI:TEMP:LANDMARKTYPE" )->setValue8(cb->getTextPos(userLM.Type));
@ -1207,22 +1208,54 @@ void CGroupMap::checkCoords()
// **** retrieve pos of respawn and update it, or hide it if there's no target
uint i;
uint offset = 0;
if (!_ArkPoints.empty())
{
offset = _ArkPoints.size();
if (_ArkPoints.size() < _RespawnLM.size())
{
for (i = (uint)_ArkPoints.size(); i < _RespawnLM.size(); i++)
{
delCtrl(_RespawnLM[i]);
_RespawnLM[i] = NULL;
}
}
if (_ArkPoints.empty()) // Ark points replace Respawn Points
_RespawnLM.resize(_ArkPoints.size(), NULL);
for(i = 0; i < _ArkPoints.size(); i++)
{
if (_RespawnLM[i] == NULL)
{
_RespawnLM[i] = createArkPointButton(_ArkPoints[i]);
_RespawnLM[i]->setId(this->getId() + ":arklm_" + NLMISC::toString(i));
_RespawnLM[i]->setParent(this);
ucstring title;
title.fromUtf8(_ArkPoints[i].Title);
_RespawnLM[i]->setDefaultContextHelp(title);
_RespawnLM[i]->HandleEvents = true;
addCtrl(_RespawnLM[i]);
updateLMPosFromDBPos(_RespawnLM[i], _ArkPoints[i].x, _ArkPoints[i].y);
}
}
}
if (_ArkPoints.empty() || !isIsland())
{
if (_RespawnPos.size() < _RespawnLM.size())
if (offset + _RespawnPos.size() < _RespawnLM.size())
{
for (i = (uint)_RespawnPos.size(); i < _RespawnLM.size(); i++)
for (i = offset + _RespawnPos.size(); i < _RespawnLM.size(); i++)
{
delCtrl(_RespawnLM[i]);
_RespawnLM[i] = NULL;
}
}
_RespawnLM.resize(_RespawnPos.size(), NULL);
for(i = 0; i < _RespawnPos.size(); ++i)
_RespawnLM.resize(offset + _RespawnPos.size(), NULL);
for(int j = 0; j < _RespawnPos.size(); ++j)
{
i = offset + j;
if (_RespawnLM[i] == NULL)
{
_RespawnLM[i] = createLandMarkButton(_RespawnLMOptions);
@ -1245,38 +1278,11 @@ void CGroupMap::checkCoords()
addCtrl(_RespawnLM[i]);
}
if (_RespawnLM[i])
updateLMPosFromDBPos(_RespawnLM[i], _RespawnPos[i].x, _RespawnPos[i].y);
updateLMPosFromDBPos(_RespawnLM[i], _RespawnPos[j].x, _RespawnPos[j].y);
}
}
else
{
if (_ArkPoints.size() < _RespawnLM.size())
{
for (i = (uint)_ArkPoints.size(); i < _RespawnLM.size(); i++)
{
delCtrl(_RespawnLM[i]);
_RespawnLM[i] = NULL;
}
}
_RespawnLM.resize(_ArkPoints.size(), NULL);
for(i = 0; i < _ArkPoints.size(); i++)
{
if (_RespawnLM[i] == NULL)
{
_RespawnLM[i] = createArkPointButton(_ArkPoints[i]);
_RespawnLM[i]->setId(this->getId() + ":arklm_" + NLMISC::toString(i));
_RespawnLM[i]->setParent(this);
ucstring title;
title.fromUtf8(_ArkPoints[i].Title);
_RespawnLM[i]->setDefaultContextHelp(title);
_RespawnLM[i]->HandleEvents = true;
addCtrl(_RespawnLM[i]);
updateLMPosFromDBPos(_RespawnLM[i], _ArkPoints[i].x, _ArkPoints[i].y);
}
}
}
if ((_MapMode == MapMode_Death) || (_MapMode == MapMode_SpawnSquad))
{
if (_RespawnPosReseted)
@ -1381,7 +1387,7 @@ void CGroupMap::checkCoords()
{
if (_TeammateLM[i])
{
{
sint32 px, py;
if (_TeammatePosStates[i]->getPos(px, py))
@ -2271,6 +2277,21 @@ void CGroupMap::setMap(SMap *map)
invalidateCoords();
createContinentLandMarks();
nlinfo("setMap (%f,%f) (%f,%f)", _CurMap->MinX, _CurMap->MinY, _CurMap->MaxX, _CurMap->MaxY);
delArkPoints();
CGroupHTML *groupHtml = dynamic_cast<CGroupHTML*>(CWidgetManager::getInstance()->getElementFromId("ui:interface:map:content:map_content:lm_events:html"));
if (groupHtml)
{
groupHtml->setHome(groupHtml->Home+toString("&min_x=%f&min_y=%f&max_x=%f&max_y=%f", _CurMap->MinX, _CurMap->MinY, _CurMap->MaxX, _CurMap->MaxY));
if (groupHtml->isBrowsing())
groupHtml->stopBrowse();
groupHtml->browse(groupHtml->Home.c_str());
}
if (_CurContinent != NULL)
_MapMaterial.setTexture(1, _CurContinent->FoW.Tx);
else
@ -2626,7 +2647,7 @@ static void hideTeleportButtonsInPopupMenuIfNotEnoughPriv()
CInterfaceElement *ie = CWidgetManager::getInstance()->getElementFromId("ui:interface:map_menu:teleport");
if(ie) ie->setActive(showTeleport);
ie = CWidgetManager::getInstance()->getElementFromId("ui:interface:map_menu_island:teleport");
if(ie) ie->setActive(showTeleport);
@ -2723,7 +2744,7 @@ CGroupMap::CLandMarkButton *CGroupMap::createArkPointButton(const CArkPoint &poi
lmb->setColorOver(point.Color);
lmb->setColorPushed(point.Color);
lmb->setModulateGlobalColorAll(false);
lmb->setPosRef(Hotspot_MM);
return lmb;
}
@ -2772,13 +2793,13 @@ void CGroupMap::addLandMark(TLandMarkButtonVect &destList, const NLMISC::CVector
void CGroupMap::addUserLandMark(const NLMISC::CVector2f &pos, const ucstring &title, NLMISC::CRGBA color)
{
if (_CurContinent == NULL) return;
CUserLandMark ulm;
mapToWorld(ulm.Pos, pos);
ulm.Title = title;
ulm.Type = 5;
_CurContinent->UserLandMarks.push_back(ulm);
CLandMarkOptions options(_UserLMOptions);
options.ColorNormal = options.ColorOver = options.ColorPushed = color;
// create a new button and add it to the list
@ -2894,7 +2915,7 @@ CUserLandMark CGroupMap::getUserLandMark(CCtrlButton *button) const
}
}
return ulm;
}
@ -2907,7 +2928,7 @@ uint CGroupMap::getNumUserLandMarks() const
//============================================================================================================
CLandMarkOptions CGroupMap::getUserLandMarkOptions(uint32 lmindex) const
{
if (_CurContinent == NULL || _CurContinent->UserLandMarks.size() < lmindex)
if (_CurContinent == NULL || _CurContinent->UserLandMarks.size() < lmindex)
return _UserLMOptions;
CLandMarkOptions clmo(_UserLMOptions);
@ -3936,9 +3957,9 @@ REGISTER_ACTION_HANDLER(CAHMapTeleport, "map_teleport");
//=========================================================================================================
// update LandMarks Colors
class CUpdateLandMarksColor : public IActionHandler{public: virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */)
{
CInterfaceManager *pIM = CInterfaceManager::getInstance();
class CUpdateLandMarksColor : public IActionHandler{public: virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */)
{
CInterfaceManager *pIM = CInterfaceManager::getInstance();
CUserLandMark::_LandMarksColor[CUserLandMark::Misc] = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:LANDMARK:COLORS:MISC")->getValueRGBA();
CUserLandMark::_LandMarksColor[CUserLandMark::Tribe] = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:LANDMARK:COLORS:TRIBE")->getValueRGBA();
@ -3972,10 +3993,10 @@ class CUpdateLandMarksColor : public IActionHandler{public: virtual void execute
CUserLandMark::_LandMarksColor[CUserLandMark::Teleporter] = NLGUI::CDBManager::getInstance()->getDbProp("UI:SAVE:LANDMARK:COLORS:TELEPORTER")->getValueRGBA();
CGroupMap *pGM = dynamic_cast<CGroupMap *>(CWidgetManager::getInstance()->getElementFromId("ui:interface:map:content:map_content:actual_map"));
if (pGM == NULL) return;
pGM->updateUserLandMarks();
CGroupMap *pGM = dynamic_cast<CGroupMap *>(CWidgetManager::getInstance()->getElementFromId("ui:interface:map:content:map_content:actual_map"));
if (pGM == NULL) return;
pGM->updateUserLandMarks();
}};
REGISTER_ACTION_HANDLER (CUpdateLandMarksColor, "update_landmarks_color");

Loading…
Cancel
Save