Example #1
0
    public void OnPointerClick(PointerEventData eventData)
    {
        // on click, if the card is in the deck view overlay, is not upgraded, and a mastery point is available - upgrade it.
        if (isInDeckOverlay)
        {
            if (!reference.isUpgraded && GameState.mastery > 0)
            {
                GameObject deckOverlay = GameObject.Find("ViewDeckDisplay");
                GameState.mastery -= 1;
                reference.Upgrade();
                deckOverlay.SetActive(false);        // refresh deck overlay
                deckOverlay.SetActive(true);
            }
            return;
        }
        if (isInRewardOverlay)
        {
            GameState.mainChar.AddCardToPermaDeck(this.reference.ID, this.reference.isUpgraded);
            RenderNegotiation renderer = GameObject.Find("RenderNegotiation").GetComponent <RenderNegotiation>();
            renderer.EndNegotiationRender();
            return;
        }
        if (isInCardOverlay)
        {
            selectedInCardOverlay = !selectedInCardOverlay;
            // TODO: Probably change from GameObject.Find("SelectCardOverlay(Clone)") to instead grab parent directly
            // Grabbing parent directly should work since isInCardOverlay is checked
            SelectCardOverlay instance = GameObject.Find("SelectCardOverlay(Clone)").GetComponent <SelectCardOverlay>();

            if (selectedInCardOverlay)
            {
                instance.selectedCards.Add(reference);
                cardBG.color = Color.green;
            }
            else
            {
                instance.selectedCards.Remove(reference);
                cardBG.color = new Color32(50, 50, 50, 255);
            }
            instance.EnableButtonIfConditionsMet();
        }
    }
    // Clean up should be done in the EndNegotiationLost/EndNegotiationWon functions.
    // Get the player and enemy from the turn manager. Deep-copy their permadecks to their draw pile.
    public void StartNegotiation(RenderNegotiation renderer, AbstractEnemy enemyChar, RewardType rewardsOnWin = RewardType.NORMAL)
    {
        this.player       = (GameState.mainChar == null) ? new PlayerDeckard() : GameState.mainChar; // null check for player - if null, use Deckard as base
        this.enemy        = (enemyChar == null) ? new TestEnemy() : this.enemy;                      // null check for enemy - if null, use TestEnemy as base
        this.rewardsOnWin = rewardsOnWin;
        tm.AddToTurnList(player);
        tm.AddToTurnList(enemy);

        this.renderer = renderer;

        em.ClearAllSubscribers();
        em.SubscribeToEvent(this, EventType.CARD_PLAYED);        // Subscribe to CARD_PLAYED event to perform all post-card play processing (ambience shift, adjusting global values, etc.)
        em.SubscribeToEvent(this, EventType.ARGUMENT_DESTROYED); // Subscribe to ARGUMENT_DESTROYED event to perform enemy intent recalculations whenever an argument is destroyed

        Debug.Log("NegotiationManager.cs: Performing deep copy of deck contents for enemy and player.");
        DeepCopyDeck(player);
        DeepCopyDeck(enemy);

        this.player.curAP             = player.maxAP;
        this.enemy.curAP              = enemy.maxAP;
        this.enemy.coreArgument.curHP = this.enemy.coreArgument.maxHP;

        player.Draw(5);
        enemy.Draw(5);

        player.coreArgument.TriggerOnDeploy();
        enemy.coreArgument.TriggerOnDeploy();
        em.TriggerEvent(new EventTurnStart(tm.GetCurrentCharacter()));

        Debug.Log("Negotiation begins!");

        enemy.CalculateIntents();
        // foreach(EnemyIntent intent in enemy.intents){
        //     Debug.Log($"The enemy intends to play {intent.cardToPlay} on {intent.argumentTargeted}");
        // }
    }