Esempio n. 1
0
        private void Start()
        {
            _cannonCollider = gameObject.transform.Find("HarpoonCannon").gameObject.GetComponent <BoxCollider2D>();
            _projectileObj  = gameObject.transform.Find("HarpoonCannon/HarpoonProjectile").gameObject;
            var ropeObj = gameObject.transform.Find("HarpoonCannon/HarpoonRope").gameObject;

            _crankController = gameObject.transform.Find("../../Wheel").gameObject.GetComponent <CrankController>();

            _inventory = gameObject.transform.Find("../../Inventory").gameObject.GetComponent <Inventory>();

            _rotatableHandler    = GetComponent <RotatableHandler>();
            _shotHandler         = GetComponent <HarpoonShotHandler>();
            _projectileCollision = _projectileObj.GetComponent <ProjectileCollision>();
            _movingProjectile    = _projectileObj.GetComponent <MovingProjectile>();
            _rope                   = ropeObj.GetComponent <HarpoonRope>();
            _windInProjectile       = _projectileObj.GetComponent <WindInProjectile>();
            _cannonCollider.enabled = false;
            _crankController.EnableController(false);

            _crankController.CrankRotationEvent += _windInProjectile.AddTravelDistance;
            _rotatableHandler.RotationEvent     += OnRotationEvent;
            _shotHandler.ShotEvent += OnShotEvent;
            _projectileCollision.CollisionEvent += ProjectileOnCollisionEvent;
            HookableObjectController.AddHarpoonController(this);
        }
Esempio n. 2
0
 /**
  * RemoveStone removes the child from the workshop
  *
  * @param stone: stone to remove
  */
 public override void RemoveStone(Stone stone)
 {
     if (stone.Equals(_child))
     {
         _child = null;
         HookableObjectController.DisableScalableAndRotatable(stone);
     }
 }
Esempio n. 3
0
    /**
     * gets called by lean event, when releasing stone from drag and puts it back to parent position or first sets the new parent
     */
    public void OnDeselectOnUp()
    {
        if (_onDeselectParent != null && _onDeselectParent != Parent.GetComponent <CanHoldHookableObject>() &&
            HookableObjectController.IsStoneInColliderOfOnDeselectParent(this, _onDeselectParent)
            )
        {
            HookableObjectController.RemoveStoneFromCanHoldHookableObject(this, Parent);
            HookableObjectController.OnDeselectOnCanHoldHookableObject(this, _onDeselectParent);
        }

        //transform.position =
        SmoothTransition.AddTransition(gameObject,
                                       HookableObjectController.GetParentPositionOfChildStone(Parent.GetComponent <CanHoldHookableObject>(), this),
                                       Game.Instance.transitionTimes.snapBack);
    }
Esempio n. 4
0
 /**
  * implements CollisionEvent
  * @param sender sender of event
  * @param eventArg is empty
  */
 private void ProjectileOnCollisionEvent(object sender, Collider2D collidedObject)
 {
     if (_isWoundIn)
     {
         if (collidedObject.Equals(_cannonCollider))
         {
             StopProjectileMovement();
             if (_objectHooked != null)
             {
                 HookableObjectController.OnWoundIn(_objectHooked, _inventory);
             }
         }
     }
     else
     {
         StopProjectileMovement();
     }
 }
    /**
     * checks if Stone is in collider from CanHoldHookable Object
     *
     *@param stone Stone to check
     *
     * @return boolean true if the Stone is inside
     */
    public bool IsStoneInColliderOfCanHoldHookableObject(Stone stone)
    {
        var currentStonePosition = HookableObjectController.GetPositionOfHookableObject(stone);

        return(_collider2D.bounds.Contains(currentStonePosition));
    }
Esempio n. 6
0
 /**
  * gets called by controller when WoundIn event is triggered. calls StoneToInventory
  *
  * @param inventory where stone is put to
  */
 public override void OnWoundIn(Inventory inventory)
 {
     HookableObjectController.StoneToInventory(this, inventory);
 }
Esempio n. 7
0
 /**
  * Calls for action at controller on collision with
  *
  * @param Collider other
  */
 public override void OnTriggerEnter2D(Collider2D other)
 {
     HookableObjectController.OnHookableObjectCollision(this, other.gameObject);
 }
Esempio n. 8
0
 /**
  * gets called by controller on wound in event
  *
  * @param inventory belonging to the player base
  */
 public override void OnWoundIn(Inventory inventory)
 {
     HookableObjectController.ActivateItem(this);
 }
Esempio n. 9
0
 /**
  * implementation of parent class, adding Stone to Workshop
  *
  * @param stone Stone To Add
  */
 public override bool StoneToCanHoldHookableObject(Stone stone)
 {
     HookableObjectController.StoneToWorkshop(stone, this);
     GetPlayer().RemoveStone(stone);
     return(true);
 }