コード例 #1
0
    public override void Interact(GameObject otherActor)
    {
        if (otherActor.tag == "Player")
        {
            if (currentState == State.Idle)
            {
                PlayerInteractionController playerControllerScript = (PlayerInteractionController)otherActor.GetComponent(typeof(PlayerInteractionController));
                if (playerControllerScript != null)
                {
                    //Get the object held by the player.
                    GameObject objectToHold = playerControllerScript.GetHeldObject();
                    if (objectToHold != null)
                    {
                        FishController heldObjectControllerScript = (FishController)objectToHold.GetComponent(typeof(FishController));
                        if (heldObjectControllerScript != null)
                        {
                            playerControllerScript.DropObject();
                            heldObjectControllerScript.PutIn();
                        }

                        fishController    = heldObjectControllerScript;
                        currentState      = State.Disposing;
                        currentTime       = 0f;
                        teleportDuration  = speedCurve.keys[speedCurve.length - 1].time;
                        teleportDirection = (disposalPoint.position - fishController.gameObject.transform.position).normalized;
                        teleportDistance  = Vector3.Distance(disposalPoint.position, fishController.gameObject.transform.position);
                    }
                }
            }
        }
    }
コード例 #2
0
    public override void Interact(PlayerInteractionController interactionController)
    {
        interactionController.DeinteractWithCurrentObject();

        if (IsLocked == false)
        {
            if (lockedForOthers == false)
            {
                lockedForOthers = true;
                Set_LockingState(true);
                Set_OnSetEnableStateCollider(false);

                photonView.TransferOwnership(PhotonNetwork.LocalPlayer);
            }

            if (interactionController.currentlyWielding != null)
            {
                if (interactionController.currentlyWielding != this)
                {
                    interactionController.DropObject(interactionController.currentlyWielding);
                }
            }

            interactionController.PickupObject(this, pickup_Offset, rotation_Offset);
        }
    }
コード例 #3
0
 public override void DeInteract(PlayerInteractionController interactionController)
 {
     if (lockedForOthers == true)
     {
         lockedForOthers = false;
         Set_LockingState(false);
         interactionController.DropObject(this);
         Set_OnSetEnableStateCollider(true);
     }
 }
コード例 #4
0
    override public void Interact(GameObject otherActor)
    {
        if (otherActor.tag == "Player")
        {
            //Make sure the station is not currently controlled by another player.
            if (!this.IsActivated)
            {
                if (GameController.Obj.isTutorial)
                {
                    TutorialManager.Obj.hasActivatedAquarium = true;
                }

                PlayerInteractionController playerInteractionControllerScript = otherActor.GetComponent <PlayerInteractionController>();
                if (playerInteractionControllerScript != null)
                {
                    //Get the object held by the player.
                    GameObject objectToHold = playerInteractionControllerScript.GetHeldObject();
                    //Attempt to deposit the fish into the aquarium if the player is holding one.
                    if (objectToHold != null)
                    {
                        FishController heldObjectControllerScript = objectToHold.GetComponent <FishController>();
                        if (heldObjectControllerScript != null)
                        {
                            if (heldObjectControllerScript.IsDead())
                            {
                                ShowWarningText("This fish is dead!");
                            }
                            else if (!IsFishTypeStoreable(heldObjectControllerScript.fishType))
                            {
                                ShowWarningText("This fish is not part of the list!");
                            }
                            else
                            {
                                //Only allow the player to put a fish into the aquarium if they have researched the required amount for the species.
                                if (GameData.GetFishParameters(heldObjectControllerScript.fishType).totalResearched == GameData.GetFishParameters(heldObjectControllerScript.fishType).totalToResearch)
                                {
                                    playerInteractionControllerScript.DropObject();
                                    StoreFish(objectToHold, heldObjectControllerScript.fishType);
                                }
                                else
                                {
                                    ShowWarningText("Please complete the required number of researches for this species first!");
                                }
                            }
                        }
                    }
                    //Man the aquarium station otherwise.
                    else
                    {
                        EngagePlayer(otherActor);
                    }
                }
            }
        }
    }
コード例 #5
0
 override public void Interact(GameObject otherActor)
 {
     if (otherActor.tag == "Player")
     {
         if (currentState == State.Empty)
         {
             PlayerInteractionController playerControllerScript = (PlayerInteractionController)otherActor.GetComponent(typeof(PlayerInteractionController));
             if (playerControllerScript != null)
             {
                 //Get the object held by the player.
                 GameObject objectToHold = playerControllerScript.GetHeldObject();
                 if (objectToHold != null)
                 {
                     FishController heldObjectControllerScript = (FishController)objectToHold.GetComponent(typeof(FishController));
                     if (heldObjectControllerScript != null)
                     {
                         playerControllerScript.DropObject();
                         heldObjectControllerScript.PutIn();
                         heldObjectControllerScript.StartSlowPanic();
                         holdObject(objectToHold);
                         returnStationController.Activate(heldObjectControllerScript);
                         labNavController.SetWireframe(heldObjectControllerScript.fishType);
                     }
                 }
             }
         }
         else if (currentState == State.Holding)
         {
             PlayerInteractionController playerControllerScript = (PlayerInteractionController)otherActor.GetComponent(typeof(PlayerInteractionController));
             if (playerControllerScript != null)
             {
                 //Check that the player is not already holding on to something.
                 if (playerControllerScript.GetHeldObject() == null)
                 {
                     if (heldObject != null)
                     {
                         playerControllerScript.PickUpObject(heldObject);
                         removeHeldObject();
                         returnStationController.Deactivate();
                         labNavController.SetWireframe(GameData.FishType.None);
                     }
                 }
             }
         }
     }
 }
コード例 #6
0
    public override void Interact(PlayerInteractionController interactionController)
    {
        DeInteract(interactionController);

        if (IsLocked == true)
        {
            return;
        }

        LockTemporarily();

        if (interactionController.currentlyWielding)
        {
            if (DoesAllowForObjectID(interactionController.currentlyWielding.toolID))
            {
                if (interactionController.currentlyWielding.GetType() == typeof(WieldableCleanableObject))
                {
                    WieldableCleanableObject wieldable = (WieldableCleanableObject)interactionController.currentlyWielding;

                    if (wieldable.isCleaned)
                    {
                        interactionController.DropObject(wieldable);
                        wieldable.StoreObject();

                        ObjectPool.Set_ObjectBackToPool(wieldable.photonView.ViewID);
                        return;
                    }

                    Set_DisplayStateTooltip((int)TooltipType.NotCleanedItem);
                }

                //NOTE: No Warning here because we assume that the storage can only store cleanable objects...
            }

            Set_DisplayStateTooltip((int)TooltipType.WrongItem);
            return;
        }

        Set_DisplayStateTooltip((int)TooltipType.NoItem);
        return;
    }
コード例 #7
0
    override public void Interact(GameObject otherActor)
    {
        if (otherActor.tag == "Player")
        {
            PlayerInteractionController playerControllerScript = null;
            if (currentState == State.Empty)
            {
                playerControllerScript = otherActor.GetComponent <PlayerInteractionController>();
                if (playerControllerScript != null)
                {
                    //Get the object held by the player.
                    heldObject = playerControllerScript.GetHeldObject();
                    if (heldObject != null)
                    {
                        FishController heldObjectControllerScript = heldObject.GetComponent <FishController>();
                        if (heldObjectControllerScript != null)
                        {
                            if (!heldObjectControllerScript.IsDead())
                            {
                                if (heldObjectControllerScript.IsCurrentResearchProtocol(researchStationType))
                                {
                                    playerControllerScript.DropObject();
                                    heldObjectControllerScript.PutIn();

                                    heldObject.transform.SetParent(holdSlot.transform, true);
                                    heldObject.transform.localPosition = Vector3.zero;

                                    currentState = State.Holding;
                                    heldObjectControllerScript.StartFastPanic();
                                }
                            }
                        }
                    }
                }
            }

            if (currentState == State.Holding)
            {
                playerControllerInStation = otherActor.GetComponent <PlayerController>();
                playerControllerInStation.RequestControlChange(GameData.ControlType.STATION);
                playerControllerScript = otherActor.GetComponent <PlayerInteractionController>();

                if (researchStationType == GameData.StationType.Sample && GameController.Obj.isTutorial)
                {
                    if (TutorialManager.Obj.currentStep == 8)
                    {
                        TutorialManager.Obj.hasUsedDissectStation = true;
                    }
                }


                if (playerControllerScript != null)
                {
                    //Check that the player is not already holding on to something.
                    if (playerControllerScript.GetHeldObject() == null)
                    {
                        if (heldObject != null)
                        {
                            if (!worldspaceCanvas.activeSelf)
                            {
                                worldspaceCanvas.SetActive(true);
                            }
                            currentState = State.Working;
                        }
                    }
                }
            }
            else if (currentState == State.Working)
            {
                playerControllerScript = playerControllerInStation.interactionController;
                if (playerControllerScript != null)
                {
                    if (progressMade < MAX_PROGRESS)
                    {
                        progressMade            += PROGRESS_BAR_PER_INTERACTION;
                        interactionProgressMade += PROGRESS_BAR_PER_INTERACTION;
                        buttonPromptController.Depress();
                        buttonParticleController.Fire();
                        progressBarController.Explode();
                    }
                    // If progress made is maxed and
                    // the the player is not already holding on to something.
                    else if (playerControllerScript.GetHeldObject() == null)
                    {
                        if (heldObject != null)
                        {
                            FishController heldObjectControllerScript = (FishController)heldObject.GetComponent(typeof(FishController));
                            if (heldObjectControllerScript.GetCurrentResearchProtocol() == researchStationType)
                            {
                                heldObjectControllerScript.ResearchFish();
                            }
                            playerControllerInStation.ReturnControlToCharacter();
                            playerControllerScript.PickUpObject(heldObject);
                            playerControllerInStation = null;
                            heldObject   = null;
                            progressMade = interactionProgressMade = 0f;
                            currentState = State.Empty;
                            worldspaceCanvas.SetActive(false);

                            if (researchStationType == GameData.StationType.Sample && GameController.Obj.isTutorial)
                            {
                                if (TutorialManager.Obj.currentStep == 9)
                                {
                                    TutorialManager.Obj.hasFinishedDissectStation = true;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
コード例 #8
0
    public override void Interact(PlayerInteractionController interactionController)
    {
        if (currentState == StateOfObject.Washing || ownedByTeam != (OwnedByTeam)NetworkManager.localPlayerInformation.team)
        {
            Set_DisplayStateTooltip((int)TooltipType.BusyWashing);
            DeInteract(interactionController);
            return;
        }

        photonView.TransferOwnership(PhotonNetwork.LocalPlayer);

        if (currentState == StateOfObject.Inactive)
        {
            if (interactionController.currentlyWielding)
            {
                if (acceptedItemIds.Contains(interactionController.currentlyWielding.toolID))
                {
                    if (allContainedObjects.Count < maxSlotsAvailable)
                    {
                        if (!allContainedObjects.Contains(interactionController.currentlyWielding.transform))
                        {
                            int viewID = interactionController.currentlyWielding.photonView.ViewID;

                            interactionController.DropObject(interactionController.currentlyWielding);
                            Set_StoreObject(viewID, false);

                            Set_DishwasherOpenState(true);
                            return;
                        }
                    }

                    Set_DisplayStateTooltip((int)TooltipType.ObjectIsFull);
                    return;
                }

                Set_DisplayStateTooltip((int)TooltipType.WrongItemInHands);
                return;
            }

            if (allContainedObjects.Count > 0)
            {
                StartWashing();
                Set_DishwasherOpenState(false);
                return;
            }

            Set_DisplayStateTooltip((int)TooltipType.StorageEmpty);
        }

        if (currentState == StateOfObject.Done)
        {
            if (interactionController.currentlyWielding == null)
            {
                if (allContainedObjects.Count > 0)
                {
                    Set_DishwasherOpenState(true);

                    WieldableCleanableObject toStore = NetworkManager.GetViewByID(allContainedObjects[0].gameObject.GetPhotonView().ViewID).GetComponent <WieldableCleanableObject>();

                    Set_PickupObject(allContainedObjects[0].gameObject.GetPhotonView().ViewID);
                    Set_GrabItemFromObject(allContainedObjects[0].gameObject.GetPhotonView().ViewID);

                    toStore.transform.localPosition = Vector3.zero;

                    interactionController.currentSelected = this;

                    if (allContainedObjects.Count == 0)
                    {
                        if (postcleanLoop != null)
                        {
                            StopCoroutine(postcleanLoop);
                        }

                        Set_EnableStateWarningProgressbar(false);
                        Set_StateOfObject(StateOfObject.Inactive);
                    }

                    toStore.Interact(interactionController);
                    return;
                }
            }

            Set_DisplayStateTooltip((int)TooltipType.HandsFull);
        }
    }