forked from Mirrors/openclonk
custom GUIs: added property GraphicsName to specify graphics of Symbol (if Symbol is a definition)
f.e. {Symbol = Icon_Number, GraphicsName = "Inf"}Controls
parent
fa5257328c
commit
dae7f11a70
|
@ -69,6 +69,12 @@ Every window can be defined by the following properties, which can additionally
|
|||
<col>A symbol that will be drawn in the window.</col>
|
||||
</row>
|
||||
<row>
|
||||
<col>GraphicsName</col>
|
||||
<col>string</col>
|
||||
<col>"Infinite"</col>
|
||||
<col>Only if Symbol is a definition: the name of the graphics to use.</col>
|
||||
</row>
|
||||
<row>
|
||||
<col>Decoration</col>
|
||||
<col>definition</col>
|
||||
<col>GUI_MenuDeco</col>
|
||||
|
|
|
@ -305,6 +305,8 @@ void C4ScriptGuiWindowProperty::CleanUp(Prop &prop)
|
|||
if (prop.action) delete prop.action;
|
||||
break;
|
||||
case C4ScriptGuiWindowPropertyName::text:
|
||||
case C4ScriptGuiWindowPropertyName::tooltip:
|
||||
case C4ScriptGuiWindowPropertyName::symbolGraphicsName:
|
||||
if (prop.strBuf) delete prop.strBuf;
|
||||
break;
|
||||
default:
|
||||
|
@ -382,6 +384,7 @@ const C4Value C4ScriptGuiWindowProperty::ToC4Value()
|
|||
break;
|
||||
|
||||
case C4ScriptGuiWindowPropertyName::text:
|
||||
case C4ScriptGuiWindowPropertyName::symbolGraphicsName:
|
||||
case C4ScriptGuiWindowPropertyName::tooltip:
|
||||
{
|
||||
if (prop.strBuf)
|
||||
|
@ -514,6 +517,7 @@ void C4ScriptGuiWindowProperty::Set(const C4Value &value, C4String *tag)
|
|||
break;
|
||||
}
|
||||
case C4ScriptGuiWindowPropertyName::text:
|
||||
case C4ScriptGuiWindowPropertyName::symbolGraphicsName:
|
||||
case C4ScriptGuiWindowPropertyName::tooltip:
|
||||
{
|
||||
C4String *string = value.getStr();
|
||||
|
@ -649,6 +653,7 @@ void C4ScriptGuiWindow::Init()
|
|||
props[C4ScriptGuiWindowPropertyName::symbolObject].SetNull();
|
||||
props[C4ScriptGuiWindowPropertyName::symbolDef].SetNull();
|
||||
props[C4ScriptGuiWindowPropertyName::text].SetNull();
|
||||
props[C4ScriptGuiWindowPropertyName::symbolGraphicsName].SetNull();
|
||||
props[C4ScriptGuiWindowPropertyName::tooltip].SetNull();
|
||||
props[C4ScriptGuiWindowPropertyName::onClickAction].SetNull();
|
||||
props[C4ScriptGuiWindowPropertyName::onMouseInAction].SetNull();
|
||||
|
@ -920,6 +925,7 @@ const C4Value C4ScriptGuiWindow::ToC4Value()
|
|||
break;
|
||||
case P_Target: val = C4Value(target); break;
|
||||
case P_Text: val = props[C4ScriptGuiWindowPropertyName::text].ToC4Value(); break;
|
||||
case P_GraphicsName: val = props[C4ScriptGuiWindowPropertyName::symbolGraphicsName].ToC4Value(); break;
|
||||
case P_Tooltip: val = props[C4ScriptGuiWindowPropertyName::tooltip].ToC4Value(); break;
|
||||
case P_ID: val = C4Value(id); break;
|
||||
case P_OnClick: val = props[C4ScriptGuiWindowPropertyName::onClickAction].ToC4Value(); break;
|
||||
|
@ -1025,6 +1031,10 @@ bool C4ScriptGuiWindow::CreateFromPropList(C4PropList *proplist, bool resetStdTa
|
|||
props[C4ScriptGuiWindowPropertyName::text].Set(property, stdTag);
|
||||
layoutUpdateRequired = true;
|
||||
}
|
||||
else if (&Strings.P[P_GraphicsName] == key)
|
||||
{
|
||||
props[C4ScriptGuiWindowPropertyName::symbolGraphicsName].Set(property, stdTag);
|
||||
}
|
||||
else if (&Strings.P[P_Tooltip] == key)
|
||||
{
|
||||
props[C4ScriptGuiWindowPropertyName::tooltip].Set(property, stdTag);
|
||||
|
@ -1749,9 +1759,10 @@ bool C4ScriptGuiWindow::Draw(C4TargetFacet &cgo, int32_t player, C4Rect *current
|
|||
else
|
||||
{
|
||||
C4Def *symbolDef = props[C4ScriptGuiWindowPropertyName::symbolDef].GetDef();
|
||||
StdCopyStrBuf *graphicsName = props[C4ScriptGuiWindowPropertyName::symbolGraphicsName].GetStrBuf();
|
||||
if (symbolDef)
|
||||
{
|
||||
symbolDef->Draw(cgoOut);
|
||||
symbolDef->Draw(cgoOut, false, 0UL, nullptr, 0, 0, nullptr, graphicsName ? graphicsName->getData() : nullptr);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,6 +53,7 @@ enum C4ScriptGuiWindowPropertyName
|
|||
frameDecoration,
|
||||
symbolObject,
|
||||
symbolDef,
|
||||
symbolGraphicsName,
|
||||
text,
|
||||
onClickAction,
|
||||
onMouseInAction,
|
||||
|
|
|
@ -596,12 +596,17 @@ void C4Def::LoadSounds(C4Group &hGroup, C4SoundSystem* pSoundSystem)
|
|||
pSoundSystem->LoadEffects(hGroup);
|
||||
}
|
||||
|
||||
void C4Def::Draw(C4Facet &cgo, bool fSelected, DWORD iColor, C4Object *pObj, int32_t iPhaseX, int32_t iPhaseY, C4DrawTransform* trans)
|
||||
void C4Def::Draw(C4Facet &cgo, bool fSelected, DWORD iColor, C4Object *pObj, int32_t iPhaseX, int32_t iPhaseY, C4DrawTransform* trans, const char *graphicsName)
|
||||
{
|
||||
if(fSelected)
|
||||
pDraw->DrawBoxDw(cgo.Surface, cgo.X, cgo.Y, cgo.X + cgo.Wdt - 1, cgo.Y + cgo.Hgt - 1, C4RGB(0xca, 0, 0));
|
||||
|
||||
C4DefGraphics* graphics = pObj ? pObj->GetGraphics() : &Graphics;
|
||||
if (graphicsName)
|
||||
{
|
||||
C4DefGraphics *other = graphics->Get(graphicsName);
|
||||
if (other) graphics = other;
|
||||
}
|
||||
graphics->Draw(cgo, iColor, pObj, iPhaseX, iPhaseY, trans);
|
||||
}
|
||||
|
||||
|
|
|
@ -209,7 +209,7 @@ public:
|
|||
StdMeshSkeletonLoader &loader,
|
||||
DWORD dwLoadWhat, const char *szLanguage,
|
||||
class C4SoundSystem *pSoundSystem = NULL);
|
||||
void Draw(C4Facet &cgo, bool fSelected=false, DWORD iColor=0, C4Object *pObj=NULL, int32_t iPhaseX=0, int32_t iPhaseY=0,C4DrawTransform* trans=NULL);
|
||||
void Draw(C4Facet &cgo, bool fSelected=false, DWORD iColor=0, C4Object *pObj=NULL, int32_t iPhaseX=0, int32_t iPhaseY=0, C4DrawTransform* trans=NULL, const char * graphicsName=NULL);
|
||||
|
||||
inline C4Facet &GetMainFace(C4DefGraphics *pGraphics, DWORD dwClr=0) { MainFace.Surface=pGraphics->GetBitmap(dwClr); return MainFace; }
|
||||
int32_t GetPlane() { return GetPropertyInt(P_Plane); }
|
||||
|
|
|
@ -156,6 +156,7 @@ C4StringTable::C4StringTable()
|
|||
P[P_Target] = "Target";
|
||||
P[P_Std] = "Std";
|
||||
P[P_Text] = "Text";
|
||||
P[P_GraphicsName] = "GraphicsName";
|
||||
P[P_OnClick] = "OnClick";
|
||||
P[P_OnMouseIn] = "OnMouseIn";
|
||||
P[P_OnMouseOut] = "OnMouseOut";
|
||||
|
|
|
@ -362,6 +362,7 @@ enum C4PropertyName
|
|||
P_Target,
|
||||
P_Std,
|
||||
P_Text,
|
||||
P_GraphicsName,
|
||||
P_ID,
|
||||
P_OnClick,
|
||||
P_OnMouseIn,
|
||||
|
|
Loading…
Reference in New Issue