Пример #1
0
        public void ExecuteStepComplete(TutorialStepData stepData)
        {
            if (stepData.id == TutorialProxy.instance.CurrentTutorialStepData.id)
            {
                if (TutorialProxy.instance.IsCompleteStep())
                {
                    int      nextChapterID = TutorialProxy.instance.CurrentTutorialChapterData.nextID;
                    GuideReq guideReq      = new GuideReq();
                    guideReq.no       = nextChapterID;
                    guideReq.guideNo2 = 0;
                    Logic.Protocol.ProtocolProxy.instance.SendProtocol(guideReq);
                }
                else if (!TutorialProxy.instance.IsAfterCompleteStep())
                {
                    GuideReq guideReq = new GuideReq();
                    guideReq.no       = TutorialProxy.instance.CurrentTutorialChapterData.id;
                    guideReq.guideNo2 = TutorialProxy.instance.CurrentTutorialChapterData.isBackup ? stepData.id + 100000 : stepData.id;
                    Logic.Protocol.ProtocolProxy.instance.SendProtocol(guideReq);
                }

                if (TutorialProxy.instance.HasNextStep())
                {
                    TutorialProxy.instance.MoveToNextStep(stepData);
                    TutorialView.Open(TutorialProxy.instance.CurrentTutorialChapterData, TutorialProxy.instance.CurrentTutorialStepData);
                    Observers.Facade.Instance.SendNotification(TUTORIAL_STEP_COMPLETE_MSG);
                }
                else if (TutorialProxy.instance.HasNextChapter())
                {
                    TutorialProxy.instance.MoveToNextChapter();
                    CheckIfShouldOpenCurrentChapterOrCurrentBackupChapter();
                }
            }
        }
Пример #2
0
    // Update is called once per frame
    void Update()
    {
        if (TV)
        {
            button.enabled = true;
            img.enabled    = true;
            img.sprite     = TV.CurButton;
            if (!img.sprite)
            {
                button.enabled = false;
                img.enabled    = false;
            }

            // get.sizeDelta *= 10.0f / Camera.main.fieldOfView;
            // get the new transform position
            Vector3 rawPos = viewCamera.WorldToScreenPoint(Player.transform.position);
            rawPos.y += heightOffset / viewCamera.fieldOfView;
            rawPos.x -= widthOffset / viewCamera.fieldOfView;


            transform.position = rawPos;
            GetComponent <RectTransform>().sizeDelta = rectOrigin * 10.0f / viewCamera.fieldOfView;
            // Debug.Log(pd.health);
        }
        else
        {
            // fetch the player by id, and get the player data
            button.enabled = false;
            Player         = UserInfoManager.Instance.GetPlayerObjById(playerId);
            if (Player)
            {
                TV = UnityEngine.Object.FindObjectOfType <TutorialView>();
            }
        }
    }
Пример #3
0
 public Part(string name, TutorialView view = TutorialView.Bottom, float offset = -8.2f, Sprite sprite = null, bool fullscreenClosing = false, bool mirror = false, float background = 0.7f, Transform[] targets = null, Func <string> param = null)
 {
     this.name              = name;
     this.view              = view;
     this.offset            = offset * 51.2f;
     this.sprite            = sprite != null ? sprite : (isTNT ? pics.characters.vasia : pics.characters.gingerCat);
     this.fullscreenClosing = fullscreenClosing;
     this.mirror            = mirror;
     if (view == TutorialView.Right)
     {
         this.mirror = true;
     }
     this.targets    = targets;
     this.background = background;
     this.param      = param;
 }
Пример #4
0
    private void Awake()
    {
        _view = FindObjectOfType <TutorialView>();
        _view.Hide();


        string str = PlayerPrefs.GetString("tutoData");

        if (str != "")
        {
            _tutoParams = Newtonsoft.Json.JsonConvert.DeserializeObject <Dictionary <string, string> >(str);
        }
        else
        {
            _tutoParams = new Dictionary <string, string>();
        }
    }
Пример #5
0
        public TutorialController(TutorialView view, TitleModel model, SceneTransitionService sceneTransitionService, SavegameService savegameService)
            : base(view)
        {
            _view = view;
            _view.Initialize();

            _sceneTransitionService = sceneTransitionService;
            _savegameService        = savegameService;

            _view.OnNextClickedOnLastSlide
            .Subscribe(_ => OnNextClickedOnLastSlide())
            .AddTo(Disposer);

            _model = model;
            _model.OpenTutorial
            .Subscribe(_ => Open())
            .AddTo(Disposer);
        }
Пример #6
0
 private void Reset()
 {
     // TODO: find a better way to link with the tutorial view
     // Probably link the prefab and instantiate it directly
     // This won't work if the TutorialView is inactive
     _tutorialView = FindObjectOfType <TutorialView>();
     if (_tutorialView == null)
     {
         Debug.LogError("Tutorial View not found in the scene");
     }
     else
     {
         _tutorialView.gameObject.SetActive(false);
         _currentTutorialData = LevelManager.Instance.GetCurrentLevel().tutorialData;
         _currentStepIndex    = 0;
         _tutorialState       = TutorialState.Ready;
         ReadNextStep();
     }
 }
Пример #7
0
        private bool CheckIfShouldOpenCurrentBackupChapter()
        {
            Debugger.Log("===== CheckIfShouldOpenCurrentBackupChapter =====");
            int currentTutorialChapterDataID         = TutorialProxy.instance.CurrentTutorialChapterData.id;
            TutorialChapterData currentBackupChapter = TutorialChapterData.GetBackupTutorialChapterData(currentTutorialChapterDataID);

            if (currentBackupChapter != null)
            {
                if (CheckIfChapterIsQualified(currentBackupChapter))
                {
                    TutorialProxy.instance.MoveToChapter(currentBackupChapter);
//					if (!UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                    TutorialView.Open(TutorialProxy.instance.CurrentTutorialChapterData, TutorialProxy.instance.CurrentTutorialStepData);
                    Debugger.Log("======[Turotial]::[OpenChapter]::[" + (TutorialProxy.instance.CurrentTutorialChapterData.isBackup ? "Backup:" : "Main:") + TutorialProxy.instance.CurrentTutorialChapterData.id + "]");
                    TutorialProxy.instance.IsCurrentTurorialChapterOpened = true;
                }
            }
            Debugger.Log("===== CheckIfShouldOpenCurrentBackupChapter =====");
            return(false);
        }
Пример #8
0
    public void Init(TutorialView view, GameplayController gameplayController)
    {
        m_view = view;
        m_gameplayController      = gameplayController;
        m_view.IndicatorTapped   += HandleIndicatorTapped;
        m_view.IndicatorPressed  += HandleIndicatorPressed;
        m_view.IndicatorReleased += HandleIndicatorReleased;
        m_view.Tapped            += HandleTapped;

        m_steps = new List <TutorialStep>();
        m_steps.Add(new TutorialStep1(this, view));
        m_steps.Add(new TutorialStep2(this, view, gameplayController));
        m_steps.Add(new TutorialStep3(this, view, gameplayController));
        m_steps.Add(new TutorialStep4(this, view, gameplayController));
        m_steps.Add(new TutorialStep5(this, view));
        m_steps.Add(new TutorialStep6(this, view, gameplayController));
        m_steps.Add(new TutorialStep7(this, view));
        m_steps.Add(new TutorialStep8(this, view, gameplayController));

        SetStep(0);
    }
Пример #9
0
 public GameplayController(
     Gameplay gameplay,
     Hud hud,
     PauseView pauseView,
     SummaryView summaryView,
     PenaltyView penaltyView,
     BonusView bonusView,
     Board board,
     BoardController boardInputController,
     LevelIntroView levelIntroView,
     TutorialView tutorialView)
 {
     m_gameplay             = gameplay;
     m_hud                  = hud;
     m_pauseView            = pauseView;
     m_summaryView          = summaryView;
     m_penaltyView          = penaltyView;
     m_bonusView            = bonusView;
     m_board                = board;
     m_levelIntroView       = levelIntroView;
     m_boardInputController = boardInputController;
     m_tutorialView         = tutorialView;
 }
Пример #10
0
        public void SkipCurrentTutorialChapter()
        {
            if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
            {
                TutorialView.Close();
            }

            int skipChapterDataID = TutorialProxy.instance.CurrentTutorialChapterData.id;

            GuideReq guidReq = new GuideReq();

            guidReq.no = skipChapterDataID + 1;
            Logic.Protocol.ProtocolProxy.instance.SendProtocol(guidReq);

            if (TutorialProxy.instance.HasNextChapter())
            {
                TutorialProxy.instance.MoveToNextChapter();
            }

            if (TutorialProxy.instance.onSkipCurrentChapterDelegate != null)
            {
                TutorialProxy.instance.onSkipCurrentChapterDelegate(skipChapterDataID);
            }
        }
Пример #11
0
        public Task <string> ShowTutorial(INavigation navigation)
        {
            //apo edw kai katw gia na ginei to return
            var tcs = new TaskCompletionSource <string>();



            var btnOk = new Xamarin.Forms.Button
            {
                Text            = "Got It!",
                WidthRequest    = 100,
                BackgroundColor = Color.FromRgb(0.8, 0.8, 0.8),
            };

            btnOk.Clicked += async(s, e) =>
            {
                // close page
                if (Xamarin.Forms.Application.Current.Properties["viewedtutorial"].ToString() != "ok")
                {
                    string myinput = await CustomAlert(this.Navigation, "You haven't finished the tutorial!\nAre you sure you want to skip it?");

                    if (myinput == "no")
                    {
                        return;
                    }
                }

                await navigation.PopModalAsync();

                // pass result
                tcs.SetResult("ok");
            };
            var slButtons = new StackLayout
            {
                Children = { btnOk },
                //Children = { btnOk, btnCancel },
            };
            //apo edw kai panw gia na ginei to return



            //var layout = new StackLayout
            //{

            //    VerticalOptions = LayoutOptions.CenterAndExpand,
            //    HorizontalOptions = LayoutOptions.CenterAndExpand,
            //    Orientation = StackOrientation.Vertical,
            //    //Children = { lblTitle, lblMessage, carview, slButtons },
            //    Children = {  carview },

            //};

            // create and show page
            //var page = new ContentPage();
            //page.Content = layout;

            var carview = new TutorialView();

            var layout = new StackLayout
            {
                Children = { carview.Content, slButtons }
            };
            var page = new ContentPage();

            page.Content = layout;
            navigation.PushModalAsync(page);
            // open keyboard
            //txtInput.Focus();

            // code is waiting her, until result is passed with tcs.SetResult() in btn-Clicked
            // then proc returns the result
            return(tcs.Task);
        }
Пример #12
0
 // Use this for initialization
 void Start()
 {
     img = GetComponent <Image> ();
     Blink(1000, 1f);
     TV = UnityEngine.Object.FindObjectOfType <TutorialView>();
 }
Пример #13
0
 public TutorialStep1(TutorialController ctrl, TutorialView view) : base(ctrl, view)
 {
 }
Пример #14
0
 public TutorialStep2(TutorialController ctrl, TutorialView view, GameplayController gameplayController) :
     base(ctrl, view)
 {
     m_gameplayController = gameplayController;
 }
Пример #15
0
 public void Blink(int times = 5, float interval = 0.5f)
 {
     TV = UnityEngine.Object.FindObjectOfType <TutorialView>();
     StartCoroutine(
         BlinkCo(times, interval));
 }
Пример #16
0
        private bool CheckIfShouldOpenCurrentChapter()
        {
            Debugger.Log("===== CheckIfShouldOpenCurrentChapter =====");

            int currentTutorialChapterID = TutorialProxy.instance.CurrentTutorialChapterData.id;
            TutorialChapterData currentTutorialChapterData = TutorialChapterData.GetTutorialChapterData(currentTutorialChapterID);

            TutorialProxy.instance.MoveToChapter(currentTutorialChapterData);

            // check if should ignore chapter
            TutorialChapterData tutorialChapterData            = currentTutorialChapterData;
            TutorialChapterData latestCanNotIgnoredChapterData = null;

            while (tutorialChapterData != null && tutorialChapterData.canIgnore)
            {
                tutorialChapterData = tutorialChapterData.GetNextTutorialChapterData();
                if (tutorialChapterData != null && !tutorialChapterData.canIgnore)
                {
                    latestCanNotIgnoredChapterData = tutorialChapterData;
                }
            }

            if (latestCanNotIgnoredChapterData != null && CheckIfChapterIsQualified(latestCanNotIgnoredChapterData))
            {
                TutorialProxy.instance.MoveToChapter(latestCanNotIgnoredChapterData);
                currentTutorialChapterData = TutorialProxy.instance.CurrentTutorialChapterData;
            }
            // check if should ignore chapter

            if (currentTutorialChapterData == null)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            if (!_initialized)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            if (!TutorialProxy.instance.IsFirstStep())
            {
                return(false);
            }
            if (currentTutorialChapterData == null)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            if (Game.Model.GameProxy.instance.PlayerInfo == null)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            // check player level
            if (Game.Model.GameProxy.instance.PlayerInfo.level < currentTutorialChapterData.playerLevel)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            // check pass dungeon
            if (currentTutorialChapterData.passDungeon > 0)
            {
                Dungeon.Model.DungeonInfo requiredPassDungeonInfo = Dungeon.Model.DungeonProxy.instance.GetDungeonInfo(currentTutorialChapterData.passDungeon);
                if (requiredPassDungeonInfo == null || requiredPassDungeonInfo.star <= 0)
                {
                    if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                    {
                        TutorialView.Close();
                    }
                    return(false);
                }
            }
            // check if task complete
            if (currentTutorialChapterData.taskID > 0 &&
                !Logic.UI.Task.Model.TaskProxy.instance.IsTaskComplete(currentTutorialChapterData.taskID))
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            // check dungeon total star count
            if (currentTutorialChapterData.dungeonTotalStarCount > 0 &&
                Logic.Dungeon.Model.DungeonProxy.instance.GetDungeonTotalStarCount() < currentTutorialChapterData.dungeonTotalStarCount)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            // check active ui panel path
            if (currentTutorialChapterData.atUIViewPath != null &&
                UI.UIMgr.instance.LastOpenedUIPath != currentTutorialChapterData.atUIViewPath)
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
            if (!FunctionOpen.Model.FunctionOpenProxy.instance.IsFunctionOpen((Enums.FunctionOpenType)currentTutorialChapterData.functionOpenID))
            {
                if (UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
                {
                    TutorialView.Close();
                }
                return(false);
            }
//			if (!UIMgr.instance.IsOpening(TutorialView.PREFAB_PATH))
            TutorialView.Open(TutorialProxy.instance.CurrentTutorialChapterData, TutorialProxy.instance.CurrentTutorialStepData);
            Debugger.Log("=====[Turotial]::[OpenChapter]::[" + (TutorialProxy.instance.CurrentTutorialChapterData.isBackup ? "Backup:" : "Main:") + TutorialProxy.instance.CurrentTutorialChapterData.id + "]");
            TutorialProxy.instance.IsCurrentTurorialChapterOpened = true;
            Debugger.Log("===== CheckIfShouldOpenCurrentChapter =====");
            return(true);
        }
Пример #17
0
 public TutorialStep(TutorialController ctrl, TutorialView view)
 {
     m_view = view;
     m_ctrl = ctrl;
 }
Пример #18
0
        private bool CheckIfChapterIsQualified(TutorialChapterData tutorialChapterData)
        {
            if (tutorialChapterData == null)
            {
                TutorialView.Close();
                return(false);
            }
            if (!_initialized)
            {
                TutorialView.Close();
                return(false);
            }
            if (!TutorialProxy.instance.IsFirstStep())
            {
                return(false);
            }
            if (tutorialChapterData == null)
            {
                TutorialView.Close();
                return(false);
            }
            if (Game.Model.GameProxy.instance.PlayerInfo == null)
            {
                TutorialView.Close();
                return(false);
            }
            // check player level
            if (Game.Model.GameProxy.instance.PlayerInfo.level < tutorialChapterData.playerLevel)
            {
                TutorialView.Close();
                return(false);
            }
            // check pass dungeon
            if (tutorialChapterData.passDungeon > 0)
            {
                Dungeon.Model.DungeonInfo requiredPassDungeonInfo = Dungeon.Model.DungeonProxy.instance.GetDungeonInfo(tutorialChapterData.passDungeon);
                if (requiredPassDungeonInfo == null || requiredPassDungeonInfo.star <= 0)
                {
                    TutorialView.Close();
                    return(false);
                }
            }

            // check if task complete
            if (tutorialChapterData.taskID > 0 &&
                !Logic.UI.Task.Model.TaskProxy.instance.IsTaskComplete(tutorialChapterData.taskID))
            {
                TutorialView.Close();
                return(false);
            }
            // check dungeon total star count
            if (tutorialChapterData.dungeonTotalStarCount > 0 &&
                Logic.Dungeon.Model.DungeonProxy.instance.GetDungeonTotalStarCount() < tutorialChapterData.dungeonTotalStarCount)
            {
                TutorialView.Close();
                return(false);
            }
            // check active ui panel path
            if (tutorialChapterData.atUIViewPath != null &&
                UI.UIMgr.instance.LastOpenedUIPath != tutorialChapterData.atUIViewPath)
            {
                TutorialView.Close();
                return(false);
            }
            if (!FunctionOpen.Model.FunctionOpenProxy.instance.IsFunctionOpen((Enums.FunctionOpenType)tutorialChapterData.functionOpenID))
            {
                TutorialView.Close();
                return(false);
            }
            return(true);
        }