Guest User

Client Plugin Example - Discord Button

a guest
Jul 14th, 2021
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.11 KB | None | 0 0
  1. using Intersect.Client.Plugins;
  2. using Intersect.Client.Plugins.Interfaces;
  3. using Intersect.Client.General;
  4. using Intersect.Client.Framework.Graphics;
  5. using Intersect.Client.Framework.Content;
  6. using Intersect.Client.Framework.Gwen.Control;
  7. using System.Diagnostics;
  8. using Intersect.Client.Framework.Gwen;
  9.  
  10. namespace Client.Plugins.DiscordButton
  11. {
  12.     class DiscordButton : ClientPluginEntry
  13.     {
  14.         private GameTexture _buttonTex;
  15.  
  16.         public override void OnStart(IClientPluginContext context)
  17.         {
  18.             _buttonTex = context.ContentManager.LoadEmbedded<GameTexture>(
  19.                 context, ContentTypes.Interface, "DiscordButton/Assets/join-our-discord.png"
  20.             );
  21.  
  22.             context.Lifecycle.LifecycleChangeState += Lifecycle_LifecycleChangeState;
  23.         }
  24.  
  25.         private void Lifecycle_LifecycleChangeState(IClientPluginContext context,
  26.             LifecycleChangeStateArgs lifecycleChangeStateArgs)
  27.         {
  28.             if (lifecycleChangeStateArgs.State == GameStates.Menu)
  29.             {
  30.                 CreateDiscordButton(context);
  31.             }
  32.         }
  33.  
  34.         void CreateDiscordButton(IClientPluginContext context)
  35.         {
  36.             // avoid errors if interface not drawn yet
  37.             if (context.Lifecycle.Interface == null) return;
  38.  
  39.             Button button = context.Lifecycle.Interface.Create<Button>("DiscordButton");
  40.             string URL = context.GetTypedConfiguration<DiscordButtonConfig>()?.DiscordInviteUrl;
  41.             button.Clicked += (sender, args) =>
  42.             {
  43.                 Process.Start(URL);
  44.             };
  45.  
  46.             button.SetImage(_buttonTex, _buttonTex.Name, Button.ControlState.Normal);
  47.             button.SetSize(_buttonTex.GetWidth(), _buttonTex.GetHeight());
  48.             button.CurAlignments?.Add(Alignments.Bottom);
  49.             button.CurAlignments?.Add(Alignments.Right);
  50.             button.ProcessAlignments();
  51.         }
  52.  
  53.         public override void OnStop(IClientPluginContext context)
  54.         {
  55.             context.Lifecycle.LifecycleChangeState -= Lifecycle_LifecycleChangeState;
  56.         }
  57.     }
  58. }
  59.  
Advertisement
Add Comment
Please, Sign In to add comment