| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package player
- import (
- "f1-game/internal/code"
- "f1-game/internal/data"
- nameLocal "f1-game/internal/name/local"
- "f1-game/internal/pb"
- "f1-game/nodes/game/player/asset"
- ao "f1-game/nodes/game/player/asset/origin"
- cproto "github.com/cherry-game/cherry/net/proto"
- )
- func (p *actorPlayer) initMiniGame() {
- p.Local().Register(nameLocal.Player_MiniGameProgress, p.miniGameProgress)
- p.Local().Register(nameLocal.Player_MiniGameSettle, p.miniGameSettle)
- }
- // 获取小游戏进度
- func (p *actorPlayer) miniGameProgress(session *cproto.Session, req *pb.I32) {
- playerTable := p.PlayerTable()
- if _, found := data.MiniGame.GetByGameIDLevelID(req.Value, 1); !found {
- p.ResponseCode(session, code.ConfigNotFound_MiniGameLevel)
- return
- }
- if playerTable.MiniGame.GameID != 0 && playerTable.MiniGame.GameID != req.Value {
- p.ResponseCode(session, code.MiniGameGameIDError)
- return
- }
- rsp := &pb.I32{
- Value: playerTable.MiniGame.LevelId,
- }
- p.Response(session, rsp)
- }
- // 小游戏结算
- func (p *actorPlayer) miniGameSettle(session *cproto.Session, req *pb.I64I64I32) {
- var (
- playerTable = p.PlayerTable()
- chapterTable = p.ChapterTable()
- )
- // 失败不用做任何处理
- if req.Key3 == 0 {
- rsp := &pb.MiniGameSettle{
- LevelID: playerTable.MiniGame.LevelId,
- }
- p.Response(session, rsp)
- }
- if playerTable.MiniGame.GameID != 0 && playerTable.MiniGame.GameID != int32(req.Key1) {
- p.ResponseCode(session, code.MiniGameGameIDError)
- return
- }
- if playerTable.MiniGame.LevelId == 0 {
- // 第一关
- if int32(req.Key2) != 1 {
- p.ResponseCode(session, code.MiniGameLevelIDError)
- return
- }
- } else {
- currLevelRow, found := data.MiniGame.GetByGameIDLevelID(int32(req.Key1), playerTable.MiniGame.LevelId)
- if !found {
- p.ResponseCode(session, code.ConfigNotFound_MiniGameLevel)
- return
- }
- // 已通关所有关卡
- if currLevelRow.NextLevelID == 0 {
- p.ResponseCode(session, code.MiniGameLevelCleared)
- return
- }
- // 关卡id错误
- if currLevelRow.NextLevelID != int32(req.Key2) {
- p.ResponseCode(session, code.MiniGameLevelIDError)
- return
- }
- }
- nextLevelRow, found := data.MiniGame.GetByGameIDLevelID(int32(req.Key1), int32(req.Key2))
- if !found {
- p.ResponseCode(session, code.ConfigNotFound_MiniGameLevel)
- return
- }
- // 探险解锁关卡前置条件
- if !chapterTable.Chapter.IsLevelUnlocked(nextLevelRow.ChapterUnlockLevelID) {
- p.ResponseCode(session, code.MiniGameChapterUnLock)
- return
- }
- playerTable.MiniGame.GameID = int32(req.Key1)
- playerTable.MiniGame.LevelId = int32(req.Key2)
- playerTable.Save2Queue()
- rsp := &pb.MiniGameSettle{
- LevelID: playerTable.MiniGame.LevelId,
- }
- if !nextLevelRow.Reward.IsEmpty() {
- _, errCode := asset.Service().Adds(p.playerID, nextLevelRow.Reward, ao.MiniGameReward, false)
- if code.IsFail(errCode) {
- p.ResponseCode(session, errCode)
- return
- }
- assertListProto := nextLevelRow.Reward.ToAssetListProto()
- rsp.Rewards = &assertListProto
- }
- p.Response(session, rsp)
- }
|