Exemple #1
0
    public void Init(TalkableCharacter _char, NarrativeDialog dialog)
    {
        character = _char;
        type      = dialog.type;

        if (m_text != null)
        {
            m_text.DOKill();
            m_text.text = dialog.word;
            // m_text.DOText( dialog.word , dialog.word.Length * 0.06f + 0.3f );
            m_text.DOFade(1f, showUpTime);
        }
        if (m_backImage != null)
        {
            m_backImage.transform.localScale = Vector3.one * 0.01f;
            m_backImage.transform.DOScale(1f, showUpTime);
            m_backImage.DOFade(backImageOriginalAlpha, showUpTime);
        }
        if (m_arrow != null)
        {
            m_arrow.DOFade(backImageOriginalAlpha, showUpTime);
        }

        UpdateDialogFramePosition();
    }
Exemple #2
0
 public DisplayPlot(NarrativePlotScriptableObject _plot, AudioSource _other, TalkableCharacter _char)
 {
     index        = 0;
     plot         = _plot;
     otherSpeaker = _other;
     character    = _char;
 }
Exemple #3
0
    void OnDisplayDialog(LogicArg arg)
    {
        NarrativePlotScriptableObject tem_Plot = (NarrativePlotScriptableObject)arg.GetMessage(M_Event.EVENT_DISPLAY_DIALOG_PLOT);
        MonoBehaviour     other        = (MonoBehaviour)arg.sender;
        AudioSource       otherSpeaker = AddSpeaker(other.gameObject);
        TalkableCharacter sender       = (TalkableCharacter)arg.sender;

        if (tem_Plot != null)
        {
            if (!tem_Plot.important)
            {
                if (tem_Plot.dialogs != null && tem_Plot.dialogs.Count > 0)
                {
                    DisplayUnimportantDialog(tem_Plot.dialogs [0], new DisplayPlot(tem_Plot, otherSpeaker, sender));
                }
            }
            else
            {
                PlotArray.Add(new DisplayPlot(tem_Plot, otherSpeaker, sender));
                if (!IsDisplaying)
                {
                    NextDialog();
                }
            }
        }
    }
    void OnDisplay(LogicArg arg)
    {
        TalkableCharacter             character = (TalkableCharacter)arg.sender;
        NarrativePlotScriptableObject plot      = (NarrativePlotScriptableObject)arg.GetMessage(M_Event.EVENT_DISPLAY_DIALOG_PLOT);

        if (plot.important)
        {
            if (character != null && character.NeedMoveCamera())
            {
                character.MoveCamera(m_MainCamera);
                cameraBot.enabled = false;
                Moveable          = false;
                m_isDisplay       = true;
            }
            else
            {
                if (plot != null && plot.lockCamera)
                {
                    Moveable               = false;
                    m_isDisplay            = true;
                    CameraNarrativeSensity = 0.03f;
                }
            }
        }
//		m_UseHeadBob = false;
//		m_Move = false;
//		m_CanJump = false;
    }
Exemple #5
0
 public void TalkToCharacter(TalkableCharacter characterToTalk)
 {
     GameManager.Instance.ChangeState(GameManager.GameState.Talking);
     AdaptCamToTalkableCharacter(characterToTalk);
     uIManager.CurrentTalkableCharacter = characterToTalk;
     characterToTalk.LetsTalk();
     playerRigidbody.velocity = Vector3.zero;
     moveHorizontal           = 0f;
     moveVertical             = 0f;
 }
Exemple #6
0
    protected override void OnEndDisplayDialog(LogicArg arg)
    {
        base.OnEndDisplayDialog(arg);
        TalkableCharacter character = (TalkableCharacter)arg.GetMessage(M_Event.EVENT_END_DISPLAY_SENDER);

        if (character == this)
        {
            if (m_stateMachine.State == GirlState.Init)
            {
                m_stateMachine.State = GirlState.Walk;
            }

            m_realTalking = false;
        }
    }
Exemple #7
0
    public void AdaptCamToTalkableCharacter(TalkableCharacter talkableCharacter)
    {
        if (camMoveTween != null)
        {
            camMoveTween.Kill();
        }
        if (camRotTween != null)
        {
            camRotTween.Kill();
        }

        camTransform.localPosition    = camLocalPosInit;
        camTransform.localEulerAngles = Vector3.zero;

        camMoveTween = camTransform.DOMove(talkableCharacter.camFramingPoint.position, 1f).SetEase(Ease.OutCubic);
        camRotTween  = camTransform.DORotate(talkableCharacter.camFramingPoint.eulerAngles, 1f).SetEase(Ease.OutCubic);
    }
    virtual protected void OnEndDisplayDialog(LogicArg arg)
    {
        TalkableCharacter character = (TalkableCharacter)arg.GetMessage(M_Event.EVENT_END_DISPLAY_SENDER);

        if (character == this)
        {
            if (isMainTalking)
            {
                if (MainTalkEndEvent != LogicEvents.None)
                {
                    M_Event.FireLogicEvent(MainTalkEndEvent, new LogicArg(this));
                }
                isMainTalking = false;
                IsMainEnded   = true;
            }

            if (IsTalking && gameObject.activeSelf)
            {
                StartCoroutine(DelayBecomeTalkable(becomeTalkableDelay));
            }
        }
    }
 void Start()
 {
     talkableCharacter = GetComponent <TalkableCharacter>();
 }
Exemple #10
0
    private void Update()
    {
        if (GameManager.Instance.CurrentGameState == GameManager.GameState.Walking)
        {
            moveHorizontal = Input.GetAxis("Horizontal");
            moveVertical   = Input.GetAxis("Vertical");
            mousePanX      = Input.GetAxis("Mouse X");
            mousePanY      = Input.GetAxis("Mouse Y");

            currentcamRotX -= mousePanY * mouseSpeed * Time.deltaTime;

            playerTransform.Rotate(Vector3.up, mousePanX * mouseSpeed * Time.deltaTime);
            camTransform.localEulerAngles = new Vector3(Mathf.Clamp(camRotXInit + currentcamRotX, clampCamRotX.x, clampCamRotX.y), camTransform.localEulerAngles.y, camTransform.localEulerAngles.z);

            Ray checkGroundRay = new Ray(transform.position - Vector3.up * 0.02f, -Vector3.up);

            if (Physics.Raycast(checkGroundRay, out RaycastHit raycastHitGround, checkGroundDistance))
            {
                playerRigidbody.useGravity  = false;
                playerRigidbody.constraints = RigidbodyConstraints.FreezePositionY | RigidbodyConstraints.FreezeRotation;
            }

            //if (GameManager.Instance.CurrentGameState == GameManager.GameState.Walking)
            //{
            Ray  interactionRay     = new Ray(camTransform.position, camTransform.forward);
            bool raycastInteraction = Physics.Raycast(interactionRay, out RaycastHit raycastHitInteraction, checkInteractionDistance, interactionLayerMask);

            if (raycastInteraction)
            {
                if (raycastHitInteraction.collider != null && raycastHitInteraction.collider.gameObject.layer != interactionLayer)
                {
                    interactionLayer = raycastHitInteraction.collider.gameObject.layer;
                    if (onInteractionLayerChanged != null)
                    {
                        onInteractionLayerChanged(interactionLayer);
                    }
                }
            }
            else if (interactionLayer != 0)
            {
                interactionLayer = 0;
                onInteractionLayerChanged?.Invoke(interactionLayer);
            }

            if (Input.GetMouseButtonDown(0) && raycastInteraction)
            {
                Door doorRaycast = raycastHitInteraction.collider.GetComponent <Door>();
                if (doorRaycast != null)
                {
                    uIManager.HideTuto();

                    if (!doorRaycast.isOpened)
                    {
                        doorRaycast.Open();
                    }
                    else
                    {
                        doorRaycast.Close();
                    }
                }

                TalkableCharacter talkableCharacter = raycastHitInteraction.collider.GetComponentInParent <TalkableCharacter>();
                if (talkableCharacter != null)
                {
                    TalkToCharacter(talkableCharacter);
                }
            }
        }
    }