public async static Task MoveAndAttackCard(AttackCardAction action) { var values = new { GameState.gameId, playerId = GameState.mainPlayerId, action.attackerCardId, action.attackedCardId, action.isRangeAttack, action.abilitiesParams }; await HttpRequest.Post(Config.GAME_SERVER_URL + "moveAndAttackCard", values); }
public void EmmitCardAttackAction(UnitDisplay attackerUnit, UnitDisplay attackedUnit, Point pushPoint = null, UnitDisplay ricochetTarget = null) { bool isCardsAdjacent = this.boardCreator.CheckCardsAdjacency(attackerUnit, attackedUnit); bool isAttackerHaveRange = attackerUnit.CardData.abilities.range != null; bool isRangeAttack = isAttackerHaveRange && !isCardsAdjacent; bool isMoveAndAttack = !isAttackerHaveRange && !isCardsAdjacent; AttackCardAction attackCardAction = new AttackCardAction { attackerCardId = attackerUnit.CardData.id, attackedCardId = attackedUnit.CardData.id, isRangeAttack = isRangeAttack }; AbilitiesParams abilitiesParams = new AbilitiesParams { }; if (pushPoint != null) { abilitiesParams.pushAt = pushPoint; } if (ricochetTarget != null) { abilitiesParams.ricochetTargetCardId = ricochetTarget.CardData.id; } attackCardAction.abilitiesParams = abilitiesParams; if (isMoveAndAttack) { Unibus.Dispatch <AttackCardAction>(ActionEmmiter.CARD_MOVE_AND_ATTACK, attackCardAction); } else { Unibus.Dispatch <AttackCardAction>(ActionEmmiter.CARD_ATTACK, attackCardAction); } }
async void OnCardMoveAndAttack(AttackCardAction action) { await ServerApi.MoveAndAttackCard(action); }