/// <summary> /// Character enter: set track property and call onEnter /// </summary> override public void CharacterEnter(Character character) { Debug.LogFormat("CharacterEnter: {0}", character); // only the first track is enabled if (character.track == null) { if (!characterState.ValidStates(character)) { return; } Log.Silly("(Track) Enter " + character.gameObject.GetFullName()); // delegate when to move to character class // this prevent fights between tile modifiers character.onBeforeMove += Accelerate; character.EnterArea(Areas.Track); character.track = new TrackData(this); if (onEnter != null) { onEnter(character); } } }
/// <summary> /// Enable track /// </summary> override public void CharacterEnter(Character character) { Debug.LogFormat("CharacterEnter: {0}", character); // only the first one enable the track if (character.track == null) { if (!characterState.ValidStates(character)) { return; } Log.Silly("(Track) Enter " + character.gameObject.GetFullName()); character.onBeforeMove += Accelerate; character.EnterArea(Areas.Track); character.track = new TrackData(this); //character.worldVelocity += velocity; if (onEnter != null) { onEnter(character); } } }
/// <summary> /// attackHeld & and previous attack ended /// /// TODO REVIEW continous attack ? /// </summary> public override int WantsToUpdate(float delta) { base.WantsToUpdate(delta); // only one attack is allowed at a time // TODO NOTE REVIEW maybe we may use lastAction but this is more explicit if (character.meleeInProgress != null && character.meleeInProgress != this) { return(0); } characterState.ValidStates(character); if (attackHeld || !IsDone()) { // attack in progress return(priority); } return(0); }
/// <summary> /// Return if the HitBox is disabled base on enabledOnStates /// </summary> public bool IsDisabled() { return(!characterState.ValidStates(owner.character)); }