Commit 9a1c54b249ed7da4959775636a5fcbae4f405215
1 parent
9104a922
活动
Showing
5 changed files
with
76 additions
and
6 deletions
Show diff stats
docs/日志说明.xlsx
No preview for this file type
src/models/RoleActivity.lua renamed to src/models/Activity.lua
| @@ -2,9 +2,10 @@ local Activity = class("Activity", require("shared.ModelBase")) | @@ -2,9 +2,10 @@ local Activity = class("Activity", require("shared.ModelBase")) | ||
| 2 | 2 | ||
| 3 | 3 | ||
| 4 | Activity.ActivityType = { | 4 | Activity.ActivityType = { |
| 5 | - | 5 | + DoubleDrop = 1, -- 双倍掉落 |
| 6 | } | 6 | } |
| 7 | 7 | ||
| 8 | + | ||
| 8 | local function checkActivityType(activityType) | 9 | local function checkActivityType(activityType) |
| 9 | if type(activityType) == "string" then | 10 | if type(activityType) == "string" then |
| 10 | activityType = Activity.ActivityType[activityType] | 11 | activityType = Activity.ActivityType[activityType] |
| @@ -16,12 +17,12 @@ end | @@ -16,12 +17,12 @@ end | ||
| 16 | function Activity:ctor(properties) | 17 | function Activity:ctor(properties) |
| 17 | Activity.super.ctor(self, properties) | 18 | Activity.super.ctor(self, properties) |
| 18 | 19 | ||
| 19 | - self.open = {} | ||
| 20 | - | 20 | + self._isOpen = {} |
| 21 | end | 21 | end |
| 22 | 22 | ||
| 23 | 23 | ||
| 24 | Activity.schema = { | 24 | Activity.schema = { |
| 25 | + ctime = {"table", {}}, -- 最近检查某项活动的开始时间 {id = time} | ||
| 25 | _1 = {"table", {}}, | 26 | _1 = {"table", {}}, |
| 26 | } | 27 | } |
| 27 | 28 | ||
| @@ -32,5 +33,49 @@ function Activity:data() | @@ -32,5 +33,49 @@ function Activity:data() | ||
| 32 | end | 33 | end |
| 33 | 34 | ||
| 34 | 35 | ||
| 36 | +function Activity:updateProperty(params) | ||
| 37 | + local type, default = table.unpack(self.schema[params.field]) | ||
| 38 | + | ||
| 39 | + if params.delta then | ||
| 40 | + self:incrProperty(params.field, params.delta) | ||
| 41 | + if not params.notNotify then | ||
| 42 | + self.owner:notifyUpdateProperty(params.field, self:getProperty(params.field)) | ||
| 43 | + end | ||
| 44 | + return true | ||
| 45 | + end | ||
| 46 | + if params.value then | ||
| 47 | + self:setProperty(params.field, params.value) | ||
| 48 | + if not params.notNotify then | ||
| 49 | + self.owner:notifyUpdateProperty(params.field, self:getProperty(params.field)) | ||
| 50 | + end | ||
| 51 | + return true | ||
| 52 | + end | ||
| 53 | + return false | ||
| 54 | +end | ||
| 55 | + | ||
| 56 | + | ||
| 57 | +function Activity:isOpen(activityType) | ||
| 58 | + activityType = checkActivityType(activityType) | ||
| 59 | + | ||
| 60 | +end | ||
| 61 | + | ||
| 62 | +-- 跨天刷新 --登录刷新 | ||
| 63 | +function Activity:checkActivityStatus(ltime, now, notify) | ||
| 64 | + | ||
| 65 | +end | ||
| 66 | + | ||
| 67 | +local checkActivityFunc = {} | ||
| 68 | + | ||
| 69 | +checkActivityFunc[Activity.ActivityType.DoubleDrop] = function(self, notNotify, activityType, ...) | ||
| 70 | + | ||
| 71 | +end | ||
| 72 | + | ||
| 73 | +function Activity:checkActivityEnter(notNotify, activityType, ...) | ||
| 74 | + if not activityType then return end | ||
| 75 | + if checkActivityFunc[activityType] then | ||
| 76 | + checkActivityFunc[activityType](self, notNotify, activityType, ...) | ||
| 77 | + end | ||
| 78 | +end | ||
| 79 | + | ||
| 35 | 80 | ||
| 36 | return Activity | 81 | return Activity |
| 37 | \ No newline at end of file | 82 | \ No newline at end of file |
src/models/Role.lua
| @@ -23,7 +23,7 @@ function Role:ctor( properties ) | @@ -23,7 +23,7 @@ function Role:ctor( properties ) | ||
| 23 | self.heros = {} | 23 | self.heros = {} |
| 24 | self.runeBag = {} | 24 | self.runeBag = {} |
| 25 | self.advData = nil | 25 | self.advData = nil |
| 26 | - | 26 | + self.activity = nil |
| 27 | self.advElChapter = tonum(redisproxy:hget("adv_season", "chapter"), globalCsv.adv_endless_default_chapter) -- 无尽模式记录的赛季对应章节 | 27 | self.advElChapter = tonum(redisproxy:hget("adv_season", "chapter"), globalCsv.adv_endless_default_chapter) -- 无尽模式记录的赛季对应章节 |
| 28 | self.advOverTime = tonum(redisproxy:hget("adv_season", "overTime")) -- 无尽模式关闭时间戳 | 28 | self.advOverTime = tonum(redisproxy:hget("adv_season", "overTime")) -- 无尽模式关闭时间戳 |
| 29 | end | 29 | end |
src/models/RolePlugin.lua
| @@ -10,6 +10,7 @@ function RolePlugin.bind(Role) | @@ -10,6 +10,7 @@ function RolePlugin.bind(Role) | ||
| 10 | self:loadRunes() | 10 | self:loadRunes() |
| 11 | self:loadHeros() | 11 | self:loadHeros() |
| 12 | self:loadDiner() | 12 | self:loadDiner() |
| 13 | + self:loadActivity() | ||
| 13 | end | 14 | end |
| 14 | 15 | ||
| 15 | function Role:reloadWhenLogin() | 16 | function Role:reloadWhenLogin() |
| @@ -507,6 +508,18 @@ function RolePlugin.bind(Role) | @@ -507,6 +508,18 @@ function RolePlugin.bind(Role) | ||
| 507 | end | 508 | end |
| 508 | end | 509 | end |
| 509 | 510 | ||
| 511 | + function Role:loadActivity() | ||
| 512 | + local roleId = self:getProperty("id") | ||
| 513 | + local dataKey = string.format(R_ACTIVITY, roleId) | ||
| 514 | + self.activity = require("models.Activity").new({key = dataKey}) | ||
| 515 | + self.activity.owner = self | ||
| 516 | + if not redisproxy:exists(dataKey) then | ||
| 517 | + self.activity:create() | ||
| 518 | + else | ||
| 519 | + self.activity:load() | ||
| 520 | + end | ||
| 521 | + end | ||
| 522 | + | ||
| 510 | function Role:loadDiner() | 523 | function Role:loadDiner() |
| 511 | local roleId = self:getProperty("id") | 524 | local roleId = self:getProperty("id") |
| 512 | local dataKey = string.format(R_DINER, roleId) | 525 | local dataKey = string.format(R_DINER, roleId) |
src/models/RoleTask.lua
| @@ -184,7 +184,7 @@ local AchievListener = { | @@ -184,7 +184,7 @@ local AchievListener = { | ||
| 184 | } | 184 | } |
| 185 | } | 185 | } |
| 186 | 186 | ||
| 187 | -local SudokuListerer = { | 187 | +local SudokuListener = { |
| 188 | func = "checkSudokuTask", | 188 | func = "checkSudokuTask", |
| 189 | listen = { | 189 | listen = { |
| 190 | [TaskType.HangPass] = {{1, 1, f("id")}}, | 190 | [TaskType.HangPass] = {{1, 1, f("id")}}, |
| @@ -205,12 +205,20 @@ local SudokuListerer = { | @@ -205,12 +205,20 @@ local SudokuListerer = { | ||
| 205 | } | 205 | } |
| 206 | } | 206 | } |
| 207 | 207 | ||
| 208 | +local ActivityListener = { | ||
| 209 | + func = "checkActivityTask", | ||
| 210 | + listener = { | ||
| 211 | + | ||
| 212 | + } | ||
| 213 | +} | ||
| 214 | + | ||
| 208 | 215 | ||
| 209 | local TaskListeners = { | 216 | local TaskListeners = { |
| 210 | StoryListener, | 217 | StoryListener, |
| 211 | CommonListener, | 218 | CommonListener, |
| 212 | AchievListener, | 219 | AchievListener, |
| 213 | - SudokuListerer, | 220 | + SudokuListener, |
| 221 | + ActivityListener, | ||
| 214 | } | 222 | } |
| 215 | 223 | ||
| 216 | local RoleTask = {} | 224 | local RoleTask = {} |
| @@ -517,6 +525,10 @@ function RoleTask.bind(Role) | @@ -517,6 +525,10 @@ function RoleTask.bind(Role) | ||
| 517 | end | 525 | end |
| 518 | end | 526 | end |
| 519 | 527 | ||
| 528 | + function Role:checkActivityTask(notNotify, activityType, ...) | ||
| 529 | + self.activity:checkActivityEnter(notNotify, activityType, ...) | ||
| 530 | + end | ||
| 531 | + | ||
| 520 | end | 532 | end |
| 521 | 533 | ||
| 522 | return RoleTask | 534 | return RoleTask |
| 523 | \ No newline at end of file | 535 | \ No newline at end of file |