2233 lines
70 KiB
Go
2233 lines
70 KiB
Go
package game
|
|
|
|
import (
|
|
"fmt"
|
|
"server/GoUtil"
|
|
"server/MergeConst"
|
|
"server/cron"
|
|
"server/db"
|
|
"server/gamedata"
|
|
"server/msg"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"google.golang.org/protobuf/proto"
|
|
)
|
|
|
|
type PlayerActiveData struct {
|
|
*PlayerData
|
|
|
|
WeekCronID cron.EntryID
|
|
Mcron *cron.Cron
|
|
Type int32
|
|
MisDirty bool
|
|
MActType int
|
|
MActiveID int32
|
|
}
|
|
|
|
func (p *PlayerActiveData) DeleteOutlineActive(deleteList []int32, tableName string) {
|
|
sqlStr := "DELETE FROM " + tableName + " WHERE ActiveID = ?"
|
|
for i := 0; i < len(deleteList); i++ {
|
|
|
|
result, err := db.SqlDb.Exec(sqlStr, deleteList[i])
|
|
if err != nil {
|
|
fmt.Printf("exec failed, err:%v\n", err)
|
|
return
|
|
}
|
|
affectedRows, err := result.RowsAffected()
|
|
if err != nil {
|
|
fmt.Printf("get affected failed, err:%v\n", err)
|
|
return
|
|
}
|
|
fmt.Printf("delete data success, affected rows:%d\n", affectedRows)
|
|
}
|
|
}
|
|
|
|
func (p *PlayerActiveData) OpenNewLimitActivity(args []interface{}) {
|
|
if p.MActType != args[3].(int) {
|
|
return
|
|
}
|
|
p.MisDirty = true
|
|
}
|
|
|
|
func (p *PlayerActiveData) ClearData() bool {
|
|
GoUtil.RemoveEvent(MergeConst.OpenNewLimitActivity, p.OpenNewLimitActivity, p)
|
|
return true
|
|
}
|
|
func (p *PlayerActiveData) Reconnect(b bool) {
|
|
GoUtil.RemoveEvent(MergeConst.OpenNewLimitActivity, p.OpenNewLimitActivity, p)
|
|
GoUtil.RegisterEvent(MergeConst.OpenNewLimitActivity, p.OpenNewLimitActivity, p)
|
|
|
|
}
|
|
|
|
// ////////////////////////
|
|
type PlayerPassportData struct {
|
|
*PlayerActiveData
|
|
Data msg.ResLimitPassportDetail
|
|
MsqlStruck []db.SqlLimitPassportStruct
|
|
MActType int
|
|
}
|
|
|
|
func (p *PlayerPassportData) LoadDataFromDB(dwUin interface{}) bool {
|
|
|
|
sqlStr := "SELECT * FROM t_player_LimitPassport WHERE dwUin = ?"
|
|
p.MsqlStruck = []db.SqlLimitPassportStruct{}
|
|
|
|
if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil {
|
|
|
|
p.IsHaveDataDb = false
|
|
} else {
|
|
p.IsHaveDataDb = true
|
|
}
|
|
|
|
p.Data.DwUin = dwUin.(int32)
|
|
deleteList := []int{}
|
|
dlist := []int32{}
|
|
tempList := []db.SqlLimitPassportStruct{}
|
|
curtime := time.Now().Unix()
|
|
startIndex := 0
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) {
|
|
deleteList = append(deleteList, i)
|
|
}
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
curIndex := deleteList[i]
|
|
if curIndex == startIndex {
|
|
startIndex = startIndex + 1
|
|
continue
|
|
}
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...)
|
|
startIndex = curIndex + 1
|
|
}
|
|
if startIndex <= len(p.MsqlStruck)-1 {
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:]...)
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID)
|
|
}
|
|
if len(dlist) > 0 {
|
|
p.DeleteOutlineActive(dlist, "t_player_LimitPassport")
|
|
}
|
|
p.MsqlStruck = tempList
|
|
p.MActType = 1
|
|
p.Reconnect(false)
|
|
return true
|
|
}
|
|
|
|
func (p *PlayerPassportData) CloseNewLimitActivity(args []interface{}) {
|
|
record := args[0].(*gamedata.ActivityRecord)
|
|
|
|
if record.Type != p.MActType {
|
|
return
|
|
}
|
|
|
|
notify := &msg.NotifyLimitedTimeActiveEnd{}
|
|
notify.DwUin = p.M_Player.M_DwUin
|
|
notify.MActiveList = []*msg.LimitedTimeEndStruct{}
|
|
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if int(item.ConfigActId) == record.Id {
|
|
msg := &msg.LimitedTimeEndStruct{}
|
|
msg.ActiveID = item.ActiveID
|
|
msg.Type = int32(record.Type)
|
|
notify.MActiveList = append(notify.MActiveList, msg)
|
|
}
|
|
}
|
|
p.MisDirty = true
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data)
|
|
}
|
|
|
|
func (p *PlayerPassportData) Reconnect(b bool) {
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
p.PlayerActiveData.Reconnect(b)
|
|
}
|
|
|
|
func (p *PlayerPassportData) FindDbSt(activeId int32) *db.SqlLimitPassportStruct {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
if p.MsqlStruck[i].ActiveID == activeId {
|
|
return &p.MsqlStruck[i]
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *PlayerPassportData) ResLimitPassportDetail(buf []byte) {
|
|
req := &msg.ReqLimitPassportDetail{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResLimitPassportDetail{}
|
|
if st != nil {
|
|
|
|
res.ActiveID = st.ActiveID
|
|
res.CurFreeLv = st.CurFreeLv
|
|
res.CurPayLv = st.CurPayLv
|
|
res.CurSvrTime = int32(time.Now().Unix())
|
|
res.StartSvrTime = st.StartSvrTime
|
|
res.EndSvrTime = st.EndSvrTime
|
|
res.IsPay = st.IsPay
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
res.Star = st.Star
|
|
res.Status = st.Status
|
|
res.ResultCode = 0
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResLimitPassportDetail", data)
|
|
}
|
|
|
|
func (p *PlayerPassportData) ResGetLimitPassportReward(buf []byte) {
|
|
req := &msg.ReqGetLimitPassportReward{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResGetLimitPassportReward{}
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
res.FreeOrPay = req.FreeOrPay
|
|
res.ReqLv = req.ReqLv
|
|
res.ResultCode = 0
|
|
if req.FreeOrPay == 1 {
|
|
st.CurFreeLv = req.ReqLv
|
|
}
|
|
if req.FreeOrPay == 2 {
|
|
st.CurPayLv = req.ReqLv
|
|
}
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResGetLimitPassportReward", data)
|
|
}
|
|
|
|
func (p *PlayerPassportData) ResPayPassport(buf []byte) {
|
|
req := &msg.ReqPayPassport{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResPayPassport{}
|
|
if st != nil {
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
st.IsPay = 1
|
|
res.ResultCode = 0
|
|
res.ActiveID = req.ActiveID
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResPayPassport", data)
|
|
}
|
|
|
|
func (p *PlayerPassportData) ResActiveAddStar(buf []byte) {
|
|
req := &msg.ReqActiveAddStar{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResActiveAddStar{}
|
|
if st != nil {
|
|
st.Star = req.AddCnt + st.Star
|
|
res.AllCnt = st.Star
|
|
res.ActiveID = req.ActiveID
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResActiveAddStar", data)
|
|
}
|
|
|
|
func (p *PlayerPassportData) SaveDataFromDB(Key interface{}) bool {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
db.FormatAllMemUpdateDb(&item, "t_player_LimitPassport", "ActiveID")
|
|
}
|
|
return true
|
|
}
|
|
func (p *PlayerPassportData) ClearData() bool {
|
|
p.SaveDataFromDB("")
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
p.PlayerActiveData.ClearData()
|
|
|
|
return true
|
|
}
|
|
|
|
////////////////////////
|
|
|
|
type PlayerPromotionData struct {
|
|
*PlayerActiveData
|
|
Data msg.ResLimitPassportDetail
|
|
MsqlStruck []db.SqlLimitPromotionStruct
|
|
MActType int
|
|
}
|
|
|
|
func (p *PlayerPromotionData) LoadDataFromDB(dwUin interface{}) bool {
|
|
|
|
sqlStr := "SELECT * FROM t_player_LimitPromotion WHERE dwUin = ?"
|
|
p.MsqlStruck = []db.SqlLimitPromotionStruct{}
|
|
|
|
if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil {
|
|
|
|
p.IsHaveDataDb = false
|
|
} else {
|
|
p.IsHaveDataDb = true
|
|
}
|
|
|
|
p.Data.DwUin = dwUin.(int32)
|
|
deleteList := []int{}
|
|
dlist := []int32{}
|
|
tempList := []db.SqlLimitPromotionStruct{}
|
|
curtime := time.Now().Unix()
|
|
startIndex := 0
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) {
|
|
deleteList = append(deleteList, i)
|
|
}
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
curIndex := deleteList[i]
|
|
if curIndex == startIndex {
|
|
startIndex = startIndex + 1
|
|
continue
|
|
}
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...)
|
|
startIndex = curIndex + 1
|
|
}
|
|
if startIndex <= len(p.MsqlStruck)-1 {
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:]...)
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID)
|
|
}
|
|
if len(dlist) > 0 {
|
|
p.DeleteOutlineActive(dlist, "t_player_LimitPromotion")
|
|
}
|
|
p.MActType = 2
|
|
p.MsqlStruck = tempList
|
|
p.Reconnect(false)
|
|
return true
|
|
}
|
|
|
|
func (p *PlayerPromotionData) CloseNewLimitActivity(args []interface{}) {
|
|
record := args[0].(*gamedata.ActivityRecord)
|
|
|
|
if record.Type != p.MActType {
|
|
return
|
|
}
|
|
|
|
notify := &msg.NotifyLimitedTimeActiveEnd{}
|
|
notify.DwUin = p.M_Player.M_DwUin
|
|
notify.MActiveList = []*msg.LimitedTimeEndStruct{}
|
|
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if int(item.ConfigActId) == record.Id {
|
|
msg := &msg.LimitedTimeEndStruct{}
|
|
msg.ActiveID = item.ActiveID
|
|
msg.Type = int32(record.Type)
|
|
notify.MActiveList = append(notify.MActiveList, msg)
|
|
}
|
|
}
|
|
p.MisDirty = true
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data)
|
|
}
|
|
|
|
func (p *PlayerPromotionData) Reconnect(b bool) {
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
p.PlayerActiveData.Reconnect(b)
|
|
}
|
|
|
|
func (p *PlayerPromotionData) FindDbSt(activeId int32) *db.SqlLimitPromotionStruct {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
if p.MsqlStruck[i].ActiveID == activeId {
|
|
return &p.MsqlStruck[i]
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *PlayerPromotionData) ResPromotionDetail(buf []byte) {
|
|
req := &msg.ReqPromotionDetail{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResPromotionDetail{}
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.CurSvrTime = int32(time.Now().Unix())
|
|
res.StartSvrTime = st.StartSvrTime
|
|
res.EndSvrTime = st.EndSvrTime
|
|
res.IsPay = st.IsPay
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
res.ResultCode = 0
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResPromotionDetail", data)
|
|
}
|
|
|
|
func (p *PlayerPromotionData) ResBuyLimitPromotionReward(buf []byte) {
|
|
req := &msg.ReqBuyLimitPromotionReward{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResBuyLimitPromotionReward{}
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
st.IsPay = 1
|
|
res.ResultCode = 0
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResBuyLimitPromotionReward", data)
|
|
}
|
|
|
|
func (p *PlayerPromotionData) ClearData() bool {
|
|
p.SaveDataFromDB("")
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
p.PlayerActiveData.ClearData()
|
|
return true
|
|
}
|
|
|
|
func (p *PlayerPromotionData) SaveDataFromDB(Key interface{}) bool {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
db.FormatAllMemUpdateDb(&item, "t_player_LimitPromotion", "ActiveID")
|
|
}
|
|
return true
|
|
}
|
|
|
|
////////////////////////
|
|
|
|
////////////////////////
|
|
|
|
type Player7DayLoginData struct {
|
|
*PlayerActiveData
|
|
Data msg.ResLimitPassportDetail
|
|
MsqlStruck []db.SqlSevenDayLoginStruct
|
|
}
|
|
|
|
func (p *Player7DayLoginData) LoadDataFromDB(dwUin interface{}) bool {
|
|
|
|
sqlStr := "SELECT * FROM t_player_Limit7DayLogin WHERE dwUin = ?"
|
|
p.MsqlStruck = []db.SqlSevenDayLoginStruct{}
|
|
|
|
if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil {
|
|
|
|
p.IsHaveDataDb = false
|
|
} else {
|
|
p.IsHaveDataDb = true
|
|
}
|
|
|
|
p.Data.DwUin = dwUin.(int32)
|
|
deleteList := []int{}
|
|
dlist := []int32{}
|
|
tempList := []db.SqlSevenDayLoginStruct{}
|
|
curtime := time.Now().Unix()
|
|
startIndex := 0
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) {
|
|
deleteList = append(deleteList, i)
|
|
}
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
curIndex := deleteList[i]
|
|
if curIndex == startIndex {
|
|
startIndex = startIndex + 1
|
|
continue
|
|
}
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...)
|
|
startIndex = curIndex + 1
|
|
}
|
|
if startIndex <= len(p.MsqlStruck)-1 {
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:]...)
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID)
|
|
}
|
|
if len(dlist) > 0 {
|
|
p.DeleteOutlineActive(dlist, "t_player_Limit7DayLogin")
|
|
}
|
|
|
|
p.MsqlStruck = tempList
|
|
p.Reconnect(false)
|
|
return true
|
|
}
|
|
|
|
func (p *Player7DayLoginData) CloseNewLimitActivity(args []interface{}) {
|
|
record := args[0].(*gamedata.ActivityRecord)
|
|
|
|
if record.Type != p.MActType {
|
|
return
|
|
}
|
|
|
|
notify := &msg.NotifyLimitedTimeActiveEnd{}
|
|
notify.DwUin = p.M_Player.M_DwUin
|
|
notify.MActiveList = []*msg.LimitedTimeEndStruct{}
|
|
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if int(item.ConfigActId) == record.Id {
|
|
msg := &msg.LimitedTimeEndStruct{}
|
|
msg.ActiveID = item.ActiveID
|
|
msg.Type = int32(record.Type)
|
|
notify.MActiveList = append(notify.MActiveList, msg)
|
|
}
|
|
}
|
|
p.MisDirty = true
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data)
|
|
|
|
}
|
|
|
|
func (p *Player7DayLoginData) Reconnect(b bool) {
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew7Day, p)
|
|
GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew7Day, p)
|
|
|
|
p.PlayerActiveData.Reconnect(b)
|
|
}
|
|
|
|
func (p *Player7DayLoginData) NotifyDailyRenew7Day(param []interface{}) {
|
|
// p.Data.RenewTime = int32(param[0].(int64))
|
|
// for k := range p.Data.MEmitUnlockData {
|
|
// p.Data.MEmitUnlockData[k] = 0
|
|
// }
|
|
|
|
p.NotifyDailyRenew7Dayfunc()
|
|
}
|
|
|
|
func (p *Player7DayLoginData) FindDbSt(activeId int32) *db.SqlSevenDayLoginStruct {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
if p.MsqlStruck[i].ActiveID == activeId {
|
|
return &p.MsqlStruck[i]
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *Player7DayLoginData) Res7DayLoginDetail(buf []byte) {
|
|
req := &msg.Req7DayLoginDetail{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.Res7DayLoginDetail{}
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.CurSvrTime = int32(time.Now().Unix())
|
|
res.StartSvrTime = st.StartSvrTime
|
|
res.EndSvrTime = st.EndSvrTime
|
|
res.LastGetTime = st.LastGetTime
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
|
|
res.GetIndex = st.GetIndex
|
|
res.ResultCode = 0
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "Res7DayLoginDetail", data)
|
|
}
|
|
|
|
func (p *Player7DayLoginData) ResGet7DayLoginPack(buf []byte) {
|
|
req := &msg.ReqGet7DayLoginPack{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResGet7DayLoginPack{}
|
|
if st != nil {
|
|
t := time.Unix((int64)(st.LastGetTime), 0).Local()
|
|
nianchu1 := (int64)(st.LastGetTime) - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())
|
|
|
|
timeStamp := time.Now().Unix()
|
|
t1 := time.Unix(timeStamp, 0).Local()
|
|
nianchu2 := timeStamp - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second())
|
|
if nianchu1 == nianchu2 {
|
|
res.ResultCode = MergeConst.Protocol_Active_7Day_Rewarded
|
|
} else {
|
|
res.ActiveID = st.ActiveID
|
|
res.CurIndex = req.CurIndex + 1
|
|
res.LastGetTime = int32(timeStamp)
|
|
st.LastGetTime = res.LastGetTime
|
|
st.GetIndex = req.CurIndex + 1
|
|
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
res.ResultCode = 0
|
|
}
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResGet7DayLoginPack", data)
|
|
}
|
|
|
|
func (p *Player7DayLoginData) NotifyDailyRenew7Dayfunc() {
|
|
notify := &msg.NotifyDailyRenew7Day{}
|
|
|
|
notify.CurSvrTime = int32(time.Now().Unix())
|
|
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
|
|
if (&p.MsqlStruck[i]).EndSvrTime > notify.CurSvrTime {
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
notify.ActiveID = (&p.MsqlStruck[i]).ActiveID
|
|
G_getGameLogic().PackResInfo(agent, "NotifyDailyRenew7Day", data)
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
func (p *Player7DayLoginData) SaveDataFromDB(Key interface{}) bool {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
db.FormatAllMemUpdateDb(&item, "t_player_Limit7DayLogin", "ActiveID")
|
|
}
|
|
return true
|
|
}
|
|
func (p *Player7DayLoginData) ClearData() bool {
|
|
p.SaveDataFromDB("")
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew7Day, p)
|
|
p.PlayerActiveData.ClearData()
|
|
return true
|
|
}
|
|
|
|
////////////////////////
|
|
|
|
type PlayerInfinitePackData struct {
|
|
*PlayerActiveData
|
|
|
|
MsqlStruck []db.SqlLimitInfinitePackStruct
|
|
}
|
|
|
|
func (p *PlayerInfinitePackData) LoadDataFromDB(dwUin interface{}) bool {
|
|
|
|
sqlStr := "SELECT * FROM t_player_LimitInfinitePack WHERE dwUin = ?"
|
|
p.MsqlStruck = []db.SqlLimitInfinitePackStruct{}
|
|
|
|
if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil {
|
|
|
|
p.IsHaveDataDb = false
|
|
} else {
|
|
p.IsHaveDataDb = true
|
|
}
|
|
|
|
deleteList := []int{}
|
|
dlist := []int32{}
|
|
tempList := []db.SqlLimitInfinitePackStruct{}
|
|
curtime := time.Now().Unix()
|
|
startIndex := 0
|
|
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) {
|
|
deleteList = append(deleteList, i)
|
|
}
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
curIndex := deleteList[i]
|
|
if curIndex == startIndex {
|
|
startIndex = startIndex + 1
|
|
continue
|
|
}
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...)
|
|
startIndex = curIndex + 1
|
|
}
|
|
if startIndex <= len(p.MsqlStruck)-1 {
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:]...)
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID)
|
|
}
|
|
if len(dlist) > 0 {
|
|
p.DeleteOutlineActive(dlist, "t_player_LimitInfinitePack")
|
|
}
|
|
|
|
p.MsqlStruck = tempList
|
|
p.Reconnect(false)
|
|
return true
|
|
}
|
|
|
|
func (p *PlayerInfinitePackData) CloseNewLimitActivity(args []interface{}) {
|
|
record := args[0].(*gamedata.ActivityRecord)
|
|
|
|
if record.Type != p.MActType {
|
|
return
|
|
}
|
|
|
|
notify := &msg.NotifyLimitedTimeActiveEnd{}
|
|
notify.DwUin = p.M_Player.M_DwUin
|
|
notify.MActiveList = []*msg.LimitedTimeEndStruct{}
|
|
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if int(item.ConfigActId) == record.Id {
|
|
msg := &msg.LimitedTimeEndStruct{}
|
|
msg.ActiveID = item.ActiveID
|
|
msg.Type = int32(record.Type)
|
|
notify.MActiveList = append(notify.MActiveList, msg)
|
|
}
|
|
}
|
|
p.MisDirty = true
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data)
|
|
|
|
}
|
|
|
|
func (p *PlayerInfinitePackData) Reconnect(b bool) {
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
p.PlayerActiveData.Reconnect(b)
|
|
}
|
|
|
|
func (p *PlayerInfinitePackData) FindDbSt(activeId int32) *db.SqlLimitInfinitePackStruct {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
if p.MsqlStruck[i].ActiveID == activeId {
|
|
return &p.MsqlStruck[i]
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *PlayerInfinitePackData) ResInfinitePackDetail(buf []byte) {
|
|
req := &msg.ReqInfinitePackDetail{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResInfinitePackDetail{}
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.CurSvrTime = int32(time.Now().Unix())
|
|
res.StartSvrTime = st.StartSvrTime
|
|
res.EndSvrTime = st.EndSvrTime
|
|
res.CurGear = st.CurGear
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
res.ResultCode = 0
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResInfinitePackDetail", data)
|
|
}
|
|
|
|
func (p *PlayerInfinitePackData) ResBuyInfinitePack(buf []byte) {
|
|
req := &msg.ReqBuyInfinitePack{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResBuyInfinitePack{}
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
res.ResultCode = 0
|
|
st.CurGear = st.CurGear + 1
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResBuyInfinitePack", data)
|
|
}
|
|
|
|
func (p *PlayerInfinitePackData) SaveDataFromDB(Key interface{}) bool {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
db.FormatAllMemUpdateDb(&item, "t_player_LimitInfinitePack", "ActiveID")
|
|
}
|
|
return true
|
|
}
|
|
func (p *PlayerInfinitePackData) ClearData() bool {
|
|
p.SaveDataFromDB("")
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
p.PlayerActiveData.ClearData()
|
|
return true
|
|
}
|
|
|
|
// ////////////////////////
|
|
type PlayerCardCollectData struct {
|
|
*PlayerActiveData
|
|
// Data msg.ResLimitPassportDetail
|
|
MExchangeData msg.ResExchangeCardBoxData
|
|
MsqlStruck []db.SqlCardCollectStruct
|
|
MsqlExchangeStruck []db.SqlExchangeCardStruct
|
|
MActType int
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) LoadDataFromDB(dwUin interface{}) bool {
|
|
|
|
sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?"
|
|
p.MsqlStruck = []db.SqlCardCollectStruct{}
|
|
|
|
if err := db.SqlDb.Select(&p.MsqlStruck, sqlStr, dwUin.(int32)); err != nil {
|
|
|
|
p.IsHaveDataDb = false
|
|
} else {
|
|
p.IsHaveDataDb = true
|
|
}
|
|
|
|
// p.Data.DwUin = dwUin.(int32)
|
|
deleteList := []int{}
|
|
dlist := []int32{}
|
|
tempList := []db.SqlCardCollectStruct{}
|
|
curtime := time.Now().Unix()
|
|
startIndex := 0
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if item.StartSvrTime > int32(curtime) || item.EndSvrTime < int32(curtime) {
|
|
deleteList = append(deleteList, i)
|
|
}
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
curIndex := deleteList[i]
|
|
if curIndex == startIndex {
|
|
startIndex = startIndex + 1
|
|
continue
|
|
}
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:curIndex]...)
|
|
startIndex = curIndex + 1
|
|
}
|
|
if startIndex <= len(p.MsqlStruck)-1 {
|
|
tempList = append(tempList, p.MsqlStruck[startIndex:]...)
|
|
}
|
|
for i := 0; i < len(deleteList); i++ {
|
|
dlist = append(dlist, p.MsqlStruck[deleteList[i]].ActiveID)
|
|
}
|
|
if len(dlist) > 0 {
|
|
p.DeleteOutlineActive(dlist, "t_player_card_data")
|
|
}
|
|
|
|
timeStamp := (int64)(time.Now().Unix())
|
|
t := time.Unix(timeStamp, 0).Local()
|
|
zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())
|
|
for i := 0; i < len(tempList); i++ {
|
|
item := tempList[i]
|
|
if item.RenewSvrTime < int32(zero) {
|
|
tempList[i].RenewSvrTime = int32(zero)
|
|
tempList[i].RenewExchangeTime = 0
|
|
tempList[i].RenewRequestTime = 0
|
|
}
|
|
}
|
|
p.MsqlStruck = tempList
|
|
|
|
p.MActType = 5
|
|
p.Reconnect(false)
|
|
p.LoadExchangeCardData(dwUin.(int32))
|
|
return true
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) LoadExchangeCardData(dwUin int32) {
|
|
sqlStr := "SELECT * FROM t_Player_ExchangeCard_Box_Data WHERE SenderId = ? OR ReceiveId = ?"
|
|
p.MsqlExchangeStruck = []db.SqlExchangeCardStruct{}
|
|
p.MExchangeData = msg.ResExchangeCardBoxData{}
|
|
p.MExchangeData.ExchangeCardItems = []*msg.ExchangeCardItem{}
|
|
if err := db.SqlDb.Select(&p.MsqlExchangeStruck, sqlStr, dwUin, dwUin); err != nil {
|
|
|
|
} else {
|
|
|
|
}
|
|
|
|
deleteIDs := []int32{}
|
|
for i := 0; i < len(p.MsqlExchangeStruck); i++ {
|
|
item := p.MsqlExchangeStruck[i]
|
|
ExchangeCard := &msg.ExchangeCardItem{}
|
|
ExchangeCard.SenderId = item.SenderId
|
|
ExchangeCard.ReceiveId = item.ReceiveId
|
|
ExchangeCard.GroupId = item.GroupId
|
|
ExchangeCard.ApplicateStatus = item.ApplicateStatus
|
|
ExchangeCard.StartTime = item.StartTime
|
|
ExchangeCard.EventType = item.EventType
|
|
ExchangeCard.EventParam = item.EventParam
|
|
ExchangeCard.ConfigActId = item.ConfigActId
|
|
ExchangeCard.AutoId = item.AutoId
|
|
if !p.IsInCardActivty(item.ConfigActId) {
|
|
deleteIDs = append(deleteIDs, item.AutoId)
|
|
} else {
|
|
if ExchangeCard.EventType == 1 && ExchangeCard.ApplicateStatus == 2 && ExchangeCard.SenderId == dwUin {
|
|
deleteIDs = append(deleteIDs, item.AutoId)
|
|
continue
|
|
}
|
|
if ExchangeCard.EventType == 2 && ExchangeCard.ApplicateStatus == 4 && ExchangeCard.SenderId == dwUin {
|
|
deleteIDs = append(deleteIDs, item.AutoId)
|
|
continue
|
|
}
|
|
p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, ExchangeCard)
|
|
}
|
|
|
|
}
|
|
p.DeleteOutlineCardExchange(deleteIDs, "t_Player_ExchangeCard_Box_Data")
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) DeleteOutlineCardExchange(deleteList []int32, tableName string) {
|
|
sqlStr := "DELETE FROM " + tableName + " WHERE auto_id = ?"
|
|
for i := 0; i < len(deleteList); i++ {
|
|
|
|
result, err := db.SqlDb.Exec(sqlStr, deleteList[i])
|
|
if err != nil {
|
|
fmt.Printf("exec failed, err:%v\n", err)
|
|
return
|
|
}
|
|
affectedRows, err := result.RowsAffected()
|
|
if err != nil {
|
|
fmt.Printf("get affected failed, err:%v\n", err)
|
|
return
|
|
}
|
|
fmt.Printf("delete data success, affected rows:%d\n", affectedRows)
|
|
}
|
|
}
|
|
func (p *PlayerCardCollectData) IsInCardActivty(ConfigActId int32) bool {
|
|
isIn := true
|
|
activityCfg := gamedata.GetConfigByName("Activity")
|
|
for i := 0; i < len(G_GameLogicPtr.M_LimitActiveList); i++ {
|
|
id := G_GameLogicPtr.M_LimitActiveList[i]
|
|
record := activityCfg.Index(id).(*gamedata.ActivityRecord)
|
|
if record.Type == 5 && int32(id) != ConfigActId {
|
|
isIn = false
|
|
break
|
|
}
|
|
}
|
|
return isIn
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) GetCardRecord() *gamedata.ActivityRecord {
|
|
activityCfg := gamedata.GetConfigByName("Activity")
|
|
for i := 0; i < len(G_GameLogicPtr.M_LimitActiveList); i++ {
|
|
id := G_GameLogicPtr.M_LimitActiveList[i]
|
|
record := activityCfg.Index(id).(*gamedata.ActivityRecord)
|
|
if record.Type == 5 {
|
|
return record
|
|
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqGetDonateCard(buf []byte) {
|
|
req := &msg.ReqGetDonateCard{}
|
|
proto.Unmarshal(buf, req)
|
|
res := &msg.ResGetDonateCard{}
|
|
|
|
exchange := p.GetExchangeCardItem(req.MExchangeCardItem.AutoId)
|
|
if exchange != nil {
|
|
units := strings.Split(req.MExchangeCardItem.EventParam, "_")
|
|
cardId, _ := strconv.Atoi(units[0])
|
|
p.AddCard(&p.MsqlStruck[0], int32(cardId), 1, false)
|
|
p.DeleteExchangeCardItem(req.MExchangeCardItem.AutoId)
|
|
|
|
dbsql := db.SqlExchangeCardStruct{}
|
|
dbsql.ConfigActId = int32(p.GetCardRecord().Id)
|
|
dbsql.SenderId = req.MExchangeCardItem.SenderId
|
|
dbsql.ReceiveId = req.MExchangeCardItem.ReceiveId
|
|
dbsql.GroupId = req.MExchangeCardItem.GroupId
|
|
dbsql.ApplicateStatus = 2
|
|
dbsql.StartTime = req.MExchangeCardItem.StartTime
|
|
dbsql.EventType = 1
|
|
dbsql.EventParam = req.MExchangeCardItem.EventParam
|
|
dbsql.AutoId = req.MExchangeCardItem.AutoId
|
|
db.FormatAllMemUpdateDb(&dbsql, "t_Player_ExchangeCard_Box_Data", "auto_id")
|
|
|
|
res.MExchangeCardItem = &msg.ExchangeCardItem{}
|
|
res.MExchangeCardItem.SenderId = dbsql.SenderId
|
|
res.MExchangeCardItem.ReceiveId = dbsql.ReceiveId
|
|
res.MExchangeCardItem.GroupId = dbsql.GroupId
|
|
res.MExchangeCardItem.ApplicateStatus = dbsql.ApplicateStatus
|
|
res.MExchangeCardItem.StartTime = dbsql.StartTime
|
|
res.MExchangeCardItem.EventType = dbsql.EventType
|
|
res.MExchangeCardItem.EventParam = dbsql.EventParam
|
|
res.MExchangeCardItem.ConfigActId = dbsql.ConfigActId
|
|
res.MExchangeCardItem.AutoId = req.MExchangeCardItem.AutoId
|
|
|
|
player, ok := G_GameLogicPtr.M_Players[req.MExchangeCardItem.SenderId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyGetDonateCard(req.MExchangeCardItem)
|
|
}
|
|
}
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Exchange_Card_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResGetDonateCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqRefuseExchange(buf []byte) {
|
|
req := &msg.ReqRefuseExchange{}
|
|
proto.Unmarshal(buf, req)
|
|
res := &msg.ResRefuseExchange{}
|
|
|
|
exchange := p.GetExchangeCardItem(req.MExchangeCardItem.AutoId)
|
|
if exchange != nil {
|
|
res.MExchangeCardItem = req.MExchangeCardItem
|
|
if exchange.SenderId == p.M_Player.M_DwUin {
|
|
units := strings.Split(req.MExchangeCardItem.EventParam, "_")
|
|
cardId, _ := strconv.Atoi(units[0])
|
|
p.AddCard(&p.MsqlStruck[0], int32(cardId), 1, false)
|
|
timeStamp := (int64)(time.Now().Unix())
|
|
t := time.Unix(timeStamp, 0).Local()
|
|
zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())
|
|
|
|
timeStamp1 := (int64)(req.MExchangeCardItem.StartTime)
|
|
t1 := time.Unix(timeStamp1, 0).Local()
|
|
zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second())
|
|
|
|
if zero == zero1 {
|
|
|
|
p.MsqlStruck[0].RenewExchangeTime = p.MsqlStruck[0].RenewExchangeTime - 1
|
|
if p.MsqlStruck[0].RenewExchangeTime < 0 {
|
|
p.MsqlStruck[0].RenewExchangeTime = 0
|
|
}
|
|
p.SaveDataFromDB("")
|
|
}
|
|
|
|
EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 6, req.MExchangeCardItem.AutoId)
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI)
|
|
|
|
player, ok := G_GameLogicPtr.M_Players[req.MExchangeCardItem.ReceiveId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NOtifyReceiveRefuseExchange(req.MExchangeCardItem)
|
|
}
|
|
} else {
|
|
sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?"
|
|
MsqlStruck := db.SqlCardCollectStruct{}
|
|
units := strings.Split(req.MExchangeCardItem.EventParam, "_")
|
|
cardId, _ := strconv.Atoi(units[1])
|
|
err := db.SqlDb.Get(&MsqlStruck, sqlStr, req.MExchangeCardItem.ReceiveId)
|
|
if err != nil {
|
|
|
|
} else {
|
|
if MsqlStruck.CardInfo != "" {
|
|
units := strings.Split(MsqlStruck.CardInfo, ";")
|
|
|
|
for i := 0; i < len(units); i++ {
|
|
items := strings.Split(units[i], ",")
|
|
k, _ := strconv.Atoi(items[0])
|
|
cnt, _ := strconv.Atoi(items[1])
|
|
if k == int(cardId) {
|
|
cnt = cnt + 1
|
|
units[i] = items[0] + "," + strconv.Itoa(cnt)
|
|
break
|
|
}
|
|
}
|
|
MsqlStruck.CardInfo = strings.Join(units, ";")
|
|
}
|
|
db.FormatAllMemUpdateDb(&MsqlStruck, "t_player_card_data", "dwUin")
|
|
}
|
|
|
|
}
|
|
} else {
|
|
EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 8, req.MExchangeCardItem.AutoId)
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI)
|
|
|
|
player, ok := G_GameLogicPtr.M_Players[req.MExchangeCardItem.SenderId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NOtifyRefuseExchange(req.MExchangeCardItem)
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).DeleteExchangeCardItem(req.MExchangeCardItem.AutoId)
|
|
}
|
|
} else {
|
|
sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?"
|
|
MsqlStruck := db.SqlCardCollectStruct{}
|
|
units := strings.Split(req.MExchangeCardItem.EventParam, "_")
|
|
cardId, _ := strconv.Atoi(units[0])
|
|
err := db.SqlDb.Get(&MsqlStruck, sqlStr, req.MExchangeCardItem.SenderId)
|
|
if err != nil {
|
|
|
|
} else {
|
|
if MsqlStruck.CardInfo != "" {
|
|
units := strings.Split(MsqlStruck.CardInfo, ";")
|
|
|
|
for i := 0; i < len(units); i++ {
|
|
items := strings.Split(units[i], ",")
|
|
k, _ := strconv.Atoi(items[0])
|
|
cnt, _ := strconv.Atoi(items[1])
|
|
if k == int(cardId) {
|
|
cnt = cnt + 1
|
|
units[i] = items[0] + "," + strconv.Itoa(cnt)
|
|
break
|
|
}
|
|
}
|
|
MsqlStruck.CardInfo = strings.Join(units, ";")
|
|
}
|
|
|
|
}
|
|
|
|
timeStamp := (int64)(time.Now().Unix())
|
|
t := time.Unix(timeStamp, 0).Local()
|
|
zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())
|
|
|
|
timeStamp1 := (int64)(req.MExchangeCardItem.StartTime)
|
|
t1 := time.Unix(timeStamp1, 0).Local()
|
|
zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second())
|
|
|
|
if zero == zero1 && err == nil {
|
|
MsqlStruck.RenewExchangeTime -= 1
|
|
}
|
|
db.FormatAllMemUpdateDb(&MsqlStruck, "t_player_card_data", "dwUin")
|
|
}
|
|
}
|
|
res.RenewExchangeTime = p.MsqlStruck[0].RenewExchangeTime
|
|
p.DeleteExchangeCardItem(req.MExchangeCardItem.AutoId)
|
|
sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?"
|
|
db.SqlDb.Exec(sqlStr, req.MExchangeCardItem.AutoId)
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Exchange_Card_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResRefuseExchange", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NOtifyReceiveRefuseExchange(st *msg.ExchangeCardItem) {
|
|
units := strings.Split(st.EventParam, "_")
|
|
cardId, _ := strconv.Atoi(units[1])
|
|
p.AddCard(&p.MsqlStruck[0], int32(cardId), 1, false)
|
|
|
|
p.DeleteExchangeCardItem(st.AutoId)
|
|
p.SaveDataFromDB("")
|
|
|
|
notify := &msg.NOtifyRefuseExchange{}
|
|
notify.MExchangeCardItem = st
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NOtifyRefuseExchange", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NOtifyRefuseExchange(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NOtifyRefuseExchange{}
|
|
notify.MExchangeCardItem = st
|
|
|
|
units := strings.Split(st.EventParam, "_")
|
|
cardId, _ := strconv.Atoi(units[0])
|
|
p.AddCard(&p.MsqlStruck[0], int32(cardId), 1, false)
|
|
|
|
timeStamp := (int64)(time.Now().Unix())
|
|
t := time.Unix(timeStamp, 0).Local()
|
|
zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())
|
|
|
|
timeStamp1 := (int64)(st.StartTime)
|
|
t1 := time.Unix(timeStamp1, 0).Local()
|
|
zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second())
|
|
// p.DeleteExchangeCardItem(st.AutoId)
|
|
if zero == zero1 {
|
|
p.MsqlStruck[0].RenewExchangeTime = p.MsqlStruck[0].RenewExchangeTime - 1
|
|
|
|
if p.MsqlStruck[0].RenewExchangeTime < 0 {
|
|
p.MsqlStruck[0].RenewExchangeTime = 0
|
|
}
|
|
p.SaveDataFromDB("")
|
|
}
|
|
notify.RenewExchangeTime = p.MsqlStruck[0].RenewExchangeTime
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NOtifyRefuseExchange", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyGetDonateCard(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NotifyGetDonateCard{}
|
|
notify.MExchangeCardItem = st
|
|
|
|
p.DeleteExchangeCardItem(st.AutoId)
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyGetDonateCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) GenExchangeIncID() int32 {
|
|
dbsql := db.SqlExchangeCardReqIncStruct{}
|
|
dbsql.StartTime = int32(time.Now().Unix())
|
|
|
|
insertId, _ := db.FormatAllMemInsertDb(&dbsql, "t_Player_ExchangeCard_ReqInc")
|
|
return int32(insertId)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqRequestCard(buf []byte) {
|
|
req := &msg.ReqRequestCard{}
|
|
proto.Unmarshal(buf, req)
|
|
res := &msg.ResRequestCard{}
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res.ExchangeCardItems = []*msg.ExchangeCardItem{}
|
|
if st != nil {
|
|
if st.RenewRequestTime >= 2 {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardTime_NoEnough
|
|
} else {
|
|
GroupId := p.GenExchangeIncID()
|
|
st.RenewRequestTime = st.RenewRequestTime + 1
|
|
db.FormatAllMemUpdateDb(st, "t_player_card_data", "ActiveID")
|
|
for i := 0; i < len(req.ReceiverIds); i++ {
|
|
dbsql := db.SqlExchangeCardStruct{}
|
|
dbsql.ConfigActId = int32(p.GetCardRecord().Id)
|
|
dbsql.SenderId = req.SenderId
|
|
dbsql.ReceiveId = req.ReceiverIds[i]
|
|
dbsql.GroupId = GroupId
|
|
dbsql.ApplicateStatus = 1
|
|
dbsql.StartTime = int32(time.Now().Unix())
|
|
dbsql.EventType = 3
|
|
dbsql.EventParam = strconv.Itoa(int(req.CardId))
|
|
insertId, _ := db.FormatAllMemInsertDb(&dbsql, "t_Player_ExchangeCard_Box_Data")
|
|
|
|
MExchangeCardItem := &msg.ExchangeCardItem{}
|
|
MExchangeCardItem.SenderId = dbsql.SenderId
|
|
MExchangeCardItem.ReceiveId = dbsql.ReceiveId
|
|
MExchangeCardItem.GroupId = dbsql.GroupId
|
|
MExchangeCardItem.ApplicateStatus = dbsql.ApplicateStatus
|
|
MExchangeCardItem.StartTime = dbsql.StartTime
|
|
MExchangeCardItem.EventType = dbsql.EventType
|
|
MExchangeCardItem.EventParam = dbsql.EventParam
|
|
MExchangeCardItem.ConfigActId = dbsql.ConfigActId
|
|
MExchangeCardItem.AutoId = int32(insertId)
|
|
|
|
p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, MExchangeCardItem)
|
|
res.ExchangeCardItems = append(res.ExchangeCardItems, MExchangeCardItem)
|
|
|
|
EventAuid, sqlst, friendInfo := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(5, p.M_Player.M_DwUin, dbsql.ReceiveId, []interface{}{int32(insertId), req.CardId})
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid, sqlst, friendInfo)
|
|
|
|
player, ok := G_GameLogicPtr.M_Players[dbsql.ReceiveId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyRequestCard(MExchangeCardItem)
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResRequestCard", data)
|
|
|
|
}
|
|
func (p *PlayerCardCollectData) NotifyRequestCard(MExchangeCardItem *msg.ExchangeCardItem) {
|
|
|
|
p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, MExchangeCardItem)
|
|
|
|
notify := &msg.NotifyRequestCard{}
|
|
notify.ExchangeCardItems = MExchangeCardItem
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyRequestCard", data)
|
|
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyFriendCompleteRequestCard(ComId int32, GroupId int32) {
|
|
sqlStr := "SELECT * FROM t_Player_ExchangeCard_Box_Data WHERE GroupId = ?"
|
|
MsqlExchanges := []db.SqlExchangeCardStruct{}
|
|
|
|
if err := db.SqlDb.Select(&MsqlExchanges, sqlStr, GroupId); err != nil {
|
|
|
|
} else {
|
|
for i := 0; i < len(MsqlExchanges); i++ {
|
|
if MsqlExchanges[i].ReceiveId == ComId {
|
|
|
|
} else {
|
|
sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?"
|
|
db.SqlDb.Exec(sqlStr, MsqlExchanges[i].AutoId)
|
|
|
|
player, ok := G_GameLogicPtr.M_Players[MsqlExchanges[i].ReceiveId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyHaveFriendCompleteReq(MsqlExchanges[i].AutoId)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqGetRequestCard(buf []byte) {
|
|
req := &msg.ReqGetRequestCard{}
|
|
proto.Unmarshal(buf, req)
|
|
res := &msg.ResGetRequestCard{}
|
|
|
|
ExchangeItem := p.GetExchangeCardItem(req.ExchangeCardItems.AutoId)
|
|
|
|
if ExchangeItem != nil {
|
|
res.ExchangeCardItems = req.ExchangeCardItems
|
|
units := strings.Split(req.ExchangeCardItems.EventParam, "_")
|
|
excardId, _ := strconv.Atoi(units[0])
|
|
|
|
p.AddCard(&p.MsqlStruck[0], int32(excardId), 1, false)
|
|
p.DeleteExchangeCardItem(req.ExchangeCardItems.AutoId)
|
|
sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?"
|
|
db.SqlDb.Exec(sqlStr, req.ExchangeCardItems.AutoId)
|
|
|
|
EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 7, req.ExchangeCardItems.AutoId)
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI)
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline
|
|
res.ExchangeCardItems = req.ExchangeCardItems
|
|
}
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResGetRequestCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyHaveFriendCompleteReq(AutoId int32) {
|
|
|
|
p.DeleteExchangeCardItem(AutoId)
|
|
|
|
notify := &msg.NotifyHaveFriendCompleteReq{}
|
|
notify.AutoId = AutoId
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyHaveFriendCompleteReq", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqCompleteRequestCard(buf []byte) {
|
|
req := &msg.ReqCompleteRequestCard{}
|
|
proto.Unmarshal(buf, req)
|
|
res := &msg.ResCompleteRequestCard{}
|
|
|
|
ExchangeItem := p.GetExchangeCardItem(req.ExchangeCardItems.AutoId)
|
|
st := &p.MsqlStruck[0]
|
|
if ExchangeItem != nil {
|
|
units := strings.Split(req.ExchangeCardItems.EventParam, "_")
|
|
excardId, _ := strconv.Atoi(units[0])
|
|
|
|
if ExchangeItem.StartTime+3600*24 <= int32(time.Now().Unix()) {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline
|
|
res.ExchangeCardItems = req.ExchangeCardItems
|
|
p.DeleteExchangeCardItem(req.ExchangeCardItems.AutoId)
|
|
} else {
|
|
|
|
res.ExchangeCardItems = &msg.ExchangeCardItem{}
|
|
dbsql := db.SqlExchangeCardStruct{}
|
|
dbsql.ConfigActId = int32(p.GetCardRecord().Id)
|
|
dbsql.SenderId = req.ExchangeCardItems.SenderId
|
|
dbsql.ReceiveId = req.ExchangeCardItems.ReceiveId
|
|
dbsql.GroupId = req.ExchangeCardItems.GroupId
|
|
dbsql.ApplicateStatus = 2
|
|
dbsql.StartTime = req.ExchangeCardItems.StartTime
|
|
dbsql.EventType = req.ExchangeCardItems.EventType
|
|
dbsql.EventParam = req.ExchangeCardItems.EventParam
|
|
dbsql.AutoId = req.ExchangeCardItems.AutoId
|
|
|
|
ExchangeItem.ApplicateStatus = 2
|
|
err := db.FormatAllMemUpdateDb(&dbsql, "t_Player_ExchangeCard_Box_Data", "auto_id")
|
|
res.ExchangeCardItems.SenderId = dbsql.SenderId
|
|
res.ExchangeCardItems.ReceiveId = dbsql.ReceiveId
|
|
res.ExchangeCardItems.GroupId = dbsql.GroupId
|
|
res.ExchangeCardItems.ApplicateStatus = dbsql.ApplicateStatus
|
|
res.ExchangeCardItems.StartTime = dbsql.StartTime
|
|
res.ExchangeCardItems.EventType = dbsql.EventType
|
|
res.ExchangeCardItems.EventParam = dbsql.EventParam
|
|
res.ExchangeCardItems.ConfigActId = dbsql.ConfigActId
|
|
res.ExchangeCardItems.AutoId = dbsql.AutoId
|
|
|
|
if err == nil {
|
|
p.AddCard(st, int32(excardId), -1, false)
|
|
p.SaveDataFromDB("")
|
|
|
|
EventAuid, sqlst, friendInfo := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(7, dbsql.SenderId, dbsql.ReceiveId, []interface{}{dbsql.AutoId, int32(excardId)})
|
|
|
|
player, ok := G_GameLogicPtr.M_Players[dbsql.SenderId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyCompleteRequestCard(res.ExchangeCardItems)
|
|
}
|
|
if player.GetGameData("PlayerFriendEventData") != nil {
|
|
player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid, sqlst, friendInfo)
|
|
}
|
|
}
|
|
p.NotifyFriendCompleteRequestCard(dbsql.ReceiveId, dbsql.GroupId)
|
|
}
|
|
|
|
}
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline
|
|
res.ExchangeCardItems = req.ExchangeCardItems
|
|
}
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResCompleteRequestCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqRefuseRequestCard(buf []byte) {
|
|
req := &msg.ReqRefuseRequestCard{}
|
|
proto.Unmarshal(buf, req)
|
|
res := &msg.ResRefuseRequestCard{}
|
|
|
|
ExchangeItem := p.GetExchangeCardItem(req.ExchangeCardItems.AutoId)
|
|
|
|
if ExchangeItem != nil {
|
|
p.DeleteExchangeCardItem(req.ExchangeCardItems.AutoId)
|
|
res.ExchangeCardItems = req.ExchangeCardItems
|
|
sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?"
|
|
db.SqlDb.Exec(sqlStr, req.ExchangeCardItems.AutoId)
|
|
player, ok := G_GameLogicPtr.M_Players[req.ExchangeCardItems.SenderId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyRefuseRequestCard(req.ExchangeCardItems)
|
|
}
|
|
} else {
|
|
sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?"
|
|
MsqlStruck := db.SqlCardCollectStruct{}
|
|
|
|
err := db.SqlDb.Get(&MsqlStruck, sqlStr, req.ExchangeCardItems.SenderId)
|
|
if err != nil {
|
|
|
|
} else {
|
|
|
|
}
|
|
|
|
timeStamp := (int64)(time.Now().Unix())
|
|
t := time.Unix(timeStamp, 0).Local()
|
|
zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())
|
|
|
|
timeStamp1 := (int64)(req.ExchangeCardItems.StartTime)
|
|
t1 := time.Unix(timeStamp1, 0).Local()
|
|
zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second())
|
|
|
|
if zero == zero1 && err == nil {
|
|
MsqlStruck.RenewRequestTime -= 1
|
|
if MsqlStruck.RenewRequestTime < 0 {
|
|
MsqlStruck.RenewRequestTime = 0
|
|
}
|
|
}
|
|
db.FormatAllMemUpdateDb(&MsqlStruck, "t_player_card_data", "dwUin")
|
|
}
|
|
|
|
} else {
|
|
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResRefuseRequestCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyRefuseRequestCard(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NotifyRefuseRequestCard{}
|
|
notify.ExchangeCardItems = st
|
|
|
|
timeStamp := (int64)(time.Now().Unix())
|
|
t := time.Unix(timeStamp, 0).Local()
|
|
zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())
|
|
|
|
timeStamp1 := (int64)(st.StartTime)
|
|
t1 := time.Unix(timeStamp1, 0).Local()
|
|
zero1 := timeStamp1 - (int64)(t1.Hour()*3600+t1.Minute()*60+t1.Second())
|
|
|
|
if zero == zero1 {
|
|
p.MsqlStruck[0].RenewRequestTime = p.MsqlStruck[0].RenewRequestTime - 1
|
|
|
|
if p.MsqlStruck[0].RenewRequestTime < 0 {
|
|
p.MsqlStruck[0].RenewRequestTime = 0
|
|
}
|
|
p.SaveDataFromDB("")
|
|
}
|
|
|
|
notify.RenewRequestTime = p.MsqlStruck[0].RenewRequestTime
|
|
p.DeleteExchangeCardItem(st.AutoId)
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyRefuseRequestCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyExchangeCard(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NotifyExchangeCard{}
|
|
notify.MExchangeCardItem = st
|
|
|
|
p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, st)
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyExchangeCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyDonateFriendCard(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NotifyDonateFriendCard{}
|
|
notify.MExchangeCardItem = st
|
|
p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems, st)
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyDonateFriendCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyReceiptCard(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NotifyReceiptCard{}
|
|
notify.MExchangeCardItem = st
|
|
|
|
index := p.GetExchangeCardItemIndex(st.AutoId)
|
|
if index >= 0 {
|
|
p.MExchangeData.ExchangeCardItems[index] = st
|
|
}
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyReceiptCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyCompleteExchangeCard(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NotifyCompleteExchangeCard{}
|
|
notify.MExchangeCardItem = st
|
|
|
|
index := p.GetExchangeCardItemIndex(st.AutoId)
|
|
if index >= 0 {
|
|
p.MExchangeData.ExchangeCardItems[index] = st
|
|
}
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyCompleteExchangeCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyCompleteRequestCard(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NotifyCompleteRequestCard{}
|
|
notify.ExchangeCardItems = st
|
|
|
|
index := p.GetExchangeCardItemIndex(st.AutoId)
|
|
if index >= 0 {
|
|
p.MExchangeData.ExchangeCardItems[index] = st
|
|
}
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyCompleteRequestCard", data)
|
|
}
|
|
func (p *PlayerCardCollectData) NotifyGetExchangeCard(st *msg.ExchangeCardItem) {
|
|
notify := &msg.NotifyGetExchangeCard{}
|
|
notify.MExchangeCardItem = st
|
|
|
|
p.DeleteExchangeCardItem(st.AutoId)
|
|
|
|
sqlStr := "DELETE FROM " + "t_Player_ExchangeCard_Box_Data" + " WHERE auto_id = ?"
|
|
db.SqlDb.Exec(sqlStr, st.AutoId)
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyGetExchangeCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) GetExchangeCardItem(AutoId int32) *msg.ExchangeCardItem {
|
|
for i := 0; i < len(p.MExchangeData.ExchangeCardItems); i++ {
|
|
if p.MExchangeData.ExchangeCardItems[i].AutoId == AutoId {
|
|
return p.MExchangeData.ExchangeCardItems[i]
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) GetExchangeCardItemIndex(AutoId int32) int {
|
|
index := -1
|
|
for i := 0; i < len(p.MExchangeData.ExchangeCardItems); i++ {
|
|
if p.MExchangeData.ExchangeCardItems[i].AutoId == AutoId {
|
|
return i
|
|
}
|
|
}
|
|
return index
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) DeleteExchangeCardItem(AutoId int32) {
|
|
for i := 0; i < len(p.MExchangeData.ExchangeCardItems); i++ {
|
|
if p.MExchangeData.ExchangeCardItems[i].AutoId == AutoId {
|
|
p.MExchangeData.ExchangeCardItems = append(p.MExchangeData.ExchangeCardItems[:i], p.MExchangeData.ExchangeCardItems[i+1:]...)
|
|
break
|
|
}
|
|
}
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqReceiptCard(buf []byte) {
|
|
req := &msg.ReqReceiptCard{}
|
|
proto.Unmarshal(buf, req)
|
|
res := &msg.ResReceiptCard{}
|
|
ExchangeItem := p.GetExchangeCardItem(req.MExchangeCardItem.AutoId)
|
|
st := &p.MsqlStruck[0]
|
|
if ExchangeItem != nil {
|
|
units := strings.Split(req.MExchangeCardItem.EventParam, "_")
|
|
cardId, _ := strconv.Atoi(units[0])
|
|
excardId, _ := strconv.Atoi(units[1])
|
|
if ExchangeItem.StartTime+3600*24 <= int32(time.Now().Unix()) {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline
|
|
res.MExchangeCardItem = req.MExchangeCardItem
|
|
p.DeleteExchangeCardItem(req.MExchangeCardItem.AutoId)
|
|
} else {
|
|
|
|
if p.GetCardCnt(st, int32(excardId)) > 1 {
|
|
res.MExchangeCardItem = &msg.ExchangeCardItem{}
|
|
dbsql := db.SqlExchangeCardStruct{}
|
|
dbsql.ConfigActId = int32(p.GetCardRecord().Id)
|
|
dbsql.SenderId = req.MExchangeCardItem.SenderId
|
|
dbsql.ReceiveId = req.MExchangeCardItem.ReceiveId
|
|
dbsql.GroupId = req.MExchangeCardItem.GroupId
|
|
dbsql.ApplicateStatus = 2
|
|
dbsql.StartTime = req.MExchangeCardItem.StartTime
|
|
dbsql.EventType = 2
|
|
dbsql.EventParam = req.MExchangeCardItem.EventParam
|
|
dbsql.AutoId = req.MExchangeCardItem.AutoId
|
|
|
|
err := db.FormatAllMemUpdateDb(&dbsql, "t_Player_ExchangeCard_Box_Data", "auto_id")
|
|
res.MExchangeCardItem.SenderId = dbsql.SenderId
|
|
res.MExchangeCardItem.ReceiveId = dbsql.ReceiveId
|
|
res.MExchangeCardItem.GroupId = dbsql.GroupId
|
|
res.MExchangeCardItem.ApplicateStatus = dbsql.ApplicateStatus
|
|
res.MExchangeCardItem.StartTime = dbsql.StartTime
|
|
res.MExchangeCardItem.EventType = dbsql.EventType
|
|
res.MExchangeCardItem.EventParam = dbsql.EventParam
|
|
res.MExchangeCardItem.ConfigActId = dbsql.ConfigActId
|
|
res.MExchangeCardItem.AutoId = dbsql.AutoId
|
|
|
|
if err == nil {
|
|
p.DeleteOneCard(st, int32(excardId))
|
|
p.SaveDataFromDB("")
|
|
EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 8, req.MExchangeCardItem.AutoId)
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI)
|
|
|
|
EventAuid, sqlst, friendInfo := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(6, dbsql.SenderId, dbsql.ReceiveId, []interface{}{dbsql.AutoId, int32(excardId), int32(cardId)})
|
|
EventAuid1, sqlst1, friendInfo1 := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NewFriendEventToDb(9, dbsql.ReceiveId, dbsql.SenderId, []interface{}{dbsql.AutoId, int32(excardId), int32(cardId)})
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid1, sqlst1, friendInfo1)
|
|
player, ok := G_GameLogicPtr.M_Players[dbsql.SenderId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyReceiptCard(res.MExchangeCardItem)
|
|
}
|
|
if player.GetGameData("PlayerFriendEventData") != nil {
|
|
player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).NotifyNewFriendEvent(EventAuid, sqlst, friendInfo)
|
|
}
|
|
}
|
|
}
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardFragment_NoEnough
|
|
}
|
|
|
|
}
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline
|
|
}
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResReceiptCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) IsGoldCard(cardId int) bool {
|
|
CardDetailCfg := gamedata.GetConfigByName("CardDetailCfg")
|
|
record := CardDetailCfg.Index(cardId).(*gamedata.CardDetailRecord)
|
|
return record.IsGold == 1
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyDeleteGoldCardSwap() {
|
|
notify := &msg.NotifyDeleteGoldCardSwap{}
|
|
notify.MExchangeCardItems = []*msg.ExchangeCardItem{}
|
|
DeleteIds := []int32{}
|
|
temp := []*msg.ExchangeCardItem{}
|
|
for i := 0; i < len(p.MExchangeData.ExchangeCardItems); i++ {
|
|
if p.MExchangeData.ExchangeCardItems[i].EventType == 2 {
|
|
if p.MExchangeData.ExchangeCardItems[i].SenderId == p.M_Player.M_DwUin {
|
|
if p.MExchangeData.ExchangeCardItems[i].ApplicateStatus == 1 {
|
|
DeleteIds = append(DeleteIds, p.MExchangeData.ExchangeCardItems[i].AutoId)
|
|
EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.MExchangeData.ExchangeCardItems[i].ReceiveId, 8, p.MExchangeData.ExchangeCardItems[i].AutoId)
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI)
|
|
p.NOtifyRefuseExchange(p.MExchangeData.ExchangeCardItems[i])
|
|
notify.MExchangeCardItems = append(notify.MExchangeCardItems, p.MExchangeData.ExchangeCardItems[i])
|
|
continue
|
|
}
|
|
if p.MExchangeData.ExchangeCardItems[i].ApplicateStatus == 2 {
|
|
DeleteIds = append(DeleteIds, p.MExchangeData.ExchangeCardItems[i].AutoId)
|
|
EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 6, p.MExchangeData.ExchangeCardItems[i].AutoId)
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI)
|
|
|
|
player, ok := G_GameLogicPtr.M_Players[p.MExchangeData.ExchangeCardItems[i].ReceiveId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NOtifyReceiveRefuseExchange(p.MExchangeData.ExchangeCardItems[i])
|
|
}
|
|
} else {
|
|
sqlStr := "SELECT * FROM t_player_card_data WHERE dwUin = ?"
|
|
MsqlStruck := db.SqlCardCollectStruct{}
|
|
units := strings.Split(p.MExchangeData.ExchangeCardItems[i].EventParam, "_")
|
|
cardId, _ := strconv.Atoi(units[1])
|
|
err := db.SqlDb.Get(&MsqlStruck, sqlStr, p.MExchangeData.ExchangeCardItems[i].ReceiveId)
|
|
if err != nil {
|
|
|
|
} else {
|
|
if MsqlStruck.CardInfo != "" {
|
|
units := strings.Split(MsqlStruck.CardInfo, ";")
|
|
|
|
for i := 0; i < len(units); i++ {
|
|
items := strings.Split(units[i], ",")
|
|
k, _ := strconv.Atoi(items[0])
|
|
cnt, _ := strconv.Atoi(items[1])
|
|
if k == int(cardId) {
|
|
cnt = cnt + 1
|
|
units[i] = items[0] + "," + strconv.Itoa(cnt)
|
|
break
|
|
}
|
|
}
|
|
MsqlStruck.CardInfo = strings.Join(units, ";")
|
|
}
|
|
db.FormatAllMemUpdateDb(&MsqlStruck, "t_player_card_data", "dwUin")
|
|
}
|
|
|
|
}
|
|
p.NOtifyRefuseExchange(p.MExchangeData.ExchangeCardItems[i])
|
|
notify.MExchangeCardItems = append(notify.MExchangeCardItems, p.MExchangeData.ExchangeCardItems[i])
|
|
continue
|
|
}
|
|
}
|
|
|
|
}
|
|
temp = append(temp, p.MExchangeData.ExchangeCardItems[i])
|
|
}
|
|
p.MExchangeData.ExchangeCardItems = temp
|
|
p.DeleteOutlineCardExchange(DeleteIds, "t_Player_ExchangeCard_Box_Data")
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyDeleteGoldCardSwap", data)
|
|
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqGetExchangeCard(buf []byte) {
|
|
req := &msg.ReqGetExchangeCard{}
|
|
proto.Unmarshal(buf, req)
|
|
res := &msg.ResGetExchangeCard{}
|
|
ExchangeItem := p.GetExchangeCardItem(req.MExchangeCardItem.AutoId)
|
|
st := &p.MsqlStruck[0]
|
|
if ExchangeItem != nil {
|
|
|
|
units := strings.Split(req.MExchangeCardItem.EventParam, "_")
|
|
excardId, _ := strconv.Atoi(units[0])
|
|
|
|
res.MExchangeCardItem = &msg.ExchangeCardItem{}
|
|
dbsql := db.SqlExchangeCardStruct{}
|
|
dbsql.ConfigActId = int32(p.GetCardRecord().Id)
|
|
dbsql.SenderId = req.MExchangeCardItem.SenderId
|
|
dbsql.ReceiveId = req.MExchangeCardItem.ReceiveId
|
|
dbsql.GroupId = req.MExchangeCardItem.GroupId
|
|
dbsql.ApplicateStatus = 4
|
|
dbsql.StartTime = req.MExchangeCardItem.StartTime
|
|
dbsql.EventType = 2
|
|
dbsql.EventParam = req.MExchangeCardItem.EventParam
|
|
dbsql.AutoId = req.MExchangeCardItem.AutoId
|
|
ExchangeItem.ApplicateStatus = 4
|
|
|
|
err := db.FormatAllMemUpdateDb(&dbsql, "t_Player_ExchangeCard_Box_Data", "auto_id")
|
|
res.MExchangeCardItem.SenderId = dbsql.SenderId
|
|
res.MExchangeCardItem.ReceiveId = dbsql.ReceiveId
|
|
res.MExchangeCardItem.GroupId = dbsql.GroupId
|
|
res.MExchangeCardItem.ApplicateStatus = dbsql.ApplicateStatus
|
|
res.MExchangeCardItem.StartTime = dbsql.StartTime
|
|
res.MExchangeCardItem.EventType = dbsql.EventType
|
|
res.MExchangeCardItem.EventParam = dbsql.EventParam
|
|
res.MExchangeCardItem.ConfigActId = dbsql.ConfigActId
|
|
res.MExchangeCardItem.AutoId = dbsql.AutoId
|
|
|
|
if err == nil {
|
|
p.AddCard(st, int32(excardId), 1, false)
|
|
p.SaveDataFromDB("")
|
|
|
|
EventAI := p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteEventDbData(p.M_Player.M_DwUin, 11, req.MExchangeCardItem.AutoId)
|
|
p.M_Player.GetIFGameData("PlayerFriendEventData").(*PlayerFriendEventData).DeleteLocalDataByAutoId(EventAI)
|
|
|
|
player, ok := G_GameLogicPtr.M_Players[dbsql.SenderId]
|
|
if ok {
|
|
if player.GetGameData("PlayerCardCollectData") != nil {
|
|
player.GetIFGameData("PlayerCardCollectData").(*PlayerCardCollectData).NotifyGetExchangeCard(res.MExchangeCardItem)
|
|
}
|
|
}
|
|
}
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardTime_Outline
|
|
res.MExchangeCardItem = req.MExchangeCardItem
|
|
}
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResGetExchangeCard", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) CloseNewLimitActivity(args []interface{}) {
|
|
record := args[0].(*gamedata.ActivityRecord)
|
|
|
|
if record.Type != p.MActType {
|
|
return
|
|
}
|
|
|
|
notify := &msg.NotifyLimitedTimeActiveEnd{}
|
|
notify.DwUin = p.M_Player.M_DwUin
|
|
notify.MActiveList = []*msg.LimitedTimeEndStruct{}
|
|
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
if int(item.ConfigActId) == record.Id {
|
|
msg := &msg.LimitedTimeEndStruct{}
|
|
msg.ActiveID = item.ActiveID
|
|
msg.Type = int32(record.Type)
|
|
notify.MActiveList = append(notify.MActiveList, msg)
|
|
}
|
|
}
|
|
p.MisDirty = true
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyLimitedTimeActiveEnd", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) Reconnect(b bool) {
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RegisterEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew, p)
|
|
GoUtil.RegisterEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew, p)
|
|
p.PlayerActiveData.Reconnect(b)
|
|
if b {
|
|
p.LoadDataFromDB(p.M_Player.M_DwUin)
|
|
}
|
|
}
|
|
func (p *PlayerCardCollectData) NotifyDailyRenew(args []interface{}) {
|
|
timeStamp := (int64)(time.Now().Unix())
|
|
t := time.Unix(timeStamp, 0).Local()
|
|
zero := timeStamp - (int64)(t.Hour()*3600+t.Minute()*60+t.Second())
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
|
|
if p.MsqlStruck[i].RenewSvrTime < int32(zero) {
|
|
p.MsqlStruck[i].RenewSvrTime = int32(zero)
|
|
p.MsqlStruck[i].RenewExchangeTime = 0
|
|
p.MsqlStruck[i].RenewRequestTime = 0
|
|
p.NotifyCardDailyRenew(&p.MsqlStruck[i])
|
|
}
|
|
}
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) FindDbSt(activeId int32) *db.SqlCardCollectStruct {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
if p.MsqlStruck[i].ActiveID == activeId {
|
|
return &p.MsqlStruck[i]
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ResCardCollectDetail(buf []byte) {
|
|
req := &msg.ReqCardCollectDetail{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResCardCollectDetail{}
|
|
if st != nil {
|
|
|
|
res.ActiveID = st.ActiveID
|
|
res.CardInfo = st.CardInfo
|
|
res.Fragment = st.Fragment
|
|
res.FinalReward = st.FinalReward
|
|
res.CardRewardInfo = st.CardRewardInfo
|
|
res.MasterCards = st.MasterCards
|
|
res.CurSvrTime = int32(time.Now().Unix())
|
|
res.StartSvrTime = st.StartSvrTime
|
|
res.EndSvrTime = st.EndSvrTime
|
|
res.DwUin = p.M_Player.M_DwUin
|
|
res.Universal = st.Universal
|
|
res.RenewSvrTime = st.RenewSvrTime
|
|
res.RenewExchangeTime = st.RenewExchangeTime
|
|
res.RenewRequestTime = st.RenewRequestTime
|
|
res.ResultCode = 0
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResCardCollectDetail", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) NotifyCardDailyRenew(st *db.SqlCardCollectStruct) {
|
|
|
|
notify := &msg.NotifyCardDailyRenew{}
|
|
notify.ActiveID = st.ActiveID
|
|
notify.RenewExchangeTime = st.RenewExchangeTime
|
|
notify.RenewRequestTime = st.RenewRequestTime
|
|
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(notify)
|
|
G_getGameLogic().PackResInfo(agent, "NotifyCardDailyRenew", data)
|
|
p.SaveDataFromDB("")
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) GetIsGetRewardById(st *db.SqlCardCollectStruct, id int32) bool {
|
|
if st.CardRewardInfo == "" {
|
|
return false
|
|
} else {
|
|
units := strings.Split(st.CardRewardInfo, ",")
|
|
for i := 0; i < len(units); i++ {
|
|
cnt, _ := strconv.Atoi(units[i])
|
|
if int32(cnt) == id {
|
|
return true
|
|
}
|
|
}
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) GetAlbumRewardById(st *db.SqlCardCollectStruct, id int32) {
|
|
if st.CardRewardInfo == "" {
|
|
st.CardRewardInfo = strconv.Itoa(int(id))
|
|
} else {
|
|
st.CardRewardInfo = st.CardRewardInfo + "," + strconv.Itoa(int(id))
|
|
}
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) DeleteOneCard(st *db.SqlCardCollectStruct, id int32) {
|
|
if st.CardInfo != "" {
|
|
units := strings.Split(st.CardInfo, ";")
|
|
isHave := false
|
|
for i := 0; i < len(units); i++ {
|
|
items := strings.Split(units[i], ",")
|
|
k, _ := strconv.Atoi(items[0])
|
|
cnt, _ := strconv.Atoi(items[1])
|
|
if k == int(id) {
|
|
cnt = cnt - 1
|
|
units[i] = items[0] + "," + strconv.Itoa(cnt)
|
|
isHave = true
|
|
break
|
|
}
|
|
}
|
|
if !isHave {
|
|
|
|
} else {
|
|
st.CardInfo = strings.Join(units, ";")
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) GetCardCnt(st *db.SqlCardCollectStruct, id int32) int {
|
|
Cnt := 0
|
|
if st.CardInfo != "" {
|
|
units := strings.Split(st.CardInfo, ";")
|
|
for i := 0; i < len(units); i++ {
|
|
items := strings.Split(units[i], ",")
|
|
k, _ := strconv.Atoi(items[0])
|
|
cnt, _ := strconv.Atoi(items[1])
|
|
if k == int(id) {
|
|
return cnt
|
|
}
|
|
}
|
|
}
|
|
return Cnt
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) AddCard(st *db.SqlCardCollectStruct, id int32, count int32, isAddFragment bool) int32 {
|
|
AddFragment := 0
|
|
CardDetailCfg := gamedata.GetConfigByName("CardDetailCfg")
|
|
record1 := CardDetailCfg.Index(int(id))
|
|
record := record1.(*gamedata.CardDetailRecord)
|
|
if st.CardInfo != "" {
|
|
units := strings.Split(st.CardInfo, ";")
|
|
isHave := false
|
|
for i := 0; i < len(units); i++ {
|
|
items := strings.Split(units[i], ",")
|
|
k, _ := strconv.Atoi(items[0])
|
|
cnt, _ := strconv.Atoi(items[1])
|
|
if k == int(id) {
|
|
cnt = cnt + int(count)
|
|
units[i] = items[0] + "," + strconv.Itoa(cnt)
|
|
AddFragment = AddFragment + int(count)*int(record.Star)
|
|
isHave = true
|
|
break
|
|
}
|
|
}
|
|
if !isHave {
|
|
st.CardInfo = st.CardInfo + ";" + strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count))
|
|
AddFragment = AddFragment + int(count-1)*int(record.Star)
|
|
} else {
|
|
st.CardInfo = strings.Join(units, ";")
|
|
}
|
|
|
|
} else {
|
|
st.CardInfo = strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count))
|
|
AddFragment = AddFragment + int(count-1)*int(record.Star)
|
|
}
|
|
if !isAddFragment {
|
|
AddFragment = 0
|
|
}
|
|
return int32(AddFragment)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqAddCard(buf []byte) {
|
|
req := &msg.ReqAddCard{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResAddCard{}
|
|
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.Id = req.Id
|
|
res.Count = req.Count
|
|
st.Universal = st.Universal + req.Count
|
|
AddFragment := p.AddCard(st, req.Id, req.Count, true)
|
|
st.Fragment = st.Fragment + AddFragment
|
|
res.Fragment = st.Fragment
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResAddCard", data)
|
|
p.SaveDataFromDB("")
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ResUnpackCard(buf []byte) {
|
|
req := &msg.ReqUnpackCard{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResUnpackCard{}
|
|
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.CardIds = req.CardIds
|
|
res.CardCnts = req.CardCnts
|
|
res.PackID = req.PackID
|
|
var AddFragment int32 = 0
|
|
for i := 0; i < len(req.CardIds); i++ {
|
|
add := p.AddCard(st, req.CardIds[i], req.CardCnts[i], true)
|
|
AddFragment = AddFragment + add
|
|
st.Universal = st.Universal + req.CardCnts[i]
|
|
}
|
|
st.Fragment = st.Fragment + AddFragment
|
|
res.Fragment = st.Fragment
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResUnpackCard", data)
|
|
p.SaveDataFromDB("")
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqUpdateStickerCount(buf []byte) {
|
|
req := &msg.ReqUpdateStickerCount{}
|
|
res := &msg.ResUpdateStickerCount{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
|
|
if st != nil {
|
|
st.Fragment += req.Sticker
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResUpdateStickerCount", data)
|
|
p.SaveDataFromDB("")
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) AddMasterCard(st *db.SqlCardCollectStruct, id int32, count int32) {
|
|
if st.MasterCards != "" {
|
|
units := strings.Split(st.MasterCards, ";")
|
|
isHave := false
|
|
for i := 0; i < len(units); i++ {
|
|
items := strings.Split(units[i], ",")
|
|
k, _ := strconv.Atoi(items[0])
|
|
cnt, _ := strconv.Atoi(items[1])
|
|
if k == int(id) {
|
|
cnt = cnt + int(count)
|
|
units[i] = items[0] + "," + strconv.Itoa(cnt)
|
|
isHave = true
|
|
break
|
|
}
|
|
}
|
|
if !isHave {
|
|
st.MasterCards = st.MasterCards + ";" + strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count))
|
|
} else {
|
|
st.MasterCards = strings.Join(units, ";")
|
|
}
|
|
|
|
} else {
|
|
st.MasterCards = strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count))
|
|
}
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqAddMasterCard(buf []byte) {
|
|
req := &msg.ReqAddMasterCard{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResAddMasterCard{}
|
|
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.Id = req.Id
|
|
res.Count = req.Count
|
|
p.AddMasterCard(st, req.Id, req.Count)
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResAddMasterCard", data)
|
|
p.SaveDataFromDB("")
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) UseMasterCard(st *db.SqlCardCollectStruct, id int32, count int32) bool {
|
|
if st.MasterCards != "" {
|
|
units := strings.Split(st.MasterCards, ";")
|
|
isHave := false
|
|
for i := 0; i < len(units); i++ {
|
|
items := strings.Split(units[i], ",")
|
|
k, _ := strconv.Atoi(items[0])
|
|
cnt, _ := strconv.Atoi(items[1])
|
|
if k == int(id) && cnt >= int(count) {
|
|
cnt = cnt - int(count)
|
|
units[i] = items[0] + "," + strconv.Itoa(cnt)
|
|
isHave = true
|
|
break
|
|
}
|
|
}
|
|
if !isHave {
|
|
// st.MasterCards = st.MasterCards + ";" + strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count))
|
|
} else {
|
|
st.MasterCards = strings.Join(units, ";")
|
|
return true
|
|
}
|
|
|
|
} else {
|
|
// st.MasterCards = strconv.Itoa(int(id)) + "," + strconv.Itoa(int(count))
|
|
}
|
|
return false
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqBuyStickerItem(buf []byte) {
|
|
req := &msg.ReqBuyStickerItem{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResBuyStickerItem{}
|
|
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
|
|
if st.Fragment >= req.CostSticker {
|
|
st.Fragment = st.Fragment - req.CostSticker
|
|
res.Id = req.Id
|
|
res.CurFragment = st.Fragment
|
|
res.ResultCode = 0
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_CardFragment_NoEnough
|
|
}
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResBuyStickerItem", data)
|
|
p.SaveDataFromDB("")
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ReqUseMasterCard(buf []byte) {
|
|
req := &msg.ReqUseMasterCard{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResUseMasterCard{}
|
|
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
|
|
res.MasterId = req.MasterId
|
|
res.ExchangeCardId = req.ExchangeCardId
|
|
isUse := p.UseMasterCard(st, req.MasterId, 1)
|
|
if isUse {
|
|
AddFrament := p.AddCard(st, req.ExchangeCardId, 1, true)
|
|
st.Fragment = st.Fragment + AddFrament
|
|
res.Fragment = st.Fragment
|
|
res.ResultCode = 0
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_Card_NoEnough
|
|
}
|
|
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResUseMasterCard", data)
|
|
p.SaveDataFromDB("")
|
|
}
|
|
func (p *PlayerCardCollectData) ResGetCardAlbumReward(buf []byte) {
|
|
req := &msg.ReqGetCardAlbumReward{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResGetCardAlbumReward{}
|
|
if st != nil {
|
|
res.ActiveID = st.ActiveID
|
|
res.Id = req.Id
|
|
if p.GetIsGetRewardById(st, req.Id) {
|
|
res.ResultCode = MergeConst.Protocol_Active_Card_Rewarded
|
|
} else {
|
|
res.ResultCode = 0
|
|
p.GetAlbumRewardById(st, req.Id)
|
|
p.SaveDataFromDB("")
|
|
}
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResGetCardAlbumReward", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) ResGetAllCardReward(buf []byte) {
|
|
req := &msg.ReqGetAllCardReward{}
|
|
proto.Unmarshal(buf, req)
|
|
st := p.FindDbSt(req.ActiveID)
|
|
res := &msg.ResGetAllCardReward{}
|
|
if st != nil {
|
|
if st.FinalReward == int32(1) {
|
|
res.ResultCode = MergeConst.Protocol_Active_Card_Rewarded
|
|
} else {
|
|
res.ResultCode = 0
|
|
st.FinalReward = 1
|
|
p.SaveDataFromDB("")
|
|
}
|
|
} else {
|
|
res.ResultCode = MergeConst.Protocol_Active_No_Exsit
|
|
}
|
|
agent := p.GetPlayer().GetAgentByPlayer()
|
|
data, _ := proto.Marshal(res)
|
|
G_getGameLogic().PackResInfo(agent, "ResGetAllCardReward", data)
|
|
}
|
|
|
|
func (p *PlayerCardCollectData) SaveDataFromDB(Key interface{}) bool {
|
|
for i := 0; i < len(p.MsqlStruck); i++ {
|
|
item := p.MsqlStruck[i]
|
|
db.FormatAllMemUpdateDb(&item, "t_player_card_data", "ActiveID")
|
|
}
|
|
return true
|
|
}
|
|
func (p *PlayerCardCollectData) ClearData() bool {
|
|
p.SaveDataFromDB("")
|
|
GoUtil.RemoveEvent(MergeConst.CloseNewLimitActivity, p.CloseNewLimitActivity, p)
|
|
GoUtil.RemoveEvent(MergeConst.Notify_Daily_Renew, p.NotifyDailyRenew, p)
|
|
p.PlayerActiveData.ClearData()
|
|
|
|
return true
|
|
}
|