public void RefreshUserOnlyChatCommands()
        {
            List <UserOnlyChatCommandModel> commands = new List <UserOnlyChatCommandModel>();

            foreach (Guid commandID in this.User.Data.CustomCommandIDs)
            {
                UserOnlyChatCommandModel command = ChannelSession.Settings.GetCommand <UserOnlyChatCommandModel>(commandID);
                if (command != null)
                {
                    commands.Add(command);
                }
            }
            this.UserOnlyChatCommands.ClearAndAddRange(commands);
            this.NotifyPropertyChanged("HasUserOnlyChatCommands");
        }
예제 #2
0
#pragma warning disable CS0612 // Type or member is obsolete
        public static async Task UpgradeV2ToV3(string filePath)
        {
            SettingsV2Model oldSettings = await FileSerializerHelper.DeserializeFromFile <SettingsV2Model>(filePath, ignoreErrors : true);

            await oldSettings.Initialize();

            if (oldSettings.IsStreamer)
            {
                string settingsText = await ChannelSession.Services.FileService.ReadFile(filePath);

                settingsText = settingsText.Replace("MixItUp.Base.Model.Settings.SettingsV2Model, MixItUp.Base", "MixItUp.Base.Model.Settings.SettingsV3Model, MixItUp.Base");
                settingsText = settingsText.Replace("MixItUp.Base.ViewModel.User.UserRoleEnum", "MixItUp.Base.Model.User.UserRoleEnum");
                SettingsV3Model newSettings = JSONSerializerHelper.DeserializeFromString <SettingsV3Model>(settingsText, ignoreErrors: true);
                await newSettings.Initialize();

                newSettings.StreamingPlatformAuthentications[StreamingPlatformTypeEnum.Twitch].UserOAuthToken = oldSettings.TwitchUserOAuthToken;
                newSettings.StreamingPlatformAuthentications[StreamingPlatformTypeEnum.Twitch].UserID         = oldSettings.TwitchUserID;
                newSettings.StreamingPlatformAuthentications[StreamingPlatformTypeEnum.Twitch].ChannelID      = oldSettings.TwitchChannelID;
                newSettings.StreamingPlatformAuthentications[StreamingPlatformTypeEnum.Twitch].BotID          = (oldSettings.TwitchBotOAuthToken != null) ? string.Empty : null;
                newSettings.StreamingPlatformAuthentications[StreamingPlatformTypeEnum.Twitch].BotOAuthToken  = oldSettings.TwitchBotOAuthToken;

                newSettings.PatreonTierSubscriberEquivalent = oldSettings.PatreonTierMixerSubscriberEquivalent;

                foreach (var kvp in oldSettings.CooldownGroups)
                {
                    newSettings.CooldownGroupAmounts[kvp.Key] = kvp.Value;
                }

                foreach (var kvp in oldSettings.CommandGroups)
                {
                    newSettings.CommandGroups[kvp.Key] = new CommandGroupSettingsModel(kvp.Value);
                }

                foreach (ChatCommand command in oldSettings.ChatCommands)
                {
                    newSettings.SetCommand(new ChatCommandModel(command));
                }

                foreach (EventCommand command in oldSettings.EventCommands)
                {
                    newSettings.SetCommand(new EventCommandModel(command));
                }

                foreach (TimerCommand command in oldSettings.TimerCommands)
                {
                    newSettings.SetCommand(new TimerCommandModel(command));
                }

                foreach (ActionGroupCommand command in oldSettings.ActionGroupCommands)
                {
                    newSettings.SetCommand(new ActionGroupCommandModel(command));
                }

                foreach (TwitchChannelPointsCommand command in oldSettings.TwitchChannelPointsCommands)
                {
                    newSettings.SetCommand(new TwitchChannelPointsCommandModel(command));
                }

                foreach (CustomCommand command in oldSettings.CustomCommands.Values)
                {
                    newSettings.SetCommand(new CustomCommandModel(command));
                }

                foreach (GameCommandBase command in oldSettings.GameCommands)
                {
                    if (command.GetType() == typeof(BeachBallGameCommand))
                    {
                        newSettings.SetCommand(new HotPotatoGameCommandModel((BeachBallGameCommand)command));
                    }
                    else if (command.GetType() == typeof(BetGameCommand))
                    {
                        newSettings.SetCommand(new BetGameCommandModel((BetGameCommand)command));
                    }
                    else if (command.GetType() == typeof(BidGameCommand))
                    {
                        newSettings.SetCommand(new BidGameCommandModel((BidGameCommand)command));
                    }
                    else if (command.GetType() == typeof(CoinPusherGameCommand))
                    {
                        newSettings.SetCommand(new CoinPusherGameCommandModel((CoinPusherGameCommand)command));
                    }
                    else if (command.GetType() == typeof(DuelGameCommand))
                    {
                        newSettings.SetCommand(new DuelGameCommandModel((DuelGameCommand)command));
                    }
                    else if (command.GetType() == typeof(HangmanGameCommand))
                    {
                        newSettings.SetCommand(new HangmanGameCommandModel((HangmanGameCommand)command));
                    }
                    else if (command.GetType() == typeof(HeistGameCommand))
                    {
                        newSettings.SetCommand(new HeistGameCommandModel((HeistGameCommand)command));
                    }
                    else if (command.GetType() == typeof(HitmanGameCommand))
                    {
                        newSettings.SetCommand(new HitmanGameCommandModel((HitmanGameCommand)command));
                    }
                    else if (command.GetType() == typeof(HotPotatoGameCommand))
                    {
                        newSettings.SetCommand(new HotPotatoGameCommandModel((HotPotatoGameCommand)command));
                    }
                    else if (command.GetType() == typeof(LockBoxGameCommand))
                    {
                        newSettings.SetCommand(new LockBoxGameCommandModel((LockBoxGameCommand)command));
                    }
                    else if (command.GetType() == typeof(PickpocketGameCommand))
                    {
                        newSettings.SetCommand(new StealGameCommandModel((PickpocketGameCommand)command));
                    }
                    else if (command.GetType() == typeof(RouletteGameCommand))
                    {
                        newSettings.SetCommand(new RouletteGameCommandModel((RouletteGameCommand)command));
                    }
                    else if (command.GetType() == typeof(RussianRouletteGameCommand))
                    {
                        newSettings.SetCommand(new RussianRouletteGameCommandModel((RussianRouletteGameCommand)command));
                    }
                    else if (command.GetType() == typeof(SlotMachineGameCommand))
                    {
                        newSettings.SetCommand(new SlotMachineGameCommandModel((SlotMachineGameCommand)command));
                    }
                    else if (command.GetType() == typeof(SpinGameCommand))
                    {
                        newSettings.SetCommand(new SpinGameCommandModel((SpinGameCommand)command));
                    }
                    else if (command.GetType() == typeof(StealGameCommand))
                    {
                        newSettings.SetCommand(new StealGameCommandModel((StealGameCommand)command));
                    }
                    else if (command.GetType() == typeof(TreasureDefenseGameCommand))
                    {
                        newSettings.SetCommand(new TreasureDefenseGameCommandModel((TreasureDefenseGameCommand)command));
                    }
                    else if (command.GetType() == typeof(TriviaGameCommand))
                    {
                        newSettings.SetCommand(new TriviaGameCommandModel((TriviaGameCommand)command));
                    }
                    else if (command.GetType() == typeof(VendingMachineGameCommand))
                    {
                        newSettings.SetCommand(new SpinGameCommandModel((VendingMachineGameCommand)command));
                    }
                    else if (command.GetType() == typeof(VolcanoGameCommand))
                    {
                        newSettings.SetCommand(new VolcanoGameCommandModel((VolcanoGameCommand)command));
                    }
                    else if (command.GetType() == typeof(WordScrambleGameCommand))
                    {
                        newSettings.SetCommand(new WordScrambleGameCommandModel((WordScrambleGameCommand)command));
                    }
                }

                newSettings.RemoveCommand(newSettings.GameQueueUserJoinedCommandID);
                newSettings.GameQueueUserJoinedCommandID = SettingsV3Upgrader.ImportCustomCommand(newSettings, oldSettings.GameQueueUserJoinedCommand);

                newSettings.RemoveCommand(newSettings.GameQueueUserSelectedCommandID);
                newSettings.GameQueueUserSelectedCommandID = SettingsV3Upgrader.ImportCustomCommand(newSettings, oldSettings.GameQueueUserSelectedCommand);

                newSettings.RemoveCommand(newSettings.GiveawayStartedReminderCommandID);
                newSettings.GiveawayStartedReminderCommandID = SettingsV3Upgrader.ImportCustomCommand(newSettings, oldSettings.GiveawayStartedReminderCommand);

                newSettings.RemoveCommand(newSettings.GiveawayUserJoinedCommandID);
                newSettings.GiveawayUserJoinedCommandID = SettingsV3Upgrader.ImportCustomCommand(newSettings, oldSettings.GiveawayUserJoinedCommand);

                newSettings.RemoveCommand(newSettings.GiveawayWinnerSelectedCommandID);
                newSettings.GiveawayWinnerSelectedCommandID = SettingsV3Upgrader.ImportCustomCommand(newSettings, oldSettings.GiveawayWinnerSelectedCommand);

                newSettings.RemoveCommand(newSettings.ModerationStrike1CommandID);
                newSettings.ModerationStrike1CommandID = SettingsV3Upgrader.ImportCustomCommand(newSettings, oldSettings.ModerationStrike1Command);

                newSettings.RemoveCommand(newSettings.ModerationStrike2CommandID);
                newSettings.ModerationStrike2CommandID = SettingsV3Upgrader.ImportCustomCommand(newSettings, oldSettings.ModerationStrike2Command);

                newSettings.RemoveCommand(newSettings.ModerationStrike3CommandID);
                newSettings.ModerationStrike3CommandID = SettingsV3Upgrader.ImportCustomCommand(newSettings, oldSettings.ModerationStrike3Command);

                foreach (UserQuoteViewModel quote in oldSettings.Quotes)
                {
                    newSettings.Quotes.Add(quote.Model);
                }

                foreach (var kvp in oldSettings.UserData)
                {
                    newSettings.UserData[kvp.Key] = kvp.Value;
                    if (kvp.Value.EntranceCommand != null)
                    {
                        CustomCommandModel entranceCommand = new CustomCommandModel(kvp.Value.EntranceCommand);
                        newSettings.SetCommand(entranceCommand);
                        kvp.Value.EntranceCommandID = entranceCommand.ID;
                        kvp.Value.EntranceCommand   = null;
                    }

                    foreach (ChatCommand command in kvp.Value.CustomCommands)
                    {
                        UserOnlyChatCommandModel userCommand = new UserOnlyChatCommandModel(command, kvp.Key);
                        newSettings.SetCommand(userCommand);
                        kvp.Value.CustomCommandIDs.Add(userCommand.ID);
                    }
                    kvp.Value.CustomCommands.Clear();
                }

                newSettings.GiveawayRequirementsSet = new RequirementsSetModel(oldSettings.GiveawayRequirements);

                foreach (OverlayWidgetModel widget in newSettings.OverlayWidgets.ToList())
                {
                    if (widget.Item is OverlayClipPlaybackItemModel)
                    {
                        newSettings.OverlayWidgets.Remove(widget);
                    }
                    else if (widget.Item is OverlayLeaderboardListItemModel)
                    {
                        if (((OverlayLeaderboardListItemModel)widget.Item).NewLeaderCommand != null)
                        {
                            CustomCommandModel command = new CustomCommandModel(((OverlayLeaderboardListItemModel)widget.Item).NewLeaderCommand);
                            newSettings.SetCommand(command);
                            ((OverlayLeaderboardListItemModel)widget.Item).LeaderChangedCommandID = command.ID;
                            ((OverlayLeaderboardListItemModel)widget.Item).NewLeaderCommand       = null;
                        }
                    }
                    else if (widget.Item is OverlayProgressBarItemModel)
                    {
                        if (((OverlayProgressBarItemModel)widget.Item).GoalReachedCommand != null)
                        {
                            CustomCommandModel command = new CustomCommandModel(((OverlayProgressBarItemModel)widget.Item).GoalReachedCommand);
                            newSettings.SetCommand(command);
                            ((OverlayProgressBarItemModel)widget.Item).ProgressGoalReachedCommandID = command.ID;
                            ((OverlayProgressBarItemModel)widget.Item).GoalReachedCommand           = null;
                        }
                    }
                    else if (widget.Item is OverlayStreamBossItemModel)
                    {
                        if (((OverlayStreamBossItemModel)widget.Item).NewStreamBossCommand != null)
                        {
                            CustomCommandModel command = new CustomCommandModel(((OverlayStreamBossItemModel)widget.Item).NewStreamBossCommand);
                            newSettings.SetCommand(command);
                            ((OverlayStreamBossItemModel)widget.Item).StreamBossChangedCommandID = command.ID;
                            ((OverlayStreamBossItemModel)widget.Item).NewStreamBossCommand       = null;
                        }
                    }
                    else if (widget.Item is OverlayTimerItemModel)
                    {
                        if (((OverlayTimerItemModel)widget.Item).TimerCompleteCommand != null)
                        {
                            CustomCommandModel command = new CustomCommandModel(((OverlayTimerItemModel)widget.Item).TimerCompleteCommand);
                            newSettings.SetCommand(command);
                            ((OverlayTimerItemModel)widget.Item).TimerFinishedCommandID = command.ID;
                            ((OverlayTimerItemModel)widget.Item).TimerCompleteCommand   = null;
                        }
                    }
                }

                await ChannelSession.Services.Settings.Save(newSettings);
            }

            await ChannelSession.Services.FileService.CopyFile(oldSettings.SettingsFilePath, Path.Combine(SettingsV2Model.SettingsDirectoryName, "Old", oldSettings.SettingsFileName));

            await ChannelSession.Services.FileService.CopyFile(oldSettings.SettingsLocalBackupFilePath, Path.Combine(SettingsV2Model.SettingsDirectoryName, "Old", oldSettings.SettingsLocalBackupFileName));

            await ChannelSession.Services.FileService.CopyFile(oldSettings.DatabaseFilePath, Path.Combine(SettingsV2Model.SettingsDirectoryName, "Old", oldSettings.DatabaseFileName));

            await ChannelSession.Services.FileService.DeleteFile(oldSettings.SettingsFilePath);

            await ChannelSession.Services.FileService.DeleteFile(oldSettings.SettingsLocalBackupFilePath);

            await ChannelSession.Services.FileService.DeleteFile(oldSettings.DatabaseFilePath);
        }
예제 #3
0
 public UserOnlyChatCommandEditorWindowViewModel(UserOnlyChatCommandModel existingCommand)
     : base(existingCommand)
 {
     this.UserID = existingCommand.UserID;
 }
 public void RemoveUserOnlyChatCommand(UserOnlyChatCommandModel command)
 {
     this.User.Data.CustomCommandIDs.Remove(command.ID);
     ChannelSession.Settings.RemoveCommand(command.ID);
     this.RefreshUserOnlyChatCommands();
 }
 public void AddUserOnlyChatCommand(UserOnlyChatCommandModel command)
 {
     this.User.Data.CustomCommandIDs.Add(command.ID);
     this.RefreshUserOnlyChatCommands();
 }