public override void Unload() { client?.Dispose(); client = null; Instance = null; _exampleUserInterface?.SetState(null); // Choose Starter _exampleUserInterfaceNew?.SetState(null); // Pokegear Main Menu PokegearUserInterfaceNew?.SetState(null); // Pokegear Events Menu evolveUserInterfaceNew?.SetState(null); summaryUIInterface?.SetState(null); _uiSidebar?.SetState(null); _partySlots?.SetState(null); _moves?.SetState(null); _battle?.SetState(null); BattleMode.UI = null; PartySlots = null; pokemonStore = null; wildPokemonStore = null; movesStore = null; _exampleUserInterface = null; _exampleUserInterfaceNew = null; PokegearUserInterfaceNew = null; _uiSidebar = null; _partySlots = null; _moves = null; _battle = null; BaseMove._mrand = null; ChooseStarter.Deactivate(); ChooseStarter = null; ChooseStarterBulbasaur.Deactivate(); ChooseStarterBulbasaur = null; ChooseStarterCharmander.Deactivate(); ChooseStarterCharmander = null; ChooseStarterSquirtle.Deactivate(); ChooseStarterSquirtle = null; PokegearUI.Deactivate(); PokegearUI = null; PokegearUIEvents.Deactivate(); PokegearUIEvents = null; evolveUI.Deactivate(); evolveUI = null; UISidebar.Deactivate(); UISidebar = null; Moves.Deactivate(); Moves = null; summaryUI.Deactivate(); summaryUI = null; PartyCycle = null; FirstPKMAbility = null; SecondPKMAbility = null; ThirdPKMAbility = null; FourthPKMAbility = null; CompressSidebar = null; Localisation = null; Textures = null; storage = null; Store.Dispose(); Store = null; Scheduler?.CancelDelayedTasks(); Scheduler = null; schedulerClock = null; ParentPokemonNPC.HighlightTexture = null; ParentPokemon.HighlightTexture = null; }
public override void Load() { // Load movedb BaseMove.LoadMoveDb(); // Initalize Discord RP on Mod Load if (!Main.dedServ) { client = new DiscordRpcClient("790364236554829824"); client.Logger = new ConsoleLogger() { Level = LogLevel.Warning }; // Logger.Info("Attempting to establish Discord RP connection"); // Subscribe to events client.OnReady += (sender, e) => { Logger.Info("Established connection"); Console.WriteLine("Received Ready from user {0}", e.User.Username); }; client.OnPresenceUpdate += (sender, e) => { Console.WriteLine("Received Update! {0}", e.Presence); }; client.OnError += (sender, e) => { Logger.Error("Could not start Discord RP. Reason: " + e.Message); }; //Connect to the RPC client.Initialize(); client.SetPresence(new RichPresence() { Details = "In Menu", State = "Playing v0.4.2", Assets = new Assets() { LargeImageKey = "largeimage2", LargeImageText = "Merry Christmas!" } }); } BaseMove._mrand = new UnifiedRandom(BaseMove._seed = new Random().Next()); //Load all mons to a store LoadPokemons(); if (Main.netMode != NetmodeID.Server) { if (Localisation == null) { Localisation = new LocalisationManager(locale); } locale = new Bindable <string>(Language.ActiveCulture.Name); storage = new ModStorage("Terramon"); //Initialise local resource store Store = new ResourceStore <byte[]>(new EmbeddedStore()); //Make new instance of ResourceStore with dependency what loads data from ModStore Store.AddStore(new StorageCachableStore(storage, new WebStore())); //Add second dependency what checks if data exist in local store. //If not and provided URL load data from web and save it on drive Textures = new Texture2DStore(Store); //Initialise cachable texture store in order not creating new texture each call Localisation.AddLanguage(GameCulture.English.Name, new LocalisationStore(Store, GameCulture.English)); //Adds en-US.lang file handling Localisation.AddLanguage(GameCulture.Russian.Name, new LocalisationStore(Store, GameCulture.Russian)); //Adds ru-RU.lang file handling #if DEBUG UseWebAssets = true; var ss = Localisation.GetLocalisedString(new LocalisedString(("title", "Powered by broken code")));//It's terrible checking in ui from phone, so i can ensure everything works from version string //Main.versionNumber = ss.Value + "\n" + Main.versionNumber; #endif Ref <Effect> screenRef = new Ref <Effect>(GetEffect("Effects/ShockwaveEffect")); // The path to the compiled shader file. Ref <Effect> whiteShaderRef = new Ref <Effect>(GetEffect("Effects/whiteshader")); // The path to the compiled shader file. Filters.Scene["Shockwave"] = new Filter(new ScreenShaderData(screenRef, "Shockwave"), EffectPriority.VeryHigh); Filters.Scene["Shockwave"].Load(); GameShaders.Misc["WhiteTint"] = new MiscShaderData(whiteShaderRef, "ArmorBasic"); ChooseStarter = new ChooseStarter(); ChooseStarter.Activate(); ChooseStarterBulbasaur = new ChooseStarterBulbasaur(); ChooseStarterBulbasaur.Activate(); ChooseStarterCharmander = new ChooseStarterCharmander(); ChooseStarterCharmander.Activate(); ChooseStarterSquirtle = new ChooseStarterSquirtle(); ChooseStarterSquirtle.Activate(); PokegearUI = new PokegearUI(); PokegearUI.Activate(); PokegearUIEvents = new PokegearUIEvents(); PokegearUIEvents.Activate(); evolveUI = new EvolveUI(); evolveUI.Activate(); UISidebar = new UISidebar(); UISidebar.Activate(); Moves = new Moves(); Moves.Activate(); PartySlots = new PartySlots(); PartySlots.Activate(); _exampleUserInterface = new UserInterface(); _exampleUserInterfaceNew = new UserInterface(); PokegearUserInterfaceNew = new UserInterface(); evolveUserInterfaceNew = new UserInterface(); _uiSidebar = new UserInterface(); _moves = new UserInterface(); _partySlots = new UserInterface(); _battle = new UserInterface(); ParentPokemonNPC.HighlightTexture = new Dictionary <string, Texture2D>(); ParentPokemon.HighlightTexture = new Dictionary <string, Texture2D>(); //_exampleUserInterface.SetState(ChooseStarter); // Choose Starter #if DEBUG _exampleUserInterface.SetState(new TestState()); #endif _exampleUserInterfaceNew.SetState(PokegearUI); // Pokegear Main Menu PokegearUserInterfaceNew.SetState(PokegearUIEvents); // Pokegear Events Menu evolveUserInterfaceNew.SetState(evolveUI); _uiSidebar.SetState(UISidebar); _moves.SetState(Moves); _partySlots.SetState(PartySlots); _battle.SetState(BattleMode.UI = new BattleUI());// Automatically assign shortcut summaryUI = new AnimatorUI(); summaryUI.Activate(); summaryUIInterface = new UserInterface(); summaryUIInterface.SetState(summaryUI); } if (Main.dedServ) { return; } Scheduler = new Scheduler(Thread.CurrentThread, schedulerClock = new GameTimeClock()); FirstPKMAbility = RegisterHotKey("First Pokémon Move", Keys.Z.ToString()); SecondPKMAbility = RegisterHotKey("Second Pokémon Move", Keys.X.ToString()); ThirdPKMAbility = RegisterHotKey("Third Pokémon Move", Keys.C.ToString()); FourthPKMAbility = RegisterHotKey("Fourth Pokémon Move", Keys.V.ToString()); CompressSidebar = RegisterHotKey("Compress Sidebar", Keys.RightShift.ToString()); PartyCycle = RegisterHotKey("Quick Spawn First Party Pokémon", Keys.RightAlt.ToString()); }