Exemplo n.º 1
0
    /// <summary>
    /// Add from saved game
    /// </summary>
    public void AddMonsterGroup(Monster m, ThreatInteraction interaction)
    {
        //check if monster can be spawned in this Difficulty mode
        if (!m.IsValid())
        {
            return;
        }

        bar.DOLocalMoveY(50, .75f).SetEase(Ease.InOutCubic);

        //apply elite modifier bonuses
        if (m.isArmored)
        {
            m.shieldValue += 1;
        }
        if (m.isLarge)
        {
            m.health += 2;
        }
        if (m.isBloodThirsty)
        {
            m.damage += 1;
        }

        m.interaction   = interaction;
        m.currentHealth = new int[3] {
            m.health, m.health, m.health
        };
        GameObject go = Instantiate(monsterButtonPrefab, buttonAttach);

        go.transform.localPosition = new Vector3((175 * monsterList.Count), 25, 0);
        go.GetComponent <MonsterButton>().monster = m;
        go.GetComponent <MonsterButton>().AddToBar(m.isElite, this);

        monsterList.Add(m);

        //add banner
        var mc = from monster in monsterList
                 where monster.monsterType == m.monsterType && monster.isElite == m.isElite
                 select monster;

        if (mc.Count() > 1)
        {
            if (!m.isElite && bannerQueue.Count > 0)
            {
                go.GetComponent <MonsterButton>().SetBanner(bannerQueue.Dequeue());
            }
            else if (m.isElite && eliteBannerQueue.Count > 0)
            {
                go.GetComponent <MonsterButton>().SetBanner(eliteBannerQueue.Dequeue());
            }
        }

        scrollReady = false;
        foreach (Transform child in buttonAttach)
        {
            if (child.transform.position.x > sbRect.position.x + (1000f * scalar))                //off the edge
            {
                scrollOffset -= 175;
            }
        }
        buttonAttach.DOLocalMoveX(scrollOffset, .5f).SetEase(Ease.InOutQuad).OnComplete(() => { scrollReady = true; });
    }
Exemplo n.º 2
0
    /// <summary>
    /// removes monster group, shows reward, and fires its Trigger After Event
    /// </summary>
    public void RemoveMonster(Monster m)
    {
        monsterList.Remove(m);

        //remove the prefab button from the screen and rearrange buttons
        int c = 0;

        foreach (Transform child in buttonAttach)
        {
            var mb = child.GetComponent <MonsterButton>();

            if (mb.monster == m)
            {
                //add any lore unique to this monster
                FindObjectOfType <LorePanel>().AddReward(mb.monster.loreReward);

                mb.markRemove = true;
                mb.cg.DOFade(0, .5f);
                child.DOLocalMoveY(0, .5f).OnComplete(() =>
                {
                    Sprite b = mb.Remove();
                    if (b != null && !m.isElite)
                    {
                        bannerQueue.Enqueue(b);
                    }
                    else if (b != null)
                    {
                        eliteBannerQueue.Enqueue(b);
                    }
                });
            }
            else
            {
                mb.Regroup(c++ *175);
            }
        }

        if (monsterList.Count == 0)
        {
            bar.DOLocalMoveY(-45, .5f).SetEase(Ease.InOutCubic);
        }
        else
        {
            scrollReady  = false;
            scrollOffset = -517;
            buttonAttach.DOLocalMoveX(scrollOffset, .5f).SetEase(Ease.InOutQuad).OnComplete(() => { scrollReady = true; });
        }

        //show reward on group defeated
        //then fire Defeated trigger only if ALL groups in the Event are defeated
        if (m.interaction != null)
        {
            ThreatInteraction ti = m.interaction;
            int foo = monsterList.Count(x => x.interaction.GUID == m.interaction.GUID);

            FindObjectOfType <InteractionManager>().GetNewTextPanel().ShowOkContinue($"Remove the {m.dataName}(s) from the board.\r\n\r\nYou or a nearby Hero gain 1 Inspiration.", ButtonIcon.Continue, () =>
            {
                if (foo == 0)
                {
                    string trigger = ti.triggerDefeatedName;
                    FindObjectOfType <TriggerManager>().FireTrigger(trigger);
                    FindObjectOfType <LorePanel>().AddReward(ti.loreReward);
                }
            });
        }
    }