Added loading the spreadsheet data into Basic data array text, and loading the data from the Basic data array instead of the sheet, in order to remove dependency from the data sheet.

This commit is contained in:
依瑪貓 2016-11-28 23:00:20 +08:00
parent f2e8f46e7b
commit 860e2d1ef4
4 changed files with 469 additions and 96 deletions

122
_0Main.vb
View File

@ -17,12 +17,6 @@ Type aStats
nMaxCP As Integer nMaxCP As Integer
End Type End Type
' The combat power multiplier.
Type aCPM
fLevel As Double
fCPM As Double
End Type
' The amount of star dust to power-up. ' The amount of star dust to power-up.
Type aStarDust Type aStarDust
fLevel As Double fLevel As Double
@ -42,8 +36,8 @@ Type aFindIVParam
nAppraisal2 As Integer nAppraisal2 As Integer
End Type End Type
Private maBaseStats () As New aStats, maCPM () As New aCPM Private maBaseStats () As New aStats
Private maStarDust () As New aStarDust Private mCPM () As Double, mStarDust () As Integer
' subMain: The main program ' subMain: The main program
Sub subMain Sub subMain
@ -84,7 +78,7 @@ Function fnFindIV (aQuery As aFindIVParam) As Variant
Dim fLevel As Double, nStamina As Integer Dim fLevel As Double, nStamina As Integer
Dim nAttack As Integer, nDefense As integer Dim nAttack As Integer, nDefense As integer
Dim nI As Integer, nJ As Integer Dim nI As Integer, nJ As Integer
Dim nStep As Integer, nCount As Integer Dim fStep As Double, nCount As Integer
Dim aEvBaseStats As new aStats, aTempIV As New aStats Dim aEvBaseStats As new aStats, aTempIV As New aStats
If aQuery.sPokemon = "" Then If aQuery.sPokemon = "" Then
@ -92,26 +86,28 @@ Function fnFindIV (aQuery As aFindIVParam) As Variant
Exit Function Exit Function
End If End If
If aQuery.bIsNew Then If aQuery.bIsNew Then
nStep = 2 fStep = 1
Else Else
nStep = 1 fStep = 0.5
End If End If
aBaseStats = fnGetBaseStats (aQuery.sPokemon) aBaseStats = fnGetBaseStats (aQuery.sPokemon)
aEvBaseStats = fnGetBaseStats (aBaseStats.sEvolveInto) aEvBaseStats = fnGetBaseStats (aBaseStats.sEvolveInto)
subReadStarDust subReadStarDust
nCount = -1 nCount = -1
For nI = 0 To UBound (maStarDust) Step nStep For fLevel = 1 To UBound (mStarDust) Step fStep
fLevel = maStarDust (nI).fLevel If mStarDust (CInt (fLevel - 0.5)) = aQuery.nStarDust Then
If maStarDust (nI).nStarDust = aQuery.nStarDust Then 'For nI = 0 To UBound (maStarDust) Step nStep
' fLevel = maStarDust (nI).fLevel
' If maStarDust (nI).nStarDust = aQuery.nStarDust Then
For nStamina = 0 To 15 For nStamina = 0 To 15
If fnCalcHP (aBaseStats, fLevel, nStamina) = aQuery.nHP Then If fnCalcHP (aBaseStats, fLevel, nStamina) = aQuery.nHP Then
For nAttack = 0 To 15 For nAttack = 0 To 15
For nDefense = 0 To 15 For nDefense = 0 To 15
If fnCalcCP (aBaseStats, fLevel, nAttack, nDefense, nStamina) = aQuery.nCP _ If fnCalcCP (aBaseStats, fLevel, nAttack, nDefense, nStamina) = aQuery.nCP _
And Not (fnFilterAppraisals (aQuery, nAttack, nDefense, nStamina)) Then And Not (fnFilterAppraisals (aQuery, nAttack, nDefense, nStamina)) Then
nCount = nCount + 1 nCount = nCount + 1
ReDim Preserve maIV (nCount) As New aStats ReDim Preserve maIV (nCount) As New aStats
With maIV (nCount) With maIV (nCount)
.sNo = aBaseStats.sNo .sNo = aBaseStats.sNo
.sPokemon = aQuery.sPokemon .sPokemon = aQuery.sPokemon
.fLevel = fLevel .fLevel = fLevel
@ -133,7 +129,7 @@ Function fnFindIV (aQuery As aFindIVParam) As Variant
End If End If
Next nStamina Next nStamina
End If End If
Next nI Next fLevel
' Sorts the IVs ' Sorts the IVs
For nI = 0 To UBound (maIV) - 1 For nI = 0 To UBound (maIV) - 1
For nJ = nI + 1 To UBound (maIV) For nJ = nI + 1 To UBound (maIV)
@ -343,20 +339,20 @@ Function fnGetBaseStats (sPokemon As String) As aStats
Exit Function Exit Function
End If End If
Next nI Next nI
End Function End Function
' fnGetCPM: Returns the combat power multiplier. ' fnGetCPM: Returns the combat power multiplier.
Function fnGetCPM (fLevel As Double) As Double Function fnGetCPM (fLevel As Double) As Double
Dim nI As Integer Dim nI As Integer
subReadCPM subReadCPM
For nI = 0 To UBound (maCPM) If CInt (fLevel) = fLevel Then
If maCPM (nI).fLevel = fLevel Then fnGetCPM = mCPM (fLevel)
fnGetCPM = maCPM (nI).fCPM Else
Exit Function fnGetCPM = ((mCpm (fLevel - 0.5) ^ 2 _
End If + mCpm (fLevel + 0.5) ^ 2) / 2) ^ 0.5
Next nI End If
End Function End Function
' fnFloor: Returns the floor of the number ' fnFloor: Returns the floor of the number
Function fnFloor (fNumber As Double) As Integer Function fnFloor (fNumber As Double) As Integer
@ -365,72 +361,34 @@ End Function
' subReadBaseStats: Reads the base stats table. ' subReadBaseStats: Reads the base stats table.
Sub subReadBaseStats Sub subReadBaseStats
Dim oSheet As Object, oRange As Object, mData As Variant Dim mData As Variant, nI As Integer
Dim nCount As Integer, nRow As Integer, nColumn As Integer
If UBound (maBaseStats) = -1 Then If UBound (maBaseStats) = -1 Then
oSheet = ThisComponent.getSheets.getByName ("basestat") mData = fnGetBaseStatsData
oRange = oSheet.getCellRangeByName ("BaseStats") ReDim Preserve maBaseStats (UBound (mData)) As New aStats
mData = oRange.getDataArray For nI = 0 To UBound (mData)
nCount = -1 With maBaseStats (nI)
For nRow = 1 To UBound (mData) - 1 .sNo = mData (nI) (1)
nCount = nCount + 1 .sPokemon = mData (nI) (0)
ReDim Preserve maBaseStats (nCount) As New aStats .nStamina = mData (nI) (2)
With maBaseStats (nCount) .nAttack = mData (nI) (3)
.sNo = mData (nRow) (1) .nDefense = mData (nI) (4)
.sPokemon = mData (nRow) (0) .sEvolveInto = mData (nI) (5)
.nStamina = mData (nRow) (3)
.nAttack = mData (nRow) (4)
.nDefense = mData (nRow) (5)
End With End With
For nColumn = 9 To 7 Step -1 Next nI
If mData (nRow) (nColumn) <> "" Then
maBaseStats (nCount).sEvolveInto = mData (nRow) (nColumn)
nColumn = 6
End If
Next nColumn
Next nRow
End If End If
End Sub End Sub
' subReadCPM: Reads the CPM table. ' subReadCPM: Reads the CPM table.
Sub subReadCPM Sub subReadCPM
Dim oSheet As Object, oRange As Object, mData As Variant If UBound (mCPM) = -1 Then
Dim nCount As Integer, nRow As Integer mCPM = fnGetCPMData
If UBound (maCPM) = -1 Then
oSheet = ThisComponent.getSheets.getByName ("cpm")
oRange = oSheet.getCellRangeByName ("CPM")
mData = oRange.getDataArray
nCount = -1
For nRow = 1 To UBound (mData) - 1
nCount = nCount + 1
ReDim Preserve maCPM (nCount) As New aCPM
With maCPM (nCount)
.fLevel = mData (nRow) (0)
.fCPM = mData (nRow) (1)
End With
Next nRow
End If End If
End Sub End Sub
' subReadStarDust: Reads the star dust table. ' subReadStarDust: Reads the star dust table.
Sub subReadStarDust Sub subReadStarDust
Dim oSheet As Object, oRange As Object, mData As Variant If UBound (mStarDust) = -1 Then
Dim nCount As Integer, nRow As Integer mStarDust = fnGetStarDustData
If UBound (maStarDust) = -1 Then
oSheet = ThisComponent.getSheets.getByName ("lvup")
oRange = oSheet.getCellRangeByName ("A2:D81")
mData = oRange.getDataArray
nCount = -1
For nRow = 1 To UBound (mData) - 1
nCount = nCount + 1
ReDim Preserve maStarDust (nCount) As New aStarDust
With maStarDust (nCount)
.fLevel = mData (nRow) (0)
.nStarDust = mData (nRow) (2)
End With
Next nRow
End If End If
End Sub End Sub

View File

@ -29,13 +29,13 @@ Function fnAskParam As aFindIVParam
' Creates a dialog ' Creates a dialog
oDialogModel = CreateUnoService ( _ oDialogModel = CreateUnoService ( _
"com.sun.star.awt.UnoControlDialogModel") "com.sun.star.awt.UnoControlDialogModel")
oDialogModel.setPropertyValue ("PositionX", 200) oDialogModel.setPropertyValue ("PositionX", 100)
oDialogModel.setPropertyValue ("PositionY", 200) oDialogModel.setPropertyValue ("PositionY", 100)
oDialogModel.setPropertyValue ("Height", 150) oDialogModel.setPropertyValue ("Height", 140)
oDialogModel.setPropertyValue ("Width", 220) oDialogModel.setPropertyValue ("Width", 220)
oDialogModel.setPropertyValue ("Title", "Pokémon Parameters") oDialogModel.setPropertyValue ("Title", "Pokémon Parameters")
' Adds the Pokémon list. ' Adds a text label for the Pokémon list.
oTextModel = oDialogModel.createInstance ( _ oTextModel = oDialogModel.createInstance ( _
"com.sun.star.awt.UnoControlFixedTextModel") "com.sun.star.awt.UnoControlFixedTextModel")
oTextModel.setPropertyValue ("PositionX", 5) oTextModel.setPropertyValue ("PositionX", 5)
@ -116,13 +116,13 @@ Function fnAskParam As aFindIVParam
subReadStarDust subReadStarDust
sTemp = " " sTemp = " "
ReDim mListItems () As String ReDim mListItems () As String
nCount = -1 nCount = -1
For nI = 0 To UBound (maStarDust) For nI = 1 To UBound (mStarDust)
If InStr (sTemp, " " & CStr (maStarDust (nI).nStarDust) & " ") = 0 Then If InStr (sTemp, " " & CStr (mStarDust (nI)) & " ") = 0 Then
nCount = nCount + 1 nCount = nCount + 1
ReDim Preserve mListItems (nCount) As String ReDim Preserve mListItems (nCount) As String
mListItems (nCount) = CStr (maStarDust (nI).nStarDust) mListItems (nCount) = CStr (mStarDust (nI))
sTemp = sTemp & CStr (maStarDust (nI).nStarDust) & " " sTemp = sTemp & CStr (mStarDust (nI)) & " "
End If End If
Next nI Next nI
oListModel = oDialogModel.createInstance ( _ oListModel = oDialogModel.createInstance ( _
@ -177,7 +177,7 @@ Function fnAskParam As aFindIVParam
"com.sun.star.awt.UnoControlGroupBoxModel") "com.sun.star.awt.UnoControlGroupBoxModel")
oGroupModel.setPropertyValue ("PositionX", 5) oGroupModel.setPropertyValue ("PositionX", 5)
oGroupModel.setPropertyValue ("PositionY", 50) oGroupModel.setPropertyValue ("PositionY", 50)
oGroupModel.setPropertyValue ("Height", 60) oGroupModel.setPropertyValue ("Height", 65)
oGroupModel.setPropertyValue ("Width", 210) oGroupModel.setPropertyValue ("Width", 210)
oGroupModel.setPropertyValue ("Label", "Apprasals") oGroupModel.setPropertyValue ("Label", "Apprasals")
oDialogModel.insertByName ("grpApprasals", oGroupModel) oDialogModel.insertByName ("grpApprasals", oGroupModel)
@ -257,19 +257,20 @@ Function fnAskParam As aFindIVParam
' Adds the OK button. ' Adds the OK button.
oButtonModel = oDialogModel.createInstance ( _ oButtonModel = oDialogModel.createInstance ( _
"com.sun.star.awt.UnoControlButtonModel") "com.sun.star.awt.UnoControlButtonModel")
oButtonModel.setPropertyValue ("PositionX", 10) oButtonModel.setPropertyValue ("PositionX", 35)
oButtonModel.setPropertyValue ("PositionY", 130) oButtonModel.setPropertyValue ("PositionY", 120)
oButtonModel.setPropertyValue ("Height", 15) oButtonModel.setPropertyValue ("Height", 15)
oButtonModel.setPropertyValue ("Width", 60) oButtonModel.setPropertyValue ("Width", 60)
oButtonModel.setPropertyValue ("PushButtonType", _ oButtonModel.setPropertyValue ("PushButtonType", _
com.sun.star.awt.PushButtonType.OK) com.sun.star.awt.PushButtonType.OK)
oButtonModel.setPropertyValue ("DefaultButton", True)
oDialogModel.insertByName ("btnOK", oButtonModel) oDialogModel.insertByName ("btnOK", oButtonModel)
' Adds the cancel button. ' Adds the cancel button.
oButtonModel = oDialogModel.createInstance ( _ oButtonModel = oDialogModel.createInstance ( _
"com.sun.star.awt.UnoControlButtonModel") "com.sun.star.awt.UnoControlButtonModel")
oButtonModel.setPropertyValue ("PositionX", 80) oButtonModel.setPropertyValue ("PositionX", 125)
oButtonModel.setPropertyValue ("PositionY", 130) oButtonModel.setPropertyValue ("PositionY", 120)
oButtonModel.setPropertyValue ("Height", 15) oButtonModel.setPropertyValue ("Height", 15)
oButtonModel.setPropertyValue ("Width", 60) oButtonModel.setPropertyValue ("Width", 60)
oButtonModel.setPropertyValue ("PushButtonType", _ oButtonModel.setPropertyValue ("PushButtonType", _

252
_2Data.vb Normal file
View File

@ -0,0 +1,252 @@
' _2Data: The Pokémon Go IV data
' by imacat <imacat@mail.imacat.idv.tw>, 2016-11-28
Option Explicit
' fnGetBaseStatsData: Returns the base stats table
Function fnGetBaseStatsData As Variant
fnGetBaseStatsData = Array( _
Array ("Bulbasaur", "001", 90, 118, 118, "Venusaur"), _
Array ("Ivysaur", "002", 120, 151, 151, "Venusaur"), _
Array ("Venusaur", "003", 160, 198, 198, "Venusaur"), _
Array ("Charmander", "004", 78, 116, 96, "Charizard"), _
Array ("Charmeleon", "005", 116, 158, 129, "Charizard"), _
Array ("Charizard", "006", 156, 223, 176, "Charizard"), _
Array ("Squirtle", "007", 88, 94, 122, "Blastoise"), _
Array ("Wartortle", "008", 118, 126, 155, "Blastoise"), _
Array ("Blastoise", "009", 158, 171, 210, "Blastoise"), _
Array ("Caterpie", "010", 90, 55, 62, "Butterfree"), _
Array ("Metapod", "011", 100, 45, 64, "Butterfree"), _
Array ("Butterfree", "012", 120, 167, 151, "Butterfree"), _
Array ("Weedle", "013", 80, 63, 55, "Beedrill"), _
Array ("Kakuna", "014", 90, 46, 86, "Beedrill"), _
Array ("Beedrill", "015", 130, 169, 150, "Beedrill"), _
Array ("Pidgey", "016", 80, 85, 76, "Pidgeot"), _
Array ("Pidgeotto", "017", 126, 117, 108, "Pidgeot"), _
Array ("Pidgeot", "018", 166, 166, 157, "Pidgeot"), _
Array ("Rattata", "019", 60, 103, 70, "Raticate"), _
Array ("Raticate", "020", 110, 161, 144, "Raticate"), _
Array ("Spearow", "021", 80, 112, 61, "Fearow"), _
Array ("Fearow", "022", 130, 182, 135, "Fearow"), _
Array ("Ekans", "023", 70, 110, 102, "Arbok"), _
Array ("Arbok", "024", 120, 167, 158, "Arbok"), _
Array ("Pikachu", "025", 70, 112, 101, "Raichu"), _
Array ("Raichu", "026", 120, 193, 165, "Raichu"), _
Array ("Sandshrew", "027", 100, 126, 145, "Sandslash"), _
Array ("Sandslash", "028", 150, 182, 202, "Sandslash"), _
Array ("Nidoran♀", "029", 110, 86, 94, "Nidoqueen"), _
Array ("Nidorina", "030", 140, 117, 126, "Nidoqueen"), _
Array ("Nidoqueen", "031", 180, 180, 174, "Nidoqueen"), _
Array ("Nidoran♂", "032", 92, 105, 76, "Nidoking"), _
Array ("Nidorino", "033", 122, 137, 112, "Nidoking"), _
Array ("Nidoking", "034", 162, 204, 157, "Nidoking"), _
Array ("Clefairy", "035", 140, 107, 116, "Clefable"), _
Array ("Clefable", "036", 190, 178, 171, "Clefable"), _
Array ("Vulpix", "037", 76, 96, 122, "Ninetales"), _
Array ("Ninetales", "038", 146, 169, 204, "Ninetales"), _
Array ("Jigglypuff", "039", 230, 80, 44, "Wigglytuff"), _
Array ("Wigglytuff", "040", 280, 156, 93, "Wigglytuff"), _
Array ("Zubat", "041", 80, 83, 76, "Golbat"), _
Array ("Golbat", "042", 150, 161, 153, "Golbat"), _
Array ("Oddish", "043", 90, 131, 116, "Vileplume"), _
Array ("Gloom", "044", 120, 153, 139, "Vileplume"), _
Array ("Vileplume", "045", 150, 202, 170, "Vileplume"), _
Array ("Paras", "046", 70, 121, 99, "Parasect"), _
Array ("Parasect", "047", 120, 165, 146, "Parasect"), _
Array ("Venonat", "048", 120, 100, 102, "Venomoth"), _
Array ("Venomoth", "049", 140, 179, 150, "Venomoth"), _
Array ("Diglett", "050", 20, 109, 88, "Dugtrio"), _
Array ("Dugtrio", "051", 70, 167, 147, "Dugtrio"), _
Array ("Meowth", "052", 80, 92, 81, "Persian"), _
Array ("Persian", "053", 130, 150, 139, "Persian"), _
Array ("Psyduck", "054", 100, 122, 96, "Golduck"), _
Array ("Golduck", "055", 160, 191, 163, "Golduck"), _
Array ("Mankey", "056", 80, 148, 87, "Primeape"), _
Array ("Primeape", "057", 130, 207, 144, "Primeape"), _
Array ("Growlithe", "058", 110, 136, 96, "Arcanine"), _
Array ("Arcanine", "059", 180, 227, 166, "Arcanine"), _
Array ("Poliwag", "060", 80, 101, 82, "Poliwrath"), _
Array ("Poliwhirl", "061", 130, 130, 130, "Poliwrath"), _
Array ("Poliwrath", "062", 180, 182, 187, "Poliwrath"), _
Array ("Abra", "063", 50, 195, 103, "Alakazam"), _
Array ("Kadabra", "064", 80, 232, 138, "Alakazam"), _
Array ("Alakazam", "065", 110, 271, 194, "Alakazam"), _
Array ("Machop", "066", 140, 137, 88, "Machamp"), _
Array ("Machoke", "067", 160, 177, 130, "Machamp"), _
Array ("Machamp", "068", 180, 234, 162, "Machamp"), _
Array ("Bellsprout", "069", 100, 139, 64, "Victreebel"), _
Array ("Weepinbell", "070", 130, 172, 95, "Victreebel"), _
Array ("Victreebel", "071", 160, 207, 138, "Victreebel"), _
Array ("Tentacool", "072", 80, 97, 182, "Tentacruel"), _
Array ("Tentacruel", "073", 160, 166, 237, "Tentacruel"), _
Array ("Geodude", "074", 80, 132, 163, "Golem"), _
Array ("Graveler", "075", 110, 164, 196, "Golem"), _
Array ("Golem", "076", 160, 211, 229, "Golem"), _
Array ("Ponyta", "077", 100, 170, 132, "Rapidash"), _
Array ("Rapidash", "078", 130, 207, 167, "Rapidash"), _
Array ("Slowpoke", "079", 180, 109, 109, "Slowbro"), _
Array ("Slowbro", "080", 190, 177, 194, "Slowbro"), _
Array ("Magnemite", "081", 50, 165, 128, "Magneton"), _
Array ("Magneton", "082", 100, 223, 182, "Magneton"), _
Array ("Farfetch'd", "083", 104, 124, 118, "Farfetch'd"), _
Array ("Doduo", "084", 70, 158, 88, "Dodrio"), _
Array ("Dodrio", "085", 120, 218, 145, "Dodrio"), _
Array ("Seel", "086", 130, 85, 128, "Dewgong"), _
Array ("Dewgong", "087", 180, 139, 184, "Dewgong"), _
Array ("Grimer", "088", 160, 135, 90, "Muk"), _
Array ("Muk", "089", 210, 190, 184, "Muk"), _
Array ("Shellder", "090", 60, 116, 168, "Cloyster"), _
Array ("Cloyster", "091", 100, 186, 323, "Cloyster"), _
Array ("Gastly", "092", 60, 186, 70, "Gengar"), _
Array ("Haunter", "093", 90, 223, 112, "Gengar"), _
Array ("Gengar", "094", 120, 261, 156, "Gengar"), _
Array ("Onix", "095", 70, 85, 288, "Onix"), _
Array ("Drowzee", "096", 120, 89, 158, "Hypno"), _
Array ("Hypno", "097", 170, 144, 215, "Hypno"), _
Array ("Krabby", "098", 60, 181, 156, "Kingler"), _
Array ("Kingler", "099", 110, 240, 214, "Kingler"), _
Array ("Voltorb", "100", 80, 109, 114, "Electrode"), _
Array ("Electrode", "101", 120, 173, 179, "Electrode"), _
Array ("Exeggcute", "102", 120, 107, 140, "Exeggutor"), _
Array ("Exeggutor", "103", 190, 233, 158, "Exeggutor"), _
Array ("Cubone", "104", 100, 90, 165, "Marowak"), _
Array ("Marowak", "105", 120, 144, 200, "Marowak"), _
Array ("Hitmonlee", "106", 100, 224, 211, "Hitmonlee"), _
Array ("Hitmonchan", "107", 100, 193, 212, "Hitmonchan"), _
Array ("Lickitung", "108", 180, 108, 137, "Lickitung"), _
Array ("Koffing", "109", 80, 119, 164, "Weezing"), _
Array ("Weezing", "110", 130, 174, 221, "Weezing"), _
Array ("Rhyhorn", "111", 160, 140, 157, "Rhydon"), _
Array ("Rhydon", "112", 210, 222, 206, "Rhydon"), _
Array ("Chansey", "113", 500, 60, 176, "Chansey"), _
Array ("Tangela", "114", 130, 183, 205, "Tangela"), _
Array ("Kangaskhan", "115", 210, 181, 165, "Kangaskhan"), _
Array ("Horsea", "116", 60, 129, 125, "Seadra"), _
Array ("Seadra", "117", 110, 187, 182, "Seadra"), _
Array ("Goldeen", "118", 90, 123, 115, "Seaking"), _
Array ("Seaking", "119", 160, 175, 154, "Seaking"), _
Array ("Staryu", "120", 60, 137, 112, "Starmie"), _
Array ("Starmie", "121", 120, 210, 184, "Starmie"), _
Array ("Mr. Mime", "122", 80, 192, 233, "Mr. Mime"), _
Array ("Scyther", "123", 140, 218, 170, "Scyther"), _
Array ("Jynx", "124", 130, 223, 182, "Jynx"), _
Array ("Electabuzz", "125", 130, 198, 173, "Electabuzz"), _
Array ("Magmar", "126", 130, 206, 169, "Magmar"), _
Array ("Pinsir", "127", 130, 238, 197, "Pinsir"), _
Array ("Tauros", "128", 150, 198, 197, "Tauros"), _
Array ("Magikarp", "129", 40, 29, 102, "Gyarados"), _
Array ("Gyarados", "130", 190, 237, 197, "Gyarados"), _
Array ("Lapras", "131", 260, 186, 190, "Lapras"), _
Array ("Ditto", "132", 96, 91, 91, "Ditto"), _
Array ("Eevee", "133", 110, 104, 121, "Vaporeon"), _
Array ("Vaporeon", "134", 260, 205, 177, "Vaporeon"), _
Array ("Jolteon", "135", 130, 232, 201, "Jolteon"), _
Array ("Flareon", "136", 130, 246, 204, "Flareon"), _
Array ("Porygon", "137", 130, 153, 139, "Porygon"), _
Array ("Omanyte", "138", 70, 155, 174, "Omastar"), _
Array ("Omastar", "139", 140, 207, 227, "Omastar"), _
Array ("Kabuto", "140", 60, 148, 162, "Kabutops"), _
Array ("Kabutops", "141", 120, 220, 203, "Kabutops"), _
Array ("Aerodactyl", "142", 160, 221, 164, "Aerodactyl"), _
Array ("Snorlax", "143", 320, 190, 190, "Snorlax"), _
Array ("Articuno", "144", 180, 192, 249, "Articuno"), _
Array ("Zapdos", "145", 180, 253, 188, "Zapdos"), _
Array ("Moltres", "146", 180, 251, 184, "Moltres"), _
Array ("Dratini", "147", 82, 119, 94, "Dragonite"), _
Array ("Dragonair", "148", 122, 163, 138, "Dragonite"), _
Array ("Dragonite", "149", 182, 263, 201, "Dragonite"), _
Array ("Mewtwo", "150", 212, 330, 200, "Mewtwo"), _
Array ("Mew", "151", 200, 210, 209, "Mew"))
End Function
' fnGetCPMData: Returns the combat power multiplier table
Function fnGetCPMData As Variant
fnGetCPMData = Array( _
-1, _
9.4E-02, _
0.16639787, _
0.21573247, _
0.25572005, _
0.29024988, _
0.3210876, _
0.34921268, _
0.37523559, _
0.39956728, _
0.42250001, _
0.44310755, _
0.46279839, _
0.48168495, _
0.49985844, _
0.51739395, _
0.53435433, _
0.55079269, _
0.56675452, _
0.58227891, _
0.59740001, _
0.61215729, _
0.62656713, _
0.64065295, _
0.65443563, _
0.667934, _
0.68116492, _
0.69414365, _
0.70688421, _
0.71939909, _
0.7317, _
0.73776948, _
0.74378943, _
0.74976104, _
0.75568551, _
0.76156384, _
0.76739717, _
0.7731865, _
0.77893275, _
0.78463697, _
0.78463697)
End Function
' fnGetStarDustData: Returns the star dust table
Function fnGetStarDustData As Variant
fnGetStarDustData = Array( _
-1, _
200, _
200, _
400, _
400, _
600, _
600, _
800, _
800, _
1000, _
1000, _
1300, _
1300, _
1600, _
1600, _
1900, _
1900, _
2200, _
2200, _
2500, _
2500, _
3000, _
3000, _
3500, _
3500, _
4000, _
4000, _
4500, _
4500, _
5000, _
5000, _
6000, _
6000, _
7000, _
7000, _
8000, _
8000, _
9000, _
9000, _
10000, _
10000)
End Function

162
_3Load.vb Normal file
View File

@ -0,0 +1,162 @@
' _3Load: The Pokémon Go IV data
' by imacat <imacat@mail.imacat.idv.tw>, 2016-11-28
Option Explicit
' subReadDataSheets: Reads the data sheets and shows the data as
' OpenOffice Basic arrays
Sub subReadDataSheets
Dim sOutput as String, mData As Variant
sOutput = "" _
& "' _2Data: The Pokémon Go IV data" & Chr (10) _
& "' by imacat <imacat@mail.imacat.idv.tw>, " & Format (Date (), "yyyy-mm-dd") & Chr (10) _
& Chr (10) _
& "Option Explicit"
sOutput = sOutput & Chr (10) & Chr (10) & fnReadBaseStatsSheet
sOutput = sOutput & Chr (10) & Chr (10) & fnReadCPMSheet
sOutput = sOutput & Chr (10) & Chr (10) & fnReadStarDustSheet
subShowBasicData (sOutput)
End Sub
' subShowBasicData: Shows the data table as Basic arrays
Sub subShowBasicData (sContent As String)
Dim oDialog As Object, oDialogModel As Object
Dim oEditModel As Object, oButtonModel As Object
' Creates a dialog
oDialogModel = CreateUnoService ( _
"com.sun.star.awt.UnoControlDialogModel")
oDialogModel.setPropertyValue ("PositionX", 100)
oDialogModel.setPropertyValue ("PositionY", 100)
oDialogModel.setPropertyValue ("Height", 130)
oDialogModel.setPropertyValue ("Width", 200)
oDialogModel.setPropertyValue ("Title", "Pokémon Go Data")
' Adds the content area
oEditModel = oDialogModel.createInstance ( _
"com.sun.star.awt.UnoControlEditModel")
oEditModel.setPropertyValue ("PositionX", 5)
oEditModel.setPropertyValue ("PositionY", 5)
oEditModel.setPropertyValue ("Height", 100)
oEditModel.setPropertyValue ("Width", 190)
oEditModel.setPropertyValue ("MultiLine", True)
oEditModel.setPropertyValue ("Text", sContent)
oEditModel.setPropertyValue ("ReadOnly", True)
oDialogModel.insertByName ("edtContent", oEditModel)
' Adds the OK button.
oButtonModel = oDialogModel.createInstance ( _
"com.sun.star.awt.UnoControlButtonModel")
oButtonModel.setPropertyValue ("PositionX", 70)
oButtonModel.setPropertyValue ("PositionY", 110)
oButtonModel.setPropertyValue ("Height", 15)
oButtonModel.setPropertyValue ("Width", 60)
oButtonModel.setPropertyValue ("PushButtonType", _
com.sun.star.awt.PushButtonType.OK)
oButtonModel.setPropertyValue ("DefaultButton", True)
oDialogModel.insertByName ("btnOK", oButtonModel)
' Adds the dialog model to the control and runs it.
oDialog = CreateUnoService ("com.sun.star.awt.UnoControlDialog")
oDialog.setModel (oDialogModel)
oDialog.setVisible (True)
oDialog.execute
End Sub
' fnReadBaseStatsSheet: Reads the base stats sheet.
Function fnReadBaseStatsSheet As String
Dim oSheet As Object, oRange As Object, mData As Variant
Dim nI As Integer, sOutput As String
Dim nJ As Integer, sEvolveInto As String
oSheet = ThisComponent.getSheets.getByName ("basestat")
oRange = oSheet.getCellRangeByName ("BaseStats")
mData = oRange.getDataArray
sOutput = "" _
& "' fnGetBaseStatsData: Returns the base stats table" & Chr (10) _
& "Function fnGetBaseStatsData As Variant" & Chr (10) _
& Chr (9) & "fnGetBaseStatsData = Array( _" & Chr (10)
For nI = 1 To UBound (mData) - 1
For nJ = 9 To 7 Step -1
If mData (nI) (nJ) <> "" Then
sEvolveInto = mData (nI) (nJ)
nJ = 6
End If
Next nJ
sOutput = sOutput _
& Chr (9) & Chr (9) & "Array (""" & mData (nI) (0) _
& """, """ & mData (nI) (1) _
& """, " & mData (nI) (3) _
& ", " & mData (nI) (4) _
& ", " & mData (nI) (5) _
& ", """ & sEvolveInto & """), _" & Chr (10)
Next nI
nI = UBound (mData)
For nJ = 9 To 7 Step -1
If mData (nI) (nJ) <> "" Then
sEvolveInto = mData (nI) (nJ)
nJ = 6
End If
Next nJ
sOutput = sOutput _
& Chr (9) & Chr (9) & "Array (""" & mData (nI) (0) _
& """, """ & mData (nI) (1) _
& """, " & mData (nI) (3) _
& ", " & mData (nI) (4) _
& ", " & mData (nI) (5) _
& ", """ & sEvolveInto & """))" & Chr (10) _
& "End Function"
fnReadBaseStatsSheet = sOutput
End Function
' fnReadCPMSheet: Reads the combat power multiplier sheet.
Function fnReadCPMSheet As String
Dim oSheet As Object, oRange As Object, mData As Variant
Dim nI As Integer, sOutput As String
oSheet = ThisComponent.getSheets.getByName ("cpm")
oRange = oSheet.getCellRangeByName ("CPM")
mData = oRange.getDataArray
sOutput = "" _
& "' fnGetCPMData: Returns the combat power multiplier table" & Chr (10) _
& "Function fnGetCPMData As Variant" & Chr (10) _
& Chr (9) & "fnGetCPMData = Array( _" & Chr (10) _
& Chr (9) & Chr (9) & "-1, _" & Chr (10)
For nI = 1 To UBound (mData) - 2 Step 2
sOutput = sOutput _
& Chr (9) & Chr (9) & mData (nI) (1) & ", _" & Chr (10)
Next nI
nI = UBound (mData) - 2
sOutput = sOutput _
& Chr (9) & Chr (9) & mData (nI) (1) & ")" & Chr (10) _
& "End Function"
fnReadCPMSheet = sOutput
End Function
' fnReadStarDustSheet: Reads the star dust sheet.
Function fnReadStarDustSheet As String
Dim oSheet As Object, oRange As Object, mData As Variant
Dim nI As Integer, sOutput As String
oSheet = ThisComponent.getSheets.getByName ("lvup")
oRange = oSheet.getCellRangeByName ("A2:D81")
mData = oRange.getDataArray
sOutput = "" _
& "' fnGetStarDustData: Returns the star dust table" & Chr (10) _
& "Function fnGetStarDustData As Variant" & Chr (10) _
& Chr (9) & "fnGetStarDustData = Array( _" & Chr (10) _
& Chr (9) & Chr (9) & "-1, _" & Chr (10)
For nI = 1 To UBound (mData) - 1 Step 2
sOutput = sOutput _
& Chr (9) & Chr (9) & mData (nI) (2) & ", _" & Chr (10)
Next nI
nI = UBound (mData)
sOutput = sOutput _
& Chr (9) & Chr (9) & mData (nI) (2) & ")" & Chr (10) _
& "End Function"
fnReadStarDustSheet = sOutput
End Function