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); }
/** * 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); } }
/** * 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); }
/** * 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)); }
/** * 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); }
/** * Calls for action at controller on collision with * * @param Collider other */ public override void OnTriggerEnter2D(Collider2D other) { HookableObjectController.OnHookableObjectCollision(this, other.gameObject); }
/** * gets called by controller on wound in event * * @param inventory belonging to the player base */ public override void OnWoundIn(Inventory inventory) { HookableObjectController.ActivateItem(this); }
/** * 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); }