高级订单符合条件并没有直接生效
This commit is contained in:
parent
a4efd1bac1
commit
bc417b6301
@ -73,18 +73,18 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
return nil
|
||||
}
|
||||
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT)
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
p.PushClientRes(&proto.ResFriendApplyNotify{
|
||||
Player: PlayerSimpleData,
|
||||
Player: playerSimpleData,
|
||||
Type: friend.FRIEND_NOTIFY_APPLY,
|
||||
Time: int32(GoUtil.Now()),
|
||||
})
|
||||
case msg.HADNLE_TYPE_AGREE: // 同意好友申请
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
FriendMod.AgreeApply(m.From)
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
p.PushClientRes(&proto.ResFriendApplyNotify{
|
||||
Player: PlayerSimpleData,
|
||||
Player: playerSimpleData,
|
||||
Type: friend.FRIEND_NOTIFY_AGREE,
|
||||
Time: int32(GoUtil.Now()),
|
||||
})
|
||||
@ -97,18 +97,18 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
FriendMod.DelFriend(m.From)
|
||||
p.AddLog(m.From, friend.LOG_TYPE_FRIEND_APPLY, "", m.SendT)
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
p.PushClientRes(&proto.ResFriendApplyNotify{
|
||||
Player: PlayerSimpleData,
|
||||
Player: playerSimpleData,
|
||||
Type: friend.FRIEND_NOTIFY_DEL,
|
||||
Time: int32(GoUtil.Now()),
|
||||
})
|
||||
case msg.HANDLE_TYPE_REFUSE: // 拒绝好友申请
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
FriendMod.RefuseApply(m.From)
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
p.PushClientRes(&proto.ResFriendApplyNotify{
|
||||
Player: PlayerSimpleData,
|
||||
Player: playerSimpleData,
|
||||
Type: friend.FRIEND_NOTIFY_REFUSE,
|
||||
Time: int32(GoUtil.Now()),
|
||||
})
|
||||
@ -199,7 +199,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
return nil
|
||||
}
|
||||
CardMod := p.PlayMod.getCardMod()
|
||||
OtherUid, err := CardMod.DelRequestCard(cardInfo.BUid)
|
||||
otherUid, err := CardMod.DelRequestCard(cardInfo.BUid)
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
FriendMod.SetCardInfo(&cardInfo)
|
||||
if err != nil { // 同意失败,请求已失效
|
||||
@ -207,7 +207,7 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
FriendMgrSend(msg)
|
||||
return nil
|
||||
}
|
||||
for k, v := range OtherUid { // 通知好友请求已结束
|
||||
for k, v := range otherUid { // 通知好友请求已结束
|
||||
v.Status = card.STATUS_CARD_GIVE_3
|
||||
FriendMgrSend(&msg.Msg{Type: msg.HANDLE_TYPE_REG_CARD_FINISH, From: k, Extra: &v})
|
||||
CardMod.DelRequestCard(k)
|
||||
@ -299,8 +299,15 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
case msg.HANDLE_TYPE_CHAMPSHIP_NOTIFY: // # 锦标赛排名变动通知
|
||||
p.BackChampship()
|
||||
case msg.HANDLE_TYPE_CHAMPSHIP_RESULT: // # 好友锦标赛结果
|
||||
Extra := GoUtil.IntSlice(m.Extra)
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", Extra[0], Extra[1]), m.SendT)
|
||||
extra := GoUtil.IntSlice(m.Extra)
|
||||
var gameId, rank int
|
||||
if len(extra) >= 2 {
|
||||
gameId = extra[0]
|
||||
rank = extra[1]
|
||||
} else {
|
||||
return nil
|
||||
}
|
||||
p.AddLog(m.From, friend.LOG_TYPE_PLAYROOM_CHAMPSHIP, fmt.Sprintf("%d_%d", gameId, rank), m.SendT)
|
||||
case msg.HANDLE_TYPE_TREASURE_RESULT: // 好友宝藏结果
|
||||
// 暂未处理
|
||||
case msg.HANDLE_TYPE_MAIL: // 邮件操作
|
||||
@ -382,14 +389,14 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
FriendMod.Interact(m.From, friend.INTERACT_TYPE_UPVOTE, m.SendT)
|
||||
p.AddLog(m.From, friend.LOG_TYPE_HANDBOOK_UPVOTE, "", m.SendT)
|
||||
case msg.HANDLE_TYPE_SEND_CHARGE: // 收到好友赠送的充值礼包
|
||||
C, ok := m.Extra.(*ChargeExtra)
|
||||
chargeExtra, ok := m.Extra.(*ChargeExtra)
|
||||
if !ok {
|
||||
C = &ChargeExtra{}
|
||||
chargeExtra = &ChargeExtra{}
|
||||
}
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
MailMod := p.PlayMod.getMailMod()
|
||||
mt, mc, mt_en, mc_en := mailCfg.GetChargeSendMail(PlayerSimpleData.Name)
|
||||
items := p.ChargeItem(C.ChargeId)
|
||||
mt, mc, mt_en, mc_en := mailCfg.GetChargeSendMail(playerSimpleData.Name)
|
||||
items := p.ChargeItem(chargeExtra.ChargeId)
|
||||
mailId := MailMod.SendMail(&mail.MailStruct{
|
||||
Title: mt,
|
||||
Content: mc,
|
||||
@ -405,9 +412,9 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
if !ok {
|
||||
Content = ""
|
||||
}
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
MailMod := p.PlayMod.getMailMod()
|
||||
mt, mc, mt_en, mc_en := mailCfg.GetChargeReceiveMail(PlayerSimpleData.Name, Content)
|
||||
mt, mc, mt_en, mc_en := mailCfg.GetChargeReceiveMail(playerSimpleData.Name, Content)
|
||||
mailId := MailMod.SendMail(&mail.MailStruct{
|
||||
Title: mt,
|
||||
Content: mc,
|
||||
@ -436,21 +443,21 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
p.NotifyPlayroomKiss()
|
||||
case msg.HANDLE_TYPE_CATNIP_INVITE: // 邀请好友参与猫咪游戏
|
||||
CatnipMod := p.PlayMod.getCatnipMod()
|
||||
catnipMsg, ok := m.Extra.(CatnipMsg)
|
||||
catnipMsg, ok := m.Extra.(map[string]interface{})
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP)
|
||||
if activityId != catnipMsg.ActivityId { // 活动ID不匹配
|
||||
if activityId != catnipMsg["ActivityId"] { // 活动ID不匹配
|
||||
return nil
|
||||
}
|
||||
CatnipMod.BeInvited(int(m.From), m.SendT)
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
replyInfo := FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", catnipMsg.GameId), m.End, nil)
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
replyInfo := FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP, fmt.Sprintf("%d", catnipMsg["GameId"]), m.End, nil)
|
||||
playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
p.PushClientRes(&proto.ResFriendReplyNotify{
|
||||
Info: &proto.ResFriendReply{
|
||||
Player: PlayerSimpleData,
|
||||
Player: playerSimpleData,
|
||||
Param: replyInfo.Param,
|
||||
Type: int32(replyInfo.Type),
|
||||
Id: int32(replyInfo.Id),
|
||||
@ -460,56 +467,56 @@ func (p *Player) handle(m *msg.Msg) error {
|
||||
})
|
||||
case msg.HANDLE_TYPE_CATNIP_AGREE: // 同意好友参与猫咪游戏
|
||||
CatnipMod := p.PlayMod.getCatnipMod()
|
||||
catnipMsg, ok := m.Extra.(CatnipMsg)
|
||||
catnipMsg, ok := m.Extra.(map[string]interface{})
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP)
|
||||
if activityId != catnipMsg.ActivityId { // 活动ID不匹配
|
||||
if activityId != catnipMsg["ActivityId"] { // 活动ID不匹配
|
||||
return nil
|
||||
}
|
||||
CatnipMod.BeAgree(catnipMsg.GameId, int(m.From))
|
||||
CatnipMod.BeAgree(GoUtil.Int(catnipMsg["GameId"]), int(m.From))
|
||||
case msg.HANDLE_TYPE_CATNIP_AGREE_DEL: // 同意好友参与猫咪游戏后删除邀请
|
||||
CatnipMod := p.PlayMod.getCatnipMod()
|
||||
catnipMsg, ok := m.Extra.(CatnipMsg)
|
||||
catnipMsg, ok := m.Extra.(map[string]interface{})
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP)
|
||||
if activityId != catnipMsg.ActivityId { // 活动ID不匹配
|
||||
if activityId != catnipMsg["ActivityId"] { // 活动ID不匹配
|
||||
return nil
|
||||
}
|
||||
CatnipMod.DelInvited(catnipMsg.GameId, int(m.From))
|
||||
CatnipMod.DelInvited(GoUtil.Int(catnipMsg["GameId"]), int(m.From))
|
||||
case msg.HANDLE_TYPE_CATNIP_REFUSE: // 拒绝好友参与猫咪游戏
|
||||
CatnipMod := p.PlayMod.getCatnipMod()
|
||||
catnipMsg, ok := m.Extra.(CatnipMsg)
|
||||
catnipMsg, ok := m.Extra.(map[string]interface{})
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP)
|
||||
if activityId != catnipMsg.ActivityId { // 活动ID不匹配
|
||||
if activityId != catnipMsg["ActivityId"] { // 活动ID不匹配
|
||||
return nil
|
||||
}
|
||||
CatnipMod.DelInvited(catnipMsg.GameId, int(m.From))
|
||||
CatnipMod.DelInvited(GoUtil.Int(catnipMsg["GameId"]), int(m.From))
|
||||
case msg.HANDLE_TYPE_CATNIP_GROWTH:
|
||||
CatnipMod := p.PlayMod.getCatnipMod()
|
||||
catnipMsg, ok := m.Extra.(CatnipMsg)
|
||||
catnipMsg, ok := m.Extra.(map[string]interface{})
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
activityId := p.GetActivityId(activity.ACT_TYPE_CATNIP)
|
||||
if activityId != catnipMsg.ActivityId { // 活动ID不匹配
|
||||
if activityId != catnipMsg["ActivityId"] { // 活动ID不匹配
|
||||
return nil
|
||||
}
|
||||
CatnipMod.GrowthByUid(m.From, catnipMsg.Growth)
|
||||
if catnipMsg.FriendItems > 0 {
|
||||
Items := catnipCfg.GetItemCost(activityId, catnipMsg.FriendItems)
|
||||
CatnipMod.GrowthByUid(m.From, GoUtil.Int(catnipMsg["Growth"]))
|
||||
if GoUtil.Int(catnipMsg["FriendItems"]) > 0 {
|
||||
Items := catnipCfg.GetItemCost(activityId, GoUtil.Int(catnipMsg["FriendItems"]))
|
||||
FriendMod := p.PlayMod.getFriendMod()
|
||||
replyInfo := FriendMod.AddReplyInfo(m.From, friend.REPLY_TYPE_CATNIP_ITEMS, "", m.End, Items)
|
||||
PlayerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
playerSimpleData := G_GameLogicPtr.GetResSimplePlayerByUid(m.From)
|
||||
p.PushClientRes(&proto.ResFriendReplyNotify{
|
||||
Info: &proto.ResFriendReply{
|
||||
Player: PlayerSimpleData,
|
||||
Player: playerSimpleData,
|
||||
Param: replyInfo.Param,
|
||||
Type: int32(replyInfo.Type),
|
||||
Id: int32(replyInfo.Id),
|
||||
@ -627,11 +634,11 @@ func (p *Player) CatnipGrowthMsg(To, Id, Growth, FriendItems int) error {
|
||||
To: To,
|
||||
Type: msg.HANDLE_TYPE_CATNIP_GROWTH,
|
||||
SendT: GoUtil.Now(),
|
||||
Extra: CatnipMsg{
|
||||
ActivityId: activityId,
|
||||
GameId: Id,
|
||||
Growth: Growth,
|
||||
FriendItems: FriendItems,
|
||||
Extra: map[string]interface{}{
|
||||
"ActivityId": activityId,
|
||||
"GameId": Id,
|
||||
"Growth": Growth,
|
||||
"FriendItems": FriendItems,
|
||||
},
|
||||
})
|
||||
return nil
|
||||
@ -727,28 +734,28 @@ func (p *Player) EmitRetireTrigger2() {
|
||||
allChess[Color] = struct{}{}
|
||||
}
|
||||
}
|
||||
RetireEmit := ChessMod.GetRetireEmit()
|
||||
for k, v := range RetireEmit {
|
||||
retireEmit := ChessMod.GetRetireEmit()
|
||||
for k, v := range retireEmit {
|
||||
if k == "" {
|
||||
continue
|
||||
}
|
||||
if v != 1 {
|
||||
continue
|
||||
}
|
||||
RetireLv := mergeDataCfg.GetEmitRetire(k)
|
||||
if RetireLv > BaseMod.GetLevel() {
|
||||
retireLv := mergeDataCfg.GetEmitRetire(k)
|
||||
if retireLv > BaseMod.GetLevel() {
|
||||
continue
|
||||
}
|
||||
|
||||
NeedFinishOrder := false
|
||||
Produce := mergeDataCfg.GetEmitOrderProduce(k)
|
||||
for _, v1 := range Produce {
|
||||
needFinishOrder := false
|
||||
produce := mergeDataCfg.GetEmitOrderProduce(k)
|
||||
for _, v1 := range produce {
|
||||
if _, ok := allChess[v1]; ok {
|
||||
NeedFinishOrder = true
|
||||
needFinishOrder = true
|
||||
break
|
||||
}
|
||||
}
|
||||
if NeedFinishOrder {
|
||||
if needFinishOrder {
|
||||
continue
|
||||
}
|
||||
ChessMod.RetireOrder(k)
|
||||
@ -758,36 +765,36 @@ func (p *Player) EmitRetireTrigger2() {
|
||||
return
|
||||
}
|
||||
}
|
||||
RetireEmit1 := ChessMod.GetRetireEmit()
|
||||
for k, v := range RetireEmit1 {
|
||||
retireEmit1 := ChessMod.GetRetireEmit()
|
||||
for k, v := range retireEmit1 {
|
||||
if k == "" {
|
||||
continue
|
||||
}
|
||||
if v != 2 {
|
||||
continue
|
||||
}
|
||||
ChessList := ChessMod.GetRetireChess(k)
|
||||
chessList := ChessMod.GetRetireChess(k)
|
||||
// 清理完成
|
||||
if len(ChessList) == 0 {
|
||||
if len(chessList) == 0 {
|
||||
ChessMod.FinishRetire(k)
|
||||
ChargeMod := p.PlayMod.getChargeMod()
|
||||
ChargeMod.InitChessShop(ChessMod.GetEmitList())
|
||||
p.ChargeBackData()
|
||||
continue
|
||||
}
|
||||
OrderMod.CreateCleanOrder(ChessList)
|
||||
OrderMod.CreateCleanOrder(chessList)
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
func NotifyChampshipResult(Uid, Rank int) {
|
||||
PlayerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid)
|
||||
if PlayerSimpleData == nil {
|
||||
playerSimpleData := G_GameLogicPtr.GetSimplePlayerByUid(Uid)
|
||||
if playerSimpleData == nil {
|
||||
return
|
||||
}
|
||||
now := GoUtil.Now()
|
||||
serveropenday := GoUtil.GetServerOpenDay()
|
||||
for _, v := range PlayerSimpleData.Friend {
|
||||
for _, v := range playerSimpleData.Friend {
|
||||
if CheckPlayerLose(v) {
|
||||
continue
|
||||
}
|
||||
@ -803,20 +810,20 @@ func NotifyChampshipResult(Uid, Rank int) {
|
||||
}
|
||||
|
||||
func (player *Player) GetPetOrderItemExp() int {
|
||||
OrderItemCfgList := playroomCfg.GetOrderItemList()
|
||||
itemList := make([]*item.Item, 0)
|
||||
ItemMod := player.PlayMod.getItemMod()
|
||||
for _, v := range OrderItemCfgList {
|
||||
num := ItemMod.GetItem(v)
|
||||
orderItemCfgList := playroomCfg.GetOrderItemList()
|
||||
items := make([]*item.Item, 0)
|
||||
itemMod := player.PlayMod.getItemMod()
|
||||
for _, v := range orderItemCfgList {
|
||||
num := itemMod.GetItem(v)
|
||||
if num <= 0 {
|
||||
continue
|
||||
}
|
||||
itemList = append(itemList, &item.Item{
|
||||
items = append(items, &item.Item{
|
||||
Id: v,
|
||||
Num: num,
|
||||
})
|
||||
}
|
||||
return playroomCfg.GetPetOrderItemExpByList(itemList)
|
||||
return playroomCfg.GetPetOrderItemExpByList(items)
|
||||
}
|
||||
|
||||
// 触发生成新的固定订单
|
||||
@ -829,32 +836,32 @@ func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul in
|
||||
fixedOrder++
|
||||
}
|
||||
}
|
||||
OrderList := make(map[int]order.Order, len(OrderMod.OrderList))
|
||||
orderList := make(map[int]order.Order, len(OrderMod.OrderList))
|
||||
for k, v := range OrderMod.OrderList {
|
||||
OrderList[k] = v
|
||||
orderList[k] = v
|
||||
}
|
||||
// 触发生成新的固定订单
|
||||
for _, v := range triggerOrderList {
|
||||
if GoUtil.InArray(v.Id, OrderMod.FinishOrder) {
|
||||
continue
|
||||
}
|
||||
orderInfo, exists := OrderList[v.Id]
|
||||
orderInfo, exists := orderList[v.Id]
|
||||
if exists && v.Preview == "" {
|
||||
continue
|
||||
}
|
||||
// 预览条件不为空且未存在且未完成
|
||||
if v.Preview != "" && !exists && !GoUtil.InArray(v.Id, OrderMod.FinishOrder) {
|
||||
if OrderMod.CheckCondition(lv, v.Preview, Type, Emit, fixedOrder, OrderList) {
|
||||
if OrderMod.CheckCondition(lv, v.Preview, Type, Emit, fixedOrder, orderList) {
|
||||
OrderMod.AddFixOrder(v.Id, v.MergeList, order.Preview_type, v.Items)
|
||||
}
|
||||
}
|
||||
|
||||
if v.Appear != "" {
|
||||
if OrderMod.CheckCondition(lv, v.Appear, Type, Emit, fixedOrder, OrderList) {
|
||||
Type := order.Fixed_type
|
||||
OrderType := orderCfg.GetOrderType(v.Id)
|
||||
if OrderType != 0 {
|
||||
Type = OrderType
|
||||
if OrderMod.CheckCondition(lv, v.Appear, Type, Emit, fixedOrder, orderList) {
|
||||
vType := order.Fixed_type
|
||||
orderType := orderCfg.GetOrderType(v.Id)
|
||||
if orderType != 0 {
|
||||
vType = orderType
|
||||
}
|
||||
player.TeLog("preset_order_birth", map[string]interface{}{
|
||||
"order_id": v.Id,
|
||||
@ -866,7 +873,7 @@ func (player *Player) TriggerOrder(lv int, Type string, Emit []int, EnergyMul in
|
||||
orderInfo.Type = order.Fixed_type
|
||||
OrderMod.OrderList[v.Id] = orderInfo
|
||||
} else {
|
||||
OrderMod.AddFixOrder(v.Id, v.MergeList, Type, v.Items)
|
||||
OrderMod.AddFixOrder(v.Id, v.MergeList, vType, v.Items)
|
||||
if v.Id == 78 {
|
||||
OrderMod.Retire("D")
|
||||
OrderMod.AutoEmit = append(OrderMod.AutoEmit, "D")
|
||||
@ -1030,9 +1037,9 @@ func (player *Player) CreatePetOrder() {
|
||||
continue
|
||||
}
|
||||
var items []*item.Item
|
||||
Star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList())
|
||||
star := order.GetOrderStar(v.MergeId, ChessMod.GetStarEmitList())
|
||||
// Star = int(float64(Star)*float64(OrderFactor)/1000) * 10
|
||||
items = player.GetPetOrderReward(Star, items)
|
||||
items = player.GetPetOrderReward(star, items)
|
||||
if len(items) == 1 && items[0].Id == item.ITEM_STAR_ID {
|
||||
v.Type = order.Common_type
|
||||
} else {
|
||||
@ -1246,7 +1253,7 @@ func (p *Player) AddHighOrder() {
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
BaseMod := p.PlayMod.getBaseMod()
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
LastChess := OrderMod.LastOrder.MergeId[len(OrderMod.LastOrder.MergeId)-1]
|
||||
lastChess := OrderMod.LastOrder.MergeId[len(OrderMod.LastOrder.MergeId)-1]
|
||||
maxId := 0
|
||||
for k := range OrderMod.GetOrderList() {
|
||||
maxId = max(maxId, k)
|
||||
@ -1254,51 +1261,53 @@ func (p *Player) AddHighOrder() {
|
||||
if maxId == 0 || BaseMod.GetLevel() < 12 {
|
||||
return
|
||||
}
|
||||
NewChess := OrderMod.GetOrderList()[maxId].MergeId[0]
|
||||
LastColor := mergeDataCfg.GetColorById(LastChess)
|
||||
NewColor := mergeDataCfg.GetColorById(NewChess)
|
||||
LastEmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), LastColor)
|
||||
AddNewEmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), NewColor)
|
||||
var Product []string
|
||||
Product = append(Product, mergeDataCfg.GetEmitProduceType(LastEmitId)...)
|
||||
Product = append(Product, mergeDataCfg.GetEmitProduceType(AddNewEmitId)...)
|
||||
ChessMap := make(map[string]int)
|
||||
ChessList := ChessMod.GetUnlockChessList()
|
||||
for _, v := range ChessList {
|
||||
newChess := OrderMod.GetOrderList()[maxId].MergeId[0]
|
||||
lastColor := mergeDataCfg.GetColorById(lastChess)
|
||||
newColor := mergeDataCfg.GetColorById(newChess)
|
||||
lastEmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), lastColor)
|
||||
addNewEmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), newColor)
|
||||
var product []string
|
||||
product = append(product, mergeDataCfg.GetEmitProduceType(lastEmitId)...)
|
||||
product = append(product, mergeDataCfg.GetEmitProduceType(addNewEmitId)...)
|
||||
chessMap := make(map[string]int)
|
||||
chessList := ChessMod.GetUnlockChessList()
|
||||
chessBagList := ChessMod.GetChessBagList()
|
||||
chessList = append(chessList, chessBagList...)
|
||||
for _, v := range chessList {
|
||||
ChessType := mergeDataCfg.GetTypeById(v)
|
||||
if ChessType != "Product" {
|
||||
continue
|
||||
}
|
||||
Color := mergeDataCfg.GetColorById(v)
|
||||
if GoUtil.InStringArray(Color, Product) {
|
||||
if GoUtil.InStringArray(Color, product) {
|
||||
continue
|
||||
}
|
||||
if v > ChessMap[Color] {
|
||||
ChessMap[Color] = v
|
||||
if v > chessMap[Color] {
|
||||
chessMap[Color] = v
|
||||
}
|
||||
}
|
||||
RetireProduceColor := ChessMod.GetRetireProduceColor()
|
||||
for Color, ChessId := range ChessMap {
|
||||
EmitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), Color)
|
||||
_, ChessMaxLv := getChesslvRange(EmitId, BaseMod.GetEnergyMul(), OrderMod.IsCharge)
|
||||
NewLev2 := mergeDataCfg.DynamicLev(ChessMaxLv, EmitId, Color)
|
||||
NewLev3 := order.AdjustLev(NewLev2, BaseMod.GetEnergyMul())
|
||||
ChessLv := mergeDataCfg.GetLvById(ChessId)
|
||||
for Color, ChessId := range chessMap {
|
||||
emitId := order.GetEmitByColor(ChessMod.GetOrderEmit(), Color)
|
||||
_, ChessMaxLv := getChesslvRange(emitId, BaseMod.GetEnergyMul(), OrderMod.IsCharge)
|
||||
newLev2 := mergeDataCfg.DynamicLev(ChessMaxLv, emitId, Color)
|
||||
newLev3 := order.AdjustLev(newLev2, BaseMod.GetEnergyMul())
|
||||
chessLv := mergeDataCfg.GetLvById(ChessId)
|
||||
chessColor := mergeDataCfg.GetColorById(ChessId)
|
||||
// 退役产物不生成订单
|
||||
if GoUtil.InStringArray(chessColor, RetireProduceColor) {
|
||||
continue
|
||||
}
|
||||
if NewLev3 >= ChessLv {
|
||||
if newLev3 >= chessLv {
|
||||
continue
|
||||
}
|
||||
Add := true
|
||||
add := true
|
||||
for _, v := range OrderMod.GetOrderList() {
|
||||
if GoUtil.InArray(ChessId, v.MergeId) {
|
||||
Add = false
|
||||
add = false
|
||||
}
|
||||
}
|
||||
if Add {
|
||||
if add {
|
||||
OrderMod.AddExtraOrder([]int{ChessId})
|
||||
return
|
||||
}
|
||||
@ -1313,28 +1322,30 @@ func (p *Player) AddHighOrder() {
|
||||
func (p *Player) AddHighOrder2() {
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
ChessList := ChessMod.GetUnlockChessList()
|
||||
ChessMap := make(map[int]int)
|
||||
for _, v := range ChessList {
|
||||
Lv := mergeDataCfg.GetLvById(v)
|
||||
MaxLv := mergeDataCfg.GetMaxLvById(v)
|
||||
if Lv != MaxLv {
|
||||
chessList := ChessMod.GetUnlockChessList()
|
||||
chessBagList := ChessMod.GetChessBagList()
|
||||
chessList = append(chessList, chessBagList...)
|
||||
chessMap := make(map[int]int)
|
||||
for _, v := range chessList {
|
||||
lv := mergeDataCfg.GetLvById(v)
|
||||
maxLv := mergeDataCfg.GetMaxLvById(v)
|
||||
if lv != maxLv {
|
||||
continue
|
||||
}
|
||||
Type := mergeDataCfg.GetTypeById(v)
|
||||
if Type != "Product" {
|
||||
chessType := mergeDataCfg.GetTypeById(v)
|
||||
if chessType != "Product" {
|
||||
continue
|
||||
}
|
||||
ChessMap[v]++
|
||||
chessMap[v]++
|
||||
}
|
||||
RetireProduceColor := ChessMod.GetRetireProduceColor()
|
||||
for ChessId, Num := range ChessMap {
|
||||
retireProduceColor := ChessMod.GetRetireProduceColor()
|
||||
for ChessId, Num := range chessMap {
|
||||
if Num < 2 {
|
||||
continue
|
||||
}
|
||||
chessColor := mergeDataCfg.GetColorById(ChessId)
|
||||
// 退役产物不生成订单
|
||||
if GoUtil.InStringArray(chessColor, RetireProduceColor) {
|
||||
if GoUtil.InStringArray(chessColor, retireProduceColor) {
|
||||
continue
|
||||
}
|
||||
add := true
|
||||
@ -1354,7 +1365,7 @@ func (p *Player) AddHighOrder2() {
|
||||
func (p *Player) DeleteHighOrder() {
|
||||
OrderMod := p.PlayMod.getOrderMod()
|
||||
ChessMod := p.PlayMod.getChessMod()
|
||||
ChessList := ChessMod.GetUnlockChessList()
|
||||
chessList := ChessMod.GetUnlockChessList()
|
||||
for k, v := range OrderMod.GetOrderList() {
|
||||
if v.Type != order.Extra_type {
|
||||
continue
|
||||
@ -1364,7 +1375,7 @@ func (p *Player) DeleteHighOrder() {
|
||||
}
|
||||
chessId := v.MergeId[0]
|
||||
chessNum := len(v.MergeId)
|
||||
elementNum := GoUtil.ElemNumber(ChessList, chessId)
|
||||
elementNum := GoUtil.ElemNumber(chessList, chessId)
|
||||
if elementNum < chessNum {
|
||||
OrderMod.DeleteOrder(k)
|
||||
}
|
||||
@ -1372,28 +1383,28 @@ func (p *Player) DeleteHighOrder() {
|
||||
}
|
||||
|
||||
func (p *Player) FormatPetOrderItem(Items []*item.Item) []*item.Item {
|
||||
var NewItems []*item.Item
|
||||
var newItems []*item.Item
|
||||
PlayroomMod := p.PlayMod.getPlayroomMod()
|
||||
for _, v := range Items {
|
||||
if v.Id != item.ITEM_PLAYROOM_BOX_LOW_ID && v.Id != item.ITEM_PLAYROOM_BOX_MID_ID && v.Id != item.ITEM_PLAYROOM_BOX_HIGH_ID {
|
||||
NewItems = append(NewItems, v)
|
||||
newItems = append(newItems, v)
|
||||
continue
|
||||
}
|
||||
var OrderItem map[int][]int
|
||||
var orderItem map[int][]int
|
||||
switch v.Id {
|
||||
case item.ITEM_PLAYROOM_BOX_LOW_ID:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(1)
|
||||
orderItem = playroomCfg.GetOrderItemByGrade(1)
|
||||
case item.ITEM_PLAYROOM_BOX_MID_ID:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(2)
|
||||
orderItem = playroomCfg.GetOrderItemByGrade(2)
|
||||
default:
|
||||
OrderItem = playroomCfg.GetOrderItemByGrade(3)
|
||||
orderItem = playroomCfg.GetOrderItemByGrade(3)
|
||||
}
|
||||
feed := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_FEED)
|
||||
feedItem := p.GetPlayroomFood()
|
||||
feedPlo := playroomCfg.GetItemAddPhysiology(feedItem)
|
||||
if feed != nil && feed.Num+feedPlo <= 1 {
|
||||
RandList := OrderItem[1]
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
randList := orderItem[1]
|
||||
newItems = append(newItems, item.NewItem(GoUtil.RandSlice(randList), 1))
|
||||
continue
|
||||
}
|
||||
clean := PlayroomMod.GetPhysiology(playroom.PHYSIOLOGY_TYPE_CLEAN)
|
||||
@ -1401,50 +1412,50 @@ func (p *Player) FormatPetOrderItem(Items []*item.Item) []*item.Item {
|
||||
cleanPlo := playroomCfg.GetItemAddPhysiology(cleanItem)
|
||||
// 卫生值低于等于5点,优先产出清洁类物品
|
||||
if clean != nil && clean.Num+cleanPlo <= 5 {
|
||||
RandList := OrderItem[2]
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
randList := orderItem[2]
|
||||
newItems = append(newItems, item.NewItem(GoUtil.RandSlice(randList), 1))
|
||||
continue
|
||||
}
|
||||
var RandList []int
|
||||
for k, v1 := range OrderItem {
|
||||
var randList []int
|
||||
for k, v1 := range orderItem {
|
||||
if k == 1 || k == 2 {
|
||||
continue
|
||||
}
|
||||
RandList = append(RandList, v1...)
|
||||
randList = append(randList, v1...)
|
||||
}
|
||||
NewItems = append(NewItems, item.NewItem(GoUtil.RandSlice(RandList), 1))
|
||||
newItems = append(newItems, item.NewItem(GoUtil.RandSlice(randList), 1))
|
||||
}
|
||||
return NewItems
|
||||
return newItems
|
||||
}
|
||||
|
||||
func (player *Player) GetPlayroomFood() map[int]int {
|
||||
ItemMod := player.PlayMod.getItemMod()
|
||||
Item := make(map[int]int)
|
||||
items := make(map[int]int)
|
||||
for k, v := range ItemMod.Data {
|
||||
ItemType := itemCfg.GetItemType(k)
|
||||
if ItemType == item.ITEM_TYPE_PLAYROOM_PET {
|
||||
Effect := itemCfg.GetItemEffect(k)
|
||||
if Effect == 1 {
|
||||
Item[k] = v
|
||||
items[k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
return Item
|
||||
return items
|
||||
}
|
||||
|
||||
func (player *Player) GetPlayroomClean() map[int]int {
|
||||
ItemMod := player.PlayMod.getItemMod()
|
||||
Item := make(map[int]int)
|
||||
items := make(map[int]int)
|
||||
for k, v := range ItemMod.Data {
|
||||
ItemType := itemCfg.GetItemType(k)
|
||||
if ItemType == item.ITEM_TYPE_PLAYROOM_PET {
|
||||
Effect := itemCfg.GetItemEffect(k)
|
||||
if Effect == 2 {
|
||||
Item[k] = v
|
||||
itemType := itemCfg.GetItemType(k)
|
||||
if itemType == item.ITEM_TYPE_PLAYROOM_PET {
|
||||
effect := itemCfg.GetItemEffect(k)
|
||||
if effect == 2 {
|
||||
items[k] = v
|
||||
}
|
||||
}
|
||||
}
|
||||
return Item
|
||||
return items
|
||||
}
|
||||
|
||||
func (player *Player) IsWeeklyDiscount() bool {
|
||||
|
||||
@ -74,9 +74,9 @@ func (cb *ChessBorad) IsEmpty() bool {
|
||||
|
||||
// 初始化棋盘
|
||||
func (cb *ChessBorad) InitData() {
|
||||
StartMerge := startMergeCfg.GetStartChessList()
|
||||
startMerge := startMergeCfg.GetStartChessList()
|
||||
cb.EmitList = make(map[int]int)
|
||||
cb.ChessList = StartMerge
|
||||
cb.ChessList = startMerge
|
||||
if cb.ChessBag.List == nil {
|
||||
cb.ChessBag.List = make(map[int]ChessBagGrid)
|
||||
InitNum := mergeDataCfg.GetChessBagInitNum()
|
||||
@ -141,11 +141,11 @@ func (cb *ChessBorad) GetChessBuf() []int {
|
||||
|
||||
// 棋子合成
|
||||
func (cb *ChessBorad) ComposeChess(id int) (int, error) {
|
||||
CfgRecord, err := mergeDataCfg.GetOne(id)
|
||||
cfgRecord, err := mergeDataCfg.GetOne(id)
|
||||
if err != nil {
|
||||
return 0, errors.New("配置错误")
|
||||
}
|
||||
if CfgRecord.Lv == CfgRecord.MaxLv {
|
||||
if cfgRecord.Lv == cfgRecord.MaxLv {
|
||||
return 0, errors.New("已达最大等级")
|
||||
}
|
||||
count := 0
|
||||
@ -161,8 +161,8 @@ func (cb *ChessBorad) ComposeChess(id int) (int, error) {
|
||||
if count < 2 {
|
||||
return 0, errors.New("次数不足" + fmt.Sprintf("Id: %d", id))
|
||||
}
|
||||
ChessType := mergeDataCfg.GetTypeById(id)
|
||||
if ChessType == "Emitter" {
|
||||
chessType := mergeDataCfg.GetTypeById(id)
|
||||
if chessType == "Emitter" {
|
||||
cb.EmitList[id+1]++
|
||||
cb.EmitList[id] -= 2
|
||||
}
|
||||
@ -199,8 +199,8 @@ func (cb *ChessBorad) AddChess(id int) error {
|
||||
cb.ChessBuff = append(cb.ChessBuff, id)
|
||||
return nil
|
||||
}
|
||||
ChessType := mergeDataCfg.GetTypeById(id)
|
||||
if ChessType == "Emitter" {
|
||||
chessType := mergeDataCfg.GetTypeById(id)
|
||||
if chessType == "Emitter" {
|
||||
cb.EmitList[id]++
|
||||
}
|
||||
cb.ChessList = append(cb.ChessList, id)
|
||||
@ -209,21 +209,21 @@ func (cb *ChessBorad) AddChess(id int) error {
|
||||
|
||||
// 购买棋子
|
||||
func (cb *ChessBorad) BuyChess(id int) (int, error) {
|
||||
CfgRecord, err := mergeDataCfg.GetOne(id)
|
||||
cfgRecord, err := mergeDataCfg.GetOne(id)
|
||||
if err != nil {
|
||||
return 0, errors.New("配置错误")
|
||||
}
|
||||
cb.ChessList = append(cb.ChessList, id)
|
||||
ChessType := mergeDataCfg.GetTypeById(id)
|
||||
if ChessType == "Emitter" {
|
||||
chessType := mergeDataCfg.GetTypeById(id)
|
||||
if chessType == "Emitter" {
|
||||
cb.EmitList[id]++
|
||||
}
|
||||
return CfgRecord.SellNum, nil
|
||||
return cfgRecord.SellNum, nil
|
||||
}
|
||||
|
||||
// 出售棋子
|
||||
func (cb *ChessBorad) SellChess(id int) ([]*item.Item, error) {
|
||||
CfgRecord, err := mergeDataCfg.GetOne(id)
|
||||
cfgRecord, err := mergeDataCfg.GetOne(id)
|
||||
if err != nil {
|
||||
return nil, errors.New("配置错误")
|
||||
}
|
||||
@ -243,24 +243,24 @@ func (cb *ChessBorad) SellChess(id int) ([]*item.Item, error) {
|
||||
|
||||
cb.ChessList = newList
|
||||
var items []*item.Item
|
||||
switch CfgRecord.SellType {
|
||||
switch cfgRecord.SellType {
|
||||
case "star":
|
||||
items = append(items, &item.Item{Id: item.ITEM_STAR_ID, Num: CfgRecord.SellNum})
|
||||
items = append(items, &item.Item{Id: item.ITEM_STAR_ID, Num: cfgRecord.SellNum})
|
||||
case "diamond":
|
||||
items = append(items, &item.Item{Id: item.ITEM_DIAMOND_ID, Num: CfgRecord.SellNum})
|
||||
items = append(items, &item.Item{Id: item.ITEM_DIAMOND_ID, Num: cfgRecord.SellNum})
|
||||
case "energy":
|
||||
items = append(items, &item.Item{Id: item.ITEM_ENERGY_ID, Num: CfgRecord.SellNum})
|
||||
items = append(items, &item.Item{Id: item.ITEM_ENERGY_ID, Num: cfgRecord.SellNum})
|
||||
case "Racing Battery":
|
||||
items = append(items, &item.Item{Id: item.ITEM_RACING_BATTERY_ID, Num: CfgRecord.SellNum})
|
||||
items = append(items, &item.Item{Id: item.ITEM_RACING_BATTERY_ID, Num: cfgRecord.SellNum})
|
||||
}
|
||||
return items, nil
|
||||
}
|
||||
|
||||
// 移除棋子
|
||||
func (cb *ChessBorad) RemoveChess(Id int) error {
|
||||
func (cb *ChessBorad) RemoveChess(id int) error {
|
||||
find := false
|
||||
for k, v := range cb.ChessList {
|
||||
if v == Id {
|
||||
if v == id {
|
||||
cb.ChessList = append(cb.ChessList[:k], cb.ChessList[k+1:]...)
|
||||
find = true
|
||||
break
|
||||
@ -269,11 +269,11 @@ func (cb *ChessBorad) RemoveChess(Id int) error {
|
||||
if !find {
|
||||
return errors.New("chess id not exist")
|
||||
}
|
||||
ChessType := mergeDataCfg.GetTypeById(Id)
|
||||
if ChessType == "Emitter" {
|
||||
v, ok := cb.EmitList[Id]
|
||||
chessType := mergeDataCfg.GetTypeById(id)
|
||||
if chessType == "Emitter" {
|
||||
v, ok := cb.EmitList[id]
|
||||
if v > 0 && ok {
|
||||
cb.EmitList[Id]--
|
||||
cb.EmitList[id]--
|
||||
}
|
||||
}
|
||||
return nil
|
||||
@ -282,39 +282,39 @@ func (cb *ChessBorad) RemoveChess(Id int) error {
|
||||
// emitListToSlice 将 EmitList 过滤并转换为发射器 ID 列表。
|
||||
// retireFilter 为 true 时过滤已退役的发射器。
|
||||
func (cb *ChessBorad) emitListToSlice(retireFilter bool) []int {
|
||||
EM := make(map[string]int)
|
||||
emitMap := make(map[string]int)
|
||||
for k, v := range cb.EmitList {
|
||||
if v <= 0 {
|
||||
delete(cb.EmitList, k)
|
||||
continue
|
||||
}
|
||||
EmitID := mergeDataCfg.GetEmitId(k)
|
||||
if EmitID == "" {
|
||||
emitID := mergeDataCfg.GetEmitId(k)
|
||||
if emitID == "" {
|
||||
continue
|
||||
}
|
||||
if retireFilter && cb.Retire[EmitID] >= EMIT_RETIRE_START {
|
||||
if retireFilter && cb.Retire[emitID] >= EMIT_RETIRE_START {
|
||||
continue
|
||||
}
|
||||
if mergeDataCfg.GetEmitType(k) == "sub" {
|
||||
continue
|
||||
}
|
||||
EM[EmitID] = max(EM[EmitID], k)
|
||||
emitMap[emitID] = max(emitMap[emitID], k)
|
||||
}
|
||||
for _, v := range cb.ChessBag.List {
|
||||
EmitID := mergeDataCfg.GetEmitId(v.ChessId)
|
||||
if EmitID == "" {
|
||||
emitID := mergeDataCfg.GetEmitId(v.ChessId)
|
||||
if emitID == "" {
|
||||
continue
|
||||
}
|
||||
if retireFilter && cb.Retire[EmitID] >= EMIT_RETIRE_START {
|
||||
if retireFilter && cb.Retire[emitID] >= EMIT_RETIRE_START {
|
||||
continue
|
||||
}
|
||||
if mergeDataCfg.GetEmitType(v.ChessId) == "sub" {
|
||||
continue
|
||||
}
|
||||
EM[EmitID] = max(EM[EmitID], (v.ChessId))
|
||||
emitMap[emitID] = max(emitMap[emitID], (v.ChessId))
|
||||
}
|
||||
result := make([]int, 0, len(EM))
|
||||
for _, v := range EM {
|
||||
result := make([]int, 0, len(emitMap))
|
||||
for _, v := range emitMap {
|
||||
result = append(result, v)
|
||||
}
|
||||
if !retireFilter {
|
||||
@ -336,7 +336,7 @@ func (cb *ChessBorad) GetEmitList() []int {
|
||||
}
|
||||
|
||||
// 完成订单 移除棋子
|
||||
func (cb *ChessBorad) FinishOrder(ChessId []int) error {
|
||||
func (cb *ChessBorad) FinishOrder(chessId []int) error {
|
||||
unlockChessList := cb.GetUnlockChessList()
|
||||
unlockChessMap := make(map[int]int)
|
||||
for _, v := range unlockChessList {
|
||||
@ -344,13 +344,13 @@ func (cb *ChessBorad) FinishOrder(ChessId []int) error {
|
||||
}
|
||||
|
||||
var boardChess []int
|
||||
var BagChess []int
|
||||
for _, v := range ChessId {
|
||||
var bagChess []int
|
||||
for _, v := range chessId {
|
||||
if unlockChessMap[v] > 0 {
|
||||
unlockChessMap[v]--
|
||||
boardChess = append(boardChess, v)
|
||||
} else {
|
||||
BagChess = append(BagChess, v)
|
||||
bagChess = append(bagChess, v)
|
||||
}
|
||||
}
|
||||
for _, v := range boardChess {
|
||||
@ -359,7 +359,7 @@ func (cb *ChessBorad) FinishOrder(ChessId []int) error {
|
||||
return err
|
||||
}
|
||||
}
|
||||
for _, v := range BagChess {
|
||||
for _, v := range bagChess {
|
||||
err := cb.FinishOrderChessByBag(v)
|
||||
if err != nil {
|
||||
return err
|
||||
@ -369,37 +369,47 @@ func (cb *ChessBorad) FinishOrder(ChessId []int) error {
|
||||
}
|
||||
|
||||
// 完成订单 移除棋子
|
||||
func (cb *ChessBorad) FinishOrderChess(Chess int) error {
|
||||
func (cb *ChessBorad) FinishOrderChess(chess int) error {
|
||||
for k, v := range cb.ChessList {
|
||||
if v == Chess {
|
||||
if v == chess {
|
||||
cb.ChessList = append(cb.ChessList[:k], cb.ChessList[k+1:]...)
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("order finish board chess id:%d not exist", Chess)
|
||||
return fmt.Errorf("order finish board chess id:%d not exist", chess)
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) GetChessBagList() []int {
|
||||
var chessBag []int
|
||||
for _, v := range cb.ChessBag.List {
|
||||
if v.ChessId > 0 {
|
||||
chessBag = append(chessBag, v.ChessId)
|
||||
}
|
||||
}
|
||||
return chessBag
|
||||
}
|
||||
|
||||
// 完成订单 移除棋子
|
||||
func (cb *ChessBorad) FinishOrderChessByBag(Chess int) error {
|
||||
func (cb *ChessBorad) FinishOrderChessByBag(chess int) error {
|
||||
for k, v := range cb.ChessBag.List {
|
||||
if v.ChessId == Chess {
|
||||
if v.ChessId == chess {
|
||||
cb.ChessBag.List[k] = ChessBagGrid{}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("order finish bag chess id:%d not exist", Chess)
|
||||
return fmt.Errorf("order finish bag chess id:%d not exist", chess)
|
||||
}
|
||||
|
||||
// 棋子转换
|
||||
func (cb *ChessBorad) ExChess(OldChessId, NewChessId int) error {
|
||||
if OldChessId > 0 {
|
||||
newList, b := GoUtil.PopElemSlice(cb.ChessList, OldChessId)
|
||||
func (cb *ChessBorad) ExChess(oldChessId, newChessId int) error {
|
||||
if oldChessId > 0 {
|
||||
newList, b := GoUtil.PopElemSlice(cb.ChessList, oldChessId)
|
||||
if !b {
|
||||
return fmt.Errorf("ExChess chess id not exist")
|
||||
}
|
||||
cb.ChessList = newList
|
||||
}
|
||||
return cb.AddChess(NewChessId)
|
||||
return cb.AddChess(newChessId)
|
||||
}
|
||||
|
||||
// 增加棋盘缓冲器
|
||||
@ -407,82 +417,82 @@ func (cb *ChessBorad) AddChessBuff(chess int) {
|
||||
cb.ChessBuff = append(cb.ChessBuff, chess)
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) AddHonor(Id int) {
|
||||
cb.Honor[Id] = 1
|
||||
func (cb *ChessBorad) AddHonor(id int) {
|
||||
cb.Honor[id] = 1
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) RemoveHonor(Id int) {
|
||||
delete(cb.Honor, Id)
|
||||
func (cb *ChessBorad) RemoveHonor(id int) {
|
||||
delete(cb.Honor, id)
|
||||
}
|
||||
|
||||
// 从暂存区添加棋子到棋盘
|
||||
func (cb *ChessBorad) GetChessFromBuff(Chess int) error {
|
||||
func (cb *ChessBorad) GetChessFromBuff(chess int) error {
|
||||
for i, v := range cb.ChessBuff {
|
||||
if v == Chess {
|
||||
if v == chess {
|
||||
cb.ChessBuff = append(cb.ChessBuff[:i], cb.ChessBuff[i+1:]...)
|
||||
return cb.AddChess(Chess)
|
||||
return cb.AddChess(chess)
|
||||
}
|
||||
}
|
||||
return errors.New("chess id not exist")
|
||||
}
|
||||
|
||||
// 扣除零件
|
||||
func (cb *ChessBorad) LosePart(PartId int, Num int) error {
|
||||
v, ok := cb.PartBag.List[PartId]
|
||||
if !ok || v.Num < Num {
|
||||
return errors.New("part id not exist or num not enough" + fmt.Sprintf("PartId: %d, Num: %d, ok: %v", PartId, Num, ok))
|
||||
func (cb *ChessBorad) LosePart(partId int, num int) error {
|
||||
v, ok := cb.PartBag.List[partId]
|
||||
if !ok || v.Num < num {
|
||||
return errors.New("part id not exist or num not enough" + fmt.Sprintf("PartId: %d, Num: %d, ok: %v", partId, num, ok))
|
||||
}
|
||||
v.Num -= Num
|
||||
cb.PartBag.List[PartId] = v
|
||||
v.Num -= num
|
||||
cb.PartBag.List[partId] = v
|
||||
return nil
|
||||
}
|
||||
|
||||
// 返回数据
|
||||
func (cb *ChessBorad) BackData() *msg.ResPlayerChessInfo {
|
||||
var ChessBagGrids []*msg.ChessBagGrid
|
||||
var chessBagGrids []*msg.ChessBagGrid
|
||||
for k, v := range cb.ChessBag.List {
|
||||
ChessBagGrids = append(ChessBagGrids, &msg.ChessBagGrid{
|
||||
chessBagGrids = append(chessBagGrids, &msg.ChessBagGrid{
|
||||
Id: int32(k),
|
||||
ChessId: int32(v.ChessId),
|
||||
EmitId: int32(v.EmitId),
|
||||
})
|
||||
}
|
||||
var PartBagGrids []*msg.PartBagGrid
|
||||
var partBagGrids []*msg.PartBagGrid
|
||||
for k, v := range cb.PartBag.List {
|
||||
PartBagGrids = append(PartBagGrids, &msg.PartBagGrid{
|
||||
partBagGrids = append(partBagGrids, &msg.PartBagGrid{
|
||||
PartId: int32(k),
|
||||
Count: int32(v.Num),
|
||||
})
|
||||
}
|
||||
Re := make([]string, 0, len(cb.Retire))
|
||||
retire := make([]string, 0, len(cb.Retire))
|
||||
for k, v := range cb.Retire {
|
||||
if v == EMIT_RETIRE_END {
|
||||
Re = append(Re, k)
|
||||
retire = append(retire, k)
|
||||
}
|
||||
}
|
||||
Ho := make([]int32, 0, len(cb.Honor))
|
||||
honor := make([]int32, 0, len(cb.Honor))
|
||||
for k := range cb.Honor {
|
||||
Ho = append(Ho, int32(k))
|
||||
honor = append(honor, int32(k))
|
||||
}
|
||||
Rw := make([]string, 0, len(cb.RetireReward))
|
||||
retireReward := make([]string, 0, len(cb.RetireReward))
|
||||
for k, v := range cb.RetireReward {
|
||||
if v {
|
||||
Rw = append(Rw, k)
|
||||
retireReward = append(retireReward, k)
|
||||
}
|
||||
}
|
||||
return &msg.ResPlayerChessInfo{
|
||||
ChessList: GoUtil.SliceIntToInt32(cb.ChessList),
|
||||
ChessBuff: GoUtil.SliceIntToInt32(cb.ChessBuff),
|
||||
RetireEmit: Re,
|
||||
RetireReward: Rw,
|
||||
Honor: Ho,
|
||||
RetireEmit: retire,
|
||||
RetireReward: retireReward,
|
||||
Honor: honor,
|
||||
ChessBag: &msg.ChessBag{
|
||||
ChessBagGrids: ChessBagGrids,
|
||||
ChessBagGrids: chessBagGrids,
|
||||
ChessBuyCnt: int32(cb.ChessBag.Buy),
|
||||
ChessFreeCnt: int32(cb.ChessBag.Free),
|
||||
},
|
||||
PartBag: &msg.PartBag{
|
||||
PartBagGrids: PartBagGrids,
|
||||
PartBagGrids: partBagGrids,
|
||||
},
|
||||
}
|
||||
}
|
||||
@ -494,8 +504,8 @@ func (cb *ChessBorad) BuyChessBagGrid() error {
|
||||
cb.ChessBag.Free--
|
||||
return nil
|
||||
}
|
||||
MaxBuy := mergeDataCfg.GetChessBagBugNum()
|
||||
if cb.ChessBag.Buy >= MaxBuy {
|
||||
maxBuy := mergeDataCfg.GetChessBagBugNum()
|
||||
if cb.ChessBag.Buy >= maxBuy {
|
||||
return fmt.Errorf("ChessBag can buy is full")
|
||||
}
|
||||
cb.ChessBag.Buy++
|
||||
@ -507,31 +517,31 @@ func (cb *ChessBorad) GetBuyChessBagGridCost() []*item.Item {
|
||||
if cb.ChessBag.Free > 0 {
|
||||
return nil
|
||||
}
|
||||
NeedDiamond := 10 + 15*cb.ChessBag.Buy
|
||||
return []*item.Item{{Id: item.ITEM_DIAMOND_ID, Num: -NeedDiamond}}
|
||||
needDiamond := 10 + 15*cb.ChessBag.Buy
|
||||
return []*item.Item{{Id: item.ITEM_DIAMOND_ID, Num: -needDiamond}}
|
||||
}
|
||||
|
||||
// 升级触发解锁棋盘背包
|
||||
func (cb *ChessBorad) TriggerChessBagUnlock(Lv int) bool {
|
||||
UnlockPack := userCfg.GetUnlockPack(Lv)
|
||||
if UnlockPack > 0 {
|
||||
cb.ChessBag.Free += UnlockPack
|
||||
func (cb *ChessBorad) TriggerChessBagUnlock(lv int) bool {
|
||||
unlockPack := userCfg.GetUnlockPack(lv)
|
||||
if unlockPack > 0 {
|
||||
cb.ChessBag.Free += unlockPack
|
||||
return true
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// 将棋子放入背包
|
||||
func (cb *ChessBorad) PutChessInBag(Grid, ChessId, EmitId int) error {
|
||||
err := cb.RemoveChess(ChessId)
|
||||
func (cb *ChessBorad) PutChessInBag(grid, chessId, emitId int) error {
|
||||
err := cb.RemoveChess(chessId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if Grid == 0 { // 背包id为0且发射器已退役奖励已领取 直接放入荣誉室
|
||||
cb.AddHonor(ChessId)
|
||||
if grid == 0 { // 背包id为0且发射器已退役奖励已领取 直接放入荣誉室
|
||||
cb.AddHonor(chessId)
|
||||
return nil
|
||||
}
|
||||
v, ok := cb.ChessBag.List[Grid]
|
||||
v, ok := cb.ChessBag.List[grid]
|
||||
if !ok {
|
||||
return errors.New("ChessBag Grid unlock")
|
||||
}
|
||||
@ -539,50 +549,50 @@ func (cb *ChessBorad) PutChessInBag(Grid, ChessId, EmitId int) error {
|
||||
if v.ChessId > 0 {
|
||||
return errors.New("ChessBag Grid is not empty")
|
||||
}
|
||||
cb.ChessBag.List[Grid] = ChessBagGrid{
|
||||
ChessId: ChessId,
|
||||
EmitId: EmitId,
|
||||
cb.ChessBag.List[grid] = ChessBagGrid{
|
||||
ChessId: chessId,
|
||||
EmitId: emitId,
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 将零件放入背包
|
||||
func (cb *ChessBorad) PutPartInBag(ChessId int) error {
|
||||
err := cb.RemoveChess(ChessId)
|
||||
func (cb *ChessBorad) PutPartInBag(chessId int) error {
|
||||
err := cb.RemoveChess(chessId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
ChessLv := mergeDataCfg.GetLvById(ChessId)
|
||||
ChessMaxLv := mergeDataCfg.GetMaxLvById(ChessId)
|
||||
ChessLv := mergeDataCfg.GetLvById(chessId)
|
||||
ChessMaxLv := mergeDataCfg.GetMaxLvById(chessId)
|
||||
if ChessLv != ChessMaxLv { // 零件只能放入满级棋子
|
||||
return errors.New("part Lv is not max")
|
||||
}
|
||||
if cb.PartBag.List == nil {
|
||||
cb.PartBag.List = make(map[int]PartBagGrid)
|
||||
}
|
||||
Num := cb.PartBag.List[ChessId].Num
|
||||
cb.PartBag.List[ChessId] = PartBagGrid{
|
||||
PartId: ChessId,
|
||||
Num := cb.PartBag.List[chessId].Num
|
||||
cb.PartBag.List[chessId] = PartBagGrid{
|
||||
PartId: chessId,
|
||||
Num: Num + 1,
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// 将棋子从背包取出
|
||||
func (cb *ChessBorad) TakeChessOutBag(Grid int) (int, error) {
|
||||
if Grid < 0 {
|
||||
cb.RemoveHonor(-Grid)
|
||||
cb.AddChess(-Grid)
|
||||
func (cb *ChessBorad) TakeChessOutBag(grid int) (int, error) {
|
||||
if grid < 0 {
|
||||
cb.RemoveHonor(-grid)
|
||||
cb.AddChess(-grid)
|
||||
return 0, nil
|
||||
}
|
||||
GridInfo, ok := cb.ChessBag.List[Grid]
|
||||
GridInfo, ok := cb.ChessBag.List[grid]
|
||||
if !ok {
|
||||
return 0, errors.New("ChessBag Grid unlock")
|
||||
}
|
||||
if GridInfo.ChessId == 0 {
|
||||
return 0, errors.New("ChessBag Grid is empty")
|
||||
}
|
||||
cb.ChessBag.List[Grid] = ChessBagGrid{}
|
||||
cb.ChessBag.List[grid] = ChessBagGrid{}
|
||||
return GridInfo.ChessId, cb.AddChess(GridInfo.ChessId)
|
||||
}
|
||||
|
||||
@ -607,42 +617,42 @@ func (cb *ChessBorad) GetRetireEmit() map[string]int {
|
||||
}
|
||||
|
||||
// 获取退役发射器的棋子列表
|
||||
func (cb *ChessBorad) GetRetireChess(EmitType string) []int {
|
||||
v, ok := cb.RetireChessMap[EmitType]
|
||||
func (cb *ChessBorad) GetRetireChess(emitType string) []int {
|
||||
v, ok := cb.RetireChessMap[emitType]
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
if len(v) == 1 {
|
||||
cb.RetireChessMap[EmitType] = nil
|
||||
cb.RetireChessMap[emitType] = nil
|
||||
return v
|
||||
}
|
||||
if len(v) == 0 {
|
||||
return nil
|
||||
}
|
||||
cb.RetireChessMap[EmitType] = v[2:]
|
||||
cb.RetireChessMap[emitType] = v[2:]
|
||||
return v[:2]
|
||||
}
|
||||
|
||||
// 开始退役
|
||||
func (cb *ChessBorad) BeginRetire(EmitType string) error {
|
||||
func (cb *ChessBorad) BeginRetire(emitType string) error {
|
||||
if cb.Retire == nil {
|
||||
cb.Retire = make(map[string]int)
|
||||
}
|
||||
_, ok := cb.Retire[EmitType]
|
||||
_, ok := cb.Retire[emitType]
|
||||
if ok {
|
||||
return errors.New("chess has been retired")
|
||||
}
|
||||
cb.Retire[EmitType] = EMIT_RETIRE_START
|
||||
cb.Retire[emitType] = EMIT_RETIRE_START
|
||||
return nil
|
||||
}
|
||||
|
||||
// 退役棋子处理
|
||||
func (cb *ChessBorad) RetireOrder(EmitType string) error {
|
||||
if cb.Retire[EmitType] != 1 {
|
||||
func (cb *ChessBorad) RetireOrder(emitType string) error {
|
||||
if cb.Retire[emitType] != 1 {
|
||||
return errors.New("chess has not been retired")
|
||||
}
|
||||
chess := make([]int, 0, len(cb.ChessMap))
|
||||
EmitProduct := mergeDataCfg.GetEmitOrderProduce(EmitType)
|
||||
EmitProduct := mergeDataCfg.GetEmitOrderProduce(emitType)
|
||||
for k, v := range cb.ChessMap {
|
||||
arr := strings.Split(k, "@")
|
||||
Color := mergeDataCfg.GetColorById(int(v))
|
||||
@ -652,31 +662,31 @@ func (cb *ChessBorad) RetireOrder(EmitType string) error {
|
||||
}
|
||||
|
||||
sort.Sort(sort.Reverse(sort.IntSlice(chess)))
|
||||
cb.RetireChessMap[EmitType] = chess
|
||||
cb.Retire[EmitType] = EMIT_RETIRE_ING
|
||||
cb.RetireChessMap[emitType] = chess
|
||||
cb.Retire[emitType] = EMIT_RETIRE_ING
|
||||
return nil
|
||||
}
|
||||
|
||||
// 完成退役
|
||||
func (cb *ChessBorad) FinishRetire(EmitType string) error {
|
||||
_, ok := cb.Retire[EmitType]
|
||||
func (cb *ChessBorad) FinishRetire(emitType string) error {
|
||||
_, ok := cb.Retire[emitType]
|
||||
if !ok {
|
||||
return errors.New("chess has not been retired")
|
||||
}
|
||||
cb.Retire[EmitType] = EMIT_RETIRE_END
|
||||
cb.Retire[emitType] = EMIT_RETIRE_END
|
||||
return nil
|
||||
}
|
||||
|
||||
// 获取资源宝箱奖励
|
||||
func (cb *ChessBorad) SourceChest(ChessId int) ([]*item.Item, error) {
|
||||
err := cb.RemoveChess(ChessId)
|
||||
func (cb *ChessBorad) SourceChest(chessId int) ([]*item.Item, error) {
|
||||
err := cb.RemoveChess(chessId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if ChessId == CHESS_SOURCE_CHEST {
|
||||
if chessId == CHESS_SOURCE_CHEST {
|
||||
return mergeDataCfg.GetSourceChestItem(), nil
|
||||
}
|
||||
if ChessId == CHESS_HIGH_SOURCE_CHEST {
|
||||
if chessId == CHESS_HIGH_SOURCE_CHEST {
|
||||
return mergeDataCfg.GetHighSourceChestItem(), nil
|
||||
}
|
||||
|
||||
@ -684,16 +694,16 @@ func (cb *ChessBorad) SourceChest(ChessId int) ([]*item.Item, error) {
|
||||
}
|
||||
|
||||
// 降低棋子等级
|
||||
func (cb *ChessBorad) SeparateChess(ChessId int) (int, error) {
|
||||
ChessLv := mergeDataCfg.GetLvById(ChessId)
|
||||
if ChessLv == 1 {
|
||||
func (cb *ChessBorad) SeparateChess(chessId int) (int, error) {
|
||||
chessLv := mergeDataCfg.GetLvById(chessId)
|
||||
if chessLv == 1 {
|
||||
return 0, errors.New("chess lv is 1")
|
||||
}
|
||||
ChessType := mergeDataCfg.GetTypeById(ChessId)
|
||||
if ChessType != "Product" {
|
||||
chessType := mergeDataCfg.GetTypeById(chessId)
|
||||
if chessType != "Product" {
|
||||
return 0, errors.New("chess type is not product")
|
||||
}
|
||||
err := cb.RemoveChess(ChessId)
|
||||
err := cb.RemoveChess(chessId)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
@ -701,25 +711,25 @@ func (cb *ChessBorad) SeparateChess(ChessId int) (int, error) {
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
ChessColor := mergeDataCfg.GetColorById(ChessId)
|
||||
NewChess := mergeDataCfg.GetChessIdByLvAndColor(ChessLv-1, ChessColor)
|
||||
cb.AddChess(NewChess)
|
||||
cb.AddChess(NewChess)
|
||||
return NewChess, nil
|
||||
chessColor := mergeDataCfg.GetColorById(chessId)
|
||||
newChess := mergeDataCfg.GetChessIdByLvAndColor(chessLv-1, chessColor)
|
||||
cb.AddChess(newChess)
|
||||
cb.AddChess(newChess)
|
||||
return newChess, nil
|
||||
}
|
||||
|
||||
// 提高棋子等级
|
||||
func (cb *ChessBorad) UpgradeChess(ChessId int) (int, error) {
|
||||
ChessLv := mergeDataCfg.GetLvById(ChessId)
|
||||
ChessMaxLv := mergeDataCfg.GetMaxLvById(ChessId)
|
||||
if ChessLv == ChessMaxLv {
|
||||
func (cb *ChessBorad) UpgradeChess(chessId int) (int, error) {
|
||||
chessLv := mergeDataCfg.GetLvById(chessId)
|
||||
chessMaxLv := mergeDataCfg.GetMaxLvById(chessId)
|
||||
if chessLv == chessMaxLv {
|
||||
return 0, errors.New("chess lv is max")
|
||||
}
|
||||
ChessType := mergeDataCfg.GetTypeById(ChessId)
|
||||
if ChessType != "Product" {
|
||||
chessType := mergeDataCfg.GetTypeById(chessId)
|
||||
if chessType != "Product" {
|
||||
return 0, errors.New("chess type is not product")
|
||||
}
|
||||
err := cb.RemoveChess(ChessId)
|
||||
err := cb.RemoveChess(chessId)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
@ -727,9 +737,9 @@ func (cb *ChessBorad) UpgradeChess(ChessId int) (int, error) {
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
NewChess := mergeDataCfg.GetChessIdByLvAndColor(ChessLv+1, mergeDataCfg.GetColorById(ChessId))
|
||||
cb.AddChess(NewChess)
|
||||
return NewChess, nil
|
||||
newChess := mergeDataCfg.GetChessIdByLvAndColor(chessLv+1, mergeDataCfg.GetColorById(chessId))
|
||||
cb.AddChess(newChess)
|
||||
return newChess, nil
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) GetPartBag() map[int]int {
|
||||
@ -740,14 +750,14 @@ func (cb *ChessBorad) GetPartBag() map[int]int {
|
||||
return res
|
||||
}
|
||||
|
||||
func (cb *ChessBorad) GetRetireReward(Id string) ([]*item.Item, error) {
|
||||
if cb.RetireReward[Id] == true {
|
||||
func (cb *ChessBorad) GetRetireReward(id string) ([]*item.Item, error) {
|
||||
if cb.RetireReward[id] == true {
|
||||
return nil, errors.New("emit retire reward has been get")
|
||||
}
|
||||
if cb.Retire[Id] != EMIT_RETIRE_END {
|
||||
if cb.Retire[id] != EMIT_RETIRE_END {
|
||||
return nil, errors.New("emit not finish retire")
|
||||
}
|
||||
cb.RetireReward[Id] = true
|
||||
cb.RetireReward[id] = true
|
||||
return mergeDataCfg.GetRetireReward(), nil
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@ -452,9 +452,9 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error {
|
||||
From: int(player.M_DwUin),
|
||||
To: int(ReplyInfo.Uid),
|
||||
Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE,
|
||||
Extra: CatnipMsg{
|
||||
ActivityId: ActivityId,
|
||||
GameId: int(GameId),
|
||||
Extra: map[string]interface{}{
|
||||
"ActivityId": ActivityId,
|
||||
"GameId": int(GameId),
|
||||
},
|
||||
SendT: now,
|
||||
End: now + sevendays,
|
||||
@ -465,9 +465,9 @@ func ReqFriendReplyHandle(player *Player, buf []byte) error {
|
||||
From: int(player.M_DwUin),
|
||||
To: int(v),
|
||||
Type: MsqMod.HANDLE_TYPE_CATNIP_AGREE,
|
||||
Extra: CatnipMsg{
|
||||
ActivityId: ActivityId,
|
||||
GameId: int(GameId),
|
||||
Extra: map[string]interface{}{
|
||||
"ActivityId": ActivityId,
|
||||
"GameId": int(GameId),
|
||||
},
|
||||
SendT: now,
|
||||
End: now + sevendays,
|
||||
|
||||
Loading…
Reference in New Issue
Block a user