高级订单符合条件并没有直接生效

This commit is contained in:
hahwu 2026-03-24 15:53:26 +08:00
parent a4efd1bac1
commit bc417b6301
4 changed files with 877 additions and 836 deletions

View File

@ -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 {

View File

@ -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

View File

@ -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,