예제 #1
0
        public SHubConfigPanel(SHubConfig config)
        {
            InitializeComponent();

            SHubConfiguration = config;

            c_ClientID.Text                      = SHubConfiguration.ClientID;
            c_AccessToken.Text                   = SHubConfiguration.AccessToken;
            c_ChannelName.Text                   = SHubConfiguration.ChannelName;
            c_RefreshToken.Text                  = SHubConfiguration.RefreshToken;
            c_CommandSymbol.Text                 = SHubConfiguration.CommandSymbol;
            c_BotName.Text                       = SHubConfiguration.BotName;
            c_ViewerPool_SubBonus.Checked        = SHubConfiguration.ViewerPool_SubBonus;
            c_ViewerPool_SubBonusByTiers.Checked = SHubConfiguration.ViewerPool_SubBonusByTiers;
            c_ViewerPool_RegisterCommand.Text    = SHubConfiguration.ViewerPool_RegisterCommand;
            c_ViewerPool_CanRollDice.Checked     = SHubConfiguration.ViewerPool_CanRollDice;

            c_Twitch_ClientID.Text = SHubConfiguration.Twitch_ClientID;

            switch (SHubConfiguration.GTA_mode)
            {
            case "c_GTA_modeFIFO": c_GTA_modeFIFO.Checked = true; break;

            case "c_GTA_modeLIFO": c_GTA_modeLIFO.Checked = true; break;

            case "c_GTA_modeRR": c_GTA_modeRR.Checked = true; break;

            case "c_GTA_mode_Rfull": c_GTA_mode_Rfull.Checked = true; break;
            }

            SHubConfiguration.GTA_roles ??= new List <Role>();
            GTARoles = new BindingList <Role>(SHubConfiguration.GTA_roles);
            BindingSource source = new BindingSource(GTARoles, null);

            c_roles.DataSource = source;

            SHubConfiguration.RoleVotes ??= new List <RoleVote>();
            RolesVoter = new BindingList <RoleVote>(SHubConfiguration.RoleVotes);
            BindingSource RoleVotes = new BindingSource(RolesVoter, null);

            c_RolesVoter.DataSource = RoleVotes;

            foreach (var screen in Screen.AllScreens)
            {
                c_overlay_display.Items.Add(screen.DeviceName);
            }

            c_overlay_display.Text = SHubConfiguration.Overlay_monitor;

            c_overlay_width.Maximum  = Screen.PrimaryScreen.Bounds.Width;
            c_overlay_height.Maximum = Screen.PrimaryScreen.Bounds.Height;
            c_overlay_x.Maximum      = Screen.PrimaryScreen.Bounds.Width;
            c_overlay_y.Maximum      = Screen.PrimaryScreen.Bounds.Height;

            c_overlay_width.Value    = SHubConfiguration.Overlay_width;
            c_overlay_height.Value   = SHubConfiguration.Overlay_height;
            c_overlay_x.Value        = SHubConfiguration.Overlay_x;
            c_overlay_y.Value        = SHubConfiguration.Overlay_y;
            c_Overlay_FontSize.Value = (SHubConfiguration.Overlay_FontSize < 8 ? 20 : SHubConfiguration.Overlay_FontSize);
        }
예제 #2
0
파일: Program.cs 프로젝트: LixYt/StreamHub
 public static void Load()
 {
     if (File.Exists("userSetting.shc"))
     {
         Stream stream = new FileStream("userSetting.shc", FileMode.Open, FileAccess.Read);
         try
         {
             IFormatter formatter = new BinaryFormatter();
             config = (SHubConfig)formatter.Deserialize(stream);
         }
         catch (Exception Ex)
         {
             MessageBox.Show(Ex.Message);
             config = new SHubConfig();
         }
         stream.Close();
     }
     else
     {
         config = new SHubConfig();
     }
 }
예제 #3
0
파일: SHubMain.cs 프로젝트: LixYt/StreamHub
        public SHubMain(SHubConfig cfg)
        {
            InitializeComponent();

            #region Load Configuration
            cfg    = cfg ?? new SHubConfig();
            config = cfg;

            config.Overlay_FontSize = (config.Overlay_FontSize == 0 ? 14 : config.Overlay_FontSize);

            SHubConfigPanel ConfigPannel = new SHubConfigPanel(config);
            while (!config.isSetup())
            {
                DialogResult r = MessageBox.Show("Setting incomplete. Retry or Quit software ?", "Configuration issue", MessageBoxButtons.RetryCancel);
                if (r == DialogResult.Retry)
                {
                    ConfigPannel.ShowDialog();
                }
                else
                {
                    Load += (s, e) => Close(); break;
                }
            }

            Text = $"{config.BotName}";
            #endregion

            #region Twitch
            client = new TwitchClient();

            try
            {
                var clientOptions = new ClientOptions
                {
                    MessagesAllowedInPeriod = 750,
                    ThrottlingPeriod        = TimeSpan.FromSeconds(30)
                };
                WebSocketClient customClient = new WebSocketClient(clientOptions);
                client = new TwitchClient(customClient);
                client.Initialize(config.GetCredential(), config.ChannelName);
                client.OnLog             += Client_OnLog;
                client.OnJoinedChannel   += Client_OnJoinedChannel;
                client.OnMessageReceived += Client_OnMessageReceived;
                client.OnWhisperReceived += Client_OnWhisperReceived;
                client.OnNewSubscriber   += Client_OnNewSubscriber;
                client.OnConnected       += Client_OnConnected;
                client.OnUserJoined      += Client_OnUserJoined;
                client.OnUserLeft        += Client_OnUserLeft;

                client.Connect();

                ExcludedNames.Add(client.TwitchUsername);
                //ExcludedNames.Add(client.JoinedChannels)
            }
            catch (Exception e)
            {
                Debug.WriteLine(e);
            }
            #endregion

            #region Twitch_Features
            c_GTAPool.AutoGenerateColumns = true;

            //Bindings
            GTAList = new BindingList <GTA_User>(GTAPoolList);
            BindingSource source = new BindingSource(GTAList, null);
            c_GTAPool.DataSource = source;

            VoteList = new BindingList <RoleVote>(config.RoleVotes);
            BindingSource sourceVoteRole = new BindingSource(VoteList, null);
            c_VotesRoles.DataSource = sourceVoteRole;

            UsersList = new BindingList <GameUser>(ConnectedUsers);
            BindingSource sourceUsers = new BindingSource(UsersList, null);
            c_ConnectedUsers.DataSource = sourceUsers;

            //txt File output for OBS
            UpdateObsFiles();
            UpdateGTACount();
            #endregion

            #region Overlay
            _brushes = new Dictionary <string, SolidBrush>();
            _fonts   = new Dictionary <string, Font>();
            _images  = new Dictionary <string, Image>();

            var gfx = new Graphics()
            {
                MeasureFPS = true,
                PerPrimitiveAntiAliasing = true,
                TextAntiAliasing         = true
            };

            _window = new GraphicsWindow(config.Overlay_width, 1080 - config.Overlay_height, config.Overlay_width, config.Overlay_height, gfx)
            {
                FPS       = 30,
                IsTopmost = true,
                IsVisible = true
            };

            _window.DestroyGraphics += _window_DestroyGraphics;
            _window.DrawGraphics    += _window_DrawGraphics;
            _window.SetupGraphics   += _window_SetupGraphics;

            _window.Create();
            //_window.Join(); //seems to replace or take over the WinForm
            #endregion

            #region Discord
            _client = new DiscordSocketClient();

            _client.Log             += LogAsync;
            _client.Ready           += ReadyAsync;
            _client.MessageReceived += MessageReceivedAsync;

            _ = DiscordTask();
            #endregion

            #region RolesVoteFeature

            #endregion
        }