public void Detained() { var bodyguard = PlayerEntity.Instance.GetBodyguard(); if (bodyguard == null) { SoundManager.Instance.PlaySound("Ban"); return; } if (m_Slot != null) { m_Slot.m_Actor = null; m_Slot = null; } // play sound SoundManager.Instance.PlaySound("Detain"); // disable colliders foreach (var collider in GetComponentsInChildren <Collider2D>()) { collider.enabled = false; } PlayerEntity.Instance.m_BoardActors.Remove(this); PlayerEntity.Instance.m_ReserveActors.Remove(this); var closestDetainedBounds = Vector3.Distance(PlayerEntity.Instance.m_ZoneDetaindLeft.ClosestPoint(transform.position), transform.position) < Vector3.Distance(PlayerEntity.Instance.m_ZoneDetaindRight.ClosestPoint(transform.position), transform.position) ? PlayerEntity.Instance.m_ZoneDetaindLeft : PlayerEntity.Instance.m_ZoneDetaindRight; // play move animation m_DetainedTween.MovePosition = UnityRandom.BoundPoint(closestDetainedBounds); m_DetainedTween .Start() .setDelay(bodyguard.Detain(this, out var model)) .setOnStart(() => { // link model model.transform.SetParent(transform, false); model.transform.localPosition = UnityRandom.Vector2(PlayerEntity.Instance.m_PositionRandomization).WithY(-0.1f); }) .setOnComplete(() => { Destroy(model); Destroy(gameObject); }); }
public void Leave() { if (m_Slot != null) { m_Slot.m_Actor = null; m_Slot = null; } PlayerEntity.Instance.m_BoardActors.Remove(this); PlayerEntity.Instance.m_ReserveActors.Remove(this); m_LeaveTween.MovePosition = UnityRandom.BoundPoint(PlayerEntity.Instance.m_ZoneLeave); m_LeaveTween .Start() .setOnComplete(() => { Destroy(gameObject); }); }
////////////////////////////////////////////////////////////////////////// private void Awake() { m_ModelModifier = GetComponentInChildren <ModelModifier>(); m_TargetRow = Mathf.Clamp(m_TargetRow, 0, Grid.Instance.m_Column - 1); m_Behavior = GetComponent <BehaviorBase>(); m_Behavior.Master = this; m_Behavior.iInit(); transform.position = UnityRandom.BoundPoint(PlayerEntity.Instance.m_ZoneSpawn); // restore moves m_MovesLeft = m_MaxMoves; // add to reserve PlayerEntity.Instance.m_ReserveActors.Add(this); // increase danger level PlayerEntity.Instance.m_CurrentDangers += m_DangerLevel; // increase visitors count PlayerEntity.Instance.m_CurrentVisitors++; }