| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- package battle
- import (
- capp "f1-game/internal/cherry_app"
- "f1-game/internal/component/redis"
- "f1-game/internal/enum"
- "f1-game/internal/event"
- "f1-game/internal/facade"
- nameRedis "f1-game/internal/name/redis"
- nameRoute "f1-game/internal/name/route"
- "f1-game/internal/pb"
- "f1-game/internal/sessions"
- mapCall "f1-game/nodes/map/internal/call"
- "f1-game/nodes/map/internal/db"
- dbBattleReport "f1-game/nodes/map/internal/db/data/battle_report"
- cherryNUID "github.com/cherry-game/cherry/extend/nuid"
- ctime "github.com/cherry-game/cherry/extend/time"
- )
- func Service() *service {
- return &service{}
- }
- type service struct {
- facade.PlayerServiceBase[*db.MapPlayerTable]
- }
- // 增加战报组
- func (p *service) AddReport(playerID int64, reportGroup *pb.ReportGroup) {
- if len(reportGroup.List) < 1 {
- return
- }
- // 战报放入redis
- redis.Game.AddReports(reportGroup.GroupID, reportGroup.List...)
- // 添加个人战报记录
- mapPlayerReportTable := db.GetMapPlayerReportTable(playerID)
- dbBattleReport.AddReportGroup(&mapPlayerReportTable.BattleReport.Groups, reportGroup.GroupID, enum.ReportCategory(reportGroup.Category), reportGroup.List[0].Time)
- mapPlayerReportTable.Save2Queue()
- // 通知客户端
- sessions.PushPlayer(playerID, nameRoute.PushMapPlayer_ReportNew, reportGroup)
- playerTable := db.GetMapPlayerTable(playerID)
- if playerTable != nil && playerTable.LeagueID > 0 && !enum.IsDurabilityBattle(enum.TileBattleType(reportGroup.List[0].BattleType)) {
- // 添加联盟战报
- mapCall.League.BattleReportAdd(playerTable.LeagueID, reportGroup)
- }
- // 发送战斗结果事件
- capp.PostEvent(event.NewBattleResult(playerID, reportGroup))
- }
- // 构建侦察战报
- // result 0成功 1
- func (p *service) BuildScoutReportGroup(attackerID, defenderID, attackerLeagueID int64,
- attackerName, defenderName string, point *pb.Point, rewards *pb.AssetList, result int32) *pb.ReportGroup {
- // 战报组
- reportGroup := &pb.ReportGroup{
- GroupID: cherryNUID.Next(),
- Category: int32(enum.ReportCategory_Scout),
- }
- // 战报
- report := &pb.Report{
- ReportID: cherryNUID.Next(),
- Attacker: p.buildBattleReportTeam(attackerID, attackerName, attackerLeagueID),
- Defender: p.buildBattleReportTeam(defenderID, defenderName, 0),
- Point: point,
- ReportResult: &pb.ReportResult{
- Rewards: rewards,
- },
- // TODO 侦察原因暂时放这里
- Result: result,
- Time: ctime.Now().ToMillisecond(),
- }
- reportGroup.List = append(reportGroup.List, report)
- return reportGroup
- }
- func (p *service) buildBattleReportTeam(playerID int64, playerName string, leagueID int64) *pb.BattleReportTeam {
- var leagueName string
- if leagueID > 0 {
- playerData := redis.Game.GetPlayerData(playerID, nameRedis.PlayerLeagueFields...)
- if playerData != nil {
- leagueName = playerData.LeagueName
- }
- }
- return &pb.BattleReportTeam{
- PlayerID: playerID,
- PlayerName: playerName,
- LeagueID: leagueID,
- LeagueName: leagueName,
- }
- }
|