From 0440aaa44b5df349a219a5e45d09b7c9e185155c Mon Sep 17 00:00:00 2001 From: Enuraz Date: Fri, 2 Jun 2017 15:11:52 +0200 Subject: [PATCH 1/3] VideoRefactoring: Adding VideoHandler class --- Tease AI/Classes/VideoHandler.vb | 517 +++++++++++++++++++++++++++++++ 1 file changed, 517 insertions(+) create mode 100644 Tease AI/Classes/VideoHandler.vb diff --git a/Tease AI/Classes/VideoHandler.vb b/Tease AI/Classes/VideoHandler.vb new file mode 100644 index 0000000..da824e5 --- /dev/null +++ b/Tease AI/Classes/VideoHandler.vb @@ -0,0 +1,517 @@ + +'#Const WMP = 1 +#Const VLC = 1 + +Public Module VideoHandlerCreator + Function CreateHandler() As VideoHandler + If My.Application.CommandLineArgs.Contains("-VLC") Then +#If VLC Then + Return New VLCVideoHandler +#Else + Throw New ApplicationException("Trying to use VLC but this executable currently not support it!") +#End If + ElseIf My.Application.CommandLineArgs.Contains("-WMP") Then +#If WMP Then + Return New WMPVideoHandler +#Else + Throw New ApplicationException("Trying to use WMP but this executable currently not support it!") +#End If + Else + Return New VideoHandler + End If + End Function + +End Module + + +Public Class VideoHandler + 'Inherits System.Windows.Forms.Control + Implements System.ComponentModel.ISupportInitialize + + Enum PlayState + Undefined = 0 '<--- Used in VideoHandler + Stopped = 1 '<--- Used in Form1 + Paused = 2 '<--- Used in Form1 + Playing = 3 '<--- Used in Form1 + End Enum + + Private FormControl As System.Windows.Forms.Control + + Public Event StateChanged(ByRef sender As Object, ByVal newState As PlayState) + + Protected Sub ThrowEventStateChanged(ByRef sender As Object, ByVal newState As PlayState) + RaiseEvent StateChanged(sender, newState) + End Sub + + Public Property Form As System.Windows.Forms.Control + Get + If FormControl Is Nothing Then + FormControl = New System.Windows.Forms.Control + End If + Return FormControl + End Get + Protected Set(value As System.Windows.Forms.Control) + FormControl = value + End Set + End Property + + Public Property Visible As Boolean + Get + Return Form.Visible + End Get + Set(value As Boolean) + Form.Visible = value + End Set + End Property + + Public WriteOnly Property Name As String + Set(value As String) + Form.Name = value + End Set + End Property + + Public WriteOnly Property Enabled As Boolean + Set(value As Boolean) + Form.Enabled = value + End Set + End Property + + Public Overridable Property MediaURI As String + Get + Return "" + End Get + Set(value As String) + End Set + End Property + + Public Property Height As Integer + Get + Return Form.Height + End Get + Set(value As Integer) + Form.Height = value + End Set + End Property + + Public Property Width As Integer + Get + Return Form.Width + End Get + Set(value As Integer) + Form.Width = value + End Set + End Property + + Public WriteOnly Property Size As System.Drawing.Size + Set(value As System.Drawing.Size) + Form.Size = value + End Set + End Property + + Public Overridable Property ShowControls As Boolean + Get + Return False + End Get + Set(value As Boolean) + End Set + End Property + + Public WriteOnly Property Anchor As System.Windows.Forms.AnchorStyles + Set(value As System.Windows.Forms.AnchorStyles) + Form.Anchor = value + End Set + End Property + + Public WriteOnly Property Location As System.Drawing.Point + Set(value As System.Drawing.Point) + Form.Location = value + End Set + End Property + + Public Overridable ReadOnly Property CurrentMediaDuration As Double + Get + Return 0 + End Get + End Property + + Public Overridable Property CurrentMediaCurrentPosition As Double + Get + Return 0 + End Get + Set(value As Double) + End Set + End Property + + Public Overridable ReadOnly Property CurrentPlayListCount As Integer + Get + Return 0 + End Get + End Property + + Public Overridable Sub ClearPlayList() + End Sub + + Public Overridable WriteOnly Property Looped As Boolean + Set(value As Boolean) + End Set + End Property + + Public Overridable Property Muted As Boolean + Get + Return True + End Get + Set(value As Boolean) + End Set + End Property + + Public Overridable Property Volume As Double + Get + Return 0 + End Get + Set(value As Double) + End Set + End Property + + Public Overridable WriteOnly Property StretchToFit As Boolean + Set(value As Boolean) + End Set + End Property + + Public WriteOnly Property TabIndex As Integer + Set(value As Integer) + Form.TabIndex = value + End Set + End Property + + Public Overridable Property State As PlayState + Get + Return PlayState.Undefined + End Get + Set(value As PlayState) + End Set + End Property + + Public Overridable Sub PlayIt() + End Sub + + Public Overridable Sub PauseIt() + End Sub + + Public Overridable Sub StopIt() '[Note: Stop is a reserved key word] + End Sub + + Public Overridable Sub BeginInit() Implements System.ComponentModel.ISupportInitialize.BeginInit + End Sub + Public Overridable Sub EndInit() Implements System.ComponentModel.ISupportInitialize.EndInit + End Sub +End Class + +#If WMP Then +Public Class WMPVideoHandler + Inherits VideoHandler + + 'Enum WMPPlayState + ' wmppsUndefined = 0 + ' wmppsStopped = 1 + ' wmppsPaused = 2 + ' wmppsPlaying = 3 + ' wmppsScanForward = 4 + ' wmppsScanReverse = 5 + ' wmppsBuffering = 6 + ' wmppsWaiting = 7 + ' wmppsMediaEnded = 8 + ' wmppsTransitioning = 9 + ' wmppsReady = 10 + ' wmppsReconnecting = 11 + ' wmppsLast = 12 + 'End Enum + + Dim WMPPlayer As AxWMPLib.AxWindowsMediaPlayer + 'Dim controlBar As Boolean + + Private Sub RaiseChangeState(Sender As Object, e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles WMPPlayer.PlayStateChange + ThrowEventStateChanged(Sender, e.newState) + End Sub + + Sub New() + WMPPlayer = New AxWMPLib.AxWindowsMediaPlayer + Form = WMPPlayer + WMPPlayer.uiMode = "none" + 'controlBar = False + End Sub + + Public Overrides Property ShowControls As Boolean + Get + 'Return controlBar + Return WMPPlayer.uiMode = "mini" + End Get + Set(value As Boolean) + 'controlBar = value + If value Then + 'Height += 60 + WMPPlayer.uiMode = "mini" + Else + 'Height -= 60 + WMPPlayer.uiMode = "none" + End If + End Set + End Property + + Public Overrides Property MediaURI As String + Get + Return WMPPlayer.URL + End Get + Set(value As String) + WMPPlayer.URL = value + End Set + End Property + + Public Overrides ReadOnly Property CurrentMediaDuration As Double + Get + Return WMPPlayer.currentMedia.duration + End Get + End Property + + Public Overrides Property CurrentMediaCurrentPosition As Double + Get + Return WMPPlayer.Ctlcontrols.currentPosition + End Get + Set(value As Double) + WMPPlayer.Ctlcontrols.currentPosition = value + End Set + End Property + + Public Overrides ReadOnly Property CurrentPlayListCount As Integer + Get + Return WMPPlayer.currentPlaylist.count + End Get + End Property + + Public Overrides Sub ClearPlayList() + WMPPlayer.currentPlaylist.Clear() + End Sub + + Public Overrides WriteOnly Property Looped As Boolean + Set(value As Boolean) + WMPPlayer.settings.setMode("loop", value) + End Set + End Property + + Public Overrides Property Muted As Boolean + Get + Return WMPPlayer.settings.mute + End Get + Set(value As Boolean) + WMPPlayer.settings.mute = value + End Set + End Property + + Public Overrides Property Volume As Double + Get + Return WMPPlayer.settings.volume + End Get + Set(value As Double) + WMPPlayer.settings.volume = value + End Set + End Property + + Public Overrides WriteOnly Property StretchToFit As Boolean + Set(value As Boolean) + WMPPlayer.StretchToFit = value + End Set + End Property + + Public Overrides Property State As PlayState + Get + Return WMPPlayer.playState + End Get + Set(value As PlayState) + '[JT-TODO: handle enum conversion here] + WMPPlayer.playState = value + End Set + End Property + + Public Overrides Sub PlayIt() + WMPPlayer.Ctlcontrols.play() + End Sub + + Public Overrides Sub PauseIt() + WMPPlayer.Ctlcontrols.pause() + End Sub + + Public Overrides Sub StopIt() '[Note: Stop is a reserved key word] + WMPPlayer.Ctlcontrols.stop() + End Sub + + Public Overrides Sub BeginInit() + WMPPlayer.BeginInit() + End Sub + + Public Overrides Sub EndInit() + WMPPlayer.EndInit() + End Sub +End Class +#End If + +#If VLC Then +Public Class VLCVideoHandler + Inherits VideoHandler + + Enum VLCPlayState + VLCStopped = 5 + VLCPaused = 3 + VLCPlaying = 1 + 'not all listed + End Enum + + Dim WithEvents VLCPlayer As AxAXVLC.AxVLCPlugin2 'AXVLC.VLCPlugin2 + + Dim LastPlayed As String + + Private Sub RaiseChangeStateToPlay() Handles VLCPlayer.MediaPlayerPlaying + ThrowEventStateChanged(VLCPlayer, PlayState.Playing) + End Sub + + Private Sub RaiseChangeStateToPause() Handles VLCPlayer.MediaPlayerPaused + ThrowEventStateChanged(VLCPlayer, PlayState.Paused) + End Sub + + Private Sub RaiseChangeStateToStop() Handles VLCPlayer.MediaPlayerStopped + ThrowEventStateChanged(VLCPlayer, PlayState.Stopped) + End Sub + + Sub New() + VLCPlayer = New AxAXVLC.AxVLCPlugin2 + Form = VLCPlayer + LastPlayed = "" + 'VLCPlayer.AutoPlay = True + End Sub + + Public Overrides Property ShowControls As Boolean + Get + Return VLCPlayer.Toolbar + End Get + Set(value As Boolean) + VLCPlayer.Toolbar = value + End Set + End Property + + Public Overrides Property MediaURI As String + Get + Return LastPlayed + End Get + Set(value As String) + If VLCPlayer.playlist.items.count <> 0 Then + If State = VideoHandler.PlayState.Playing Or State = VideoHandler.PlayState.Paused Then + StopIt() + End If + ClearPlayList() + End If + LastPlayed = value + VLCPlayer.playlist.add("file:///" + LastPlayed) + PlayIt() + End Set + End Property + + Public Overrides ReadOnly Property CurrentMediaDuration As Double + Get + Return VLCPlayer.input.length + End Get + End Property + + Public Overrides Property CurrentMediaCurrentPosition As Double + Get + Return VLCPlayer.input.position + End Get + Set(value As Double) + VLCPlayer.input.position = value + End Set + End Property + + Public Overrides ReadOnly Property CurrentPlayListCount As Integer + Get + Return VLCPlayer.playlist.items.count + End Get + End Property + + Public Overrides Sub ClearPlayList() + VLCPlayer.playlist.items.clear() + End Sub + + Public Overrides WriteOnly Property Looped As Boolean + Set(value As Boolean) + VLCPlayer.AutoLoop = value + End Set + End Property + + Public Overrides Property Muted As Boolean + Get + Return VLCPlayer.audio.mute + End Get + Set(value As Boolean) + VLCPlayer.audio.mute = value + End Set + End Property + + Public Overrides Property Volume As Double + Get + Return VLCPlayer.audio.volume + End Get + Set(value As Double) + VLCPlayer.audio.volume = value + End Set + End Property + + Public Overrides WriteOnly Property StretchToFit As Boolean + Set(value As Boolean) + If True Then + Size = Form.Parent.Size + End If + End Set + End Property + + Public Overrides Property State As PlayState + Get + Select Case VLCPlayer.input.state + Case 1 'VLCPlaying + Return PlayState.Playing + Case 3 'VLCPaused + Return PlayState.Paused + Case 5 'VLCStopped + Return PlayState.Stopped + End Select + Return VLCPlayer.input.state + End Get + Set(value As PlayState) + Select Case value + Case PlayState.Playing + VLCPlayer.playlist.play() + Case PlayState.Paused + VLCPlayer.playlist.pause() + Case PlayState.Stopped + VLCPlayer.playlist.stop() + End Select + End Set + End Property + + Public Overrides Sub PlayIt() + VLCPlayer.playlist.play() + End Sub + + Public Overrides Sub PauseIt() + VLCPlayer.playlist.pause() + End Sub + + Public Overrides Sub StopIt() '[Note: Stop is a reserved key word] + VLCPlayer.playlist.stop() + End Sub + + Public Overrides Sub BeginInit() + VLCPlayer.BeginInit() + End Sub + + Public Overrides Sub EndInit() + VLCPlayer.EndInit() + End Sub +End Class +#End If \ No newline at end of file From 725336aa58abfbd055f131e29d19bd0b42b51674 Mon Sep 17 00:00:00 2001 From: Enuraz Date: Wed, 7 Jun 2017 10:00:37 +0200 Subject: [PATCH 2/3] VideoRefactoring: integrate VideoHandler --- DLL/AxInterop.AXVLC.dll | Bin 0 -> 17408 bytes DLL/AxInterop.WMPLib.dll | Bin 0 -> 53760 bytes DLL/Interop.AXVLC.dll | Bin 0 -> 31744 bytes DLL/Interop.WMPLib.dll | Bin 0 -> 331264 bytes Tease AI/Classes/State.vb | 70 ++++++------ Tease AI/Classes/VideoHandler.vb | 14 ++- Tease AI/Form1.Designer.vb | 40 +++---- Tease AI/Form1.resx | 4 +- Tease AI/Form1.vb | 190 +++++++++++++++---------------- Tease AI/Form2.vb | 2 +- Tease AI/Form3.Designer.vb | 28 ++--- Tease AI/Form3.resx | 2 +- Tease AI/Form3.vb | 82 +++++++------ Tease AI/Tease AI.vbproj | 15 +++ 14 files changed, 232 insertions(+), 215 deletions(-) create mode 100644 DLL/AxInterop.AXVLC.dll create mode 100644 DLL/AxInterop.WMPLib.dll create mode 100644 DLL/Interop.AXVLC.dll create mode 100644 DLL/Interop.WMPLib.dll diff --git a/DLL/AxInterop.AXVLC.dll b/DLL/AxInterop.AXVLC.dll new file mode 100644 index 0000000000000000000000000000000000000000..e133697223204f22de0dd5dfebd0407fd6584935 GIT binary patch literal 17408 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

0(%r1&nw1`ArKefxWmbAiMRogS9+*rPJy_(k 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

RRp`uB8Asnb2Wp)~0yx}~(~5#3RW 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 5000 - Application.DoEvents() - Loop + Do Until .DomVideo.State = VideoHandler.PlayState.Playing Or sw.ElapsedMilliseconds > 5000 + Application.DoEvents() + Loop - .DomWMP.Ctlcontrols.pause() - ElseIf serialized_WMP_Playstate = 3 Then - .DomWMP.Ctlcontrols.play() - End If + .DomVideo.PauseIt() + ElseIf serialized_Video_Playstate = VideoHandler.PlayState.Playing Then + .DomVideo.PlayIt() + End If ' Hide Cencorshipbar , if no game is running If CensorshipGame = True Or CensorshipTimer_enabled = False Then .CensorshipBar.Visible = False @@ -1219,7 +1219,7 @@ Public Class SessionState .UpdatesTimer.Interval = UpdatesTimer_Interval .VideoTauntTimer.Interval = VideoTauntTimer_Interval .WaitTimer.Interval = WaitTimer_Interval - .WMPTimer.Interval = WMPTimer_Interval + .VideoTimer2.Interval = VideoTimer_Interval '▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼ ' Set Timer EnableStates @@ -1252,7 +1252,7 @@ Public Class SessionState .UpdatesTimer.Enabled = UpdatesTimer_enabled .VideoTauntTimer.Enabled = VideoTauntTimer_enabled .WaitTimer.Enabled = WaitTimer_enabled - .WMPTimer.Enabled = WMPTimer_enabled + .VideoTimer2.Enabled = VideoTimer_enabled End With diff --git a/Tease AI/Classes/VideoHandler.vb b/Tease AI/Classes/VideoHandler.vb index da824e5..2c0afe0 100644 --- a/Tease AI/Classes/VideoHandler.vb +++ b/Tease AI/Classes/VideoHandler.vb @@ -1,5 +1,5 @@  -'#Const WMP = 1 +#Const WMP = 1 #Const VLC = 1 Public Module VideoHandlerCreator @@ -226,7 +226,7 @@ Public Class WMPVideoHandler ' wmppsLast = 12 'End Enum - Dim WMPPlayer As AxWMPLib.AxWindowsMediaPlayer + Dim WithEvents WMPPlayer As AxWMPLib.AxWindowsMediaPlayer 'Dim controlBar As Boolean Private Sub RaiseChangeState(Sender As Object, e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles WMPPlayer.PlayStateChange @@ -326,8 +326,14 @@ Public Class WMPVideoHandler Return WMPPlayer.playState End Get Set(value As PlayState) - '[JT-TODO: handle enum conversion here] - WMPPlayer.playState = value + Select Case value + Case PlayState.Playing + WMPPlayer.Ctlcontrols.play() + Case PlayState.Paused + WMPPlayer.Ctlcontrols.pause() + Case PlayState.Stopped + WMPPlayer.Ctlcontrols.stop() + End Select End Set End Property diff --git a/Tease AI/Form1.Designer.vb b/Tease AI/Form1.Designer.vb index e24bd2c..8afe779 100644 --- a/Tease AI/Form1.Designer.vb +++ b/Tease AI/Form1.Designer.vb @@ -29,7 +29,7 @@ Partial Class Form1 Me.mainPictureBox = New System.Windows.Forms.PictureBox() Me.domAvatar = New System.Windows.Forms.PictureBox() Me.SplitContainer1 = New System.Windows.Forms.SplitContainer() - Me.DomWMP = New AxWMPLib.AxWindowsMediaPlayer() + Me.DomVideo = VideoHandlerCreator.CreateHandler() Me.ProgressBar_BGW_Images = New System.Windows.Forms.ProgressBar() Me.CensorshipBar = New System.Windows.Forms.Panel() Me.LBLImageInfo = New System.Windows.Forms.Label() @@ -403,7 +403,7 @@ Partial Class Form1 Me.Contact2Timer = New Tease_AI.teaseAI_Timer() Me.Contact3Timer = New Tease_AI.teaseAI_Timer() Me.UpdateStageTimer = New Tease_AI.teaseAI_Timer() - Me.WMPTimer = New Tease_AI.teaseAI_Timer() + Me.VideoTimer2 = New Tease_AI.teaseAI_Timer() Me.DommeTimer = New Tease_AI.teaseAI_Timer() Me.TeaseAIClock = New Tease_AI.teaseAI_Timer() Me.TimeoutTimer = New Tease_AI.teaseAI_Timer() @@ -415,7 +415,7 @@ Partial Class Form1 Me.SplitContainer1.Panel1.SuspendLayout() Me.SplitContainer1.Panel2.SuspendLayout() Me.SplitContainer1.SuspendLayout() - CType(Me.DomWMP, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.DomVideo, System.ComponentModel.ISupportInitialize).BeginInit() Me.PnlChatTextLayout.SuspendLayout() Me.PNLMediaBar.SuspendLayout() Me.PnlChatBoxLayout.SuspendLayout() @@ -528,7 +528,7 @@ Partial Class Form1 'SplitContainer1.Panel1 ' Me.SplitContainer1.Panel1.BackColor = System.Drawing.Color.Transparent - Me.SplitContainer1.Panel1.Controls.Add(Me.DomWMP) + Me.SplitContainer1.Panel1.Controls.Add(Me.DomVideo.Form) Me.SplitContainer1.Panel1.Controls.Add(Me.ProgressBar_BGW_Images) Me.SplitContainer1.Panel1.Controls.Add(Me.CensorshipBar) Me.SplitContainer1.Panel1.Controls.Add(Me.LBLImageInfo) @@ -546,20 +546,20 @@ Partial Class Form1 Me.SplitContainer1.SplitterWidth = 10 Me.SplitContainer1.TabIndex = 136 ' - 'DomWMP + 'DomVideo ' - 'Me.DomWMP.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ + 'Me.DomVideo.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _ ' Or System.Windows.Forms.AnchorStyles.Left) _ ' Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles) - Me.DomWMP.Dock = System.Windows.Forms.DockStyle.Fill - Me.DomWMP.Enabled = True - Me.DomWMP.Location = New System.Drawing.Point(0, 0) - Me.DomWMP.Name = "DomWMP" - Me.DomWMP.OcxState = CType(resources.GetObject("DomWMP.OcxState"), System.Windows.Forms.AxHost.State) - 'Me.DomWMP.Size = New System.Drawing.Size(1398, 698) - Me.DomWMP.Size = New System.Drawing.Size(1398, 536) - Me.DomWMP.TabIndex = 96 - Me.DomWMP.Visible = False + Me.DomVideo.Form.Dock = System.Windows.Forms.DockStyle.Fill + Me.DomVideo.Enabled = True + Me.DomVideo.Location = New System.Drawing.Point(0, 0) + Me.DomVideo.Name = "DomVideo" + Me.DomVideo.State = resources.GetObject("DomVideo.State") + 'Me.DomVideo.Size = New System.Drawing.Size(1398, 698) + Me.DomVideo.Size = New System.Drawing.Size(1398, 536) + Me.DomVideo.TabIndex = 96 + Me.DomVideo.Visible = False ' 'ProgressBar_BGW_Images ' @@ -4351,9 +4351,9 @@ Partial Class Form1 ' Me.UpdateStageTimer.Interval = 1000 ' - 'WMPTimer + 'VideoTimer2 ' - Me.WMPTimer.Interval = 1000 + Me.VideoTimer2.Interval = 1000 ' 'DommeTimer ' @@ -4400,7 +4400,7 @@ Partial Class Form1 Me.SplitContainer1.Panel2.ResumeLayout(False) CType(Me.SplitContainer1, System.ComponentModel.ISupportInitialize).EndInit() Me.SplitContainer1.ResumeLayout(False) - CType(Me.DomWMP, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.DomVideo, System.ComponentModel.ISupportInitialize).EndInit() Me.PnlChatTextLayout.ResumeLayout(False) Me.PNLMediaBar.ResumeLayout(False) Me.PnlChatBoxLayout.ResumeLayout(False) @@ -4510,7 +4510,7 @@ Partial Class Form1 Friend WithEvents TnASlides As Tease_AI.teaseAI_Timer Friend WithEvents ImageFolderComboBox As System.Windows.Forms.ComboBox Friend WithEvents LBLImageInfo As System.Windows.Forms.Label - Friend WithEvents DomWMP As AxWMPLib.AxWindowsMediaPlayer + Friend WithEvents DomVideo As VideoHandler Friend WithEvents WaitTimer As Tease_AI.teaseAI_Timer Friend WithEvents StupidTimer As Tease_AI.teaseAI_Timer Friend WithEvents VideoTauntTimer As Tease_AI.teaseAI_Timer @@ -4529,7 +4529,7 @@ Partial Class Form1 Friend WithEvents Contact2Timer As Tease_AI.teaseAI_Timer Friend WithEvents Contact3Timer As Tease_AI.teaseAI_Timer Friend WithEvents UpdateStageTimer As Tease_AI.teaseAI_Timer - Friend WithEvents WMPTimer As Tease_AI.teaseAI_Timer + Friend WithEvents VideoTimer2 As Tease_AI.teaseAI_Timer Friend WithEvents TeaseAINotify As System.Windows.Forms.NotifyIcon Friend WithEvents TeaseAIMenu As System.Windows.Forms.ContextMenuStrip Friend WithEvents GamesToolStripMenuItem As System.Windows.Forms.ToolStripMenuItem diff --git a/Tease AI/Form1.resx b/Tease AI/Form1.resx index 2073a86..e294cf9 100644 --- a/Tease AI/Form1.resx +++ b/Tease AI/Form1.resx @@ -468,7 +468,7 @@ RK5CYII= - + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0 @@ -1262,7 +1262,7 @@ 148, 167 - + 301, 167 diff --git a/Tease AI/Form1.vb b/Tease AI/Form1.vb index 317f005..1b1db66 100644 --- a/Tease AI/Form1.vb +++ b/Tease AI/Form1.vb @@ -795,7 +795,7 @@ retryStart: FrmSplash.LBLSplash.Text = "Configuring media player..." FrmSplash.Refresh() - DomWMP.Height = SplitContainer1.Panel1.Height + 60 + DomVideo.ShowControls = True If My.Settings.DomAVStretch = False Then domAvatar.SizeMode = PictureBoxSizeMode.Zoom 'If My.Settings.SubAvStretch = False Then subAvatar.SizeMode = PictureBoxSizeMode.Zoom @@ -958,7 +958,7 @@ retryStart: FrmSettings.LBLChastityState.ForeColor = Color.Green End If - WMPTimer.Start() + VideoTimer2.Start() FrmSplash.PBSplash.Value += 1 FrmSplash.LBLSplash.Text = "Loading Shorthands..." @@ -1943,8 +1943,8 @@ WritingTaskLine: ssh.edgeMode.VideoMode = False ssh.TeaseVideo = False VideoTimer.Stop() - DomWMP.Visible = False - DomWMP.Ctlcontrols.stop() + DomVideo.Visible = False + DomVideo.StopIt() mainPictureBox.Visible = True ssh.FileGoto = ssh.edgeMode.GotoLine ssh.SkipGotoLine = True @@ -1998,7 +1998,7 @@ WritingTaskLine: Return End If - DomWMP.Ctlcontrols.pause() + DomVideo.PauseIt() ssh.StrokeTauntVal = -1 ssh.FileText = ATEList(ssh.randomizer.Next(0, ATEList.Count)) @@ -2689,8 +2689,8 @@ EdgeSkip: ssh.cameMode.VideoMode = False ssh.TeaseVideo = False VideoTimer.Stop() - DomWMP.Visible = False - DomWMP.Ctlcontrols.stop() + DomVideo.Visible = False + DomVideo.StopIt() mainPictureBox.Visible = True ssh.FileGoto = ssh.cameMode.GotoLine ssh.SkipGotoLine = True @@ -2718,8 +2718,8 @@ EdgeSkip: ssh.ruinMode.VideoMode = False ssh.TeaseVideo = False VideoTimer.Stop() - DomWMP.Visible = False - DomWMP.Ctlcontrols.stop() + DomVideo.Visible = False + DomVideo.StopIt() mainPictureBox.Visible = True ssh.FileGoto = ssh.ruinMode.GotoLine ssh.SkipGotoLine = True @@ -2746,8 +2746,8 @@ EdgeSkip: If ssh.Modes(CheckResponse).Type.ToUpper.Contains("VIDEO") Then ssh.TeaseVideo = False VideoTimer.Stop() - DomWMP.Visible = False - DomWMP.Ctlcontrols.stop() + DomVideo.Visible = False + DomVideo.StopIt() mainPictureBox.Visible = True ssh.FileGoto = ssh.Modes(CheckResponse).GotoLine ssh.SkipGotoLine = True @@ -2796,8 +2796,8 @@ EdgeSkip: ssh.yesMode.VideoMode = False ssh.TeaseVideo = False VideoTimer.Stop() - DomWMP.Visible = False - DomWMP.Ctlcontrols.stop() + DomVideo.Visible = False + DomVideo.StopIt() mainPictureBox.Visible = True ssh.FileGoto = ssh.yesMode.GotoLine ssh.SkipGotoLine = True @@ -2864,8 +2864,8 @@ EdgeSkip: ssh.noMode.VideoMode = False ssh.TeaseVideo = False VideoTimer.Stop() - DomWMP.Visible = False - DomWMP.Ctlcontrols.stop() + DomVideo.Visible = False + DomVideo.StopIt() mainPictureBox.Visible = True ssh.FileGoto = ssh.noMode.GotoLine ssh.SkipGotoLine = True @@ -4098,7 +4098,7 @@ NonModuleEnd: End If ssh.HypnoGen = False ssh.AFK = False - DomWMP.Ctlcontrols.stop() + DomVideo.StopIt() BTNHypnoGenStart.Text = "Guide Me!" End If @@ -5282,8 +5282,8 @@ DommeSlideshowFallback: End If If ssh.RLGLGame = True And ssh.RedLight = False Then - If (DomWMP.playState = WMPLib.WMPPlayState.wmppsPaused) Then - DomWMP.Ctlcontrols.play() + If (DomVideo.State = VideoHandler.PlayState.Paused) Then + DomVideo.PlayIt() ssh.AskedToSpeedUp = False @@ -5301,8 +5301,8 @@ DommeSlideshowFallback: End If If ssh.RLGLGame = True And ssh.RedLight = True Then - If (DomWMP.playState = WMPLib.WMPPlayState.wmppsPlaying) Then - DomWMP.Ctlcontrols.pause() + If (DomVideo.State = VideoHandler.PlayState.Playing) Then + DomVideo.PauseIt() ssh.SubStroking = False StrokePace = 0 'VideoTauntTimer.Stop() @@ -6198,8 +6198,8 @@ chooseComboboxText: ElseIf Not isURL(GetFolder) Then ImageFolderComboBox.Enabled = False - DomWMP.Visible = False - DomWMP.Ctlcontrols.pause() + DomVideo.Visible = False + DomVideo.PauseIt() mainPictureBox.Visible = True FrmSettings.timedRadio.Enabled = True @@ -6234,8 +6234,8 @@ chooseComboboxText: tmpReq.Abort() tmpRes.Close() - DomWMP.Visible = False - DomWMP.Ctlcontrols.pause() + DomVideo.Visible = False + DomVideo.PauseIt() mainPictureBox.Visible = True FrmSettings.timedRadio.Enabled = True @@ -6381,8 +6381,8 @@ Retry: - DomWMP.Visible = True - DomWMP.stretchToFit = True + DomVideo.Visible = True + DomVideo.stretchToFit = True ' domVLC.Visible = True 'SlideshowLoaded = False @@ -6402,7 +6402,7 @@ Retry: 'If FrmSettings.VLC1610Radio.Checked = True Then domVLC.video.crop = "16:10" ' If FrmSettings.VLC169Radio.Checked = True Then domVLC.video.crop = "16:9" - DomWMP.URL = OpenFileDialog2.FileName + DomVideo.MediaURI = OpenFileDialog2.FileName End If End Sub @@ -6411,15 +6411,15 @@ Retry: Private Sub BTNVideoControls_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BTNVideoControls.Click - If DomWMP.Height = SplitContainer1.Panel1.Height Then - DomWMP.Height = SplitContainer1.Panel1.Height + 60 - BTNVideoControls.Text = "Show Video Controls" + If DomVideo.ShowControls Then + DomVideo.ShowControls = False + BTNVideoControls.Text = "Hide Video Controls" Else - DomWMP.Height = SplitContainer1.Panel1.Height - BTNVideoControls.Text = "Hide Video Controls" + DomVideo.ShowControls = True + BTNVideoControls.Text = "Show Video Controls" End If - DomWMP.stretchToFit = True + DomVideo.stretchToFit = True End Sub @@ -6842,8 +6842,8 @@ GetAnotherRandomVideo: 'Debug.Print("VideoType = " & VideoType) ' domVLC.Visible = True - DomWMP.Visible = True - DomWMP.stretchToFit = True + DomVideo.Visible = True + DomVideo.stretchToFit = True ' programsettingsPanel.Visible = False mainPictureBox.Visible = False @@ -6859,14 +6859,14 @@ GetAnotherRandomVideo: 'If FrmSettings.VLC1610Radio.Checked = True Then domVLC.video.crop = "16:10" 'If FrmSettings.VLC169Radio.Checked = True Then domVLC.video.crop = "16:9" - DomWMP.URL = __domVideo + DomVideo.MediaURI = __domVideo If ssh.JumpVideo = True Then Do Application.DoEvents() - Loop Until (DomWMP.playState = WMPLib.WMPPlayState.wmppsPlaying) + Loop Until (DomVideo.State = VideoHandler.PlayState.Playing) VideoJump2Random(Nothing, Nothing) @@ -6904,12 +6904,12 @@ GetAnotherRandomVideo: Dim JOIVideoLine As Integer = ssh.randomizer.Next(0, JOIVideos.Count) - DomWMP.Visible = True - DomWMP.stretchToFit = True + DomVideo.Visible = True + DomVideo.stretchToFit = True mainPictureBox.Visible = False - DomWMP.URL = JOIVideos(JOIVideoLine) + DomVideo.MediaURI = JOIVideos(JOIVideoLine) End Sub @@ -6938,12 +6938,12 @@ GetAnotherRandomVideo: Dim CHVideoLine As Integer = ssh.randomizer.Next(0, CHVideos.Count) - DomWMP.Visible = True - DomWMP.stretchToFit = True + DomVideo.Visible = True + DomVideo.stretchToFit = True mainPictureBox.Visible = False - DomWMP.URL = CHVideos(CHVideoLine) + DomVideo.MediaURI = CHVideos(CHVideoLine) End Sub @@ -7006,7 +7006,7 @@ CensorConstant: Dim CensorshipBarY2 As Integer Try - CensorshipBarY2 = ssh.randomizer.Next(200, DomWMP.Height / 2) + CensorshipBarY2 = ssh.randomizer.Next(200, DomVideo.Height / 2) Catch CensorshipBarY2 = 100 End Try @@ -7014,9 +7014,9 @@ CensorConstant: CensorshipBar.Height = CensorshipBarY2 CensorshipBar.Width = CensorshipBarY2 * 2.6 - 'QnD-BUGFIX: if CensorshipBar.Width > DomWMP.Width then ArgumentOutOfRangeException - CensorshipBarX = ssh.randomizer.Next(5, If(CensorshipBar.Width > DomWMP.Width, DomWMP.Width, DomWMP.Width - CensorshipBar.Width + 1)) - CensorshipBarY = ssh.randomizer.Next(5, If(CensorshipBar.Height > DomWMP.Height, DomWMP.Height, DomWMP.Height - CensorshipBar.Height + 1)) + 'QnD-BUGFIX: if CensorshipBar.Width > DomVideo.Width then ArgumentOutOfRangeException + CensorshipBarX = ssh.randomizer.Next(5, If(CensorshipBar.Width > DomVideo.Width, DomVideo.Width, DomVideo.Width - CensorshipBar.Width + 1)) + CensorshipBarY = ssh.randomizer.Next(5, If(CensorshipBar.Height > DomVideo.Height, DomVideo.Height, DomVideo.Height - CensorshipBar.Height + 1)) CensorshipBar.Location = New Point(CensorshipBarX, CensorshipBarY) @@ -11390,7 +11390,7 @@ OrgasmDecided: End If If StringClean.Contains("@ResumeAvoidTheEdge") Then - DomWMP.Ctlcontrols.play() + DomVideo.PlayIt() ScriptTimer.Stop() ssh.AvoidTheEdgeStroking = True ssh.SubStroking = True @@ -11473,14 +11473,14 @@ OrgasmDecided: Next If AudioList.Count > 0 Then - DomWMP.URL = AudioList(ssh.randomizer.Next(0, AudioList.Count)) + DomVideo.MediaURI = AudioList(ssh.randomizer.Next(0, AudioList.Count)) Else MessageBox.Show(Me, "No audio files matching " & Path.GetFileName(AudioClean) & " were found in " & Path.GetDirectoryName(AudioClean) & "!" & Environment.NewLine & Environment.NewLine & "Please make sure that valid files exist and that the wildcards are applied correctly in the script.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Hand) End If Else If File.Exists(AudioClean) Then - DomWMP.URL = AudioClean + DomVideo.MediaURI = AudioClean Else MessageBox.Show(Me, Path.GetFileName(AudioClean) & " was not found in " & Application.StartupPath & "\Audio!" & Environment.NewLine & Environment.NewLine & "Please make sure the file exists and that it is spelled correctly in the script.", "Error!", MessageBoxButtons.OK, MessageBoxIcon.Hand) @@ -11584,8 +11584,8 @@ ExternalAudio: If StringClean.Contains("@JumpVideo") Then - If (DomWMP.playState = WMPLib.WMPPlayState.wmppsPlaying) Then - Dim VideoLength As Integer = DomWMP.currentMedia.duration + If (DomVideo.State = VideoHandler.PlayState.Playing) Then + Dim VideoLength As Integer = DomVideo.CurrentMediaDuration Dim VidLow As Integer = VideoLength * 0.4 Dim VidHigh As Integer = VideoLength * 0.9 Dim VidPoint As Integer = ssh.randomizer.Next(VidLow, VidHigh) @@ -11594,7 +11594,7 @@ ExternalAudio: Debug.Print("VidHigh = " & VidHigh) Debug.Print("VidPoint = " & VidPoint) - DomWMP.Ctlcontrols.currentPosition = VideoLength - VidPoint + DomVideo.CurrentMediaCurrentPosition = VideoLength - VidPoint End If StringClean = StringClean.Replace("@JumpVideo", "") @@ -12199,9 +12199,9 @@ VTSkip: If StringClean.Contains("@RiskyPayout") Then If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\PayoutSmall.wav") Then - FrmCardList.GameWMP.settings.setMode("loop", False) - FrmCardList.GameWMP.settings.volume = 20 - FrmCardList.GameWMP.URL = Application.StartupPath & "\Audio\System\PayoutSmall.wav" + FrmCardList.GameVideo.Looped = False + FrmCardList.GameVideo.Volume = 20 + FrmCardList.GameVideo.MediaURI = Application.StartupPath & "\Audio\System\PayoutSmall.wav" End If ssh.BronzeTokens += FrmCardList.TokensPaid FrmCardList.LBLRiskTokens.Text = ssh.BronzeTokens @@ -12816,7 +12816,7 @@ VTSkip: If StringClean.Contains("@UnlockVideo") Then ssh.LockVideo = False mainPictureBox.Visible = True - DomWMP.Visible = False + DomVideo.Visible = False StringClean = StringClean.Replace("@UnlockVideo", "") End If @@ -15030,7 +15030,7 @@ VTSkip: ssh.SkipGotoLine = True GetGoto() 'domVLC.playlist.play() - DomWMP.Ctlcontrols.play() + DomVideo.PlayIt() HandleScripts() ScriptTimer.Start() @@ -15051,11 +15051,11 @@ VTSkip: If mainPictureBox.Visible = True Then - DomWMP.Visible = True + DomVideo.Visible = True mainPictureBox.Visible = False Else mainPictureBox.Visible = True - DomWMP.Visible = False + DomVideo.Visible = False End If End Sub @@ -16421,20 +16421,20 @@ RestartFunction: -#Region "---------------------------------------------------- Domme-WMP -------------------------------------------------------" +#Region "---------------------------------------------------- Domme-Video -------------------------------------------------------" - Private Sub DomWMP_PlayStateChange(ByVal sender As Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles DomWMP.PlayStateChange + Private Sub DomVideo_PlayStateChange(ByRef sender As Object, ByVal e As VideoHandler.PlayState) Handles DomVideo.StateChanged - If (DomWMP.playState = WMPLib.WMPPlayState.wmppsPlaying) Then + If (e = VideoHandler.PlayState.Playing) Then If FrmSettings.CBMuteMedia.Checked = True Then - DomWMP.settings.mute = True + DomVideo.Muted = True End If End If - If (DomWMP.playState = WMPLib.WMPPlayState.wmppsStopped) Then - 'Debug.Print("WMP Stopped Called") + If (e = VideoHandler.PlayState.Stopped) Then + 'Debug.Print("Video Stopped Called") VideoTimer.Stop() @@ -16444,7 +16444,7 @@ RestartFunction: ssh.cameMode.VideoMode = False ssh.ruinMode.VideoMode = False - DomWMP.currentPlaylist.clear() + DomVideo.ClearPlayList() If ssh.CensorshipGame = True Then @@ -16534,14 +16534,14 @@ RestartFunction: If ssh.TeaseVideo = True Then ssh.TeaseVideo = False - DomWMP.Ctlcontrols.pause() + DomVideo.PauseIt() RunFileText() End If If ssh.LockVideo = False Then mainPictureBox.Visible = True - DomWMP.Visible = False + DomVideo.Visible = False End If @@ -16549,13 +16549,13 @@ RestartFunction: End Sub - Private Sub WMPTimer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles WMPTimer.Tick + Private Sub VideoTimer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles VideoTimer2.Tick - If DomWMP.currentPlaylist.count <> 0 Then + If DomVideo.CurrentPlayListCount <> 0 Then Try - Dim VideoLength As Integer = DomWMP.currentMedia.duration - Dim VideoRemaining As Integer = Math.Floor(DomWMP.currentMedia.duration - DomWMP.Ctlcontrols.currentPosition) + Dim VideoLength As Integer = DomVideo.CurrentMediaDuration + Dim VideoRemaining As Integer = Math.Floor(DomVideo.CurrentMediaDuration - DomVideo.CurrentMediaCurrentPosition) Debug.Print("Video Length = " & VideoLength) Debug.Print("Video Remaining = " & VideoRemaining) @@ -16567,11 +16567,11 @@ RestartFunction: - If ssh.DomTypeCheck = True Or DomWMP.playState = WMPLib.WMPPlayState.wmppsStopped Or DomWMP.playState = WMPLib.WMPPlayState.wmppsPaused Then Return + If ssh.DomTypeCheck = True Or DomVideo.State = VideoHandler.PlayState.Stopped Or DomVideo.State = VideoHandler.PlayState.Paused Then Return - 'Debug.Print("New movie loaded: " & DomWMP.URL.ToString) + 'Debug.Print("New movie loaded: " & DomVideo.URL.ToString) - ssh.VidFile = Path.GetFileName(DomWMP.URL.ToString) + ssh.VidFile = Path.GetFileName(DomVideo.MediaURI.ToString) Dim VidSplit As String() = ssh.VidFile.Split(".") ssh.VidFile = "" @@ -16583,7 +16583,7 @@ RestartFunction: If File.Exists(Application.StartupPath & "\Scripts\" & dompersonalitycombobox.Text & "\Video\Scripts\" & ssh.VidFile & ".txt") Then Dim SubCheck As String() Dim PlayPos As Integer - Dim WMPPos As Integer = Math.Ceiling(DomWMP.Ctlcontrols.currentPosition) + Dim VideoPos As Integer = Math.Ceiling(DomVideo.CurrentMediaCurrentPosition) Dim SubList As New List(Of String) SubList = Txt2List(Application.StartupPath & "\Scripts\" & dompersonalitycombobox.Text & "\Video\Scripts\" & ssh.VidFile & ".txt") @@ -16598,7 +16598,7 @@ RestartFunction: PlayPos += SubCheck2(1) * 60 PlayPos += SubCheck2(2) - If WMPPos = PlayPos Then + If VideoPos = PlayPos Then If (SubCheck(1).Contains("@Contact1") And ssh.contact1Present = False) Or (SubCheck(1).Contains("@Contact2") And ssh.contact2Present = False) _ Or (SubCheck(1).Contains("@Contact3") And ssh.contact3Present = False) Then 'I'm positive I'm doing this the hard way -.- @@ -16615,7 +16615,7 @@ RestartFunction: End Sub -#End Region 'Domme-WMP +#End Region 'Domme-Video Private Sub domAvatar_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles domAvatar.MouseEnter If FrmSettings.Visible = False And FrmCardList.Visible = False Then domAvatar.Focus() @@ -20010,9 +20010,9 @@ restartInstantly: ''' Rethrows all exceptions to catcher, as long sender is nothing. Private Sub VideoJump2Random(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button12.Click Try - If DomWMP.currentPlaylist.count = 0 Then Throw New Exception("No Video playing - can't jump.") + If DomVideo.CurrentPlayListCount = 0 Then Throw New Exception("No Video playing - can't jump.") - Dim VideoLength As Integer = DomWMP.currentMedia.duration + Dim VideoLength As Integer = DomVideo.CurrentMediaDuration Dim VidLow As Integer = VideoLength * 0.4 Dim VidHigh As Integer = VideoLength * 0.9 Dim VidPoint As Integer = ssh.randomizer.Next(VidLow, VidHigh) @@ -20021,7 +20021,7 @@ restartInstantly: Debug.Print("VidHigh = " & VidHigh) Debug.Print("VidPoint = " & VidPoint) - DomWMP.Ctlcontrols.currentPosition = VideoLength - VidPoint + DomVideo.CurrentMediaCurrentPosition = VideoLength - VidPoint Catch ex As Exception '▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨▨ ' All Errors @@ -20203,7 +20203,7 @@ restartInstantly: ssh.ScriptTick = 1 ScriptTimer.Start() Dim HypnoTrack As String = Application.StartupPath & "\Scripts\" & dompersonalitycombobox.Text & "\Apps\Hypnotic Guide\" & ComboBoxHypnoGenTrack.SelectedItem - If File.Exists(HypnoTrack) Then DomWMP.URL = HypnoTrack + If File.Exists(HypnoTrack) Then DomVideo.MediaURI = HypnoTrack ssh.HypnoGen = True ssh.AFK = True ssh.SaidHello = True @@ -20214,7 +20214,7 @@ restartInstantly: mciSendString("CLOSE Speech1", String.Empty, 0, 0) mciSendString("CLOSE Echo1", String.Empty, 0, 0) - DomWMP.Ctlcontrols.stop() + DomVideo.StopIt() ScriptTimer.Stop() ssh.StrokeTauntVal = -1 @@ -20586,7 +20586,7 @@ playLoop: If ssh.VideoTick < 1 Then VideoTimer.Stop() - DomWMP.Ctlcontrols.stop() + DomVideo.StopIt() End If @@ -21141,22 +21141,22 @@ playLoop: Next If VideoList.Count > 0 Then - DomWMP.URL = VideoList(ssh.randomizer.Next(0, VideoList.Count)) - DomWMP.Visible = True + DomVideo.MediaURI = VideoList(ssh.randomizer.Next(0, VideoList.Count)) + DomVideo.Visible = True mainPictureBox.Visible = False If ssh.JumpVideo = True Then Do Application.DoEvents() - Loop Until (DomWMP.playState = WMPLib.WMPPlayState.wmppsPlaying) + Loop Until (DomVideo.State = VideoHandler.PlayState.Playing) - Dim VideoLength As Integer = DomWMP.currentMedia.duration + Dim VideoLength As Integer = DomVideo.CurrentMediaDuration Dim VidLow As Integer = VideoLength * 0.4 Dim VidHigh As Integer = VideoLength * 0.9 Dim VidPoint As Integer = ssh.randomizer.Next(VidLow, VidHigh) - DomWMP.Ctlcontrols.currentPosition = VideoLength - VidPoint + DomVideo.CurrentMediaCurrentPosition = VideoLength - VidPoint End If @@ -21169,22 +21169,22 @@ playLoop: Else If File.Exists(VideoClean) Then - DomWMP.URL = VideoClean - DomWMP.Visible = True + DomVideo.MediaURI = VideoClean + DomVideo.Visible = True mainPictureBox.Visible = False If ssh.JumpVideo = True Then Do Application.DoEvents() - Loop Until (DomWMP.playState = WMPLib.WMPPlayState.wmppsPlaying) + Loop Until (DomVideo.State = VideoHandler.PlayState.Playing) - Dim VideoLength As Integer = DomWMP.currentMedia.duration + Dim VideoLength As Integer = DomVideo.CurrentMediaDuration Dim VidLow As Integer = VideoLength * 0.4 Dim VidHigh As Integer = VideoLength * 0.9 Dim VidPoint As Integer = ssh.randomizer.Next(VidLow, VidHigh) - DomWMP.Ctlcontrols.currentPosition = VideoLength - VidPoint + DomVideo.CurrentMediaCurrentPosition = VideoLength - VidPoint End If diff --git a/Tease AI/Form2.vb b/Tease AI/Form2.vb index b2c7013..4539efb 100644 --- a/Tease AI/Form2.vb +++ b/Tease AI/Form2.vb @@ -9960,7 +9960,7 @@ checkFolder: Private Sub CBMuteMedia_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CBMuteMedia.CheckedChanged - Form1.DomWMP.settings.mute = CBMuteMedia.Checked + Form1.DomVideo.Muted = CBMuteMedia.Checked End Sub diff --git a/Tease AI/Form3.Designer.vb b/Tease AI/Form3.Designer.vb index 3ce9f9d..7d22b7a 100644 --- a/Tease AI/Form3.Designer.vb +++ b/Tease AI/Form3.Designer.vb @@ -26,7 +26,7 @@ Partial Class FrmCardList Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(FrmCardList)) Me.TCGames = New System.Windows.Forms.TabControl() Me.TabPage3 = New System.Windows.Forms.TabPage() - Me.GameWMP = New AxWMPLib.AxWindowsMediaPlayer() + Me.GameVideo = VideoHandlerCreator.CreateHandler() Me.Panel32 = New System.Windows.Forms.Panel() Me.Panel33 = New System.Windows.Forms.Panel() Me.SlotLeft1 = New System.Windows.Forms.PictureBox() @@ -359,7 +359,7 @@ Partial Class FrmCardList Me.TimerRiskyFlash = New Tease_AI.teaseAI_Timer() Me.TCGames.SuspendLayout() Me.TabPage3.SuspendLayout() - CType(Me.GameWMP, System.ComponentModel.ISupportInitialize).BeginInit() + CType(Me.GameVideo, System.ComponentModel.ISupportInitialize).BeginInit() Me.Panel32.SuspendLayout() Me.Panel33.SuspendLayout() CType(Me.SlotLeft1, System.ComponentModel.ISupportInitialize).BeginInit() @@ -512,7 +512,7 @@ Partial Class FrmCardList ' Me.TabPage3.BackColor = System.Drawing.Color.Navy Me.TabPage3.BackgroundImage = CType(resources.GetObject("TabPage3.BackgroundImage"), System.Drawing.Image) - Me.TabPage3.Controls.Add(Me.GameWMP) + Me.TabPage3.Controls.Add(Me.GameVideo.Form) Me.TabPage3.Controls.Add(Me.Panel32) Me.TabPage3.Controls.Add(Me.Panel44) Me.TabPage3.Controls.Add(Me.Panel34) @@ -527,16 +527,16 @@ Partial Class FrmCardList Me.TabPage3.TabIndex = 2 Me.TabPage3.Text = "Slots" ' - 'GameWMP + 'GameVideo ' - Me.GameWMP.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom), System.Windows.Forms.AnchorStyles) - Me.GameWMP.Enabled = True - Me.GameWMP.Location = New System.Drawing.Point(880, 60) - Me.GameWMP.Name = "GameWMP" - Me.GameWMP.OcxState = CType(resources.GetObject("GameWMP.OcxState"), System.Windows.Forms.AxHost.State) - Me.GameWMP.Size = New System.Drawing.Size(20, 20) - Me.GameWMP.TabIndex = 97 - Me.GameWMP.Visible = False + Me.GameVideo.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom), System.Windows.Forms.AnchorStyles) + Me.GameVideo.Enabled = True + Me.GameVideo.Location = New System.Drawing.Point(880, 60) + Me.GameVideo.Name = "GameVideo" + Me.GameVideo.State = resources.GetObject("GameVideo.State") + Me.GameVideo.Size = New System.Drawing.Size(20, 20) + Me.GameVideo.TabIndex = 97 + Me.GameVideo.Visible = False ' 'Panel32 ' @@ -4364,7 +4364,7 @@ Partial Class FrmCardList Me.Text = "Games" Me.TCGames.ResumeLayout(False) Me.TabPage3.ResumeLayout(False) - CType(Me.GameWMP, System.ComponentModel.ISupportInitialize).EndInit() + CType(Me.GameVideo, System.ComponentModel.ISupportInitialize).EndInit() Me.Panel32.ResumeLayout(False) Me.Panel33.ResumeLayout(False) CType(Me.SlotLeft1, System.ComponentModel.ISupportInitialize).EndInit() @@ -4666,7 +4666,7 @@ Partial Class FrmCardList Friend WithEvents BoosterTimer As System.Windows.Forms.Timer Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox Friend WithEvents GroupBox3 As System.Windows.Forms.GroupBox - Friend WithEvents GameWMP As AxWMPLib.AxWindowsMediaPlayer + Friend WithEvents GameVideo As VideoHandler Friend WithEvents ExchangeFrame As System.Windows.Forms.Panel Friend WithEvents ExchangeCard As System.Windows.Forms.PictureBox Friend WithEvents Label4 As System.Windows.Forms.Label diff --git a/Tease AI/Form3.resx b/Tease AI/Form3.resx index e3e57c2..4b6791c 100644 --- a/Tease AI/Form3.resx +++ b/Tease AI/Form3.resx @@ -948,7 +948,7 @@ YII= - + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACFTeXN0 diff --git a/Tease AI/Form3.vb b/Tease AI/Form3.vb index 8ed886f..80d1059 100644 --- a/Tease AI/Form3.vb +++ b/Tease AI/Form3.vb @@ -1143,9 +1143,9 @@ Card9: DealMatchCards() If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\CardShuffle.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\CardShuffle.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\CardShuffle.wav" End If 'My.Computer.Audio.Play(Application.StartupPath & "\Audio\System\CardShuffle.wav") @@ -1363,11 +1363,9 @@ Card9: If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\NoPayout.wav") Then - - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\NoPayout.wav" - + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\NoPayout.wav" End If 'My.Computer.Audio.Play(Application.StartupPath & "\Audio\System\NoPayout.wav") @@ -1389,11 +1387,9 @@ Card9: If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\PayoutSmall.wav") Then - - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\PayoutSmall.wav" - + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\PayoutSmall.wav" End If @@ -1444,9 +1440,9 @@ Card9: If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\CardFlip.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\CardFlip.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\CardFlip.wav" End If End Sub @@ -2163,9 +2159,9 @@ Card9: ' mciSendString("close myWAV", Nothing, 0, 0) fileName1 = Application.StartupPath & "\Audio\System\Slots.wav" - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = fileName1 + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = fileName1 'fileName1 = Form1.GetShortPathName(fileName1) @@ -2355,9 +2351,9 @@ Card9: ' fileName1 = Form1.GetShortPathName(fileName1) End If - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = fileName1 + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = fileName1 'Dim Volume As Integer = 50 @@ -3744,9 +3740,9 @@ Card9: My.Settings.Save() If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\CardFlip.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\CardFlip.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\CardFlip.wav" End If 'My.Computer.Audio.Play(Application.StartupPath & "\Audio\System\CardFlip.wav") @@ -3832,9 +3828,9 @@ Card9: SilverDraw.Clear() If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\CardFlip.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\CardFlip.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\CardFlip.wav" End If ExchangeCard.Visible = True @@ -3907,9 +3903,9 @@ Card9: ClearExchange() If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\PayoutSmall.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\PayoutSmall.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\PayoutSmall.wav" End If Form1.ssh.BronzeTokens += 12 @@ -3938,9 +3934,9 @@ Card9: GoldDraw.Clear() If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\CardFlip.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\CardFlip.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\CardFlip.wav" End If ExchangeCard.Visible = True @@ -4013,9 +4009,9 @@ Card9: ClearExchange() If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\PayoutOne.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\PayoutOne.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\PayoutOne.wav" End If Form1.ssh.SilverTokens += 1 @@ -4043,9 +4039,9 @@ Card9: ClearExchange() If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\PayoutOne.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\PayoutOne.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\PayoutOne.wav" End If Form1.ssh.GoldTokens += 1 @@ -4065,9 +4061,9 @@ Card9: ClearExchange() If FrmSettings.CBGameSounds.Checked = True And File.Exists(Application.StartupPath & "\Audio\System\PayoutSmall.wav") Then - GameWMP.settings.setMode("loop", False) - GameWMP.settings.volume = 20 - GameWMP.URL = Application.StartupPath & "\Audio\System\PayoutSmall.wav" + GameVideo.Looped = False + GameVideo.Volume = 20 + GameVideo.MediaURI = Application.StartupPath & "\Audio\System\PayoutSmall.wav" End If Form1.ssh.SilverTokens -= 1 diff --git a/Tease AI/Tease AI.vbproj b/Tease AI/Tease AI.vbproj index e88d44b..b28cd8d 100644 --- a/Tease AI/Tease AI.vbproj +++ b/Tease AI/Tease AI.vbproj @@ -76,6 +76,20 @@ false + + ..\DLL\AxInterop.AXVLC.dll + + + ..\DLL\AxInterop.WMPLib.dll + + + ..\DLL\Interop.AXVLC.dll + True + + + ..\DLL\Interop.WMPLib.dll + True + @@ -124,6 +138,7 @@ Component + Form From 46847cb7af1ce54907cc1c31d311a41b8991f948 Mon Sep 17 00:00:00 2001 From: Enuraz Date: Thu, 8 Jun 2017 09:24:09 +0200 Subject: [PATCH 3/3] VideoRefactoring: commenting --- Tease AI/Classes/VideoHandler.vb | 60 ++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 11 deletions(-) diff --git a/Tease AI/Classes/VideoHandler.vb b/Tease AI/Classes/VideoHandler.vb index 2c0afe0..cacdc55 100644 --- a/Tease AI/Classes/VideoHandler.vb +++ b/Tease AI/Classes/VideoHandler.vb @@ -1,17 +1,43 @@ - -#Const WMP = 1 -#Const VLC = 1 - +'=========================================================================================== +' +' VideoHandler-Class +' +' +' This File contains a Class to store all video specific call. +' +' You could compile Tease-AI for only WMP or VLC by commenting USEWMP or USEVLC declaration. +' Note: if neither USEWMP nor USEVLC are set, there will be no video at all. +' +' When launching Tease-AI, use -VLC or -WMP argument to chose. If both are set, VLC will +' be prefered. If one is set but Tease-AI was not compiled for it, it will be ignored. +' If no argument is set, there will be no video. +' +' The Idea is to compile for both and then make two shortcut : +' 1 - named TeaseAIWithWMP launching "Tease AI.exe -WMP" +' 2 - named TeaseAIWithVLC launching "Tease AI.exe -VLC" +' +' We could also force one by default in the VideoHandlerCreator if needed. +' +' Note: Adding mediaEnded in state should be considered. +'=========================================================================================== + +'Choose what to use at compilation time +#Const USEWMP = 1 +#Const USEVLC = 1 + +'''

+''' Class to create the VideoHandler using VLC, WMP or nothing. +''' Public Module VideoHandlerCreator Function CreateHandler() As VideoHandler If My.Application.CommandLineArgs.Contains("-VLC") Then -#If VLC Then +#If USEVLC Then Return New VLCVideoHandler #Else Throw New ApplicationException("Trying to use VLC but this executable currently not support it!") #End If ElseIf My.Application.CommandLineArgs.Contains("-WMP") Then -#If WMP Then +#If USEWMP Then Return New WMPVideoHandler #Else Throw New ApplicationException("Trying to use WMP but this executable currently not support it!") @@ -23,7 +49,11 @@ Public Module VideoHandlerCreator End Module - +''' +''' Base class to to be inherited with specific VLC or WMP feature call. +''' It is used to uniformize all call amongst the remainding of the code. +''' Every method should thus pass by this class and be overrided with specifics. +''' Public Class VideoHandler 'Inherits System.Windows.Forms.Control Implements System.ComponentModel.ISupportInitialize @@ -206,10 +236,15 @@ Public Class VideoHandler End Sub End Class -#If WMP Then + +#If USEWMP Then +''' +''' Class implementing WMP specificities... +''' Public Class WMPVideoHandler Inherits VideoHandler + 'Here for reference: same encoding was done with VideoHandler.PlayState for first items 'Enum WMPPlayState ' wmppsUndefined = 0 ' wmppsStopped = 1 @@ -288,7 +323,7 @@ Public Class WMPVideoHandler End Property Public Overrides Sub ClearPlayList() - WMPPlayer.currentPlaylist.Clear() + WMPPlayer.currentPlaylist.clear() End Sub Public Overrides WriteOnly Property Looped As Boolean @@ -317,7 +352,7 @@ Public Class WMPVideoHandler Public Overrides WriteOnly Property StretchToFit As Boolean Set(value As Boolean) - WMPPlayer.StretchToFit = value + WMPPlayer.stretchToFit = value End Set End Property @@ -359,7 +394,10 @@ Public Class WMPVideoHandler End Class #End If -#If VLC Then +#If USEVLC Then +''' +''' Class implementing VLC specificities... +''' Public Class VLCVideoHandler Inherits VideoHandler