diff --git a/.ide/Dockerfile b/.ide/Dockerfile index b1750b38..e9308939 100644 --- a/.ide/Dockerfile +++ b/.ide/Dockerfile @@ -36,7 +36,10 @@ ENV GOPATH /root/go ENV PATH="${PATH}:${GOPATH}/bin" RUN go install -v golang.org/x/tools/gopls@latest - +RUN go install -v github.com/cweill/gotests/gotests@latest +RUN go install -v github.com/josharian/impl@latestD +RUN go install -v github.com/haya14busa/goplay/cmd/goplay@latest +RUN go install -v github.com/go-delve/delve/cmd/dlv@latest # install goreleaser RUN go install github.com/goreleaser/goreleaser/v2@latest diff --git a/logic/service/space/space.go b/logic/service/space/space.go index f47ddaf6..fb4bf4d4 100644 --- a/logic/service/space/space.go +++ b/logic/service/space/space.go @@ -4,7 +4,6 @@ import ( "blazing/common/data/xmlres" "blazing/common/utils" "blazing/cool" - "blazing/modules/config/service" "strconv" "strings" "sync/atomic" @@ -13,6 +12,7 @@ import ( "blazing/logic/service/common" "blazing/logic/service/space/info" + "blazing/modules/config/service" infomodel "blazing/modules/player/model" "github.com/gogf/gf/v2/util/grand" @@ -66,11 +66,70 @@ func GetSpace(id uint32) *Space { return planet } ret := NewSpace() + ret.ID = id + defer ret.init() - if id < 10000 { //说明是玩家地图GetSpace + planetmap.Store(id, ret) + return ret +} + +var planetmap = csmap.New[uint32, *Space]() + +func ParseCoordinateString(s string) []infomodel.Pos { + // 存储解析后的坐标 + var points []infomodel.Pos + + // 空字符串处理 + if strings.TrimSpace(s) == "" { + return points + } + + // 第一步:按竖线分割成单个坐标字符串 + coordStrs := strings.Split(s, "|") + for _, coordStr := range coordStrs { + // 去除首尾空格(兼容可能的格式不规范) + coordStr = strings.TrimSpace(coordStr) + if coordStr == "" { + return nil + } + + // 第二步:按逗号分割X、Y值 + xy := strings.Split(coordStr, ",") + if len(xy) != 2 { + return nil + } + + // 第三步:转换为整数 + xStr := strings.TrimSpace(xy[0]) + yStr := strings.TrimSpace(xy[1]) + + x, err := strconv.Atoi(xStr) + if err != nil { + return nil + } + + y, err := strconv.Atoi(yStr) + if err != nil { + return nil + } + + // 添加到切片 + points = append(points, infomodel.Pos{X: uint32(x), Y: uint32(y)}) + } + + return points +} +func (t *Space) Next(time.Time) time.Time { + + return time.Now().Add(grand.D(6*time.Second, 30*time.Second)) + +} +func (ret *Space) init() { + + if ret.ID < 10000 { //说明是玩家地图GetSpace for _, v := range xmlres.MapConfig.Maps { - if v.ID == int(id) { //找到这个地图 + if v.ID == int(ret.ID) { //找到这个地图 ret.Super = uint32(v.Super) if ret.Super == 0 { @@ -139,60 +198,6 @@ func GetSpace(id uint32) *Space { } - planetmap.Store(id, ret) - return ret -} - -var planetmap = csmap.New[uint32, *Space]() - -func ParseCoordinateString(s string) []infomodel.Pos { - // 存储解析后的坐标 - var points []infomodel.Pos - - // 空字符串处理 - if strings.TrimSpace(s) == "" { - return points - } - - // 第一步:按竖线分割成单个坐标字符串 - coordStrs := strings.Split(s, "|") - for _, coordStr := range coordStrs { - // 去除首尾空格(兼容可能的格式不规范) - coordStr = strings.TrimSpace(coordStr) - if coordStr == "" { - return nil - } - - // 第二步:按逗号分割X、Y值 - xy := strings.Split(coordStr, ",") - if len(xy) != 2 { - return nil - } - - // 第三步:转换为整数 - xStr := strings.TrimSpace(xy[0]) - yStr := strings.TrimSpace(xy[1]) - - x, err := strconv.Atoi(xStr) - if err != nil { - return nil - } - - y, err := strconv.Atoi(yStr) - if err != nil { - return nil - } - - // 添加到切片 - points = append(points, infomodel.Pos{X: uint32(x), Y: uint32(y)}) - } - - return points -} -func (t *Space) Next(time.Time) time.Time { - - return time.Now().Add(grand.D(6*time.Second, 30*time.Second)) - } func (ret *Space) GenBoss() {