All pastes #81834 Raw Edit

Miscellany

public text v1 · immutable
·published 2006-07-07 22:33 UTC
rendered paste body
    'What labels to look for in the overview scan
    Dim strInfoArray() As String = {"Score:", "Metal:", "Mineral:", "Food:", _
                                    "Unused Land", "Farm Land", "Metal Mining", _
                                    "Mineral Mining"}

    'Parameters: strScan        The scan input by the user
    '            intIndex       The index position in the scan to start getting the value from
    'Returns:    Long           The value that was extracted from the scan at the given position.
    '
    'This function will get the value from the scan at the starting position given by intIndex.  From the starting
    'index position it will check each character in the string and put it into another string until a space
    'or dash is found which indicates the end of the value.  Any commas are then removed and the resulting string
    'is converted into a long integer and returned back from the function.
    Private Function GetValue(ByVal strScan As String, ByVal intIndex As Integer) As Long
        'A string to hold the value being extracted
        Dim strValue As String
        'A character extracted from the scan
        Dim strCharacter As String
        'True if function should stop extracting characters
        Dim blnStop As Boolean

        Try
            'Loop while the index position is less than the length of the scan and blnStop is still False
            Do While intIndex < strScan.Length And blnStop <> True
                'Extract 1 character from the string at the given index position
                strCharacter = strScan.Substring(intIndex, 1)

                If strCharacter <> " " And strCharacter <> "-" Then
                    'The character extracted from scan is not a space or dash so must
                    'be part of the number to add it to the strValue string
                    strValue &= strCharacter
                Else
                    'Extracted a space or a dash so set blnStop to True to stop extracting
                    blnStop = True
                End If
                'Move the index position to the next position in the scan
                intIndex += 1
            Loop

            If strValue <> "" Then
                'String is not empty so must have a valid value in the string
                'so remove any commas and then convert it into a long integer
                strValue = strValue.Replace(",", "")
                Return (Convert.ToInt64(strValue))
            Else
                'String was empty so return 0
                Return 0
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Function


        Try
            'Remove any unwanted strings from the scan text
            strScan = strScan.Replace(strSAT_MK_II_LABEL, strNEW_SAT_MK_II_LABEL)
            strScan = strScan.Replace(vbCrLf, "-"c)
            strScan = strScan.Replace(vbTab, "-"c)
            strScan = strScan.Replace(" -", " ")
            strScan = strScan.Replace(STRDYRAD_LABEL, strDRYAD_LABEL)
            strScan = strScan.Replace(strDONATEDMONEY, "")
            strScan = strScan.Replace(strDONATEDMOREMONEY, "")
            strScan = strScan.Replace(STRDONATESEACHMONTH, "")

            'Get the line which contains the playername, coords and alliance
            strLine = GetPlayerName(strScan)
            'Extract the player name, coords and alliance into 3 separate variables
            Call GetPlayerAllianceNameCoords(strLine, strCoords, strPlayerName, strAlliance)

            'Work out the position in the scan string where creature and defences start
            intCreatureStartPos = strScan.IndexOf(strMINERALMINING)
            'Work out the position in the scan string where creature and defences end
            intCreaturesEndPos = strScan.IndexOf(strALLIANCEAGENDA)
            'Work out the position in the scan string where auctions start
            intAuctionsStartPos = strScan.IndexOf(strAUCTION)
            If intAuctionsStartPos = -1 Then
                intAuctionsStartPos = 100000
            End If

            'Get the tick the overview page was sent from the scan string
            intIndex = strScan.IndexOf(strTICK)
            intTick = Convert.ToInt32(GetValue(strScan, intIndex + strTICK.Length + 1))

            'Check if the player name was found
            If strPlayerName <> "" Then
                'Check if the player exists
                If CheckMemberExists(strPlayerName) = False Then
                    'Player doesn't exist so put information into the data row
                    dtrNewMemberInfo("PlayerName") = strPlayerName
                    dtrNewMemberInfo("Type") = "Ally"
                    dtrNewMemberInfo("Alliance") = strAlliance
                    dtrNewMemberInfo("Coords") = strCoords
                    dtrNewMemberInfo("Tick") = intTick
                    dtrNewMemberInfo("Score") = 0
                    dtrNewMemberInfo("Metal") = 0
                    dtrNewMemberInfo("Mineral") = 0
                    dtrNewMemberInfo("Food") = 0
                    dtrNewMemberInfo("LandUnused") = 0
                    dtrNewMemberInfo("LandFood") = 0
                    dtrNewMemberInfo("LandMetal") = 0
                    dtrNewMemberInfo("LandMineral") = 0
                    dtrNewMemberInfo("NanoTech") = True
                    dtrNewMemberInfo("MP") = False
                    dtrNewMemberInfo("EnhancedMP") = False
                    dtrNewMemberInfo("SpaceElevator") = False

                    'Add the new data row to the database with the new information
                    dtrNewMemberInfo.EndEdit()
                    DsMemberInfo1.Tables("player").Rows.Add(dtrNewMemberInfo)
                    daMemberInfo.Update(DsMemberInfo1)
                    DsMemberInfo1.AcceptChanges()
                End If

                'Get the player's ID which is automatically generated by the database
                intPlayerID = GetMemberID(strPlayerName)

                'Get all the player's information back from the database
                daMemberInfo.SelectCommand.CommandText = "select * from player where id = " & intPlayerID
                DsMemberInfo1.Clear()
                daMemberInfo.Fill(DsMemberInfo1, "player")

                DsMemberInfo1.Tables("Player").Rows(0).Item("tick") = intTick

                'Go through each item in the strInfoItemArray and extract out the values for
                'each item from the scan
                For Each strInfoItem In strInfoArray
                    intIndex = strScan.IndexOf(strInfoItem)
                    If intIndex >= 0 Then
                        'Found the item in the scan so extract the corresponding value
                        intValue = GetValue(strScan, intIndex + strInfoItem.Length + 1)
                        'Get the corresponding database field name for the item and update the value
                        'extracted to the database
                        strFieldName = GetFieldName(strInfoItem)
                        DsMemberInfo1.Tables("Player").Rows(0).Item(strFieldName) = intValue
                    End If
                Next