ZVISION: Basic integration of SideFX into scriptManager.

This commit is contained in:
Marisa-Chan 2013-10-18 20:11:33 +00:00
parent 82348a74df
commit a6f025c74f
2 changed files with 33 additions and 2 deletions

View file

@ -108,6 +108,16 @@ void ScriptManager::createReferenceTable() {
}
void ScriptManager::updateNodes(uint deltaTimeMillis) {
// If process() returns true, it means the node can be deleted
for (SideFXList::iterator iter = _activeSideFx.begin(); iter != _activeSideFx.end();) {
if ((*iter)->process(deltaTimeMillis)) {
delete (*iter);
// Remove the node
iter = _activeSideFx.erase(iter);
} else {
++iter;
}
}
// If process() returns true, it means the node can be deleted
for (ControlList::iterator iter = _activeControls.begin(); iter != _activeControls.end();) {
if ((*iter)->process(deltaTimeMillis)) {
@ -262,7 +272,7 @@ void ScriptManager::disableControl(uint32 key) {
void ScriptManager::focusControl(uint32 key) {
for (ControlList::iterator iter = _activeControls.begin(); iter != _activeControls.end(); ++iter) {
uint32 controlKey = (*iter)->getKey();
if (controlKey == key) {
(*iter)->focus();
} else if (controlKey == _currentlyFocusedControl) {
@ -273,6 +283,20 @@ void ScriptManager::focusControl(uint32 key) {
_currentlyFocusedControl = key;
}
void ScriptManager::addSideFX(SideFX *fx) {
_activeSideFx.push_back(fx);
}
SideFX *ScriptManager::getSideFX(uint32 key) {
for (SideFXList::iterator iter = _activeSideFx.begin(); iter != _activeSideFx.end(); ++iter) {
if ((*iter)->getKey() == key) {
return (*iter);
}
}
return nullptr;
}
void ScriptManager::onMouseDown(const Common::Point &screenSpacePos, const Common::Point &backgroundImageSpacePos) {
for (ControlList::iterator iter = _activeControls.begin(); iter != _activeControls.end(); ++iter) {
(*iter)->onMouseDown(screenSpacePos, backgroundImageSpacePos);