/// <summary> /// 退出回调 /// </summary> public override void onExit(MapCharacter character) { base.onExit(character); if (entries.Contains(character)) { entries.Remove(character); } }
bool _removePassenger(MapCharacter character) { if (passengers.removeSubView(character)) { onLand(character); return(true); } return(false); }
bool _addPassenger(MapCharacter character) { if (passengers.addSubView(character)) { onBoard(character); return(true); } return(false); }
/// <summary> /// 进入回调 /// </summary> public override void onEnter(MapCharacter character) { base.onEnter(character); if (!entries.Contains(character)) { entries.Add(character); } }
/// <summary> /// 下车回调 /// </summary> /// <param name="character"></param> protected virtual void onLand(MapCharacter character) { if (hidePassengers) { character.activate(); } character.vehicle = null; character.collider.enabled = true; character.pos = (Vector2)landPoint; stop(); landPoint = null; freezing = freezeTime; }
/// <summary> /// 上车回调 /// </summary> /// <param name="character"></param> protected virtual void onBoard(MapCharacter character) { if (hidePassengers) { character.deactivate(); } character.vehicle = this; character.collider.enabled = false; character.transform.localPosition = offset; character.stop(); //updatePassengers(); freezing = freezeTime; }
/// <summary> /// 是否在上车区域中 /// </summary> /// <returns></returns> bool isInBoardingRegions(MapCharacter character) { return(boardingRegion && boardingRegion.isEnter(character)); }
/// <summary> /// 能否上车 /// </summary> /// <returns></returns> public virtual bool isBoardingValid(MapCharacter character) { return(!isFreezing() && !isFull() && isInBoardingRegions(character)); }
/// <summary> /// 移除乘客 /// </summary> /// <param name="entity"></param> public bool removePassenger(MapCharacter character) { return(isLandingValid() && _removePassenger(character)); }
/// <summary> /// 添加乘客 /// </summary> public bool addPassenger(MapCharacter character, bool force = false) { return((force || isBoardingValid(character)) && _addPassenger(character)); }
/// <summary> /// 是否存在指定乘客 /// </summary> /// <param name="character"></param> /// <returns></returns> public bool hasPassenger(MapCharacter character) { return(passengers.hasSubView(character)); }
/// <summary> /// 区域退出回调 /// </summary> public virtual void onExit(MapCharacter character) { }
/// <summary> /// 区域持续回调 /// </summary> public virtual void onStay(MapCharacter character) { }
/// <summary> /// 区域进入回调 /// </summary> public virtual void onEnter(MapCharacter character) { }
/// <summary> /// 是否在区域内 /// </summary> /// <returns></returns> public bool isEnter(MapCharacter character) { return(entries.Contains(character)); }