Beispiel #1
0
        public void Enter(Pax4UiState p_uiState = null)
        {
            if (p_uiState == null)
            {
                return;
            }

            if (p_uiState._persistent)
            {
                for (int i = 0; i < _currentUiState.Count; i++)
                {
                    _currentUiState[i].Exit();
                    _previousUiState.Add(_currentUiState[i]);
                    _uiRemove.Add(_currentUiState[i]);
                }
            }
            else
            {
                _previousUiState.Add(p_uiState);
                p_uiState.Enter();

                return;
            }

            if (_uiRemove.Count > 0)
            {
                for (int i = 0; i < _uiRemove.Count; i++)
                {
                    _currentUiState.Remove(_uiRemove[i]);
                }
                _uiRemove.Clear();
            }

            _currentUiState.Add(p_uiState);
            p_uiState.Enter();
        }
Beispiel #2
0
        public virtual void Update(GameTime gameTime)
        {
            for (int i = 0; i < _sprite.Count; i++)
            {
                _sprite[i].Update(gameTime);
            }

            if (_done)
            {
                return;
            }

            _done = true;
            foreach (List <Pax4ModifierSprite> spriteModifier in _spriteModifier.Values)
            {
                for (int i = 0; i < spriteModifier.Count; i++)
                {
                    if (!spriteModifier[i]._done)
                    {
                        spriteModifier[i].Update(gameTime);
                        if (_done)
                        {
                            _done = spriteModifier[i]._done;
                        }
                    }
                }
            }

            //timer until moving on to the next state
            if (_duration > 0.0f)
            {
                _done = false;

                _timer -= (float)gameTime.ElapsedGameTime.TotalSeconds;

                if (_timer <= 0.0f)
                {
                    if (_nextState != null)
                    {
                        _nextState.Enter();
                    }

                    _done = true;
                }
            }
        }