help me fix my code?
Severity	Code	Description	Project	File	Line	Suppression State
Error (active)	CS0123	No overload for 'OnGameShutdown' matches delegate 'ModEvents.ModEventHandlerDelegate<ModEvents.SGameShutdownData>'	CustomRadioPlayer(V2.0)TMO	C:\Users\ROGPC\source\repos\CustomRadioPlayer(V2.0)TMO\ModInit.cs	24	
Error (active)	CS0123	No overload for 'OnGameAwake' matches delegate 'ModEvents.ModEventHandlerDelegate<ModEvents.SGameAwakeData>'	CustomRadioPlayer(V2.0)TMO	C:\Users\ROGPC\source\repos\CustomRadioPlayer(V2.0)TMO\ModInit.cs	23	

using HarmonyLib;
using UnityEngine;
using System.Collections.Generic;

namespace CustomRadioPlayer
{
    public class ModInit : IModApi
    {
        public void InitMod(Mod _modInstance)
        {
            Debug.Log("[CustomRadioPlayer] Initializing Custom Radio Player Mod...");
            var harmony = new Harmony("com.customradioplayer.patch");
            harmony.PatchAll();

            GameObject musicObject = new GameObject("CustomRadioPlayer");
            UnityEngine.Object.DontDestroyOnLoad(musicObject);
            musicObject.AddComponent<RadioManager>();
            musicObject.AddComponent<RadioAudioManager>();
            musicObject.AddComponent<MusicLoader>();
            RadioManager.musicObject = musicObject;

            // Attempt 1: Register with methods returning bool
            ModEvents.GameAwake.RegisterHandler(new ModEvents.ModEventHandlerDelegate<ModEvents.SGameAwakeData>(OnGameAwake));
            ModEvents.GameShutdown.RegisterHandler(new ModEvents.ModEventHandlerDelegate<ModEvents.SGameShutdownData>(OnGameShutdown));

            // Alternative: Use lambdas if the above fails (uncomment if needed)
            // ModEvents.GameAwake.RegisterHandler((ModEvents.SGameAwakeData _data) => { OnGameAwake(_data); return true; });
            // ModEvents.GameShutdown.RegisterHandler((ModEvents.SGameShutdownData _data) => { OnGameShutdown(_data); return true; });

            if (RadioManager.Config.debugLogging)
                Debug.Log("[CustomRadioPlayer] Mod initialized successfully");
        }

        private static bool OnGameAwake(ModEvents.SGameAwakeData _data)
        {
            if (RadioManager.Config.debugLogging)
                Debug.Log("[CustomRadioPlayer] GameAwake: Ensuring mod components are set up");
            if (RadioManager.musicObject == null)
            {
                RadioManager.musicObject = new GameObject("CustomRadioPlayer");
                UnityEngine.Object.DontDestroyOnLoad(RadioManager.musicObject);
                RadioManager.musicObject.AddComponent<RadioManager>();
                RadioManager.musicObject.AddComponent<RadioAudioManager>();
                RadioManager.musicObject.AddComponent<MusicLoader>();
            }
            var commands = new SortedList<string, IConsoleCommand>();
            SdtdConsole.Instance.RegisterCommand(commands, "radio", new ConsoleCmdRadio());
            SdtdConsole.Instance.RegisterCommand(commands, "rrescan", new ConsoleCmdRescan());
            SdtdConsole.Instance.RegisterCommand(commands, "rplaylist", new ConsoleCmdPlaylist());
            SdtdConsole.Instance.RegisterCommand(commands, "rinfo", new ConsoleCmdTrackInfo());
            SdtdConsole.Instance.RegisterCommand(commands, "rscanplaylists", new ConsoleCmdScanPlaylists());
            return true;
        }

        private static bool OnGameShutdown(ModEvents.SGameShutdownData _data)
        {
            if (RadioManager.Config.debugLogging)
                Debug.Log("[CustomRadioPlayer] GameShutdown: Cleaning up mod resources");
            RadioAudioManager.StopMusic(true);
            RadioManager.SetRadioActive(false);
            RadioManager.SetActiveRadioPos(null);
            foreach (var source in RadioManager.radioSources.Values)
            {
                if (source != null)
                    UnityEngine.Object.Destroy(source.gameObject);
            }
            RadioManager.radioSources.Clear();
            RadioManager.PlacedRadios.Clear();
            if (RadioManager.musicObject != null)
            {
                UnityEngine.Object.Destroy(RadioManager.musicObject);
                RadioManager.musicObject = null;
            }
            return true;
        }
    }

    public class ConsoleCmdRadio : ConsoleCmdAbstract
    {
        public override string[] getCommands() => new[] { "radio" };
        public override string getDescription() => "Toggle the Custom Radio Player mod on or off.";
        public override string GetHelp() => "Usage: radio <enable/disable>";

        public override void Execute(List<string> _params, CommandSenderInfo _senderInfo)
        {
            if (_params.Count != 2 || !(_params[1].ToLower() == "enable" || _params[1].ToLower() == "disable"))
            {
                SdtdConsole.Instance.Output("[CustomRadioPlayer] Invalid command. Usage: radio <enable/disable>");
                return;
            }
            if (_params[1].ToLower() == "enable")
            {
                RadioManager.ToggleModEnabled();
                SdtdConsole.Instance.Output("[CustomRadioPlayer] Radio mod enabled");
            }
            else
            {
                RadioManager.ToggleModEnabled();
                SdtdConsole.Instance.Output("[CustomRadioPlayer] Radio mod disabled");
            }
        }
    }

    public class ConsoleCmdRescan : ConsoleCmdAbstract
    {
        public override string[] getCommands() => new[] { "rrescan" };
        public override string getDescription() => "Rescan music tracks for the Custom Radio Player.";
        public override string GetHelp() => "Usage: rrescan";

        public override void Execute(List<string> _params, CommandSenderInfo _senderInfo)
        {
            PlaylistManager.RescanTracks();
        }
    }

    public class ConsoleCmdPlaylist : ConsoleCmdAbstract
    {
        public override string[] getCommands() => new[] { "rplaylist" };
        public override string getDescription() => "Switch to a specific playlist in the Custom Radio Player.";
        public override string GetHelp() => "Usage: rplaylist <playlist_name>\nRun 'rscanplaylists' to refresh available playlists.";

        public override void Execute(List<string> _params, CommandSenderInfo _senderInfo)
        {
            if (_params.Count != 2)
            {
                SdtdConsole.Instance.Output("[CustomRadioPlayer] Invalid command. Usage: rplaylist <playlist_name>");
                return;
            }
            PlaylistManager.SwitchPlaylist(_params[1]);
        }
    }

    public class ConsoleCmdTrackInfo : ConsoleCmdAbstract
    {
        public override string[] getCommands() => new[] { "rinfo" };
        public override string getDescription() => "Display information about the current track.";
        public override string GetHelp() => "Usage: rinfo";

        public override void Execute(List<string> _params, CommandSenderInfo _senderInfo)
        {
            string info = RadioManager.GetTrackInfo();
            SdtdConsole.Instance.Output(info);
            RadioManager.StartShowTooltipCoroutine(null, info);
        }
    }

    public class ConsoleCmdScanPlaylists : ConsoleCmdAbstract
    {
        public override string[] getCommands() => new[] { "rscanplaylists" };
        public override string getDescription() => "Scan for playlists in CustomRadioTracks subfolders.";
        public override string GetHelp() => "Usage: rscanplaylists";

        public override void Execute(List<string> _params, CommandSenderInfo _senderInfo)
        {
            PlaylistManager.ScanPlaylists();
        }
    }
}