From 9b344d3753613c00407b6d07383c0c2e6c256d83 Mon Sep 17 00:00:00 2001 From: xinian Date: Sun, 1 Mar 2026 10:44:31 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E9=87=8D=E6=9E=84=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E7=83=AD=E5=BA=A6=E4=BF=A1=E6=81=AF=E5=B9=B6=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E5=9C=B0=E5=9B=BE=E6=8F=90=E7=A4=BA=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将地图热度信息从简单的计数器改为包含提示信息的结构体 添加矿物、BOSS、宠物和掉落等提示信息的收集功能 优化地图进入和离开时的计数逻辑 --- logic/service/space/hot.go | 29 +++++++++++++++++-- logic/service/space/in_out.go | 10 ++++--- logic/service/space/space.go | 15 ++++++++-- modules/config/controller/admin/map.go | 21 +++++++++----- modules/config/model/map_pit.go | 2 +- modules/config/service/map.go | 13 +++++---- modules/config/service/map_node.go | 15 ++++++++++ modules/config/service/map_pit.go | 15 ++++++++++ modules/config/service/talkconfig.go | 15 ++++++++++ modules/config/service/task.go | 1 + ...t.core.config.xml.EggsXMLInfo_xmlClass.bin | 10 ------- 11 files changed, 112 insertions(+), 34 deletions(-) delete mode 100644 public/config/72_com.robot.core.config.xml.EggsXMLInfo_xmlClass.bin diff --git a/logic/service/space/hot.go b/logic/service/space/hot.go index d12f21ae0..467868589 100644 --- a/logic/service/space/hot.go +++ b/logic/service/space/hot.go @@ -5,15 +5,40 @@ type MapHotInfo struct { MapID uint32 `json:"mapId"` // 地图ID Count int32 `struc:"uint32" json:"count"` // 地图里的人数 } +type MapTip struct { + Count int `struc:"uint32" json:"count"` // 地图里的人数 + TipInfoS map[uint32]*TipInfo `json:"tipInfoS"` +} -var maphot = make(map[uint32]*int32, 0) +type TipInfo struct { + Talk []uint32 `json:"talk"` //矿物 + Boss []uint32 `json:"boss"` //boss + Pet []uint32 `json:"pet"` //宠物 + Diao []uint32 `json:"diao"` //掉落 +} + +func (m *MapTip) GetCount(t int) int { + + switch { + case t < 0: + if m.Count > 0 { + m.Count -= t + } + case t > 0: + m.Count += t + } + + return m.Count +} + +var maphot = make(map[uint32]*MapTip, 0) func GetMapHot() []MapHotInfo { ret := make([]MapHotInfo, 0) for k, v := range maphot { ret = append(ret, MapHotInfo{ MapID: k, - Count: *v, + Count: int32(v.GetCount(0)), }) } diff --git a/logic/service/space/in_out.go b/logic/service/space/in_out.go index 81734fbd9..9c6ecc9cd 100644 --- a/logic/service/space/in_out.go +++ b/logic/service/space/in_out.go @@ -36,8 +36,9 @@ func (s *Space) LeaveMap(c common.PlayerI) { s.Broadcast(c, 2002, info) current, ok := maphot[s.Super] - if ok && *current > 0 { - atomic.AddInt32(maphot[s.Super], -1) + if ok { + current.GetCount(-1) + } if atomic.CompareAndSwapUint32(&s.Owner.UserID, c.GetInfo().UserID, 0) { @@ -57,9 +58,10 @@ func (s *Space) EnterMap(c common.PlayerI) { s.Broadcast(c, 2001, out) s.User.Store(c.GetInfo().UserID, c) s.UserInfo.Store(c.GetInfo().UserID, *out) - _, ok := maphot[s.Super] + curmaps, ok := maphot[s.Super] if ok { - atomic.AddInt32(maphot[s.Super], 1) + curmaps.GetCount(1) + //atomic.AddInt32(maphot[s.Super], 1) } } diff --git a/logic/service/space/space.go b/logic/service/space/space.go index 12bf94868..e4c37fd0a 100644 --- a/logic/service/space/space.go +++ b/logic/service/space/space.go @@ -80,10 +80,19 @@ func GetSpace(id uint32) *Space { _, ok := maphot[ret.Super] if !ok { - var t1 int32 - maphot[ret.Super] = &t1 - } + maphot[ret.Super] = &MapTip{} + maphot[ret.Super].TipInfoS = make(map[uint32]*TipInfo, 0) + } + _, ok = maphot[ret.Super].TipInfoS[ret.ID] + if !ok { + tips := &TipInfo{} + tips.Diao = service.NewMapService().GetData(ret.ID).DropItemIds + tips.Pet = service.NewMapPitService().GetDataALL(ret.ID) + tips.Talk = service.NewTalkConfigService().GetTip(ret.ID) + tips.Boss = service.NewMapNodeService().GetTip(ret.ID) + maphot[ret.Super].TipInfoS[ret.ID] = tips + } ret.Name = v.Name break } diff --git a/modules/config/controller/admin/map.go b/modules/config/controller/admin/map.go index 8b0a0965b..98dddd1e3 100644 --- a/modules/config/controller/admin/map.go +++ b/modules/config/controller/admin/map.go @@ -31,15 +31,20 @@ type TimeMapReq struct { func (this *MapController) TimeMap(ctx context.Context, req *TimeMapReq) (res *cool.BaseRes, err error) { res = &cool.BaseRes{} res.Data = service.NewMapService().GetTimeMap() + // re := service.NewMapService().GetTimeMap() + // for _, v := range re { + // v. + + // } return res, nil } -type MapTipReq struct { - g.Meta `path:"/maptip" method:"GET"` -} +// type MapTipReq struct { +// g.Meta `path:"/maptip" method:"GET"` +// } -func (this *MapController) MapTip(ctx context.Context, req *MapTipReq) (res *cool.BaseRes, err error) { - res = &cool.BaseRes{} - res.Data = service.NewMapService().GetTimeMap() - return res, nil -} +// func (this *MapController) MapTip(ctx context.Context, req *MapTipReq) (res *cool.BaseRes, err error) { +// res = &cool.BaseRes{} +// res.Data = service.NewMapService().GetTimeMap() +// return res, nil +// } diff --git a/modules/config/model/map_pit.go b/modules/config/model/map_pit.go index 0b7788fde..6d1ad40c4 100644 --- a/modules/config/model/map_pit.go +++ b/modules/config/model/map_pit.go @@ -30,7 +30,7 @@ type MapPit struct { // 复用通用基础配置(ID/创建时间/更新时间等) MapID int32 `gorm:"not null;index;comment:'所属地图ID'" json:"map_id" description:"地图ID"` - RefreshID []int `gorm:"type:int[];comment:'精灵ID列表'" json:"refresh_id"` + RefreshID []uint32 `gorm:"type:int[];comment:'精灵ID列表'" json:"refresh_id"` Pos []int `gorm:"type:int[];comment:'坑位位置'" json:"pos"` //最小等级 MinLevel int `gorm:"type:int;not null;default:1;comment:'最小等级'" json:"min_level"` diff --git a/modules/config/service/map.go b/modules/config/service/map.go index c6dbe6a58..b746a63ba 100644 --- a/modules/config/service/map.go +++ b/modules/config/service/map.go @@ -39,12 +39,13 @@ func (s *MapService) GetTimeMap() (ret []model.MapConfig) { return } -func (s *MapService) GetTimeTip() (ret []model.MapConfig) { - //cacheKey := strings.Join([]string{fmt.Sprintf("%d", p1), fmt.Sprintf("%d", p2)}, ":") - m := dbm_notenable(s.Model) - m.Where(`is_time_space`, 1).Scan(&ret) +// func (s *MapService) GetTimeTip() (ret []model.MapConfig) { +// //cacheKey := strings.Join([]string{fmt.Sprintf("%d", p1), fmt.Sprintf("%d", p2)}, ":") +// m := dbm_notenable(s.Model) - return +// m.Where(`is_time_space`, 1).Scan(&ret) -} +// return + +// } diff --git a/modules/config/service/map_node.go b/modules/config/service/map_node.go index 828f66458..abca36367 100644 --- a/modules/config/service/map_node.go +++ b/modules/config/service/map_node.go @@ -3,6 +3,8 @@ package service import ( "blazing/cool" "blazing/modules/config/model" + + "github.com/samber/lo" ) type MapNodeService struct { @@ -44,3 +46,16 @@ func (s *MapNodeService) GetDataNode(mapid, node uint32) *model.MapNode { return pet } +func (s *MapNodeService) GetTip(mapid uint32) []uint32 { + + var pet []model.MapNode //一个特性应该是唯一的,但是我们要获取默认随机特性 + dbm_enable(s.Model).Where("map_id", mapid).Scan(&pet) + var ret []uint32 + for _, v := range pet { + ret = append(ret, v.TriggerID) + + } + + return lo.Union(ret) + +} diff --git a/modules/config/service/map_pit.go b/modules/config/service/map_pit.go index 0a68fb23a..55b6402c2 100644 --- a/modules/config/service/map_pit.go +++ b/modules/config/service/map_pit.go @@ -3,6 +3,8 @@ package service import ( "blazing/cool" "blazing/modules/config/model" + + "github.com/samber/lo" ) type MapPitService struct { @@ -28,3 +30,16 @@ func (s *MapPitService) GetData(mapid, pos uint32) []model.MapPit { return pet } +func (s *MapPitService) GetDataALL(mapid uint32) []uint32 { + + var pet []model.MapPit //一个特性应该是唯一的,但是我们要获取默认随机特性 + dbm_enable(s.Model).Where("map_id", mapid).Scan(&pet) + var ret []uint32 + for _, v := range pet { + + ret = append(ret, v.RefreshID...) + } + + return lo.Union(ret) + +} diff --git a/modules/config/service/talkconfig.go b/modules/config/service/talkconfig.go index 45cc71adb..9812b39c9 100644 --- a/modules/config/service/talkconfig.go +++ b/modules/config/service/talkconfig.go @@ -3,6 +3,8 @@ package service import ( "blazing/cool" "blazing/modules/config/model" + + "github.com/samber/lo" ) type TalkConfigService struct { @@ -25,3 +27,16 @@ func (s *TalkConfigService) GetCache(flag int) model.MineralCollectionConfig { return config } + +func (s *TalkConfigService) GetTip(mapid uint32) []uint32 { + var item []model.TaskConfig + dbm_enable(s.Model).Where("map_id", mapid).Scan(&item) + var res []uint32 + for _, v := range item { + res = append(res, v.ItemRewardIds...) + + } + + return lo.Union(res) + +} diff --git a/modules/config/service/task.go b/modules/config/service/task.go index 2ff1b5b83..aee82d4ae 100644 --- a/modules/config/service/task.go +++ b/modules/config/service/task.go @@ -57,3 +57,4 @@ func (s *TaskService) IsAcceptable(taskid uint32) (out *model.TaskConfig) { return } + \ No newline at end of file diff --git a/public/config/72_com.robot.core.config.xml.EggsXMLInfo_xmlClass.bin b/public/config/72_com.robot.core.config.xml.EggsXMLInfo_xmlClass.bin deleted file mode 100644 index d93bab56f..000000000 --- a/public/config/72_com.robot.core.config.xml.EggsXMLInfo_xmlClass.bin +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - -