/// <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;
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Sets default Spell (Bookerang)
        /// </summary>
        private void Start()
        {
            SpellPage bookerang = new SpellPage(baseSpell, true);

            pages.Add(bookerang);
            PlayerManager.Instance.CastingManager.TryEquipSpell(bookerang.Spell);
        }
Ejemplo n.º 3
0
    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);
        }
    }
Ejemplo n.º 4
0
 /// <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);
 }
Ejemplo n.º 5
0
 /// <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);
 }
Ejemplo n.º 6
0
 /// <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);
 }
Ejemplo n.º 7
0
 /// <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);
     }
 }
Ejemplo n.º 8
0
 /// <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
 }
Ejemplo n.º 9
0
 /// <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
     }
 }
Ejemplo n.º 10
0
 /// <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
        }
Ejemplo n.º 12
0
    void PageChanged(string paper)
    {
        SpellPage page = ComponentLoader.GetInstance().LoadComponent(new ComponentLoader.UnLoadedSpellComponent(paper, SpellComponent.SubSpellComponentType.Paper)) as SpellPage;

        projSpellBookBuilder.page = page;
    }