コード例 #1
0
        public override void DoubleClicked()
        {
            bool advance = connectedSwitch == null || connectedSwitch.ValidateSwitchState(enableOnlyForSwitchState);

            if (advance)
            {
                StartCoroutine(PersistentEngine.player.LeaveRoomImmediate(this));
            }
        }
コード例 #2
0
ファイル: InteractiveItemPuzzle.cs プロジェクト: tadej/enkidu
        public override IEnumerator ProcessArrivedAt()
        {
            float time0 = Time.time;

            if (connectedSwitch != null && !connectedSwitch.ValidateSwitchState(enableOnlyForSwitchState))
            {
                yield return(null);
            }
            else

            if (allowsDirect)
            {
                if (setProgresToZero)
                {
                    progressCounter = 0;
                }
                PersistentEngine.player.TurnTowards(base.interactiveItem);
                PersistentEngine.player.ChangeState(actionAnimation);

                while (progressCounter == 0)
                {
                    yield return(new WaitForSeconds(0.05f));

                    if (Time.time - time0 > PersistentEngine.maxCharacterAnimationLength)
                    {
                        Debug.Log("Warning: ProcessArrivedAt interrupted, Time.time-time0 > maxCharacterAnimationLength");
                        break;
                    }
                }
                ShowPuzzle();
                while (progressCounter == 1)
                {
                    yield return(new WaitForSeconds(0.05f));

                    if (Time.time - time0 > PersistentEngine.maxCharacterAnimationLength)
                    {
                        Debug.Log("Warning: ProcessArrivedAt interrupted, Time.time-time0 > maxCharacterAnimationLength");
                        break;
                    }
                }
                PersistentEngine.player.ChangeState(endState);
            }
            yield return(null);
        }
コード例 #3
0
 public override IEnumerator ProcessArrivedAt()
 {
     if (connectedSwitch != null && !connectedSwitch.ValidateSwitchState(enableOnlyForSwitchState))
     {
         yield return(null);
     }
     else
     {
         if (onlyOnce && usedFlag)
         {
         }
         else
         {
             PersistentEngine.player.StopWalking();
             PersistentEngine.player.StopTalking();
             PersistentEngine.player.ChangeState(Player.State.IdleDiagonalFront);
             PersistentEngine.player.TurnTowards(interactiveItem);
             PersistentEngine.player.conversationPartner = GetComponent <CharacterHead>();
             usedFlag = true;
             SaveState();
             yield return(StartCoroutine(RunConversation()));
         }
     }
 }
コード例 #4
0
        public override IEnumerator ProcessArrivedAt()
        {
            if (connectedSwitch != null && !connectedSwitch.ValidateSwitchState(enableOnlyForSwitchState))
            {
                yield return(null);
            }
            else
            if ((interactiveItem.heldItem == null || combiningItem != null || interactiveItem.heldItem != combiningItem) && string.IsNullOrEmpty(comment))
            {
                yield return(null);
            }
            else
            if (interactiveItem.heldItem != null)
            {
                yield return(null);
            }
            else
            {
                if (onlyOnce && usedFlag)
                {
                }
                else
                {
                    usedFlag = true;
                    SaveState();

                    if (!isInventoryItem || (isInventoryItem && !PersistentEngine.player.IsWalking()))
                    {
                        if (overrideActionObject != null && !string.IsNullOrEmpty(overrideAction))
                        {
                            overrideActionObject.SendMessage(overrideAction, SendMessageOptions.DontRequireReceiver);
                        }
                        else
                        {
                            switch (talkDirection)
                            {
                            case TalkDirection.TalkDiagonalFrontLeft:
                                PersistentEngine.player.ChangeTalkDirection(Player.TalkDirection.Diagonal);
                                PersistentEngine.player.ChangeDirection(-1);
                                break;

                            case TalkDirection.TalkDiagonalFrontRight:
                                PersistentEngine.player.ChangeTalkDirection(Player.TalkDirection.Diagonal);
                                PersistentEngine.player.ChangeDirection(1);
                                break;

                            case TalkDirection.TalkDiagonalBackLeft:
                                PersistentEngine.player.ChangeTalkDirection(Player.TalkDirection.DiagonalBack);
                                PersistentEngine.player.ChangeDirection(-1);
                                break;

                            case TalkDirection.TalkDiagonalBackRight:
                                PersistentEngine.player.ChangeTalkDirection(Player.TalkDirection.DiagonalBack);
                                PersistentEngine.player.ChangeDirection(1);
                                break;

                            case TalkDirection.TalkFront:
                                PersistentEngine.player.ChangeTalkDirection(Player.TalkDirection.Front);
                                break;

                            case TalkDirection.None:
                                break;
                            }

                            if (interactiveItem.heldItem != null && combiningItem != null && interactiveItem.heldItem == combiningItem)
                            {
                                if (commentWhenCombine.Length > 1)
                                {
                                    yield return(StartCoroutine(PersistentEngine.player.SpeakProcedure(commentWhenCombine)));
                                }
                            }
                            else
                            {
                                yield return(StartCoroutine(PersistentEngine.player.SpeakProcedure(comment)));

                                if (multipleComments.Length > 0)
                                {
                                    comment = multipleComments[currentComment];
                                    yield return(null);

                                    currentComment++;
                                    currentComment = currentComment % multipleComments.Length;
                                }
                            }
                        }
                    }
                }
            }
        }