326 lines
9.2 KiB
VB.net
326 lines
9.2 KiB
VB.net
Imports System.IO
|
|
Imports MySql.Data.MySqlClient
|
|
|
|
Public Class friendly_match
|
|
|
|
'--[MATCH FIGHTERS]---------------
|
|
|
|
Public _blue As friendly_fighter ' Blue Fighter Information
|
|
Public _red As friendly_fighter ' Red Fighter Information
|
|
Public _referee As person ' Referee Information
|
|
|
|
'--[MATCH SETTINGS]---------------
|
|
|
|
Private _match_id As Integer ' Match Identification Number
|
|
Private _max_rounds As Integer ' Maximum Round Number
|
|
Private _round_number As Integer ' Round Number
|
|
|
|
Private _matchTimer As match_timer ' Timer For Playing The Rounds
|
|
Private _matchBreak As match_timer ' Timer For Having Break
|
|
|
|
Private _max_differenace As Integer ' Max Difference In Score
|
|
Private _enaMaxSdiff As Boolean ' End Match When Difference Reached
|
|
Private _enaSudenDth As Boolean ' Enable Forth Round When Score Are Equal
|
|
|
|
'--[CONSTRUCTORS]-------------------------------------------------
|
|
|
|
ReadOnly Property Round As Integer
|
|
Get
|
|
Return _round_number
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property Time As match_timer
|
|
Get
|
|
Return _matchTimer
|
|
End Get
|
|
End Property
|
|
|
|
ReadOnly Property Break As match_timer
|
|
Get
|
|
Return _matchBreak
|
|
End Get
|
|
End Property
|
|
|
|
'--[CONSTRUCTORS]-------------------------------------------------
|
|
|
|
' Incase you want to create instant match
|
|
Public Sub New(Blue As Integer, Red As Integer, Referee As Integer, Rounds As Integer)
|
|
|
|
' Match Fighters
|
|
_blue = New friendly_fighter(Blue)
|
|
_red = New friendly_fighter(Red)
|
|
|
|
' Match Referee
|
|
_referee = New person(Referee)
|
|
|
|
' Match Round Timer
|
|
_matchTimer = New match_timer(My.Settings.match_round_time_minutes, My.Settings.match_round_time_seconds)
|
|
|
|
' Match Break Timer
|
|
_matchBreak = New match_timer(My.Settings.match_break_time_minutes, My.Settings.match_break_time_seconds)
|
|
|
|
' Sudden Death Option
|
|
_enaSudenDth = My.Settings.match_enable_sudden_death
|
|
|
|
' Max Score Difference Option
|
|
_enaMaxSdiff = My.Settings.match_enable_max_difference
|
|
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------------
|
|
' READING MATCH NUMBER
|
|
'-----------------------------------------------------------------
|
|
|
|
' THIS FUNCTION GETS THE NEWLY CREATED MATCH NUMBER
|
|
|
|
Private Sub GetMatchData()
|
|
|
|
Dim QRY As String = "SELECT ecn, ern, emn, blue_fighter, red_fighter FROM test.event_matches where emn = " & _match_id & " and started = 0 and ended = 0 and (not isnull(red_fighter)) and (not isnull(blue_fighter)) order by ern, emn asc"
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
Dim RDR As MySqlDataReader
|
|
|
|
Try
|
|
CON.Open()
|
|
RDR = COM.ExecuteReader
|
|
If RDR.HasRows = True Then
|
|
While RDR.Read
|
|
|
|
Try
|
|
_blue = New friendly_fighter(RDR("blue_fighter"))
|
|
Catch ex As Exception
|
|
_blue = Nothing
|
|
End Try
|
|
|
|
Try
|
|
_red = New friendly_fighter(RDR("red_fighter"))
|
|
Catch ex As Exception
|
|
_red = Nothing
|
|
End Try
|
|
|
|
|
|
End While
|
|
End If
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
CON.Dispose()
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' THIS FUNCTION RETURNS AVAILABLE NUMBER FOR A NEW MATCH
|
|
|
|
Private Function GetAvailableNewMatchID() As Integer
|
|
|
|
' Select the Unstarted Matches From The Match Sequence
|
|
Dim QRY As String = ("
|
|
select
|
|
person.id as 'pid',
|
|
person.fname,
|
|
person.mname,
|
|
person.lname,
|
|
TIMESTAMPDIFF(YEAR, person.date_of_birth, CURDATE()) as 'age',
|
|
person.date_of_birth,
|
|
person.category,
|
|
person.weight,
|
|
person.weight_class,
|
|
person.gender,
|
|
person.picture,
|
|
clubs.title as 'club',
|
|
clubs.logo as 'logo',
|
|
countries.iso3 as 'country',
|
|
countries.flatflag as 'flag'
|
|
FROM
|
|
person
|
|
left join
|
|
clubs on person.club = clubs.id
|
|
left join
|
|
countries on person.country = countries.id
|
|
where
|
|
person.id=1
|
|
")
|
|
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
Dim RDR As MySqlDataReader
|
|
Dim NUM As Integer
|
|
|
|
Try
|
|
CON.Open()
|
|
RDR = COM.ExecuteReader
|
|
If RDR.HasRows = True Then
|
|
While RDR.Read
|
|
Try
|
|
NUM = RDR("ID")
|
|
Catch ex As Exception
|
|
|
|
End Try
|
|
End While
|
|
End If
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
CON.Dispose()
|
|
End Try
|
|
|
|
Return NUM
|
|
|
|
End Function
|
|
|
|
Public Sub StartMatch()
|
|
|
|
' Update The Table With The Winner ID
|
|
Dim QRY As String = ("
|
|
SET SQL_SAFE_UPDATES = 0;
|
|
|
|
UPDATE
|
|
`event_matches`
|
|
SET
|
|
`started` = 1
|
|
WHERE
|
|
`emn` = " & _match_id & ";
|
|
")
|
|
|
|
' Executing The Command
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
|
|
Try
|
|
CON.Open()
|
|
COM.ExecuteNonQuery()
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
CON.Dispose()
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
Public Sub EndMatch()
|
|
|
|
' Testing This Condition
|
|
If _match_id = 0 Or _match_id = Nothing Then Exit Sub
|
|
|
|
' Update The Table With The Winner ID
|
|
Dim QRY As String = ("
|
|
SET SQL_SAFE_UPDATES = 0;
|
|
|
|
UPDATE
|
|
`event_matches`
|
|
SET
|
|
`ended` = 1
|
|
WHERE
|
|
`emn` = " & _match_id & ";
|
|
")
|
|
|
|
' Executing The Command
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
|
|
Try
|
|
CON.Open()
|
|
COM.ExecuteNonQuery()
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
CON.Dispose()
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
'-----------------------------------------------------------------
|
|
' METHODES OF ENDING A MATCH
|
|
'-----------------------------------------------------------------
|
|
|
|
' THIS SUB ENDS THE MATCH AUTOMATICALLY BY CALCULATING THE POINTS
|
|
Private Sub AutoEndMatch()
|
|
|
|
' Winner ID Holder
|
|
Dim WinnerID As Integer
|
|
|
|
' This Is Where We Do Decision Making
|
|
If _blue.Score > _red.Score Then
|
|
WinnerID = _blue.Person.ID ' Blue Fighter Wins
|
|
ElseIf _blue.Score < _red.Score Then
|
|
WinnerID = _red.Person.ID ' Red Fighter Wins
|
|
End If
|
|
|
|
' Update The Table With The Winner ID
|
|
Dim QRY As String = ("
|
|
SET SQL_SAFE_UPDATES = 0;
|
|
|
|
UPDATE
|
|
`event_matches`
|
|
SET
|
|
`blue_score` = " & _blue.Score & ",
|
|
`blue_foul` = " & _blue.Gamjum & ",
|
|
`red_score` = " & _red.Score & ",
|
|
`red_foul` = " & _red.Gamjum & ",
|
|
`winner` = " & WinnerID & ",
|
|
`ended` = 1
|
|
WHERE
|
|
`emn` = " & _match_id & ";
|
|
")
|
|
|
|
' Executing The Command
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
|
|
Try
|
|
CON.Open()
|
|
COM.ExecuteNonQuery()
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
CON.Dispose()
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
' THIS SUB ENDS THE MATCH MANUALLY BY THE MAIN REFEREE IF NEEDED TO
|
|
Private Sub ManualEndMatch(WinnerID As Integer, WinnerBy As String, Note As String)
|
|
|
|
' Update The Table With The Winner ID
|
|
Dim QRY As String = ("
|
|
SET SQL_SAFE_UPDATES = 0;
|
|
|
|
UPDATE
|
|
`event_matches`
|
|
SET
|
|
`blue_score` = " & _blue.Score & ",
|
|
`blue_foul` = " & _blue.Gamjum & ",
|
|
`red_score` = " & _red.Score & ",
|
|
`red_foul` = " & _red.Gamjum & ",
|
|
`winner` = " & WinnerID & ",
|
|
`notes` = '" & Note & "',
|
|
`winnerBy` = '" & WinnerBy & "',
|
|
`ended` = 1
|
|
WHERE
|
|
`emn` = " & _match_id & ";
|
|
")
|
|
|
|
Dim CON As New MySqlConnection(CON_STRING)
|
|
Dim COM As New MySqlCommand(QRY, CON)
|
|
|
|
Try
|
|
CON.Open()
|
|
COM.ExecuteNonQuery()
|
|
CON.Close()
|
|
Catch ex As MySqlException
|
|
MessageBox.Show(ex.Message)
|
|
Finally
|
|
CON.Dispose()
|
|
End Try
|
|
|
|
End Sub
|
|
|
|
|
|
End Class
|