Пример #1
0
 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
                    });
                }
            }
        }
Пример #6
0
        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);
        }