Exemplo n.º 1
0
        private void CompleteBehaviourInternal(Scheme nextSchemeType,
                                               ISchemeModelMarkup nextModel)
        {
            var currentSchemeType = CurrentScheme.SchemeType;

            CurrentScheme.Finish();
            _activeSchemes.Pop();

            if (nextSchemeType != Scheme.Unknown)
            {
                var schemeInStack = _activeSchemes
                                    .FirstOrDefault(s => s.SchemeType == nextSchemeType);
                if (schemeInStack != null)
                {
                    if (schemeInStack != _activeSchemes.Peek())
                    {
                        throw new Exception("Wrong next scheme type!");
                    }
                }
                else
                {
                    var nextBehaviour = _provider.GetScheme(nextSchemeType);
                    nextBehaviour.Init(CompleteScheme);
                    _activeSchemes.Push(nextBehaviour);
                    CurrentScheme.Execute(nextModel, currentSchemeType);

                    return;
                }
            }

            throw new Exception("There is no active schemes!");
        }
Exemplo n.º 2
0
        public void AddScheme(Scheme type, ISchemeModelMarkup model)
        {
            var currentSchemeType = CurrentScheme?.SchemeType ?? Scheme.Unknown;

            var scenarioInStack = _activeSchemes
                                  .FirstOrDefault(s => s.SchemeType == type);

            if (scenarioInStack != null)
            {
                throw new Exception($"Behaviour '{type}' is already added!");
            }

            var newScheme = _provider.GetScheme(type);

            newScheme.Init(CompleteScheme);
            _activeSchemes.Push(newScheme);
            CurrentScheme?.Execute(model, currentSchemeType);
        }
Exemplo n.º 3
0
 public void CompleteScheme(Scheme nextBehaviourType,
                            ISchemeModelMarkup nextModel)
 {
     CompleteBehaviourInternal(nextBehaviourType, nextModel);
 }
Exemplo n.º 4
0
 protected void CompleteBehaviour(Scheme nextType, ISchemeModelMarkup model)
 {
     _onBehaviourComplete?.Invoke(nextType, model);
 }
Exemplo n.º 5
0
 protected abstract void Behave(ISchemeModelMarkup model);
Exemplo n.º 6
0
 public void Execute(ISchemeModelMarkup model, Scheme parentBehaviour)
 {
     Behave(model);
 }
Exemplo n.º 7
0
 protected override void Behave(ISchemeModelMarkup model)
 {
     _viewManager.AddView(Window.GameHud, new GameHudModel(_playerManager));
 }
 protected override void Behave(ISchemeModelMarkup model)
 {
     _viewManager.AddView(Window.StartMenu, new StartMenuModel(HandleStartButtonPressed));
 }