Beispiel #1
0
    public void Execute()
    {
        GameEntity[] movingObjects = _movingObjects.GetEntities();

        foreach (var entity in movingObjects)
        {
            InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>();


            if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
            {
                interactibleView.MoveObject(PlayerView.transform.forward, FORWARD_POWER);
            }

            if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
            {
                interactibleView.MoveObject(-PlayerView.transform.forward, BACKWARD_POWER);
            }

            if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
            {
                interactibleView.MoveObject(-PlayerView.transform.right, SIDE_POWER);
            }

            if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
            {
                interactibleView.MoveObject(PlayerView.transform.right, SIDE_POWER);
            }
        }
    }
Beispiel #2
0
    private void Update()
    {
        Ray        ray    = Camera.main.ViewportPointToRay(new Vector3(SCREEN_MIDDLE_POSITION, SCREEN_MIDDLE_POSITION, 0));
        RaycastHit rayHit = new RaycastHit();

        if (_lastFocusedGameObject != null)
        {
            if (_lastFocusedGameObject.Type != InteractibleTypesEnum.Basketball)
            {
                Destroy(_lastFocusedGameObject.GetComponent <Outline>());
            }
        }

        if (Physics.Raycast(ray, out rayHit, MAXIMUM_INTERACT_DISTANCE))
        {
            InteractibleView interact = rayHit.collider.gameObject.GetComponent <InteractibleView>();

            if (interact == null)
            {
                interact = rayHit.collider.gameObject.GetComponentInParent <InteractibleView>();
            }

            if (interact != null && (interact.InteractionType == InteractionTypesEnum.Pickable || interact.InteractionType == InteractionTypesEnum.Movable))
            {
                _entityLink.Entity.AddPlayerActionInput(interact.EntityLink.Entity, interact);

                if (interact.Type != InteractibleTypesEnum.Basketball)
                {
                    interact.gameObject.AddComponent <Outline>();
                }

                _lastFocusedGameObject = interact;
            }
        }
    }
Beispiel #3
0
    public void ReplacePlayerActionInput(GameEntity newEntity, InteractibleView newInteractible)
    {
        var index     = GameComponentsLookup.PlayerActionInput;
        var component = CreateComponent <PlayerActionInputComponent>(index);

        component.Entity       = newEntity;
        component.Interactible = newInteractible;
        ReplaceComponent(index, component);
    }
Beispiel #4
0
    private void OnTriggerEnter(Collider other)
    {
        InteractibleView interactible2 = other.gameObject.GetComponent <InteractibleView>();

        if (interactible2 != null && interactible2.Type == InteractibleTypesEnum.Generator)
        {
            _brokenLamp.FixIt();
        }
    }
    protected override void Execute(List <GameEntity> entities)
    {
        foreach (var entity in entities)
        {
            PlayerView       playerView       = _gameContext.globals.value.player.view.value.GetComponent <PlayerView>();
            InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>();

            interactibleView.TogglePickedUp(false);
            interactibleView.Throw(playerView.ForwardDirection, entity.dropped.Force * 1000);

            entity.RemoveDropped();
        }
    }
    protected override void Execute(List <GameEntity> entities)
    {
        foreach (var entity in entities)
        {
            InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>();
            interactibleView.ToggleContainer(entity.containedObject.ParentEntity);

            if (interactibleView.Type == InteractibleTypesEnum.Fruit)
            {
                TriggerEvent(EventsEnum.FruitInCrate, -1);
            }
        }
    }
Beispiel #7
0
    private void OnTriggerEnter(Collider other)
    {
        InteractibleView interactible = other.gameObject.GetComponent <InteractibleView>();

        if (interactible != null)
        {
            if (interactible.InteractionType == InteractionTypesEnum.Collectable)
            {
                _entityLink.Entity.AddPlayerCollectInput(CollectibleTypesEnum.Star, interactible.EntityLink.UUID);

                interactible.EntityLink.Entity.Destroy();
                Destroy(interactible.gameObject);
            }
        }
    }
    public void Execute()
    {
        GameEntity[] pickedUpObjects = _pickedUpObjects.GetEntities();

        foreach (var entity in pickedUpObjects)
        {
            InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>();

            if (!interactibleView.IsPickedUp)
            {
                interactibleView.TogglePickedUp(true);
                entity.ReplacePickedUp(entity.pickedUp.InitialTime, entity.pickedUp.InitialPosition,
                                       Vector3.Distance(entity.pickedUp.InitialPosition, PlayerView.TargetPick.position));
            }

            float distCovered = (Time.time - entity.pickedUp.InitialTime) * PICK_TRAVEL_TIME;
            float fracJourney = distCovered / entity.pickedUp.TotalTravelDistance;
            interactibleView.transform.position = Vector3.Lerp(entity.pickedUp.InitialPosition, PlayerView.TargetPick.position, fracJourney);
        }
    }
Beispiel #9
0
    private void OnTriggerEnter(Collider other)
    {
        InteractibleView interactible2 = other.gameObject.GetComponent <InteractibleView>();

        if (interactible2 != null)
        {
            if (interactible2.Type == InteractibleTypesEnum.Gear1)
            {
                _windmill.TurnOnGear(1);
            }

            if (interactible2.Type == InteractibleTypesEnum.Gear2)
            {
                _windmill.TurnOnGear(2);
            }

            if (interactible2.Type == InteractibleTypesEnum.Gear3)
            {
                _windmill.TurnOnGear(3);
            }
        }
    }
Beispiel #10
0
    private void ProcessPick(GameEntity entity)
    {
        // Prevent picking more than one object at the same time.
        if (_pickedUpObjects.count > 0 || _movingObjects.count > 0)
        {
            return;
        }

        // If the object is out from a contained space, additional actions are required.
        if (entity.hasContainedObject)
        {
            InteractibleView interactibleView = entity.view.value.GetComponent <InteractibleView>();

            entity.RemoveContainedObject();
            interactibleView.ToggleContainer(null);

            if (interactibleView.Type == InteractibleTypesEnum.Fruit)
            {
                TriggerEvent(EventsEnum.FruitInCrate, 1);
            }
        }

        entity.AddPickedUp(Time.time, entity.view.value.transform.position, 0);
    }
    private void OnTriggerEnter(Collider other)
    {
        if (InteractionType == InteractionTypesEnum.Pickable && IsCollectable)
        {
            if (other.gameObject.tag == CONTAINER_TAG && _entityLink != null)
            {
                if (!_entityLink.Entity.hasContainedObject)
                {
                    _entityLink.Entity.AddContainedObject(other.gameObject);
                }
            }
        }

        if (Type == InteractibleTypesEnum.BasketballHoopTop)
        {
            _entityLink.Entity.AddBasketHoopTrigger(true);
        }

        if (Type == InteractibleTypesEnum.BasketballHoopBottom)
        {
            _entityLink.Entity.AddBasketHoopTrigger(false);
        }

        if (Type == InteractibleTypesEnum.GeneratorZone)
        {
            InteractibleView interactible2 = other.gameObject.GetComponent <InteractibleView>();
            if (interactible2 != null && interactible2.Type == InteractibleTypesEnum.Generator)
            {
                _entityLink.Entity.AddEventTrigger(EventsEnum.GeneratorTriggered, -1);
            }
        }

        if (Type == InteractibleTypesEnum.WindmillZone)
        {
            InteractibleView interactible2 = other.gameObject.GetComponent <InteractibleView>();
            if (interactible2 != null)
            {
                bool isOkToDelete = false;

                if (interactible2.Type == InteractibleTypesEnum.Gear1)
                {
                    _entityLink.Entity.AddEventTrigger(EventsEnum.Gear1Ready, -1);
                    isOkToDelete = true;
                }

                if (interactible2.Type == InteractibleTypesEnum.Gear2)
                {
                    _entityLink.Entity.AddEventTrigger(EventsEnum.Gear2Ready, -1);
                    isOkToDelete = true;
                }

                if (interactible2.Type == InteractibleTypesEnum.Gear3)
                {
                    _entityLink.Entity.AddEventTrigger(EventsEnum.Gear3Ready, -1);
                    isOkToDelete = true;
                }

                if (isOkToDelete)
                {
                    interactible2.EntityLink.Entity.Destroy();
                    Destroy(interactible2.gameObject);
                }
            }
        }
    }