Exemplo n.º 1
0
void Node::update()
{
	if (!needUpdate) {
		updateChild();
		return;
	}

	D3DXMATRIX matrix;
	float tmp_ap_x = m_v2AnchontPoint.x * m_siContentSize.width;
	float tmp_ap_y = m_v2AnchontPoint.y * m_siContentSize.height;
	D3DXMatrixTranslation(&matrix, tmp_ap_x, tmp_ap_y, 0);
	mMatrix = mMatrix * matrix;
	D3DXMatrixScaling(&matrix, m_v2Scale.x, m_v2Scale.y, 1);
	mMatrix = mMatrix * matrix;
	D3DXMatrixRotationX(&matrix, m_v3Rotate.x);
	mMatrix = mMatrix * matrix;
	D3DXMatrixRotationY(&matrix, m_v3Rotate.y);
	mMatrix = mMatrix * matrix;
	D3DXMatrixRotationZ(&matrix, m_v3Rotate.z);
	mMatrix = mMatrix * matrix;
	D3DXMatrixTranslation(&matrix, m_v2Position.x, m_v2Position.y, 0);
	mMatrix = mMatrix * matrix;

	if (m_parent)
		mMatrix = mMatrix * (*m_parent->mMatrix);

	auto itor = m_childList.begin();
	for (; itor != m_childList.end(); ++itor)
		(*itor)->setUpdate(true);

	updateChild();
}
Exemplo n.º 2
0
void Module2000::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			if (_moduleResult == 1)
				leaveModule(0);
			else
				createScene(1, 0);
			break;
		case 1:
			if (_moduleResult == 0) {
				if (getGlobalVar(V_WORLDS_JOINED))
					createScene(1, 0);
				else
					createScene(2, -1);
			} else if (_moduleResult == 1)
				createScene(1, 1);
			else if (_moduleResult == 2)
				createScene(0, 0);
			break;
		case 2:
			createScene(1, 0);
			break;
		}
	}
}
Exemplo n.º 3
0
void Module2100::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			if (_moduleResult == 1) {
				setGlobalVar(V_DOOR_PASSED, 1);
				leaveModule(0);
			} else
				leaveModule(1);
			break;
		}
	}
}
Exemplo n.º 4
0
void Module1900::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			if (_moduleResult == 1)
				createScene(6, 0);
			else
				leaveModule(0);
			break;
		case 6:
			createScene(0, 1);
			break;
		}
	}
}
Exemplo n.º 5
0
void Module1500::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			createScene(1, -1);
			break;
		case 1:
			createScene(2, -1);
			break;
		case 3:
			createScene(0, -1);
			break;
		default:
			leaveModule(0);
			break;
		}
	}
}
Exemplo n.º 6
0
void Module2900::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			if (_moduleResult == (uint32)-1) {
				leaveModule((uint32)-1);
			} else {
				_teleporterModuleResult = _moduleResult;
				switch (getGlobalVar(V_TELEPORTER_WHICH)) {
				case 0:
					createScene(3, 4);
					break;
				case 1:
					createScene(2, 2);
					break;
				case 2:
					createScene(5, 2);
					break;
				case 3:
					createScene(4, 2);
					break;
				case 4:
					createScene(6, 2);
					break;
				case 5:
					createScene(1, 2);
					break;
				default:
					leaveModule(_moduleResult);
					break;
				}
			}
			break;
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		case 6:
			leaveModule(_teleporterModuleResult);
			break;
		}
	}
}
Exemplo n.º 7
0
void Module1200::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			if (_moduleResult == 1)
				createScene(1, 0);
			else if (_moduleResult == 2) {
				if (getGlobalVar(V_CREATURE_EXPLODED) && !getGlobalVar(V_SEEN_CREATURE_EXPLODE_VID))
					createScene(2, -1);
				else
					leaveModule(1);
			} else
				leaveModule(0);
			break;
		case 1:
			createScene(0, 1);
			break;
		case 2:
			_vm->_soundMan->startMusic(0x62222CAE, 0, 0);
			createScene(0, 3);
			break;
		}
	}
}
Exemplo n.º 8
0
void Module2300::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			if (_moduleResult == 1)
				createScene(1, 4);
			else
				leaveModule(0);
			break;
		case 1:
			if (_moduleResult == 1)
				createScene(0, 0);
			else if (_vm->isDemo())
				createScene(9999, 0);
			else if (_moduleResult == 2)
				createScene(2, 1);
			else if (_moduleResult == 3)
				createScene(1, 3);
			else if (_moduleResult == 4)
				createScene(3, 1);
			else if (_moduleResult == 5)
				leaveModule(3);
			else
				leaveModule(4);
			break;
		case 2:
			if (_moduleResult == 1)
				leaveModule(1);
			else
				createScene(1, 5);
			break;
		case 3:
			if (_moduleResult == 1)
				leaveModule(2);
			else
				createScene(1, 1);
			break;
		case 4:
			_vm->_soundMan->setTwoSoundsPlayFlag(false);
			createScene(1, 2);
			break;
		case 9999:
			createScene(1, -1);
			break;
		}
	} else {
		switch (_sceneNum) {
		case 1:
			if (_isWallBroken && navigationScene()->isWalkingForward() && navigationScene()->getNavigationIndex() == 4 &&
				navigationScene()->getFrameNumber() % 2) {
				_soundVolume++;
				_vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume);
			}
			if (navigationScene()->isWalkingForward() && navigationScene()->getNavigationIndex() == 0 &&
				navigationScene()->getFrameNumber() == 50) {
				_vm->_soundMan->playTwoSounds(0x1A214010, 0x48498E46, 0x50399F64, 0);
				_vm->_soundMan->setSoundVolume(0x48498E46, 70);
				_vm->_soundMan->setSoundVolume(0x50399F64, 70);
			}
			break;
		case 3:
			if (_isWallBroken && navigationScene()->isWalkingForward() && navigationScene()->getFrameNumber() % 2) {
				_soundVolume--;
				_vm->_soundMan->setSoundVolume(0x90F0D1C3, _soundVolume);
			}
			break;
		}
	}
}
Exemplo n.º 9
0
bool UIListView::scrollChildren(float touchOffset)
{
    float realOffset = touchOffset;
    
    switch (_direction)
    {
        case LISTVIEW_DIR_VERTICAL: // vertical            
            switch (_moveDirection)
            {
                case LISTVIEW_MOVE_DIR_UP: // up
                    {
                        realOffset = MIN(realOffset, _disBetweenChild);
                        
                        UIWidget* child_last = dynamic_cast<UIWidget*>(_childPool->getLastObject());
                        float child_last_bottom = child_last->getBottomInParent();
                        float scroll_bottom = _bottomBoundary;
                        
                        if (_end == _dataLength - 1)
                        {
                            if (realOffset > scroll_bottom + _disBoundaryToChild_0 - child_last_bottom)
                            {
                                realOffset = scroll_bottom + _disBoundaryToChild_0 - child_last_bottom;
                            }
                            moveChildren(realOffset);
                            return false;
                        }
                        moveChildren(realOffset);
                        
                        if (_end < _dataLength - 1)
                        {
                            collectOverTopChild();
                            unsigned int count = _overTopArray->count();
                            if (count > 0)
                            {
                                updateChild();
                                setLoopPosition();
                                _overTopArray->removeAllObjects();
                            }
                        }
                    }
                    break;
                    
                case LISTVIEW_MOVE_DIR_DOWN: // down
                    {
                        realOffset = MAX(realOffset, -_disBetweenChild);
                        
                        UIWidget* child_0 = dynamic_cast<UIWidget*>(_childPool->getObjectAtIndex(0));
                        float child_0_top = child_0->getTopInParent();
                        float scroll_top = _topBoundary;
                        
                        if (_begin == 0)
                        {
                            if (realOffset < scroll_top - _disBoundaryToChild_0 - child_0_top)
                            {
                                realOffset = scroll_top - _disBoundaryToChild_0 - child_0_top;
                            }
                            moveChildren(realOffset);
                            return false;
                        }
                        moveChildren(realOffset);
                                                
                        if (_begin > 0)
                        {
                            collectOverBottomChild();
                            int count = _overBottomArray->count();
                            if (count > 0)
                            {                                
                                updateChild();
                                setLoopPosition();
                                _overBottomArray->removeAllObjects();
                            }
                        }
                    }
                    break;
                    
                default:
                    break;
            }                                                                
            return true;
            break;
            
        case LISTVIEW_DIR_HORIZONTAL: // horizontal
            switch (_moveDirection)
            {
                case LISTVIEW_MOVE_DIR_LEFT: // left
                    {
                        realOffset = MAX(realOffset, -_disBetweenChild);
                        
                        UIWidget* child_last = dynamic_cast<UIWidget*>(_childPool->getLastObject());
                        float child_last_right = child_last->getRightInParent();
                        float scroll_right = _rightBoundary;
                        
                        if (_end == _dataLength - 1)
                        {
                            if (realOffset < scroll_right - _disBoundaryToChild_0 - child_last_right)
                            {
                                realOffset = scroll_right - _disBoundaryToChild_0 - child_last_right;
                            }
                            moveChildren(realOffset);
                            return false;
                        }
                        moveChildren(realOffset);
                                                
                        if (_end < _dataLength - 1)
                        {
                            collectOverLeftChild();
                            int count = _overLeftArray->count();
                            if (count > 0)
                            {
                                updateChild();
                                setLoopPosition();
                                _overLeftArray->removeAllObjects();
                            }
                        }                                                                                                                
                    }
                    break;
                    
                case LISTVIEW_MOVE_DIR_RIGHT: // right
                    {
                        realOffset = MIN(realOffset, _disBetweenChild);
                        
                        UIWidget* child_0 = dynamic_cast<UIWidget*>(_childPool->getObjectAtIndex(0));
                        float child_0_left = child_0->getLeftInParent();
                        float scroll_left = _leftBoundary;
                        
                        if (_begin == 0)
                        {
                            if (realOffset > scroll_left + _disBoundaryToChild_0 - child_0_left)
                            {
                                realOffset = scroll_left + _disBoundaryToChild_0 - child_0_left;
                            }
                            moveChildren(realOffset);
                            return false;
                        }
                        moveChildren(realOffset);
                                                
                        collectOverRightChild();
                        int count = _overRightArray->count();
                        if (count > 0)
                        {
                            updateChild();
                            setLoopPosition();
                            _overRightArray->removeAllObjects();
                        }                                                                                    
                    }
                    break;
                    
                default:
                    break;
            }                                                                                                      
            return true;
            break;
            
        default:
            break;
    }
    
    return false;
}
Exemplo n.º 10
0
void Module1600::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			if (_moduleResult == 0)
				createScene(2, 0);
			else if (_moduleResult == 1)
				createScene(1, 0);
			else if (_moduleResult == 2)
				leaveModule(4);
			break;
		case 1:
			if (_moduleResult == 0)
				createScene(1001, -1);
			else if (_moduleResult == 1)
				createScene(0, 3);
			break;
		case 2:
			if (_moduleResult == 0)
				createScene(3, 0);
			else if (_moduleResult == 1)
				createScene(0, 2);
			break;
		case 3:
			if (_moduleResult == 0)
				createScene(5, 0);
			else if (_moduleResult == 2)
				createScene(6, 0);
			else if (_moduleResult == 3)
				createScene(2, 1);
			else if (_moduleResult == 4)
				createScene(4, 0);
			break;
		case 4:
			if (_moduleResult == 0)
				leaveModule(1);
			else if (_moduleResult == 1)
				createScene(3, 1);
			break;
		case 5:
			if (_moduleResult == 0)
				leaveModule(2);
			else if (_moduleResult == 1)
				createScene(3, 3);
			break;
		case 6:
			if (_moduleResult == 0)
				createScene(8, -1);
			else if (_moduleResult == 1)
				createScene(3, 5);
			break;
		case 7:
			createScene(6, 1);
			break;
		case 8:
			if (_moduleResult == 0)
				createScene(6, 0);
			else
				createScene(7, 0);
			break;
		case 1001:
			createScene(1, 0);
			break;
		}
	}
}
Exemplo n.º 11
0
void Module2600::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			if (_moduleResult == 1)
				createScene(1, 3);
			else
				leaveModule(0);
			break;
		case 1:
			if (_moduleResult == 0)
				createScene(6, 0);
			else if (_moduleResult == 1)
				createScene(0, 0);
			else if (_moduleResult == 2)
				createScene(2, 1);
			else if (_moduleResult == 3)
				createScene(3, 0);
			break;
		case 2:
			if (_moduleResult == 0)
				createScene(1, 0);
			else if (_moduleResult == 1) {
				if (_vm->isDemo())
					createScene(9999, -1);
				else
					createScene(1002, -1);
			}
			break;
		case 3:
			if (_moduleResult == 0) {
				if (getGlobalVar(V_CREATURE_ANGRY))
					createScene(4, 0);
				else
					createScene(1003, -1);
			} else if (_moduleResult == 2)
				createScene(1, 1);
			else if (_moduleResult == 3) {
				if (getGlobalVar(V_CREATURE_ANGRY))
					createScene(4, 0);
				else {
					setGlobalVar(V_CREATURE_ANGRY, 1);
					createScene(7, -1);
				}
			}
			break;
		case 4:
			if (_moduleResult == 0)
				leaveModule(1);
			else
				createScene(3, 1);
			break;
		case 6:
			if (_moduleResult == 0) {
				if (_vm->isDemo())
					createScene(9999, -1);
				else
					createScene(1006, -1);
			}
			else if (_moduleResult == 1)
				createScene(1, 2);
			break;
		case 7:
			leaveModule(0);
			break;
		case 8:
			createScene(1008, -1);
			break;
		case 1002:
			createScene(2, 1);
			break;
		case 1003:
			createScene(3, 0);
			break;
		case 1006:
			createScene(8, -1);
			break;
		case 1008:
			createScene(6, 0);
			break;
		case 9999:
			createScene(_vm->gameState().sceneNum, -1);
			break;
		}
	}
}
bool UIListView::scrollChildren(float touchOffset)
{
    if (m_children->count() <= 0)
    {
        return false;
    }
    
    float realOffset = touchOffset;
    
    switch (m_eDirection)
    {
        case SCROLLVIEW_DIR_VERTICAL: // vertical            
            switch (m_eMoveDirection)
            {
                case SCROLLVIEW_MOVE_DIR_UP: // up
                    {
                        UIWidget* child_last = dynamic_cast<UIWidget*>(m_pChildPool->lastObject());
//                        UIWidget* child_last = m_pChildPool->rbegin();                        
                        float child_last_bottom = child_last->getRelativeBottomPos();
                        float scroll_bottom = m_fBottomBoundary;
                        
                        if (m_nEnd == m_nDataLength - 1)
                        {
                            if (realOffset > scroll_bottom - child_last_bottom)
                            {
                                realOffset = scroll_bottom - child_last_bottom;
                            }
                            UIScrollView::moveChildren(realOffset);
                            return false;
                        }
                        UIScrollView::moveChildren(realOffset);
                        
                        if (m_nEnd < m_nDataLength - 1)
                        {
                            collectOverTopChild();
                            int count = m_overTopArray->count();
                            if (count > 0)
                            {
                                updateChild();
                                setLoopPosition();
                                m_overTopArray->removeAllObjects();
                            }
                        }
                    }
                    break;
                    
                case SCROLLVIEW_MOVE_DIR_DOWN: // down
                    {
                        UIWidget* child_0 = dynamic_cast<UIWidget*>(m_pChildPool->objectAtIndex(0));
//                        UIWidget* child_0 = m_pChildPool->begin();
                        float child_0_top = child_0->getRelativeTopPos();
                        float scroll_top = m_fTopBoundary;
                        
                        if (m_nBegin == 0)
                        {
                            if (realOffset < scroll_top - child_0_top)
                            {
                                realOffset = scroll_top - child_0_top;
                            }
                            UIScrollView::moveChildren(realOffset);
                            return false;
                        }
                        UIScrollView::moveChildren(realOffset);
                                                
                        if (m_nBegin > 0)
                        {
                            collectOverBottomChild();
                            int count = m_overBottomArray->count();
                            if (count > 0)
                            {
                                updateChild();
                                setLoopPosition();
                                m_overBottomArray->removeAllObjects();
                            }
                        }
                    }
                    break;
                    
                default:
                    break;
            }                                                                
            return true;
            break;
            
        case SCROLLVIEW_DIR_HORIZONTAL: // horizontal
            switch (m_eMoveDirection)
            {
                case SCROLLVIEW_MOVE_DIR_LEFT: // left
                    {
                        UIWidget* child_last = dynamic_cast<UIWidget*>(m_pChildPool->lastObject());
//                        UIWidget* child_last = m_pChildPool->rbegin();
                        float child_last_right = child_last->getRelativeRightPos();
                        float scroll_right = m_fRightBoundary;
                        
                        if (m_nEnd == m_nDataLength - 1)
                        {
                            if (realOffset < scroll_right - child_last_right)
                            {
                                realOffset = scroll_right - child_last_right;
                            }
                        }
                        UIScrollView::moveChildren(realOffset);
                        if (m_nEnd == m_nDataLength - 1)
                        {
                            return false;
                        }
                                                
                        if (m_nEnd < m_nDataLength - 1)
                        {
                            collectOverLeftChild();
                            int count = m_overLeftArray->count();
                            if (count > 0)
                            {
                                updateChild();
                                setLoopPosition();
                                m_overLeftArray->removeAllObjects();
                            }
                        }                                                                                                                
                    }
                    break;
                    
                case SCROLLVIEW_MOVE_DIR_RIGHT: // right
                    {
                        UIWidget* child_0 = dynamic_cast<UIWidget*>(m_pChildPool->objectAtIndex(0));
//                        UIWidget* child_0 = m_pChildPool->begin();
                        float child_0_left = child_0->getRelativeLeftPos();
                        float scroll_left = m_fLeftBoundary;
                        
                        if (m_nBegin == 0)
                        {
                            if (realOffset > scroll_left - child_0_left)
                            {
                                realOffset = scroll_left - child_0_left;
                            }
                        }
                        UIScrollView::moveChildren(realOffset);
                        if (m_nBegin == 0)
                        {
                            return false;
                        }
                                                
                        collectOverRightChild();
                        int count = m_overRightArray->count();
                        if (count > 0)
                        {
                            updateChild();
                            setLoopPosition();
                            m_overRightArray->removeAllObjects();
                        }                                                                                    
                    }
                    break;
                    
                default:
                    break;
            }                                                                                                      
            return true;
            break;
            
        default:
            break;
    }
    
    return false;
}        
Exemplo n.º 13
0
void Module1100::updateScene() {
	if (!updateChild()) {
		switch (_sceneNum) {
		case 0:
			_countdown = 0;
			_vm->_soundMan->playTwoSounds(0x0002C818, 0x48498E46, 0x50399F64, 0);
			_vm->_soundMan->setSoundVolume(0x48498E46, 65);
			_vm->_soundMan->setSoundVolume(0x50399F64, 65);
			if (_moduleResult == 0)
				createScene(1, 0);
			else if (_moduleResult == 1)
				createScene(8, 0);
			break;
		case 1:
			_vm->_soundMan->playTwoSounds(0x0002C818, 0x41861371, 0x43A2507F, 0);
			if (getGlobalVar(V_ROBOT_HIT)) {
				if (_moduleResult == 0)
					createScene(6, -1);
				else if (_moduleResult == 1)
					createScene(0, 1);
			} else {
				if (_moduleResult == 0)
					createScene(2, 0);
				else if (_moduleResult == 1)
					createScene(0, 1);
			}
			break;
		case 2:
			_vm->_soundMan->setSoundParams(0x74E01054, false, 0, 0, 0, 0);
			if (_navigationAreaType == 3)
				createScene(7, -1);
			else if (_moduleResult == 1)
				createScene(3, 0);
			else if (_moduleResult == 2)
				createScene(1002, -1);
			break;
		case 3:
			if (_moduleResult == 0)
				createScene(4, 0);
			else if (_moduleResult == 1)
				createScene(2, 3);
			break;
		case 4:
			if (_moduleResult == 0)
				createScene(3, 0);
			else if (_moduleResult == 1)
				createScene(5, -1);
			break;
		case 5:
			_vm->_soundMan->setTwoSoundsPlayFlag(false);
			if (getGlobalVar(V_ROBOT_TARGET))
				createScene(3, 0);
			else
				createScene(4, 0);
			break;
		case 6:
			_vm->_soundMan->setTwoSoundsPlayFlag(false);
			leaveModule(1);
			break;
		case 7:
			_vm->_soundMan->setTwoSoundsPlayFlag(false);
			createScene(2, 2);
			break;
		case 8:
			if (_moduleResult == 0)
				createScene(0, 0);
			else if (_moduleResult == 1)
				leaveModule(0);
			break;
		case 1002:
			_vm->_soundMan->setTwoSoundsPlayFlag(false);
			_countdown = 0;
			_vm->_soundMan->playTwoSounds(0x0002C818, 0x48498E46, 0x50399F64, 0);
			createScene(1, 1);
			break;
		}
	} else {
		switch (_sceneNum) {
		case 0:
			if (navigationScene()->isWalkingForward() && _countdown != 0 && (--_countdown == 0)) {
				_vm->_soundMan->playTwoSounds(0x0002C818, 0x48498E46, 0x50399F64, 0);
				_vm->_soundMan->setSoundVolume(0x48498E46, 65);
				_vm->_soundMan->setSoundVolume(0x50399F64, 65);
			}
			break;
		case 1:
			if (navigationScene()->isWalkingForward() && _countdown != 0 && (--_countdown == 0))
				_vm->_soundMan->playTwoSounds(0x0002C818, 0x41861371, 0x43A2507F, 0);
			break;
		case 2:
			_vm->_soundMan->setSoundParams(0x74E01054, !navigationScene()->isWalkingForward(), 0, 0, 0, 0);
			break;
		case 5:
		case 6:
		case 7:
		case 1002:
			if (_countdown != 0 && (--_countdown == 0)) {
				_vm->_soundMan->playTwoSounds(0x0002C818, 0x48498E46, 0x50399F64, 0);
				_vm->_soundMan->setSoundVolume(0x48498E46, 65);
				_vm->_soundMan->setSoundVolume(0x50399F64, 65);
			}
			break;
		}
	}
}