protected UiBaseCharacterState(IUiCharacter handler, BaseStateMachine fsm, UiCharacterParameters parameters) { Fsm = fsm; Handler = handler; IsInitialized = true; Parameters = parameters; }
void TryAttack(IUiCharacter defender) { if (SelectedCharacter == null) { return; } Attack(SelectedCharacter, defender); }
public void Attack(IUiCharacter agreessor, IUiCharacter blocker) { var attackData = new AttackMechanics.RuntimeAttackData { Agressor = agreessor.Data.RuntimeData, Blocker = blocker.Data.RuntimeData }; Controller.PlayerController.Attack(attackData); }
/// <summary> /// Remove a character from the pile. /// </summary> /// <param name="character"></param> /// <exception cref="ArgumentNullException"></exception> public virtual void RemoveCharacter(IUiCharacter character) { if (character == null) { throw new ArgumentNullException("Null is not a valid argument."); } Characters.Remove(character); NotifyPileChange(); }
/// <summary> /// Add a character to the pile. /// </summary> /// <param name="character"></param> public virtual void AddCharacter(IUiCharacter character) { if (character == null) { throw new ArgumentNullException("Null is not a valid argument."); } Characters.Add(character); character.transform.SetParent(transform); character.transform.localPosition = Vector3.zero; character.Initialize(); character.Enable(); NotifyPileChange(); }
/// <summary> /// Unselect the character in the parameter. /// </summary> /// <param name="character"></param> public void UnselectCharacter(IUiCharacter character) { if (character == null) { return; } uiEnemyTeam.OnCharacterSelected -= TryAttack; UnselectZone.Disable(); SelectedCharacter = null; character.Unselect(); NotifyPileChange(); EnableCharacters(); }
//-------------------------------------------------------------------------------------------------------------- public void Sort(IUiCharacter[] characters, IUiCharacter capitain) { if (characters == null) { return; } foreach (var character in characters) { var position = character.transform.localPosition; position.z = 0; character.transform.localPosition = position; } }
public UiCharacterFsm(Camera camera, UiCharacterParameters parameters, IUiCharacter handler) : base(handler) { IdleState = new UiCharacterIdle(handler, this, parameters); DisableState = new UiCharacterDisable(handler, this, parameters); HoverState = new UiCharacterHover(handler, this, parameters); SelectedState = new UiCharacterSelected(handler, this, parameters); AttackState = new UiCharacterAttack(handler, this, parameters); RegisterState(IdleState); RegisterState(DisableState); RegisterState(HoverState); RegisterState(SelectedState); RegisterState(AttackState); Initialize(); }
// ------------------------------------------------------------ /// <summary> /// Select the character in the parameter. /// </summary> /// <param name="character"></param> public void SelectCharacter(IUiCharacter character) { if (character == null) { return; } uiEnemyTeam.OnCharacterSelected += TryAttack; UnselectZone.Enable(); SelectedCharacter = character; if (character.IsUser) { DisableCharacters(); } NotifyCharacterSelected(); }
void SelectTargetLeft(IUiCharacter target) => OnSelectTarget(target.Data.RuntimeData, PlayerSeat.Left);
void SelectTargetRight(IUiCharacter target) => OnSelectTarget(target.Data.RuntimeData, PlayerSeat.Right);
public UiCharacterIdle(IUiCharacter handler, BaseStateMachine fsm, UiCharacterParameters parameters) : base(handler, fsm, parameters) =>
public override void Restart() { SelectedCharacter = null; base.Restart(); }
void Awake() => MyChar = GetComponent <IUiCharacter>();
public virtual void AddCapitain(IUiCharacter character) { Capitain = character; AddCharacter(character); }
//-------------------------------------------------------------------------------------------------------------- //void Update() //{ // Positioning(PlayerTeam.Characters.ToArray()); //} //-------------------------------------------------------------------------------------------------------------- void Positioning(IUiCharacter[] characters, IUiCharacter capitain) { var pivotX = pivot.position.x; var pivotY = pivot.position.y; var n = MaxCharactersPerLine; var m = MaxCharactersPerColumn; var charWidth = n * CharacterWidth; var charHeight = m * CharacterHeight; var totalWidth = charWidth + (n - 1) * characterParameters.SpacingX; var totalHeight = charHeight + (n - 1) * characterParameters.SpacingY; var side = PlayerTeam.Controller.Seat == PlayerSeat.Left ? 1 : -1; var minX = pivotX - side * totalWidth / 2; var minY = pivotY + totalHeight / 2; var deltaX = CharacterWidth; var deltaY = CharacterHeight; float px = 0, py = 0; if (characterParameters.AllowSpacingX) { ResetPx(); } if (characterParameters.AllowSpacingY) { ResetPy(); } var mainHerosOffset = capitain != null ? 1 : 0; for (var i = mainHerosOffset; i < characters.Length; i++) { var character = characters[i]; var position = new Vector3(px, py); if (!character.IsAttacking) { character.Motion.MoveTo(position, 4f); } if (characterParameters.AllowSpacingX) { px += (deltaX + characterParameters.SpacingX) * side; } if ((i - mainHerosOffset) % MaxCharactersPerLine == MaxCharactersPerLine - 1) { ResetPx(); if (characterParameters.AllowSpacingY) { py -= deltaY + characterParameters.SpacingY; } } } if (characters.Length > 0 && capitain != null) { var character = characters[mainHerosOffset - 1]; if (!character.IsAttacking) { character.Motion.MoveTo(mainHerosPosition.transform.position, 4f); } } void ResetPx() => px = minX + side * deltaX / 2; void ResetPy() => py = minY + deltaY / 2; }