Exemplo n.º 1
0
 public void QuitGame()
 {
     if (SceneManager.GetActiveScene().name == "DungeonMultiplayer")
     {
         RaidSceneManager.Instanse.OnSceneLeave();
         PhotonGameManager.Instanse.LeaveRoom();
         WindowClosed();
         return;
     }
     else if (SceneManager.GetActiveScene().name == "EstateManagement")
     {
         EstateSceneManager.Instanse.OnSceneLeave();
         DarkestDungeonManager.SaveData.UpdateFromEstate();
         DarkestDungeonManager.Instanse.SaveGame();
     }
     else if (SceneManager.GetActiveScene().name == "Dungeon")
     {
         if (!RaidSceneManager.HasAnyEvents)
         {
             DarkestDungeonManager.SaveData.UpdateFromRaid();
             DarkestDungeonManager.Instanse.SaveGame();
         }
         RaidSceneManager.Instanse.OnSceneLeave();
     }
     DarkestSoundManager.SilenceNarrator();
     Application.Quit();
 }
Exemplo n.º 2
0
 public void ReturnToCampaignSelection()
 {
     if (SceneManager.GetActiveScene().name == "DungeonMultiplayer")
     {
         WindowClosed();
         RaidSceneManager.Instanse.AbandonButtonClicked();
         return;
     }
     else if (SceneManager.GetActiveScene().name == "EstateManagement")
     {
         EstateSceneManager.Instanse.OnSceneLeave();
         DarkestDungeonManager.SaveData.UpdateFromEstate();
         DarkestDungeonManager.Instanse.SaveGame();
     }
     else if (SceneManager.GetActiveScene().name == "Dungeon")
     {
         if (!RaidSceneManager.HasAnyEvents)
         {
             DarkestDungeonManager.SaveData.UpdateFromRaid();
             DarkestDungeonManager.Instanse.SaveGame();
         }
         RaidSceneManager.Instanse.OnSceneLeave();
     }
     DarkestSoundManager.SilenceNarrator();
     SceneManager.LoadScene("CampaignSelection");
     WindowClosed();
 }
Exemplo n.º 3
0
    public HeroSlot CreateSlot(RecruitSlot recruitSlot, HeroSlot heroSlot)
    {
        if (DarkestDungeonManager.Campaign.Heroes.Count >= DarkestDungeonManager.Campaign.Estate.StageCoach.RosterSlots)
        {
            DarkestSoundManager.PlayOneShot("event:/ui/town/character_add_full");
            return(null);
        }

        var newSlot = CreateSlot(recruitSlot.Hero);

        DarkestDungeonManager.Campaign.Heroes.Add(recruitSlot.Hero);
        var deathRecord = DarkestDungeonManager.Campaign.Estate.RecruitHero(recruitSlot.Hero);

        DarkestSoundManager.ExecuteNarration("recruit_hero", NarrationPlace.Town, recruitSlot.Hero.Class);

        if (deathRecord != null && onHeroResurrection != null)
        {
            onHeroResurrection(deathRecord);
        }
        else
        {
            DarkestSoundManager.PlayOneShot("event:/town/stage_coach_purchase");
        }

        if (heroSlot != null)
        {
            newSlot.RectTransform.SetSiblingIndex(heroSlot.RectTransform.GetSiblingIndex());
        }
        else
        {
            newSlot.RectTransform.SetAsLastSibling();
        }
        UpdateCapacity();
        return(newSlot);
    }
Exemplo n.º 4
0
 public void CheckBoxClicked()
 {
     IsChecked = !IsChecked;
     PhotonGameManager.SkipMessagesOnClick = IsChecked;
     checkBoxImage.enabled = IsChecked;
     DarkestSoundManager.PlayOneShot("event:/ui/town/button_click");
 }
Exemplo n.º 5
0
 public void SaveNamingStart(MultiplayerRoomSlot namingSaveSlot)
 {
     DarkestSoundManager.PlayOneShot("event:/general/title_screen/letter_open");
     namingSaveSlot.TitleInput.text = GenerateRoomName();
     selectedRoomSlot = namingSaveSlot;
     DisableInteraction();
 }
Exemplo n.º 6
0
 private void ProvisionAppearEnded()
 {
     DarkestDungeonManager.ScreenFader.EventFadeEnded   -= ProvisionFadeEnded;
     DarkestDungeonManager.ScreenFader.EventAppearEnded -= ProvisionAppearEnded;
     DarkestSoundManager.ExecuteNarration("enter_provision_select", NarrationPlace.Town);
     transitionsEnabled = true;
 }
Exemplo n.º 7
0
    void SanitariumQuirkWindow_onNegativeDeselect(QuirkTreatmentSlot slot)
    {
        DarkestSoundManager.PlayOneShot("event:/ui/town/button_click");

        SelectedSlot.TreatmentSlot.TargetNegativeQuirk = null;
        RecalculateCost();
    }
 public void OnPointerEnter(PointerEventData eventData)
 {
     if (SelectedHero != null)
     {
         DarkestSoundManager.PlayOneShot("event:/ui/town/button_mouse_over");
     }
 }
    public void SortByRestriction()
    {
        DarkestSoundManager.PlayOneShot("event:/ui/town/sort_by");

        RealmInventory.Trinkets.Sort((x, y) =>
        {
            if (x.ClassRequirements.Count > 0)
            {
                if (y.ClassRequirements.Count > 0)
                {
                    int result = string.Compare(x.ClassRequirements[0], y.ClassRequirements[0], StringComparison.Ordinal);
                    return(result == 0 ? string.Compare(x.Id, y.Id, StringComparison.Ordinal) : result);
                }
                return(-1);
            }
            return(y.ClassRequirements.Count > 0 ? 1 : string.Compare(x.Id, y.Id, StringComparison.Ordinal));
        });

        int trinketCount   = RealmInventory.Trinkets.Count;
        int trinketsLoaded = Mathf.Min(trinketCount, InventorySlots.Count);

        for (int i = 0; i < trinketsLoaded; i++)
        {
            InventorySlots[i].CreateItem(RealmInventory.Trinkets[i]);
        }

        for (int i = trinketsLoaded; i < InventorySlots.Count; i++)
        {
            InventorySlots[i].DeleteItem();
        }
    }
Exemplo n.º 10
0
 public void ActivityLogClick()
 {
     activityLogOpened = !activityLogOpened;
     if (activityLogOpened)
     {
         DarkestSoundManager.PlayOneShot("event:/ui/town/page_open");
         bottomPanel.ActivityLogAnimator.state.SetAnimation(0, "selected", false);
     }
     else
     {
         DarkestSoundManager.PlayOneShot("event:/ui/town/page_close");
         bottomPanel.ActivityLogAnimator.state.SetAnimation(0, "idle", false);
     }
     activityLogWindow.gameObject.SetActive(activityLogOpened);
     if (activityLogOpened)
     {
         if (realmInventoryOpened)
         {
             RealmInventoryClose();
         }
         if (characterWindowOpened)
         {
             RosterCharacterInfoClose();
         }
     }
 }
Exemplo n.º 11
0
    private IEnumerator SceneSlider()
    {
        DarkestSoundManager.PlayOneShot("event:/general/title_screen/campaign_button");
        ProgressLabel.text = PhotonNetwork.connected ? "Connected!" : "Disconnected!";

        DisableInteraction();

        while (true)
        {
            if (470 < SceneryRect.offsetMax.y)
            {
                break;
            }

            Vector2 offsetMax = SceneryRect.offsetMax;
            offsetMax.y          += Time.deltaTime * 800;
            SceneryRect.offsetMax = offsetMax;
            Vector2 offsetMin = SceneryRect.offsetMin;
            offsetMin.y          += Time.deltaTime * 800;
            SceneryRect.offsetMin = offsetMin;
            yield return(null);
        }

        DarkestPhotonLauncher.Instanse.ConnectToMaster();
        yield return(new WaitForSeconds(1f));

        isSelecting = true;

        RefreshRoomList();
        EnableInteraction();
    }
Exemplo n.º 12
0
    private void SkillUpgradeSlotClicked(SkillUpgradeSlot slot)
    {
        var status = DarkestDungeonManager.Campaign.Estate.GetUpgradeStatus(slot.Tree.Id, slot.Hero, slot.Upgrade);

        if (status == UpgradeStatus.Available)
        {
            bool isFree = false;
            for (int i = 0; i < slot.Tree.Tags.Count; i++)
            {
                if (DarkestDungeonManager.Campaign.EventModifiers.HasFreeUpgrade(slot.Tree.Tags[i]))
                {
                    isFree = true;
                    DarkestDungeonManager.Campaign.EventModifiers.RemoveUpgradeTag(slot.Tree.Tags[i]);
                    break;
                }
            }

            float discount = 1 - DarkestDungeonManager.Campaign.Estate.Guild.Discount;

            if (DarkestDungeonManager.Campaign.Estate.BuyUpgrade(slot.Tree.Id, slot.Hero, slot.Upgrade, discount, isFree))
            {
                EstateSceneManager.Instanse.CurrencyPanel.CurrencyDecreased("gold");
                EstateSceneManager.Instanse.CurrencyPanel.UpdateCurrency();
                DarkestDungeonManager.Campaign.Estate.ReskillCombatHero(slot.Hero);
                UpdateHeroOverview();
            }
        }
        else if (status == UpgradeStatus.Locked)
        {
            DarkestSoundManager.PlayOneShot("event:/ui/town/button_click_locked");
        }
    }
Exemplo n.º 13
0
    public void TreatmentButtonClicked()
    {
        int cost = 0;

        if (SelectedSlot.TreatmentSlot.TargetDiseaseQuirk != null)
        {
            cost += SelectedSlot.TreatmentSlot.BaseDiseaseCost;
        }

        if (cost != 0 || DarkestDungeonManager.Campaign.EventModifiers.IsActivityFree(SelectedSlot.activityName))
        {
            if (SelectedSlot.TreatmentSlot.Status == ActivitySlotStatus.Checkout)
            {
                if (DarkestDungeonManager.Campaign.Estate.CanPayGold(cost))
                {
                    DarkestDungeonManager.Campaign.Estate.RemoveGold(cost);
                    TownManager.EstateSceneManager.currencyPanel.UpdateCurrency();
                    TownManager.EstateSceneManager.currencyPanel.CurrencyDecreased("gold");
                    TownManager.GetHeroSlot(SelectedSlot.TreatmentSlot.Hero).SetStatus(HeroStatus.Sanitarium);
                    SelectedSlot.PayoutSlot();
                    DarkestSoundManager.PlayOneShot("event:/town/sanitarium_disease_treatment");
                    ResetWindow();
                }
            }
        }
        else
        {
            treatmentButton.gameObject.SetActive(false);
            costLabel.gameObject.SetActive(false);
        }
    }
Exemplo n.º 14
0
    private void QuirkTreatmentSlotPositiveDeselected(QuirkTreatmentSlot slot)
    {
        DarkestSoundManager.PlayOneShot("event:/ui/town/button_click");

        SelectedSlot.TreatmentSlot.TargetPositiveQuirk = null;
        RecalculateCost();
    }
Exemplo n.º 15
0
    IEnumerator StartSceneSlider()
    {
        float distance = rect.offsetMax.y / 2;

        while (true)
        {
            Vector2 offsetMax = rect.offsetMax;
            offsetMax.y   += Time.deltaTime * 1500;
            rect.offsetMax = offsetMax;
            Vector2 offsetMin = rect.offsetMin;
            offsetMin.y   += Time.deltaTime * 1500;
            rect.offsetMin = offsetMin;

            if (distance < 0)
            {
                if (offsetMax.y > distance)
                {
                    distance = 1;
                    DarkestSoundManager.PlayTitleMusic(false);
                }
            }

            if (rect.offsetMax.y >= 0 || rect.offsetMin.y >= 0)
            {
                rect.offsetMax = Vector2.zero;
                rect.offsetMin = Vector2.zero;
                break;
            }
            yield return(0);
        }

        CampaignSelectionManager.Instanse.titleRect.SetParent(CampaignSelectionManager.Instanse.overlayTitleRect, false);
        yield break;
    }
Exemplo n.º 16
0
    public bool BuyUpgrade(CampingSkill skill, Hero hero, float discount)
    {
        if (!CanPayPrice(skill.CurrencyCost, discount))
        {
            return(false);
        }

        if (!HeroPurchases.ContainsKey(hero.RosterId))
        {
            return(false);
        }

        if (!HeroPurchases[hero.RosterId].ContainsKey(skill.Id))
        {
            return(false);
        }

        if (HeroPurchases[hero.RosterId][skill.Id].PurchasedUpgrades.Contains("0"))
        {
            return(false);
        }

        HeroPurchases[hero.RosterId][skill.Id].PurchasedUpgrades.Add("0");

        RemoveCurrency(skill.CurrencyCost, discount);
        DarkestSoundManager.PlayOneShot("event:/ui/town/buy");
        return(true);
    }
Exemplo n.º 17
0
    public bool BuyUpgrade(string treeId, Hero hero, TownUpgrade upgrade, float discount, bool isFree)
    {
        if (!isFree && !CanPayPrice(upgrade.Cost, discount))
        {
            return(false);
        }

        if (!HeroPurchases.ContainsKey(hero.RosterId))
        {
            HeroPurchases.Add(hero.RosterId, new Dictionary <string, UpgradePurchases>());
        }

        if (!HeroPurchases[hero.RosterId].ContainsKey(treeId))
        {
            HeroPurchases[hero.RosterId].Add(treeId, new UpgradePurchases(treeId, upgrade.Code));
        }
        else
        {
            if (HeroPurchases[hero.RosterId][treeId].PurchasedUpgrades.Contains(upgrade.Code))
            {
                return(false);
            }

            HeroPurchases[hero.RosterId][treeId].PurchasedUpgrades.Add(upgrade.Code);
        }
        if (!isFree)
        {
            RemoveCurrency(upgrade.Cost, discount);
        }

        DarkestSoundManager.PlayOneShot("event:/ui/town/buy");
        return(true);
    }
 public override void WindowClosed()
 {
     if (upgradeSwitch.IsOpened)
     {
         upgradeSwitch.SwitchUpgrades();
         upgradeWindow.gameObject.SetActive(false);
     }
     TownManager.EstateSceneManager.rosterPanel.onHeroSlotBeginDragging -= rosterPanel_onHeroSlotBeginDragging;
     TownManager.EstateSceneManager.rosterPanel.onHeroSlotEndDragging   -= rosterPanel_onHeroSlotEndDragging;
     gameObject.SetActive(false);
     for (int i = 0; i < 3; i++)
     {
         if (quirkSlots[i].TreatmentSlot.Status == ActivitySlotStatus.Checkout)
         {
             quirkSlots[i].SetStatus(ActivitySlotStatus.Available);
             quirkWindow.ResetWindow();
         }
         if (diseaseSlots[i].TreatmentSlot.Status == ActivitySlotStatus.Checkout)
         {
             diseaseSlots[i].SetStatus(ActivitySlotStatus.Available);
             diseaseWindow.ResetWindow();
         }
     }
     TownManager.BuildingWindowActive = false;
     DarkestSoundManager.PlayOneShot("event:/ui/town/building_zoomout");
 }
Exemplo n.º 19
0
    private IEnumerator SceneSlider()
    {
        DarkestSoundManager.PlayOneShot("event:/general/title_screen/campaign_button");

        while (true)
        {
            if (470 < sceneryRect.offsetMax.y)
            {
                break;
            }

            Vector2 offsetMax = sceneryRect.offsetMax;
            offsetMax.y          += Time.deltaTime * 1200;
            sceneryRect.offsetMax = offsetMax;
            Vector2 offsetMin = sceneryRect.offsetMin;
            offsetMin.y          += Time.deltaTime * 1200;
            sceneryRect.offsetMin = offsetMin;
            yield return(null);
        }
        isSelecting = true;

        for (int i = 0; i < SlotNumber; i++)
        {
            saveSlots[i].LoadSaveFrame();
        }
    }
Exemplo n.º 20
0
 public void ActivityLogClose()
 {
     activityLogOpened = false;
     bottomPanel.ActivityLogAnimator.state.SetAnimation(0, "idle", false);
     activityLogWindow.gameObject.SetActive(activityLogOpened);
     DarkestSoundManager.PlayOneShot("event:/ui/town/page_close");
 }
Exemplo n.º 21
0
    public void UpdateComposition(List <string> partyClasses)
    {
        var compEntry = DarkestDungeonManager.Data.PartyNames.Find(entry =>
        {
            if (entry.ClassIds.Count != partyClasses.Count)
            {
                return(false);
            }
            for (int i = 0; i < entry.ClassIds.Count; i++)
            {
                if (entry.ClassIds[i] != partyClasses[i])
                {
                    return(false);
                }
            }
            return(true);
        });

        if (compEntry != null)
        {
            partyName.text = LocalizationManager.GetString("party_name_" + compEntry.Id);
            partyAnimator.SetBool("IsValid", true);
            DarkestSoundManager.PlayOneShot("event:/ui/town/party_comp");
        }
        else
        {
            partyAnimator.SetBool("IsValid", false);
        }
    }
Exemplo n.º 22
0
    public virtual void OnPointerClick(PointerEventData eventData)
    {
        if (!Interactable || Locked)
        {
            DarkestSoundManager.PlayOneShot("event:/ui/town/button_invalid");
            return;
        }

        if (Selected)
        {
            if (!CurrentHero.SelectedCombatSkills.Remove(Skill))
            {
                Debug.LogError("Deselected skill not found.");
            }
            Deselect();
            DarkestSoundManager.PlayOneShot("event:/ui/town/character_unequip");
        }
        else
        {
            if (CurrentHero.SelectedCombatSkills.Count == 4)
            {
                DarkestSoundManager.PlayOneShot("event:/ui/town/button_invalid");
            }
            else
            {
                CurrentHero.SelectedCombatSkills.Add(Skill);
                Select();
                DarkestSoundManager.PlayOneShot("event:/ui/town/character_equip");
            }
        }
    }
Exemplo n.º 23
0
    public override void UpdateUpgradeTrees(bool afterPurchase = false)
    {
        Building.UpdateBuilding(DarkestDungeonManager.Campaign.Estate.TownPurchases);
        float ratio = DarkestDungeonManager.Campaign.Estate.GetBuildingUpgradeRatio(Building.Type);

        upgradeWindow.UpgradedValue.text = Mathf.RoundToInt(ratio * 100) + "%";

        if (afterPurchase && Mathf.Approximately(ratio, 1))
        {
            DarkestSoundManager.PlayOneShot("event:/town/purchase_upgrade_last");
        }

        foreach (var tree in upgradeWindow.UpgradeTrees)
        {
            var currentUpgrades   = DarkestDungeonManager.Data.UpgradeTrees[tree.TreeId].Upgrades;
            int lastPurchaseIndex = -1;
            for (int i = 0; i < tree.Upgrades.Count; i++)
            {
                var status = DarkestDungeonManager.Campaign.Estate.GetUpgradeStatus(tree.TreeId, currentUpgrades[i]);
                EstateSceneManager.Instanse.TownManager.UpdateUpgradeSlot(status, tree.Upgrades[i]);

                if (status == UpgradeStatus.Purchased)
                {
                    lastPurchaseIndex = i;
                }
            }
            tree.UpdateConnector(lastPurchaseIndex);
        }
    }
Exemplo n.º 24
0
    private void BuildingUpgradeSlotClicked(BuildingUpgradeSlot slot)
    {
        var status = DarkestDungeonManager.Campaign.Estate.GetUpgradeStatus(slot.Tree.Id, slot.UpgradeInfo);

        if (status == UpgradeStatus.Available)
        {
            bool isFree = false;
            for (int i = 0; i < slot.Tree.Tags.Count; i++)
            {
                if (DarkestDungeonManager.Campaign.EventModifiers.HasFreeUpgrade(slot.Tree.Tags[i]))
                {
                    isFree = true;
                    DarkestDungeonManager.Campaign.EventModifiers.RemoveUpgradeTag(slot.Tree.Tags[i]);
                    break;
                }
            }

            if (DarkestDungeonManager.Campaign.Estate.BuyUpgrade(slot.Tree.Id, slot.UpgradeInfo, isFree))
            {
                EstateSceneManager.Instanse.CurrencyPanel.UpdateCurrency();
                UpdateUpgradeTrees(true);
            }
        }
        else if (status == UpgradeStatus.Locked)
        {
            DarkestSoundManager.PlayOneShot("event:/ui/town/button_click_locked");
        }
    }
Exemplo n.º 25
0
 private void EmbarkTransitionAppearEnded()
 {
     DarkestDungeonManager.ScreenFader.EventFadeEnded   -= EmbarkTransitionFadeEnded;
     DarkestDungeonManager.ScreenFader.EventAppearEnded -= EmbarkTransitionAppearEnded;
     DarkestSoundManager.ExecuteNarration("enter_quest_select", NarrationPlace.Town);
     transitionsEnabled = true;
     raidPartyPanel.CheckComposition();
 }
Exemplo n.º 26
0
 public void OnPointerEnter(PointerEventData eventData)
 {
     if (Item != null)
     {
         DarkestSoundManager.PlayOneShot("event:/ui/town/button_mouse_over");
         ToolTipManager.Instanse.Show(Item.ToolTip, eventData, RectTransform, ToolTipStyle.FromRight, ToolTipSize.Normal);
     }
 }
Exemplo n.º 27
0
    public void QuestButtonClicked()
    {
        DarkestSoundManager.PlayOneShot("event:/ui/town/dungeon_select");

        if (EventQuestSelected != null)
        {
            EventQuestSelected(this);
        }
    }
Exemplo n.º 28
0
    public void WindowClosed()
    {
        DarkestSoundManager.PlayOneShot("event:/ui/town/trinket_close");

        if (onWindowClose != null)
        {
            onWindowClose();
        }
    }
 public override void WindowOpened()
 {
     if (!TownManager.AnyWindowsOpened)
     {
         gameObject.SetActive(true);
         TownManager.BuildingWindowActive = true;
         DarkestSoundManager.ExecuteNarration("enter_building", NarrationPlace.Town, "graveyard");
         DarkestSoundManager.PlayOneShot("event:/town/enter_graveyard");
     }
 }
Exemplo n.º 30
0
 public override void WindowOpened()
 {
     if (!EstateSceneManager.Instanse.TownManager.AnyWindowsOpened)
     {
         gameObject.SetActive(true);
         EstateSceneManager.Instanse.TownManager.BuildingWindowActive = true;
         DarkestSoundManager.ExecuteNarration("enter_building", NarrationPlace.Town, Building.Name);
         DarkestSoundManager.PlayOneShot("event:/town/enter_" + Building.Name);
     }
 }