120 lines
2.4 KiB
Go
120 lines
2.4 KiB
Go
package base
|
|
|
|
import (
|
|
"encoding/json"
|
|
"fmt"
|
|
"math/rand"
|
|
"os"
|
|
)
|
|
|
|
const HEAD_URL = "http://cdnres.doudoubei.com/doubeires/head/"
|
|
|
|
type Zone struct {
|
|
Area string
|
|
Weight int
|
|
}
|
|
|
|
var Zones []Zone
|
|
var ZonesWeight int
|
|
|
|
type HeadPool struct {
|
|
Boy []string
|
|
Girl []string
|
|
}
|
|
|
|
var HEADIMG_POOL = &HeadPool{}
|
|
|
|
func init() {
|
|
buf, err := os.ReadFile("../data/icon_rob.json")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
err = json.Unmarshal(buf, HEADIMG_POOL)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
buf, err = os.ReadFile("../data/zone_rob.json")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
err = json.Unmarshal(buf, &Zones)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
for i := 0; i < len(Zones); i++ {
|
|
ZonesWeight += Zones[i].Weight
|
|
Zones[i].Weight = ZonesWeight
|
|
}
|
|
}
|
|
|
|
func CalcuHashCode(str string) int64 {
|
|
data := []byte(str)
|
|
cnt := len(data)
|
|
code := int64(0)
|
|
for i := 0; i < cnt; i++ {
|
|
code = 31*code + int64(data[i])
|
|
}
|
|
return code
|
|
}
|
|
|
|
func RandRobotInfo(accId string) (name, icon, sex, ip string) {
|
|
//ts := time.Now().Unix()
|
|
//code := CalcuHashCode(fmt.Sprintf("%v-%v", ts, accId))
|
|
//rand.Seed(code)
|
|
//nSex := 1 + rand.Int31n(2)
|
|
//sex = strconv.Itoa(int(nSex))
|
|
//var iconCnt int
|
|
//var iconPool []string
|
|
//switch nSex {
|
|
//case 1:
|
|
// namePool := srvdata.PBDB_NameBoyMgr.Datas.GetArr()
|
|
// namePoolLen := int32(len(namePool))
|
|
// if namePoolLen > 0 {
|
|
// name = namePool[rand.Int31n(namePoolLen)].GetName()
|
|
// }
|
|
// iconPool = HEADIMG_POOL.Boy
|
|
// iconCnt = len(iconPool)
|
|
//case 2:
|
|
// namePool := srvdata.PBDB_NameGirlMgr.Datas.GetArr()
|
|
// namePoolLen := int32(len(namePool))
|
|
// if namePoolLen > 0 {
|
|
// name = namePool[rand.Int31n(namePoolLen)].GetName()
|
|
// }
|
|
// iconPool = HEADIMG_POOL.Girl
|
|
// iconCnt = len(iconPool)
|
|
//}
|
|
//
|
|
//if iconCnt > 0 {
|
|
// icon = Config.HeadUrl + iconPool[rand.Int31n(int32(iconCnt))]
|
|
//}
|
|
ip = fmt.Sprintf("%v.%v.%v.%v", 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255), 1+rand.Int31n(255))
|
|
return
|
|
}
|
|
|
|
func RandLongitudeAndLatitude() (longitude, latitude int32) {
|
|
//中国范围经纬度
|
|
//113216260,34963671
|
|
//114103930,34592702
|
|
longitude = rand.Int31n(120212509-110241174) + 110241174
|
|
latitude = rand.Int31n(40960003-21558402) + 21558402
|
|
return longitude, latitude
|
|
}
|
|
|
|
func RandZone() string {
|
|
idx := -1
|
|
weight := rand.Intn(ZonesWeight)
|
|
for i := 0; i < len(Zones); i++ {
|
|
if Zones[i].Weight >= weight {
|
|
idx = i
|
|
break
|
|
}
|
|
}
|
|
if idx != -1 {
|
|
return Zones[idx].Area
|
|
}
|
|
return "深圳"
|
|
}
|