diff --git a/logic/controller/fight_boss.go b/logic/controller/fight_boss.go index f41562a94..f3b82afc7 100644 --- a/logic/controller/fight_boss.go +++ b/logic/controller/fight_boss.go @@ -102,7 +102,12 @@ func (h Controller) PlayerFightBoss(data *fight.ChallengeBossInboundInfo, c *pla Mode: info.BattleMode.MULTI_MODE, } ai := player.NewAI_player(moinfo) + //给予打过一次的奖励 + c.Done.SPT(c.Info.MapID, data.BossId, 1, func() { + + }) fight.NewFight(c, ai, func(foi *info.FightOverInfo) { + c.Done.Done(model.MilestoneMode.BOSS, data.BossId) }) diff --git a/logic/service/player/done.go b/logic/service/player/done.go index a532749b0..5e730ebea 100644 --- a/logic/service/player/done.go +++ b/logic/service/player/done.go @@ -12,6 +12,14 @@ type Done struct { *bus.Topic[*model.MilestoneEX] } +func NewDone(P *Player) Done { + return Done{ + Player: P, + Topic: bus.NewTopic[*model.MilestoneEX](), + } + +} + // 注册地图BOSS完成事件 // MAPID 地图ID // BOSSID 地图BOSSID @@ -37,7 +45,7 @@ func (d *Done) SPT(mapid, bossid, count uint32, fn func()) { } // 分发事件 ,指定事件+1 并触发是否完成 -func (d *Done) Pub(Donetype model.EnumMilestone, id []uint32) { +func (d *Done) Done(Donetype model.EnumMilestone, id []uint32) { d.Service.Done.Exec(Donetype, id, func(t *model.MilestoneEX) bool { diff --git a/logic/service/player/new.go b/logic/service/player/new.go index 8b58b6658..82e111a56 100644 --- a/logic/service/player/new.go +++ b/logic/service/player/new.go @@ -14,7 +14,7 @@ func NewPlayer(opts ...PlayerOption) *Player { baseplayer: newbaseplayer(), } p.monsters = generateThreeUniqueNumbers() - + p.Done = NewDone(p) //发布订阅事件 p.StopChan = cool.Cron.ScheduleFunc(10*time.Second, func() { if p.Canmon && p.FightC == nil { //已经进入地图或者没在战斗中,就可以刷新怪 p.SpawnMonsters()