Initial community commit
This commit is contained in:
parent
537bcbc862
commit
fc06254474
16440 changed files with 4239995 additions and 2 deletions
106
Src/Wasabi/api/skin/objectactuator.cpp
Normal file
106
Src/Wasabi/api/skin/objectactuator.cpp
Normal file
|
@ -0,0 +1,106 @@
|
|||
#include <precomp.h>
|
||||
#include "objectactuator.h"
|
||||
#include <api/console/console.h>
|
||||
#include <bfc/parse/paramparser.h>
|
||||
#include <api/script/scriptguid.h>
|
||||
|
||||
XMLParamPair ObjectActuator::params[]=
|
||||
{
|
||||
{OBJECTACTUATOR_GROUP, L"GROUP"},
|
||||
{OBJECTACTUATOR_TARGET, L"TARGET"}
|
||||
};
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
ObjectActuator::ObjectActuator()
|
||||
{
|
||||
myxuihandle = newXuiHandle();
|
||||
CreateXMLParameters(myxuihandle);
|
||||
}
|
||||
|
||||
void ObjectActuator::CreateXMLParameters(int master_handle)
|
||||
{
|
||||
//OBJECTACTUATOR_PARENT::CreateXMLParameters(master_handle);
|
||||
int numParams = sizeof(params) / sizeof(params[0]);
|
||||
hintNumberOfParams(myxuihandle, numParams);
|
||||
for (int i = 0;i < numParams;i++)
|
||||
addParam(myxuihandle, params[i], XUI_ATTRIBUTE_IMPLIED);
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
ObjectActuator::~ObjectActuator() {
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
int ObjectActuator::setXuiParam(int xuihandle, int xmlattributeid, const wchar_t *xmlattributename, const wchar_t *value) {
|
||||
if (xuihandle != myxuihandle)
|
||||
return OBJECTACTUATOR_PARENT::setXuiParam(xuihandle, xmlattributeid, xmlattributename, value);
|
||||
|
||||
switch (xmlattributeid) {
|
||||
case OBJECTACTUATOR_TARGET:
|
||||
if (actuator_wantTargetParam())
|
||||
actuator_setTarget(value);
|
||||
break;
|
||||
case OBJECTACTUATOR_GROUP:
|
||||
if (actuator_wantGroupParam())
|
||||
actuator_setGroup(value);
|
||||
break;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
void ObjectActuator::actuator_setTarget(const wchar_t *value) {
|
||||
objectsid = value;
|
||||
if (isInited() && actuator_wantAutoPerform())
|
||||
performActions();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
void ObjectActuator::actuator_setGroup(const wchar_t *value) {
|
||||
groupid = value;
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
int ObjectActuator::onInit() {
|
||||
int rt = OBJECTACTUATOR_PARENT::onInit();
|
||||
|
||||
if (actuator_wantAutoPerform()) performActions();
|
||||
|
||||
return rt;
|
||||
}
|
||||
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
void ObjectActuator::performActions()
|
||||
{
|
||||
ifc_window *group = getParent();
|
||||
|
||||
if (!groupid.isempty())
|
||||
{
|
||||
GuiObject *o = getGuiObject()->guiobject_findObject(groupid);
|
||||
if (o != NULL) {
|
||||
group = o->guiobject_getRootWnd();
|
||||
}
|
||||
}
|
||||
|
||||
GuiObject *go = static_cast<GuiObject *>(group->getInterface(guiObjectGuid));
|
||||
if (go == NULL) {
|
||||
DebugStringW(L"%s:group:%s\n", getActuatorTag(), groupid.getValue());
|
||||
return;
|
||||
}
|
||||
|
||||
ParamParser pp(objectsid);
|
||||
for (int i=0;i<pp.getNumItems();i++) {
|
||||
GuiObject *target = go->guiobject_findObject(pp.enumItem(i));
|
||||
if (target != NULL)
|
||||
actuator_onPerform(target);
|
||||
else
|
||||
DebugStringW(L"%s:%s/%s\n", getActuatorTag(), groupid.getValue(), objectsid.getValue());
|
||||
}
|
||||
}
|
||||
|
||||
const wchar_t *ObjectActuator::getActuatorTag() {
|
||||
return L"ObjectActuator";
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue