local skynet = require "skynet" local oo = require "Class" local log = require "Log" local pb = require "pb" local dataType = require "DataType" local errorInfo = require "ErrorInfo" local shop = require "Shop" local FashionShop = oo.class(shop) FashionShop.PurchaseType_1 = 1 --服装商店购买 FashionShop.PurchaseType_2 = 2 --活动获取 function FashionShop:Init() end --显示一种类型 function FashionShop:Show( player , c2sData , s2cData ) c2sData.data = assert(pb.decode("C2SFashionShopShow", c2sData.data )) local shopType = dataType.ShopType_Fashion local data = {} data.shopInfo = {} --时间超过了,刷新新的一批 if skynet.GetTime() >= player.gameData.shop[ shopType ].nextRefreshTime then self:RefreshShop( player , shopType ) end --获取最新的商店数据 data.shopInfo = self:GetShopData(player , shopType ) s2cData.cmd = pb.enum("MsgType","CMD_S2C_FashionShopShow") s2cData.data = assert(pb.encode("S2CFashionShopShow", data)) end --商店购买 function FashionShop:Buy( player , c2sData , s2cData ) c2sData.data = assert(pb.decode("C2SFashionShopBuy", c2sData.data )) local goodsId = c2sData.data.goodsId local data = {} local shopType = dataType.ShopType_Fashion local curShop = player.gameData.shop[ shopType ] --特殊商品购买 if not goodsId then s2cData.code = errorInfo.ErrorCode.ErrRequestParam else for k, v in pairs( player.gameData.shop[ shopType ].suitGoods ) do if goodsId == v.id then --先扣钱,再发货 local cfgClothes = skynet.server.gameConfig:GetCurCfg("Clothes" , goodsId) --local moneyType , moneyCount = self:GetClothesPrice( goodsId ) local clothesType = cfgClothes.type local moneyType , moneyCount = skynet.server.gameConfig:GetBuyMoney("Clothes" , goodsId ) --dataType.MoneyType_Map , cfgClothes.diomond if moneyType and player:MoneyChange( moneyType , -moneyCount ) then player.gameData.shop[ shopType ].suitGoods[ k ].buyCount = 1 skynet.server.bag:AddGoods( player , dataType.GoodsType_Clothes , goodsId , 1 ) log.info(string.format("玩家 %d 每日时尚商店 购买成功 商品 %d 扣除四叶草 %d" , player.basicInfo.userID , goodsId , moneyCount)) else log.info(string.format("玩家 %d 每日时尚商店 购买失败 商品 %d " , player.basicInfo.userID , goodsId)) s2cData.code = errorInfo.ErrorCode.NoEnoughMoney end break end end end data.shopInfo = self:GetShopData(player , shopType ) s2cData.cmd = pb.enum("MsgType","CMD_S2C_FashionShopBuy") s2cData.data = assert(pb.encode("S2CFashionShopBuy", data)) end --刷新商店类型 function FashionShop:RefreshShop( player , shopType ) local suitCount = 0 --#skynet.server.gameConfig.ClothesSuit --套间总数量 local cfgClothesSuit = skynet.server.gameConfig.ClothesSuit for k, v in pairs( cfgClothesSuit ) do if self.PurchaseType_1 == v.purchaseType then suitCount = suitCount + 1 end end player.gameData.shop[ shopType ].curSuitType = player.gameData.shop[ shopType ].curSuitType + 1 --套装ID超过套间数量时,又从第一套开始 if player.gameData.shop[ shopType ].curSuitType > suitCount then player.gameData.shop[ shopType ].curSuitType = 1 end local curSuitType = player.gameData.shop[ shopType ].curSuitType local newGoods = self:GetSuitFashion( curSuitType ) self:SetShopData( player , shopType , newGoods ) --刷新时间 player.gameData.shop[ shopType ].nextRefreshTime = skynet.server.common:GetAfterSomeDay(1) end --设置商店数据 function FashionShop:SetShopData( player , shopType , newGoods ) player.gameData.shop[ shopType ].suitGoods = {} for k, v in pairs( newGoods ) do local buyCount = 0 --是否购买 if player:IsBuyGoods( dataType.GoodsType_Clothes , v ) then buyCount = 1 end table.insert( player.gameData.shop[ shopType ].suitGoods , { id = v , buyCount = buyCount} ) log.info(string.format("玩家 %d 每日时尚商店 设置商店数据 最新套装商品 ID %d 是否购买 %d" , player.basicInfo.userID , v , buyCount )) end end --获取商店数据 function FashionShop:GetShopData( player , shopType ) local shopInfo = {} shopInfo.suitGoods = player.gameData.shop[ shopType ].suitGoods shopInfo.nextRefreshTime = player.gameData.shop[ shopType ].nextRefreshTime return shopInfo end skynet.server.fashionShop = FashionShop return FashionShop