Commit 6d272f655a32ce87ba312f61d77004ed34ccd78a

Authored by zhouhaihai
1 parent 916096ed

餐厅 食材

src/ProtocolCode.lua
... ... @@ -87,6 +87,7 @@ actionCodes = {
87 87 Diner_refreshTaskRpc = 309,
88 88 Diner_expediteSellRpc = 310,
89 89 Diner_getGreenhouseRpc = 311,
  90 + Diner_addWantFoodRpc = 312,
90 91  
91 92 Tower_roleFormatRpc = 350,
92 93 Tower_startBattleRpc = 351,
... ...
src/actions/DinerAction.lua
... ... @@ -515,33 +515,77 @@ function _M.refreshTaskRpc( agent, data )
515 515 return true
516 516 end
517 517  
518   -function _M.getGreenhouseRpc( agent, data )
  518 +function _M.addWantFoodRpc(agent , data)
519 519 local role = agent.role
520 520 local msg = MsgPack.unpack(data)
521 521  
  522 + local ids = msg.ids -- list
  523 +
522 524 local buildType = 6
523 525 local level = role.dinerData:getProperty("buildL"):getv(buildType, 1)
524 526 local buildingData = csvdb["diner_buildingCsv"][buildType][level]
  527 +
525 528 if not buildingData then
526 529 return 1
527 530 end
528   - if buildingData.speed <= 0 then
529   - return 2
  531 +
  532 + if #ids > buildingData.business then return 2 end
  533 +
  534 + local had = {}
  535 + for _, itemId in ipairs(ids) do
  536 + if had[itemId] then return end
  537 + had[itemId] = 1
  538 + local foodData = csvdb["diner_materialCsv"][itemId]
  539 + if not foodData then return 3 end
  540 + if foodData.unlock ~= 0 then
  541 + local hangPass = role:getProperty("hangPass")
  542 + if not hangPass[foodData.unlock] then
  543 + return 4
  544 + end
  545 + end
  546 + end
  547 + local gfood = {}
  548 + for slot, itemId in ipairs(ids) do
  549 + gfood[slot] = {id = itemId, st = skynet.timex()}
530 550 end
531 551  
532   - local reward = ""
533   - local now = skynet.timex()
534   - local timePass = now - role.dinerData:getProperty("gTime")
535   - role.dinerData:setProperty("gTime",now)
536   - role.dinerData:notifyUpdateProperty("gTime",now)
537   - local count = math.floor(timePass/buildingData.speed)
538   - count = math.min(count,buildingData.storage)
539   - for _=1,count do
540   - reward = reward:incrv(string.randWeight(buildingData.gift_normal), 1)
  552 + role.dinerData:updateProperty({field = "gfood", value = gfood})
  553 +
  554 + SendPacket(actionCodes.Diner_addWantFoodRpc, '')
  555 + return true
  556 +end
  557 +
  558 +function _M.getGreenhouseRpc( agent, data )
  559 + local role = agent.role
  560 + -- local msg = MsgPack.unpack(data)
  561 +
  562 + local buildType = 6
  563 + local level = role.dinerData:getProperty("buildL"):getv(buildType, 1)
  564 + local buildingData = csvdb["diner_buildingCsv"][buildType][level]
  565 + if not buildingData then
  566 + return 1
541 567 end
542   - for k, v in pairs(reward:toNumMap()) do
543   - role:addItem({itemId = k,count = v})
  568 +
  569 + local reward = {}
  570 + local now = skynet.timex()
  571 + local gfood = role.dinerData:getProperty("gfood")
  572 + if not next(gfood) then return end
  573 + for k , v in pairs(gfood) do
  574 + local itemId = v.id
  575 + local st = v.st
  576 + local speed = globalCsv.diner_get_food_speed[csvdb["itemCsv"][itemId].quality] * buildingData.speed / 100
  577 + local endTime = st + globalCsv.diner_get_food_time_max
  578 + local endTime2 = math.min(now, endTime)
  579 + reward[itemId] = math.floor((endTime2 - st) / speed)
  580 + if endTime2 == endTime then
  581 + gfood[k].st = now
  582 + else
  583 + gfood[k].st = st + speed * reward[itemId]
  584 + end
544 585 end
  586 + role.dinerData:updateProperty({field = "gfood", value = gfood})
  587 + local reward = role:award(reward)
  588 +
545 589 SendPacket(actionCodes.Diner_getGreenhouseRpc, MsgPack.pack({reward = reward}))
546 590 return true
547 591 end
... ...
src/models/Diner.lua
... ... @@ -12,7 +12,7 @@ Diner.schema = {
12 12 skillTree = {"string", ""}, -- 支援天赋
13 13 popular = {"number",0}, -- 累计人气
14 14 expedite = {"number",1}, --每日加速次数
15   - gTime = {"number",skynet.timex()}, --温室最后一次领取时间
  15 + gfood = {"table", {}}, -- 愿望食材 {{id = 123, st = 1232144},}
16 16 }
17 17  
18 18 function Diner:refreshDailyData(notify)
... ... @@ -242,7 +242,7 @@ function Diner:getMaxDishs()
242 242 end
243 243  
244 244 function Diner:data()
245   - local properties = {"buildL", "order", "sells", "dishTree", "skillTree","popular","expedite","gTime"}
  245 + local properties = {"buildL", "order", "sells", "dishTree", "skillTree","popular","expedite","gfood"}
246 246 local data = self:getProperties(properties)
247 247 return data
248 248 end
... ...