/// <summary> /// Updates the SpellTab with information from SpellPage /// </summary> /// <param name="toDisplay">The spell page which this spell tab represents</param> public void Populate(SpellPage toDisplay) { this.page = toDisplay; element.sprite = elementSprites[(int)toDisplay.Spell.Element]; check.sprite = checkSprites[toDisplay.Unlocked ? 1 : 0]; title.text = toDisplay.Spell.Name; }
/// <summary> /// Sets default Spell (Bookerang) /// </summary> private void Start() { SpellPage bookerang = new SpellPage(baseSpell, true); pages.Add(bookerang); PlayerManager.Instance.CastingManager.TryEquipSpell(bookerang.Spell); }
public ISpellComponent LoadComponent(UnLoadedSpellComponent spellUnLoaded) { string localPath = Path.Combine(path, spellUnLoaded.type.ToString()); localPath = Path.Combine(localPath, spellUnLoaded.name + ".json"); string json = File.ReadAllText(localPath); switch (spellUnLoaded.type) { case SpellComponent.SubSpellComponentType.Paper: SpellPage page = JsonUtility.FromJson <SpellPage>(json); return(page); case SpellComponent.SubSpellComponentType.Rune: SpellRune rune = JsonUtility.FromJson <SpellRune>(json); return(rune); case SpellComponent.SubSpellComponentType.language: Language lang = JsonUtility.FromJson <Language>(json); return(lang); case SpellComponent.SubSpellComponentType.Ink: Ink ink = JsonUtility.FromJson <Ink>(json); return(ink); default: return(null); } }
/// <summary> /// Runs FinishSpellPuzzleDialogue /// </summary> /// <param name="unlockedSpell">Spell that was Unlocked</param> private void RunFinishSpellPuzzleDialogue(SpellPage unlockedSpell) { // Remove Listener from Spell-Unlock PlayerManager.Instance.Inventory.RemoveUnlockListener(RunFinishSpellPuzzleDialogue); // Re-Enable Back-Button on Puzzle-Page MenuManager.Instance.ResearchCanvas.Find("Back Button").GetComponent <Button>().interactable = true; // Run Dialogue DialogueManager.Instance.StartDialogue(dialogues[(int)TutorialSteps.FinishedSpellPuzzle], EndFinishSpellPuzzleDialogue); }
/// <summary> /// Unlocks a Page in the Inventory, but only if there is enough dust to pay for its cost /// </summary> /// <param name="page">Page to unlock</param> /// <returns>True if unlock was successful</returns> public bool UnlockSpell(SpellPage page) { if (Dust >= page.DustCost) { page.UnlockSpell(); spellUnlocked?.Invoke(page); Dust -= page.DustCost; dustChangeEvent?.Invoke(Dust, (int)page.DustCost); } return(page.Unlocked); }
/// <summary> /// Runs PagePickupDialogue /// </summary> /// <param name="pickedUp">Page that was picked up</param> private void RunPagePickupDialogue(SpellPage pickedUp) { // Remove Listener from Page-Pickup PlayerManager.Instance.Inventory.RemovePageListener(RunPagePickupDialogue); // Pause Game GameManager.Instance.PauseGame(); // Prevent opening of Menu during Dialogue GameUIManager.Instance.enabled = false; // Run Dialogue DialogueManager.Instance.StartDialogue(dialogues[(int)TutorialSteps.PagePickup], EndPagePickupDialogue); }
/// <summary> /// Adds Page to Inventory, if it does not exist in Inventory yet /// </summary> /// <param name="page">Page to add</param> internal bool AddPage(SpellPage page) { if (page != null && !HasSpell(page.Spell)) { pages.Add(page); pageChangeEvent?.Invoke(page); return(true); } else { return(false); } }
/// <summary> /// Initializes List /// </summary> private void OnEnable() { UpdateSpellHUD(); pages = PlayerManager.Instance.Inventory.Pages; for (int i = (currentPage - 1) * 16; i < pages.Count && i < currentPage * 16; i++) { SpellPage page = pages[i]; SpellTab newSpellInfo = Instantiate(spellInfo).GetComponent <SpellTab>(); newSpellInfo.SetController(this); newSpellInfo.Populate(page); newSpellInfo.transform.SetParent(i >= (currentPage - 1) * 16 + 8 ? rightPage : leftPage); spellTabs.Add(newSpellInfo); } // Set Page-Switch Buttons prevPageButton.SetActive(currentPage > 1); // Activate Previous Page-Button if on Page > first nextPageButton.SetActive(currentPage < totalPages); // Activate Next Page-Button if on Page < last }
/// <summary> /// Handles Clicking of Spell-Object in List (Equip/Details) /// </summary> /// <param name="page">Clicked SpellPage</param> internal void OnSpellClick(SpellPage page) { if (equipSelection.HasValue) // Check if a position has been selected for the spell { if (page.Unlocked) // Check if page has been Unlocked { // Set Spell to Position PlayerManager.Instance.CastingManager.SetSpell(page.Spell, (ushort)equipSelection.Value); UpdateSpellHUD(); DeselectEquipTarget(); } } else { OpenDetails(page); // Open Details Page for Spell } }
/// <summary> /// Switches to Details-Page /// </summary> /// <param name="page">SpellPage to display details for</param> private void OpenDetails(SpellPage page) { spellCanvas.gameObject.SetActive(true); spellCanvas.SetSelectedSpell(page); transform.gameObject.SetActive(false); }
#pragma warning restore 0649 // Restore Null-Warning after Editor-Variables #endregion #region Methods /// <summary> /// Sets Info for Spell to UI /// </summary> /// <param name="target">Spell to Set</param> public void SetSelectedSpell(SpellPage target) { selectedSpell = target; OnDisable(); // Delete old Info OnEnable(); // Set new Info }
void PageChanged(string paper) { SpellPage page = ComponentLoader.GetInstance().LoadComponent(new ComponentLoader.UnLoadedSpellComponent(paper, SpellComponent.SubSpellComponentType.Paper)) as SpellPage; projSpellBookBuilder.page = page; }