9
9
"io/ioutil"
10
10
"net/http"
11
11
"os"
12
- "strconv"
13
12
14
13
"github.com/golang/geo/r2"
15
14
"github.com/markus-wa/demoinfocs-golang/v2/pkg/demoinfocs/metadata"
@@ -60,6 +59,12 @@ func RedirectStdout(f func()) {
60
59
os .Stdout = old
61
60
}
62
61
62
+ type mapMetadata struct {
63
+ PosX float64 `json:"pos_x,string"`
64
+ PosY float64 `json:"pos_y,string"`
65
+ Scale float64 `json:"scale,string"`
66
+ }
67
+
63
68
// GetMapMetadata fetches metadata for a specific map version from
64
69
// `https://radar-overviews.csgo.saiko.tech/<map>/<crc>/info.json`.
65
70
// Panics if any error occurs.
@@ -71,32 +76,23 @@ func GetMapMetadata(name string, crc uint32) metadata.Map {
71
76
72
77
defer resp .Body .Close ()
73
78
74
- var data map [string ]interface {}
79
+ var data map [string ]mapMetadata
75
80
76
81
err = json .NewDecoder (resp .Body ).Decode (& data )
77
82
checkError (err )
78
83
79
- mapInfo , ok := data [name ].( map [ string ] interface {})
84
+ mapInfo , ok := data [name ]
80
85
if ! ok {
81
86
panic (fmt .Sprintf ("failed to get map info.json entry for %q" , name ))
82
87
}
83
88
84
- x , err := strconv .ParseFloat (mapInfo ["pos_x" ].(string ), 64 )
85
- checkError (err )
86
-
87
- y , err := strconv .ParseFloat (mapInfo ["pos_y" ].(string ), 64 )
88
- checkError (err )
89
-
90
- scale , err := strconv .ParseFloat (mapInfo ["scale" ].(string ), 64 )
91
- checkError (err )
92
-
93
89
return metadata.Map {
94
90
Name : name ,
95
91
PZero : r2.Point {
96
- X : x ,
97
- Y : y ,
92
+ X : mapInfo . PosX ,
93
+ Y : mapInfo . PosY ,
98
94
},
99
- Scale : scale ,
95
+ Scale : mapInfo . Scale ,
100
96
}
101
97
}
102
98
0 commit comments