| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package mapLeague
- import (
- "f1-game/internal/code"
- "f1-game/internal/enum"
- nameRemote "f1-game/internal/name/remote"
- "f1-game/internal/pb"
- "f1-game/nodes/map/internal/db"
- leagueQuest "f1-game/nodes/map/league/quest"
- cfacade "github.com/cherry-game/cherry/facade"
- )
- func (p *actorLeague) initQuest() {
- p.Remote().Register(nameRemote.MapLeague_QuestCheck, p.questCheck)
- p.Event().Registers(leagueQuest.Service().LeagueEventNames(), p.onLeagueEvent)
- p.Event().Registers(leagueQuest.Service().PlayerEventNames(), p.onPlayerEvent)
- }
- // 检测联盟任务是否已完成
- func (p *actorLeague) questCheck(req *pb.I32) int32 {
- questID := req.Value
- quest, found := p.leagueTable.Quests.GetQuest(questID)
- if !found {
- return code.QuestNotFound
- }
- // 判断任务是否完成
- if quest.Status == enum.QuestStatus_Running {
- return code.QuestNotFinished
- }
- return code.OK
- }
- func (p *actorLeague) onLeagueEvent(e cfacade.IEventData) {
- leagueID := e.UniqueID()
- if leagueID <= 0 {
- return
- }
- // 不是同联盟不执行
- if e.UniqueID() != p.leagueID {
- return
- }
- leagueQuest.Service().DoEvent(p.leagueID, p.leagueTable, e)
- }
- func (p *actorLeague) onPlayerEvent(e cfacade.IEventData) {
- playerID := e.UniqueID()
- if playerID <= 0 {
- return
- }
- leagueMemberTable, found := db.GetMapLeagueMemberTable(p.leagueID)
- if !found {
- p.Warn("[onPlayerEvent] league member table not found. leagueID:%d, playerID:%d", p.leagueID, playerID)
- return
- }
- // 不是该联盟成员 跳过
- if found := leagueMemberTable.CheckMemberExist(playerID); !found {
- return
- }
- leagueQuest.Service().DoEvent(p.leagueID, p.leagueTable, e)
- }
|