private void onStartChoose(ChooseModel c) { view.disable(); }
private void onTargetCancel(CardModel card) { startTargetModel = null; if (chooseModel != null) { debug.Log("Cancelling choose from target cancel"); cancelChoose.Dispatch(chooseModel); } chooseModel = null; cardSelected.Dispatch(null); }
private void onSelectedTarget(TargetModel targetModel) { activateCard.Dispatch(new ActivateModel() { cardActivated = targetModel.targetingCard, position = targetModel.cardDeployPosition != null ? targetModel.cardDeployPosition.position : targetModel.selectedPosition, pivotPosition = targetModel.selectedPivotPosition, optionalTarget = targetModel.selectedPiece, chooseCardTemplateId = chooseModel == null ? null : chooseModel.chosenTemplateId }); startTargetModel = null; chooseModel = null; }
private void onClick(GameObject clickedObject, Vector3 point) { if (clickedObject != null) { if (clickedObject.CompareTag("Card")) { var cardView = clickedObject.GetComponent<CardView>(); //Choose card interactions if (chooseModel != null && cardView.card.tags.Contains(Constants.chooseCardTag)) { chooseModel.chosenTemplateId = cardView.card.cardTemplateId; cardChosen.Dispatch(chooseModel); if (chooseModel.chooseFulfilled) { activateCard.Dispatch(new ActivateModel() { cardActivated = chooseModel.choosingCard, optionalTarget = null, position = chooseModel.cardDeployPosition.position, pivotPosition = null, chooseCardTemplateId = chooseModel.chosenTemplateId }); chooseModel = null; } else { var selected = chooseModel.choices.choices .FirstOrDefault(x => x.cardTemplateId == chooseModel.chosenTemplateId.Value); //if the choice isn't fulfilled yet it must mean it needs targets startTargetModel = new TargetModel() { targetingCard = chooseModel.choosingCard, cardDeployPosition = chooseModel.cardDeployPosition, targets = selected.targets, area = null // not supported yet }; Invoke("StartSelectTargets", 0.10f); return; } return; } if (cardView.card.isSpell) { var targets = possibleActions.GetActionsForCard(turns.currentPlayerId, cardView.card.id); var area = possibleActions.GetAreasForCard(turns.currentPlayerId, cardView.card.id); if (targets != null || area != null) { startTargetModel = new TargetModel() { targetingCard = cardView.card, cardDeployPosition = null, targets = targets, area = area }; Invoke("StartSelectTargets", 0.10f); return; } } draggedCard = cardView.card; pieceSelected.Dispatch(null); cardSelected.Dispatch(new CardSelectedModel() { card = draggedCard, point = point }); } } else { draggedCard = null; cardSelected.Dispatch(null); //only cancel if we're not targeting with a choose if (startTargetModel == null) { if (chooseModel != null) { cancelChoose.Dispatch(chooseModel); } chooseModel = null; } } }
private void onActivate(GameObject activated) { if (activated == null || draggedCard == null) { cardSelected.Dispatch(null); return; } if (activated.CompareTag("Tile")) { //check for appropriate resources if (draggedCard.cost > playerResources.resources[draggedCard.playerId]) { message.Dispatch(new MessageModel() { message = "Not enough energy to play!" }, new SocketKey(turns.currentTurnClientId, "game")); return; } var gameTile = map.tiles.Get(activated.transform.position.ToTileCoordinates()); if (draggedCard.isChoose(possibleActions)) { chooseModel = new ChooseModel() { choosingCard = draggedCard, cardDeployPosition = gameTile, choices = possibleActions.GetChoiceCards(draggedCard.playerId, draggedCard.id) }; debug.Log("Starting choose"); startChoose.Dispatch(chooseModel); } else if (draggedCard.needsTargeting(possibleActions)) { var targets = possibleActions.GetActionsForCard(turns.currentPlayerId, draggedCard.id); var area = possibleActions.GetAreasForCard(turns.currentPlayerId, draggedCard.id); var selectedPosition = (area != null && area.centerPosition != null) ? area.centerPosition.Vector2 : (Vector2?)null; if (area != null && area.selfCentered) { selectedPosition = gameTile.position; } var pivotPosition = (area != null && area.pivotPosition != null) ? area.pivotPosition.Vector2 : (Vector2?)null; //record state we need to maintain for subsequent clicks then dispatch the start target startTargetModel = new TargetModel() { targetingCard = draggedCard, cardDeployPosition = gameTile, targets = targets, area = area, selectedPosition = selectedPosition, selectedPivotPosition = pivotPosition }; //delay sending off the start select target signal till the card deselected event has cleared Invoke("StartSelectTargets", 0.10f); } else { activateCard.Dispatch(new ActivateModel() { cardActivated = draggedCard, position = gameTile.position, optionalTarget = null }); } } }
private void cleanupChooseCards(ChooseModel chooseModel) { debug.Log("Cleanup on aisle choose card"); var cardParent = contextView.transform.FindChild(Constants.cardCanvas); var leftCard = cardParent.FindChild("Left Choice Card"); var rightCard = cardParent.FindChild("Right Choice Card"); if (leftCard == null || rightCard == null) { debug.Log("Couldn't find one of the choice cards in cancel"); return; } Destroy(leftCard.gameObject); Destroy(rightCard.gameObject); }