예제 #1
0
 protected override void skip_text(TextSkips skip)
 {
     if (skip == TextSkips.SkipEvent)
     {
         Event_Skip = true;
         begin_terminate_message();
     }
 }
예제 #2
0
        protected void update_message_skip_buttons()
        {
            _EventSkip = false;

            bool no_convo           = Message_Window == null || !Message_Window.active;
            bool skip_button_active = this.skip_convo_button_active;

            // Create buttons if needed
            if (SkipButton == null)
            {
                if (skip_button_active)
                {
                    create_convo_skip_buttons();
                    SkipButtonOffset    = new Vector2(0, 16);
                    SkipButtonsOnScreen = false;
                }
            }

            if (SkipButton != null)
            {
                // Bring buttons onscreen if needed
                if (!SkipButtonsOnScreen)
                {
                    SkipButtonOffset.Y = MathHelper.Min(16, SkipButtonOffset.Y + 2);
                    if (skip_button_active &&
                        Global.Input.gesture_triggered(TouchGestures.SwipeUp))
                    {
                        SkipButtonsOnScreen      = true;
                        TimeSinceSkipInteraction = 0;
                    }
                }
                // Move buttons offscreen if needed
                else if (SkipButtonsOnScreen)
                {
                    if (TimeSinceSkipInteraction < SKIP_INTERACTION_TIMEOUT)
                    {
                        TimeSinceSkipInteraction++;
                    }

                    SkipButtonOffset.Y = MathHelper.Max(0, SkipButtonOffset.Y - 2);
                    if (!skip_button_active ||
                        TimeSinceSkipInteraction >= SKIP_INTERACTION_TIMEOUT ||
                        (skip_button_active &&
                         Global.Input.gesture_triggered(TouchGestures.SwipeDown)))
                    {
                        SkipButtonsOnScreen = false;
                    }
                }

                skip_button_active &= SkipButtonsOnScreen && SkipButtonOffset.Y == 0;

                TextSkips skip = TextSkips.None;

                if (Input.ControlSchemeSwitched ||
                    (has_convo_scene_button && SceneButton == null))
                {
                    create_convo_skip_buttons();
                }
                if (SceneButton != null && !has_convo_scene_button)
                {
                    SceneButton = null;
                }

                // Update scene button and consume inputs
                if (SceneButton != null)
                {
                    SceneButton.Update(skip_button_active && !no_convo,
                                       -SkipButtonOffset);
                    if (no_convo)
                    {
                        SceneButton.tint = new Color(128, 128, 128, 255);
                    }
                    if (SceneButton.consume_trigger(MouseButtons.Left) ||
                        SceneButton.consume_trigger(TouchGestures.Tap))
                    {
                        skip = TextSkips.NextScene;
                        TimeSinceSkipInteraction = SKIP_INTERACTION_TIMEOUT - 60;
                    }
                }

                // Update skip button and consume inputs
                SkipButton.Update(skip_button_active, -SkipButtonOffset);
                if (SkipButton.consume_trigger(MouseButtons.Left) ||
                    SkipButton.consume_trigger(TouchGestures.Tap))
                {
                    skip = TextSkips.SkipEvent;
                    TimeSinceSkipInteraction = 0;
                }

                if (!no_convo)
                {
                    Message_Window.ConvoSkip = skip;
                }
                else if (skip == TextSkips.SkipEvent)
                {
                    _EventSkip = true;
                }
            }
        }