Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using Modding;
- using UnityEngine;
- using SFCore;
- using SFCore.Generics;
- namespace GloryCharms
- {
- public class GlorySaveSettings : ModSettings
- {
- public List<bool> gotCharms = new List<bool>() { true };
- public List<bool> newCharms = new List<bool>() { false };
- public List<bool> equippedCharms = new List<bool>() { false };
- public List<int> charmCosts = new List<int>() { 1 };
- }
- public class GloryGlobalSettings : ModSettings
- {
- }
- public class GloryCharms : FullSettingsMod<GlorySaveSettings, GloryGlobalSettings>, ITogglableMod
- {
- #region Boring Stuff
- public CharmHelper ch { get; private set; }
- // Renaming mod name
- public GloryCharms() : base("Glorified Charms") {
- }
- // Setting mod version
- public override string GetVersion() => "1.0.0";
- // Adding CharmHelper
- public CharmHelper charmHelper { get; private set; }
- // Initialization
- public override void Initialize()
- {
- Log("Initializing Glorified Charms...");
- //loadResources();
- charmHelper = new CharmHelper();
- charmHelper.customCharms = 1;
- charmHelper.customSprites = new Sprite[] { new Sprite() };
- //charmHelper.customSprites = new Sprite[] { testSprite, testSprite, testSprite, testSprite };
- initCallbacks();
- Log("Initialized!");
- }
- // Initializing callbacks
- private void initCallbacks()
- {
- ModHooks.Instance.LanguageGetHook += OnLanguageGetHook;
- ModHooks.Instance.GetPlayerBoolHook += OnGetPlayerBoolHook;
- ModHooks.Instance.SetPlayerBoolHook += OnSetPlayerBoolHook;
- ModHooks.Instance.GetPlayerIntHook += OnGetPlayerIntHook;
- ModHooks.Instance.SetPlayerIntHook += OnSetPlayerIntHook;
- }
- #endregion
- #region Charm Info
- private string[] charmNames =
- {
- "Glorified Strength"
- };
- private string[] charmDescriptions =
- {
- "Strengthens the bearer, increasing the damage they deal to enemies with their nail by 75%.<br><br>This charm is Glorified."
- };
- #endregion
- #region Callback Methods
- private string OnLanguageGetHook(string key, string sheet)
- {
- if (key.StartsWith("CHARM_NAME_"))
- {
- int charmNum = int.Parse(key.Split('_')[2]);
- if (ch.charmIDs.Contains(charmNum))
- {
- return charmNames[ch.charmIDs.IndexOf(charmNum)];
- }
- }
- else if (key.StartsWith("CHARM_DESC_"))
- {
- int charmNum = int.Parse(key.Split('_')[2]);
- if (ch.charmIDs.Contains(charmNum))
- {
- return charmDescriptions[ch.charmIDs.IndexOf(charmNum)];
- }
- }
- return Language.Language.GetInternal(key, sheet);
- }
- private bool OnGetPlayerBoolHook(string target)
- {
- if (target.StartsWith("gotCharm_"))
- {
- int charmNum = int.Parse(target.Split('_')[1]);
- if (charmHelper.charmIDs.Contains(charmNum))
- {
- return Settings.gotCharms[charmHelper.charmIDs.IndexOf(charmNum)];
- }
- }
- if (target.StartsWith("newCharm_"))
- {
- int charmNum = int.Parse(target.Split('_')[1]);
- if (charmHelper.charmIDs.Contains(charmNum))
- {
- return Settings.newCharms[charmHelper.charmIDs.IndexOf(charmNum)];
- }
- }
- if (target.StartsWith("equippedCharm_"))
- {
- int charmNum = int.Parse(target.Split('_')[1]);
- if (charmHelper.charmIDs.Contains(charmNum))
- {
- return Settings.equippedCharms[charmHelper.charmIDs.IndexOf(charmNum)];
- }
- }
- return PlayerData.instance.GetBoolInternal(target);
- }
- private void OnSetPlayerBoolHook(string target, bool val)
- {
- if (target.StartsWith("gotCharm_"))
- {
- int charmNum = int.Parse(target.Split('_')[1]);
- if (charmHelper.charmIDs.Contains(charmNum))
- {
- Settings.gotCharms[charmHelper.charmIDs.IndexOf(charmNum)] = val;
- return;
- }
- }
- if (target.StartsWith("newCharm_"))
- {
- int charmNum = int.Parse(target.Split('_')[1]);
- if (charmHelper.charmIDs.Contains(charmNum))
- {
- Settings.newCharms[charmHelper.charmIDs.IndexOf(charmNum)] = val;
- return;
- }
- }
- if (target.StartsWith("equippedCharm_"))
- {
- int charmNum = int.Parse(target.Split('_')[1]);
- if (charmHelper.charmIDs.Contains(charmNum))
- {
- Settings.equippedCharms[charmHelper.charmIDs.IndexOf(charmNum)] = val;
- return;
- }
- }
- PlayerData.instance.SetBoolInternal(target, val);
- }
- private int OnGetPlayerIntHook(string target)
- {
- if (target.StartsWith("charmCost_"))
- {
- int charmNum = int.Parse(target.Split('_')[1]);
- if (charmHelper.charmIDs.Contains(charmNum))
- {
- return Settings.charmCosts[charmHelper.charmIDs.IndexOf(charmNum)];
- }
- }
- return PlayerData.instance.GetIntInternal(target);
- }
- private void OnSetPlayerIntHook(string target, int val)
- {
- // We don't need other mods to adjust the cost of our charms, but it could be added if wanted
- PlayerData.instance.SetIntInternal(target, val);
- }
- #endregion
- public void Unload()
- {
- throw new NotImplementedException();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment