142 lines
4.4 KiB
Go
142 lines
4.4 KiB
Go
package gameserver
|
|
|
|
import (
|
|
"fmt"
|
|
"slices"
|
|
|
|
"gac-hkrpg-go/internal/common"
|
|
pb "gac-hkrpg-go/protocol/proto"
|
|
)
|
|
|
|
func init() {
|
|
cwHandle("GridFightPermanentTalentEnable", func(s *Session, req *pb.GridFightPermanentTalentEnableCsReq, rsp *pb.GridFightPermanentTalentEnableScRsp) error {
|
|
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_PARAM_NOT_MATCH)
|
|
if req == nil || req.CKHCLKOALKE == 0 {
|
|
return nil
|
|
}
|
|
catalog, err := common.LoadCurrencyWarsCatalog()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
data, revision, err := readCurrencyWarsData(catalog)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if data == nil {
|
|
data, err = newCurrencyWarsData(catalog)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
s.currencyWarsRevision = revision
|
|
if data.LFLCDNGALME == nil {
|
|
data.LFLCDNGALME = &pb.CLEDCMIOIPF{}
|
|
}
|
|
if data.LFLCDNGALME.PKELAIPIHMF == nil {
|
|
data.LFLCDNGALME.PKELAIPIHMF = &pb.CKPOBLIFMGN{}
|
|
}
|
|
if data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC == nil {
|
|
data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC = &pb.FMNKKAMOHEE{}
|
|
}
|
|
list := &data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC.BDGMNPIJDDL
|
|
if !slices.Contains(*list, req.CKHCLKOALKE) {
|
|
*list = append(*list, req.CKHCLKOALKE)
|
|
}
|
|
if err = s.saveCurrencyWarsData(data, catalog); err != nil {
|
|
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS)
|
|
return nil
|
|
}
|
|
rsp.CKHCLKOALKE = req.CKHCLKOALKE
|
|
rsp.Retcode = 0
|
|
PacketLog(fmt.Sprintf("CW_PERMANENT_TALENT_ENABLE node=%d total=%d", req.CKHCLKOALKE, len(*list)))
|
|
return nil
|
|
})
|
|
|
|
cwHandle("GridFightSeasonTalentEnable", func(s *Session, req *pb.GridFightSeasonTalentEnableCsReq, rsp *pb.GridFightSeasonTalentEnableScRsp) error {
|
|
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_PARAM_NOT_MATCH)
|
|
if req == nil || req.CKHCLKOALKE == 0 {
|
|
return nil
|
|
}
|
|
catalog, err := common.LoadCurrencyWarsCatalog()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
data, revision, err := readCurrencyWarsData(catalog)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
if data == nil {
|
|
data, err = newCurrencyWarsData(catalog)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
s.currencyWarsRevision = revision
|
|
if data.LFLCDNGALME == nil {
|
|
data.LFLCDNGALME = &pb.CLEDCMIOIPF{}
|
|
}
|
|
if data.LFLCDNGALME.HFPEJIDDDJG == nil {
|
|
data.LFLCDNGALME.HFPEJIDDDJG = &pb.AMEEHIIPMFP{}
|
|
}
|
|
if data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC == nil {
|
|
data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC = &pb.FMNKKAMOHEE{}
|
|
}
|
|
list := &data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC.BDGMNPIJDDL
|
|
if !slices.Contains(*list, req.CKHCLKOALKE) {
|
|
*list = append(*list, req.CKHCLKOALKE)
|
|
}
|
|
if err = s.saveCurrencyWarsData(data, catalog); err != nil {
|
|
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS)
|
|
return nil
|
|
}
|
|
rsp.CKHCLKOALKE = req.CKHCLKOALKE
|
|
rsp.Retcode = 0
|
|
PacketLog(fmt.Sprintf("CW_SEASON_TALENT_ENABLE node=%d total=%d", req.CKHCLKOALKE, len(*list)))
|
|
return nil
|
|
})
|
|
|
|
cwHandle("GridFightPermanentTalentReset", func(s *Session, _ *pb.GridFightPermanentTalentResetCsReq, rsp *pb.GridFightPermanentTalentResetScRsp) error {
|
|
catalog, err := common.LoadCurrencyWarsCatalog()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
data, revision, err := readCurrencyWarsData(catalog)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.currencyWarsRevision = revision
|
|
if data != nil && data.LFLCDNGALME != nil && data.LFLCDNGALME.PKELAIPIHMF != nil && data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC != nil {
|
|
data.LFLCDNGALME.PKELAIPIHMF.MHFHLBHFIBC.BDGMNPIJDDL = nil
|
|
if err = s.saveCurrencyWarsData(data, catalog); err != nil {
|
|
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS)
|
|
return nil
|
|
}
|
|
}
|
|
rsp.Retcode = 0
|
|
PacketLog("CW_PERMANENT_TALENT_RESET completed")
|
|
return nil
|
|
})
|
|
|
|
cwHandle("GridFightSeasonTalentReset", func(s *Session, _ *pb.GridFightSeasonTalentResetCsReq, rsp *pb.GridFightSeasonTalentResetScRsp) error {
|
|
catalog, err := common.LoadCurrencyWarsCatalog()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
data, revision, err := readCurrencyWarsData(catalog)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
s.currencyWarsRevision = revision
|
|
if data != nil && data.LFLCDNGALME != nil && data.LFLCDNGALME.HFPEJIDDDJG != nil && data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC != nil {
|
|
data.LFLCDNGALME.HFPEJIDDDJG.MHFHLBHFIBC.BDGMNPIJDDL = nil
|
|
if err = s.saveCurrencyWarsData(data, catalog); err != nil {
|
|
rsp.Retcode = uint32(pb.Retcode_RET_GRID_FIGHT_CONF_MISS)
|
|
return nil
|
|
}
|
|
}
|
|
rsp.Retcode = 0
|
|
PacketLog("CW_SEASON_TALENT_RESET completed")
|
|
return nil
|
|
})
|
|
}
|