game_sync/robot/base/randrobot.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 "深圳"
}