diff --git a/bin/json/game_gourmetskill.json b/bin/json/game_gourmetskill.json deleted file mode 100644 index 75a14b2a8..000000000 --- a/bin/json/game_gourmetskill.json +++ /dev/null @@ -1,758 +0,0 @@ -[ - { - "id": 10011, - "type": 1001, - "skill_type": 1, - "initial": 1, - "level": 1, - "levelname": { - "key": "gourmet_ln1", - "text": "马马虎虎" - }, - "colour": 0, - "name": { - "key": "gourmet_ln1", - "text": "魔法厨艺" - }, - "needtime": 3600, - "display": 1000, - "probability": 1000, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln1", - "text": "无" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10012, - "type": 1001, - "skill_type": 1, - "initial": 0, - "level": 2, - "levelname": { - "key": "gourmet_ln2", - "text": "匠心独运" - }, - "colour": 0, - "name": { - "key": "gourmet_ln2", - "text": "魔法厨艺" - }, - "needtime": 7200, - "display": 1000, - "probability": 500, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln2", - "text": "极低" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10013, - "type": 1001, - "skill_type": 1, - "initial": 0, - "level": 3, - "levelname": { - "key": "gourmet_ln3", - "text": "孰能生巧" - }, - "colour": 0, - "name": { - "key": "gourmet_ln3", - "text": "魔法厨艺" - }, - "needtime": 14400, - "display": 1000, - "probability": 20, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln3", - "text": "中等" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10014, - "type": 1001, - "skill_type": 1, - "initial": 0, - "level": 4, - "levelname": { - "key": "gourmet_ln4", - "text": "可圈可点" - }, - "colour": 0, - "name": { - "key": "gourmet_ln4", - "text": "魔法厨艺" - }, - "needtime": 28800, - "display": 1000, - "probability": 10, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln4", - "text": "较高" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10021, - "type": 1002, - "skill_type": 1, - "initial": 1, - "level": 1, - "levelname": { - "key": "gourmet_ln1", - "text": "马马虎虎" - }, - "colour": 0, - "name": { - "key": "gourmet_ln1", - "text": "功夫厨艺" - }, - "needtime": 3600, - "display": 1000, - "probability": 1000, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln1", - "text": "无" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10022, - "type": 1002, - "skill_type": 1, - "initial": 0, - "level": 2, - "levelname": { - "key": "gourmet_ln2", - "text": "匠心独运" - }, - "colour": 0, - "name": { - "key": "gourmet_ln2", - "text": "功夫厨艺" - }, - "needtime": 7200, - "display": 1000, - "probability": 500, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln2", - "text": "极低" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10023, - "type": 1002, - "skill_type": 1, - "initial": 0, - "level": 3, - "levelname": { - "key": "gourmet_ln3", - "text": "孰能生巧" - }, - "colour": 0, - "name": { - "key": "gourmet_ln3", - "text": "功夫厨艺" - }, - "needtime": 14400, - "display": 1000, - "probability": 20, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln3", - "text": "中等" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10024, - "type": 1002, - "skill_type": 1, - "initial": 0, - "level": 4, - "levelname": { - "key": "gourmet_ln4", - "text": "可圈可点" - }, - "colour": 0, - "name": { - "key": "gourmet_ln4", - "text": "功夫厨艺" - }, - "needtime": 28800, - "display": 1000, - "probability": 10, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln4", - "text": "较高" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10031, - "type": 1003, - "skill_type": 1, - "initial": 1, - "level": 1, - "levelname": { - "key": "gourmet_ln1", - "text": "马马虎虎" - }, - "colour": 0, - "name": { - "key": "gourmet_ln1", - "text": "科技厨艺" - }, - "needtime": 3600, - "display": 1000, - "probability": 1000, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln1", - "text": "无" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10032, - "type": 1003, - "skill_type": 1, - "initial": 0, - "level": 2, - "levelname": { - "key": "gourmet_ln2", - "text": "匠心独运" - }, - "colour": 0, - "name": { - "key": "gourmet_ln2", - "text": "科技厨艺" - }, - "needtime": 7200, - "display": 1000, - "probability": 500, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln2", - "text": "极低" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10033, - "type": 1003, - "skill_type": 1, - "initial": 0, - "level": 3, - "levelname": { - "key": "gourmet_ln3", - "text": "孰能生巧" - }, - "colour": 0, - "name": { - "key": "gourmet_ln3", - "text": "科技厨艺" - }, - "needtime": 14400, - "display": 1000, - "probability": 20, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln3", - "text": "中等" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10034, - "type": 1003, - "skill_type": 1, - "initial": 0, - "level": 4, - "levelname": { - "key": "gourmet_ln4", - "text": "可圈可点" - }, - "colour": 0, - "name": { - "key": "gourmet_ln4", - "text": "科技厨艺" - }, - "needtime": 28800, - "display": 1000, - "probability": 10, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln4", - "text": "较高" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10041, - "type": 1004, - "skill_type": 1, - "initial": 1, - "level": 1, - "levelname": { - "key": "gourmet_ln1", - "text": "马马虎虎" - }, - "colour": 0, - "name": { - "key": "gourmet_ln1", - "text": "月能厨艺" - }, - "needtime": 3600, - "display": 1000, - "probability": 1000, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln1", - "text": "无" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10042, - "type": 1004, - "skill_type": 1, - "initial": 0, - "level": 2, - "levelname": { - "key": "gourmet_ln2", - "text": "匠心独运" - }, - "colour": 0, - "name": { - "key": "gourmet_ln2", - "text": "月能厨艺" - }, - "needtime": 7200, - "display": 1000, - "probability": 500, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln2", - "text": "极低" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10043, - "type": 1004, - "skill_type": 1, - "initial": 0, - "level": 3, - "levelname": { - "key": "gourmet_ln3", - "text": "孰能生巧" - }, - "colour": 0, - "name": { - "key": "gourmet_ln3", - "text": "月能厨艺" - }, - "needtime": 14400, - "display": 1000, - "probability": 20, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln3", - "text": "中等" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10044, - "type": 1004, - "skill_type": 1, - "initial": 0, - "level": 4, - "levelname": { - "key": "gourmet_ln4", - "text": "可圈可点" - }, - "colour": 0, - "name": { - "key": "gourmet_ln4", - "text": "月能厨艺" - }, - "needtime": 28800, - "display": 1000, - "probability": 10, - "icon": "ty_wz_k1", - "item": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ], - "affix": { - "key": "gourmet_ln4", - "text": "较高" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10051, - "type": 1005, - "skill_type": 2, - "initial": 1, - "level": 1, - "levelname": { - "key": "gourmet_ln1", - "text": "马马虎虎" - }, - "colour": 0, - "name": { - "key": "gourmet_ln1", - "text": "高效制作" - }, - "needtime": -300, - "display": 1000, - "probability": 1000, - "icon": "ty_wz_k1", - "item": [], - "affix": { - "key": "gourmet_ln1", - "text": "出餐时间-5分钟" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10052, - "type": 1005, - "skill_type": 2, - "initial": 0, - "level": 2, - "levelname": { - "key": "gourmet_ln2", - "text": "匠心独运" - }, - "colour": 0, - "name": { - "key": "gourmet_ln2", - "text": "高效制作" - }, - "needtime": -600, - "display": 1000, - "probability": 500, - "icon": "ty_wz_k1", - "item": [], - "affix": { - "key": "gourmet_ln2", - "text": "出餐时间-10分钟" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10053, - "type": 1005, - "skill_type": 2, - "initial": 0, - "level": 3, - "levelname": { - "key": "gourmet_ln3", - "text": "孰能生巧" - }, - "colour": 0, - "name": { - "key": "gourmet_ln3", - "text": "高效制作" - }, - "needtime": -900, - "display": 1000, - "probability": 20, - "icon": "ty_wz_k1", - "item": [], - "affix": { - "key": "gourmet_ln3", - "text": "出餐时间-15分钟" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - }, - { - "id": 10054, - "type": 1005, - "skill_type": 2, - "initial": 0, - "level": 4, - "levelname": { - "key": "gourmet_ln4", - "text": "可圈可点" - }, - "colour": 0, - "name": { - "key": "gourmet_ln4", - "text": "高效制作" - }, - "needtime": -1200, - "display": 1000, - "probability": 10, - "icon": "ty_wz_k1", - "item": [], - "affix": { - "key": "gourmet_ln4", - "text": "出餐时间-20分钟" - }, - "affix_colour": 0, - "consume": [ - { - "a": "item", - "t": "10002", - "n": 1 - } - ] - } -] \ No newline at end of file diff --git a/bin/json/game_linestorystagetask.json b/bin/json/game_linestorystagetask.json index 1386f77fd..ffa3a3b0c 100644 --- a/bin/json/game_linestorystagetask.json +++ b/bin/json/game_linestorystagetask.json @@ -1,7 +1,7 @@ [ { "id": 100101, - "posTId": -1, + "preTId": -1, "nextTId": 100102, "cond": [ 101, @@ -18,12 +18,11 @@ "t": "diamond", "n": 10 } - ], - "jump": "heronewlist" + ] }, { "id": 100102, - "posTId": 100101, + "preTId": 100101, "nextTId": 100103, "cond": [ 104 @@ -39,37 +38,33 @@ "t": "diamond", "n": 10 } - ], - "jump": "roleupgrade" + ] }, { "id": 100103, - "posTId": 100102, + "preTId": 100102, "nextTId": 100104, "cond": [ 106 ], - "reward": [], - "jump": "equistrengthen" + "reward": [] }, { "id": 100104, - "posTId": 100103, + "preTId": 100103, "nextTId": 100105, "cond": [ 108 ], - "reward": [], - "jump": "roleupgrade" + "reward": [] }, { "id": 100105, - "posTId": 100103, + "preTId": 100103, "nextTId": -1, "cond": [ 109 ], - "reward": [], - "jump": "roleupgrade" + "reward": [] } ] \ No newline at end of file diff --git a/bin/json/game_linestorytask.json b/bin/json/game_linestorytask.json index afe8b540f..d042a1a25 100644 --- a/bin/json/game_linestorytask.json +++ b/bin/json/game_linestorytask.json @@ -19,7 +19,8 @@ } ], "finish": 0, - "ending": 1 + "ending": 1, + "resetto": -1 }, { "id": 1002, @@ -41,7 +42,8 @@ } ], "finish": 0, - "ending": 1 + "ending": 1, + "resetto": -1 }, { "id": 1003, @@ -63,7 +65,8 @@ } ], "finish": 0, - "ending": 1 + "ending": 1, + "resetto": -1 }, { "id": 1004, @@ -72,20 +75,10 @@ 100101, 100102 ], - "reward": [ - { - "a": "attr", - "t": "gold", - "n": 100 - }, - { - "a": "attr", - "t": "diamond", - "n": 10 - } - ], + "reward": [], "finish": 1, - "ending": 0 + "ending": 0, + "resetto": 1001 }, { "id": 1005, @@ -94,20 +87,10 @@ 100101, 100102 ], - "reward": [ - { - "a": "attr", - "t": "gold", - "n": 100 - }, - { - "a": "attr", - "t": "diamond", - "n": 10 - } - ], + "reward": [], "finish": 0, - "ending": 1 + "ending": 1, + "resetto": -1 }, { "id": 1006, @@ -116,19 +99,9 @@ 100101, 100102 ], - "reward": [ - { - "a": "attr", - "t": "gold", - "n": 100 - }, - { - "a": "attr", - "t": "diamond", - "n": 10 - } - ], + "reward": [], "finish": 1, - "ending": 1 + "ending": 1, + "resetto": -1 } ] \ No newline at end of file diff --git a/bin/json/game_skill.json b/bin/json/game_skill.json deleted file mode 100644 index bb34d444f..000000000 --- a/bin/json/game_skill.json +++ /dev/null @@ -1,1673 +0,0 @@ -[ - { - "Id": 125004011, - "Name": { - "key": "skillname_125004011", - "text": "波比队长技" - }, - "ico": "jn_dzj_01", - "act": "", - "Type": 3, - "MaxLV": 1, - "CD": [ - -1 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 225004011 - ] - } - ], - "Desc": [ - "skill_1250040111" - ], - "buffid": [] - }, - { - "Id": 125004111, - "Name": { - "key": "skillname_125004111", - "text": "波比1技能" - }, - "ico": "jn_icon_001", - "act": "Skill_1", - "Type": 1, - "MaxLV": 6, - "CD": [ - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 225004111 - ] - }, - { - "Id": [ - 225004112 - ] - }, - { - "Id": [ - 225004113 - ] - }, - { - "Id": [ - 225004114 - ] - }, - { - "Id": [ - 225004115 - ] - }, - { - "Id": [ - 225004116 - ] - } - ], - "Desc": [ - "skill_1250041111", - "skill_1250041112", - "skill_1250041113", - "skill_1250041114", - "skill_1250041115", - "skill_1250041116" - ], - "buffid": [] - }, - { - "Id": 125004211, - "Name": { - "key": "skillname_125004211", - "text": "波比2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_2", - "Type": 2, - "MaxLV": 3, - "CD": [ - 5, - 4, - 3 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 225004211, - 225004212, - 225004213 - ] - }, - { - "Id": [ - 225004211, - 225004212, - 225004213 - ] - }, - { - "Id": [ - 225004211, - 225004212, - 225004213 - ] - } - ], - "Desc": [ - "skill_1250042111", - "skill_1250042112", - "skill_1250042113" - ], - "buffid": [] - }, - { - "Id": 125004311, - "Name": { - "key": "skillname_125004311", - "text": "波比3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_3", - "Type": 1, - "MaxLV": 5, - "CD": [ - 5, - 5, - 5, - 5, - 4 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 225004311 - ] - }, - { - "Id": [ - 225004312 - ] - }, - { - "Id": [ - 225004313 - ] - }, - { - "Id": [ - 225004314 - ] - }, - { - "Id": [ - 225004315 - ] - } - ], - "Desc": [ - "skill_1250043111", - "skill_1250043112", - "skill_1250043113", - "skill_1250043114", - "skill_1250043115" - ], - "buffid": [] - }, - { - "Id": 135002011, - "Name": { - "key": "skillname_135002011", - "text": "希卡普队长技" - }, - "ico": "jn_dzj_01", - "act": "", - "Type": 3, - "MaxLV": 1, - "CD": [ - -1 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 235002011 - ] - } - ], - "Desc": [ - "skill_1350020111" - ], - "buffid": [] - }, - { - "Id": 135002111, - "Name": { - "key": "skillname_135002111", - "text": "希卡普1技能" - }, - "ico": "jn_icon_001", - "act": "Skill_1", - "Type": 1, - "MaxLV": 6, - "CD": [ - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 235002111, - 235002112 - ] - }, - { - "Id": [ - 235002111, - 235002122 - ] - }, - { - "Id": [ - 235002111, - 235002132 - ] - }, - { - "Id": [ - 235002111, - 235002142 - ] - }, - { - "Id": [ - 235002111, - 235002152 - ] - }, - { - "Id": [ - 235002111, - 235002162 - ] - } - ], - "Desc": [ - "skill_1350021111", - "skill_1350021112", - "skill_1350021113", - "skill_1350021114", - "skill_1350021115", - "skill_1350021116" - ], - "buffid": [] - }, - { - "Id": 135002211, - "Name": { - "key": "skillname_135002211", - "text": "希卡普2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_2", - "Type": 2, - "MaxLV": 1, - "CD": [ - -1 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 235002211, - 235002212 - ] - } - ], - "Desc": [ - "skill_1350022111" - ], - "buffid": [] - }, - { - "Id": 135002311, - "Name": { - "key": "skillname_135002311", - "text": "希卡普3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_3", - "Type": 1, - "MaxLV": 6, - "CD": [ - 5, - 5, - 5, - 5, - 5, - 4 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 235002311 - ] - }, - { - "Id": [ - 235002312 - ] - }, - { - "Id": [ - 235002313 - ] - }, - { - "Id": [ - 235002314 - ] - }, - { - "Id": [ - 235002315 - ] - }, - { - "Id": [ - 235002316 - ] - } - ], - "Desc": [ - "skill_1350023111", - "skill_1350023112", - "skill_1350023113", - "skill_1350023114", - "skill_1350023115", - "skill_1350023116" - ], - "buffid": [] - }, - { - "Id": 935002411, - "Name": { - "key": "skillname_935002411", - "text": "希卡普3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_3", - "Type": 4, - "MaxLV": 6, - "CD": [ - 5, - 5, - 5, - 5, - 5, - 4 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 935002311 - ] - }, - { - "Id": [ - 935002312 - ] - }, - { - "Id": [ - 935002313 - ] - }, - { - "Id": [ - 935002314 - ] - }, - { - "Id": [ - 935002315 - ] - }, - { - "Id": [ - 935002316 - ] - } - ], - "Desc": [ - "skill_9350023211", - "skill_9350023212", - "skill_9350023213", - "skill_9350023214", - "skill_9350023215", - "skill_9350023216" - ], - "buffid": [] - }, - { - "Id": 124003011, - "Name": { - "key": "skillname_124003011", - "text": "睡神队长技" - }, - "ico": "jn_dzj_01", - "act": "", - "Type": 3, - "MaxLV": 1, - "CD": [ - -1 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 224003011 - ] - } - ], - "Desc": [ - "skill_1240030111" - ], - "buffid": [] - }, - { - "Id": 124003111, - "Name": { - "key": "skillname_124003111", - "text": "睡神1技能" - }, - "ico": "jn_icon_001", - "act": "Skill_1", - "Type": 1, - "MaxLV": 5, - "CD": [ - 0, - 0, - 0, - 0, - 0 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 224003111, - 224003112 - ] - }, - { - "Id": [ - 224003121, - 224003122 - ] - }, - { - "Id": [ - 224003131, - 224003132 - ] - }, - { - "Id": [ - 224003141, - 224003142 - ] - }, - { - "Id": [ - 224003151, - 224003152 - ] - }, - { - "Id": [ - 224003161, - 224003162 - ] - } - ], - "Desc": [ - "skill_1240031111", - "skill_1240031112", - "skill_1240031113", - "skill_1240031114", - "skill_1240031115" - ], - "buffid": [] - }, - { - "Id": 124003211, - "Name": { - "key": "skillname_124003211", - "text": "睡神2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_2", - "Type": 2, - "MaxLV": 2, - "CD": [ - 4, - 3 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 224003211, - 224003212 - ] - }, - { - "Id": [ - 224003121, - 224003122 - ] - } - ], - "Desc": [ - "skill_1240032111", - "skill_1240032112" - ], - "buffid": [] - }, - { - "Id": 124003311, - "Name": { - "key": "skillname_124003311", - "text": "睡神3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_3", - "Type": 1, - "MaxLV": 6, - "CD": [ - 4, - 4, - 4, - 4, - 4, - 3 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 224003311, - 224003312, - 224003313 - ] - }, - { - "Id": [ - 224003311, - 224003322, - 224003323 - ] - }, - { - "Id": [ - 224003311, - 224003332, - 224003333 - ] - }, - { - "Id": [ - 224003311, - 224003342, - 224003343 - ] - }, - { - "Id": [ - 224003311, - 224003352, - 224003353 - ] - }, - { - "Id": [ - 224003311, - 224003362, - 224003363 - ] - } - ], - "Desc": [ - "skill_1240033111", - "skill_1240033112", - "skill_1240033113", - "skill_1240033114", - "skill_1240033115", - "skill_1240033116" - ], - "buffid": [] - }, - { - "Id": 924003411, - "Name": { - "key": "skillname_924003411", - "text": "睡神2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_2", - "Type": 4, - "MaxLV": 2, - "CD": [ - 4, - 3 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 924003411, - 924003412, - 924003413 - ] - }, - { - "Id": [ - 924003411, - 924003412, - 924003413 - ] - } - ], - "Desc": [ - "skill_9240034111", - "skill_9240034112" - ], - "buffid": [] - }, - { - "Id": 134006011, - "Name": { - "key": "skillname_134006011", - "text": "杰克队长技" - }, - "ico": "jn_dzj_01", - "act": "Skill_1", - "Type": 3, - "MaxLV": 1, - "CD": [ - -1 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 234006011 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 134006111, - "Name": { - "key": "skillname_134006111", - "text": "杰克1技能" - }, - "ico": "jn_icon_001", - "act": "Skill_2", - "Type": 1, - "MaxLV": 5, - "CD": [ - 0, - 0, - 0, - 0, - 0 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 234006111 - ] - }, - { - "Id": [ - 234006121 - ] - }, - { - "Id": [ - 234006131 - ] - }, - { - "Id": [ - 234006141 - ] - }, - { - "Id": [ - 234006151 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 134006211, - "Name": { - "key": "skillname_134006211", - "text": "杰克2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_3", - "Type": 1, - "MaxLV": 5, - "CD": [ - 5, - 5, - 5, - 5, - 4 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 234006211 - ] - }, - { - "Id": [ - 234006221 - ] - }, - { - "Id": [ - 234006231 - ] - }, - { - "Id": [ - 234006241 - ] - }, - { - "Id": [ - 234006251 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 134006311, - "Name": { - "key": "skillname_134006311", - "text": "杰克3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_2", - "Type": 1, - "MaxLV": 5, - "CD": [ - 4, - 4, - 4, - 4, - 3 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 234006311 - ] - }, - { - "Id": [ - 234006321 - ] - }, - { - "Id": [ - 234006331 - ] - }, - { - "Id": [ - 234006341 - ] - }, - { - "Id": [ - 234006351 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 934006411, - "Name": { - "key": "skillname_934006411", - "text": "杰克2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_3", - "Type": 4, - "MaxLV": 5, - "CD": [ - 5, - 5, - 5, - 5, - 4 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 934006211 - ] - }, - { - "Id": [ - 934006221 - ] - }, - { - "Id": [ - 934006231 - ] - }, - { - "Id": [ - 934006241 - ] - }, - { - "Id": [ - 934006251 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 125001011, - "Name": { - "key": "skillname_125001011", - "text": "阿宝队长技" - }, - "ico": "jn_dzj_01", - "act": "", - "Type": 3, - "MaxLV": 1, - "CD": [ - -1 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 225001011 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 125001111, - "Name": { - "key": "skillname_125001111", - "text": "阿宝1技能" - }, - "ico": "jn_icon_001", - "act": "Skill_1", - "Type": 1, - "MaxLV": 5, - "CD": [ - 0, - 0, - 0, - 0, - 0 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 225001111 - ] - }, - { - "Id": [ - 225001121 - ] - }, - { - "Id": [ - 225001131 - ] - }, - { - "Id": [ - 225001141 - ] - }, - { - "Id": [ - 225001151 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 125001211, - "Name": { - "key": "skillname_125001211", - "text": "阿宝2技能" - }, - "ico": "jn_icon_002", - "act": "", - "Type": 2, - "MaxLV": 5, - "CD": [ - 4, - 4, - 4, - 4, - 3 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 225001211 - ] - }, - { - "Id": [ - 225001221 - ] - }, - { - "Id": [ - 225001231 - ] - }, - { - "Id": [ - 225001241 - ] - }, - { - "Id": [ - 225001251 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 125001312, - "Name": { - "key": "skillname_125001211", - "text": "阿宝2技能" - }, - "ico": "", - "act": "Skill_2", - "Type": 0, - "MaxLV": 0, - "CD": [], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 225001216 - ] - }, - { - "Id": [ - 225001226 - ] - }, - { - "Id": [ - 225001236 - ] - }, - { - "Id": [ - 225001246 - ] - }, - { - "Id": [ - 225001256 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 125001311, - "Name": { - "key": "skillname_125001311", - "text": "阿宝3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_3", - "Type": 1, - "MaxLV": 5, - "CD": [ - 5, - 5, - 5, - 5, - 4 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 225001311, - 225001312, - 225001313 - ] - }, - { - "Id": [ - 225001321, - 225001312, - 225001313 - ] - }, - { - "Id": [ - 225001331, - 225001312, - 225001313 - ] - }, - { - "Id": [ - 225001341, - 225001312, - 225001313 - ] - }, - { - "Id": [ - 225001341, - 225001312, - 225001313 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 925001411, - "Name": { - "key": "skillname_925001211", - "text": "阿宝2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_2", - "Type": 2, - "MaxLV": 5, - "CD": [ - 4, - 4, - 4, - 4, - 3 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 925001211, - 925001212 - ] - }, - { - "Id": [ - 925001221, - 925001222 - ] - }, - { - "Id": [ - 925001231, - 925001232 - ] - }, - { - "Id": [ - 925001241, - 925001242 - ] - }, - { - "Id": [ - 925001251, - 925001252 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 144005011, - "Name": { - "key": "skillname_144005011", - "text": "小伊队长技" - }, - "ico": "jn_dzj_01", - "act": "", - "Type": 3, - "MaxLV": 1, - "CD": [ - -1 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 244005011 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 144005111, - "Name": { - "key": "skillname_144005111", - "text": "小伊1技能" - }, - "ico": "jn_icon_001", - "act": "Skill_1", - "Type": 1, - "MaxLV": 5, - "CD": [ - 0, - 0, - 0, - 0, - 0 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 244005111 - ] - }, - { - "Id": [ - 244005121 - ] - }, - { - "Id": [ - 244005131 - ] - }, - { - "Id": [ - 244005141 - ] - }, - { - "Id": [ - 244005151 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 144005211, - "Name": { - "key": "skillname_144005211", - "text": "小伊2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_2", - "Type": 1, - "MaxLV": 5, - "CD": [ - 4, - 4, - 4, - 4, - 3 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 244005211 - ] - }, - { - "Id": [ - 244005221 - ] - }, - { - "Id": [ - 244005231 - ] - }, - { - "Id": [ - 244005241 - ] - }, - { - "Id": [ - 244005251 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 144005311, - "Name": { - "key": "skillname_144005311", - "text": "小伊3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_3", - "Type": 1, - "MaxLV": 5, - "CD": [ - 5, - 5, - 5, - 5, - 4 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 244005311, - 244005312, - 244005313 - ] - }, - { - "Id": [ - 244005321, - 244005322, - 244005313 - ] - }, - { - "Id": [ - 244005331, - 244005332, - 244005313 - ] - }, - { - "Id": [ - 244005341, - 244005342, - 244005313 - ] - }, - { - "Id": [ - 244005341, - 244005342, - 244005313 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 944005411, - "Name": { - "key": "skillname_944005411", - "text": "小伊3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_3", - "Type": 1, - "MaxLV": 5, - "CD": [ - 5, - 5, - 5, - 5, - 4 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 244005311, - 244005312, - 244005313, - 944005311 - ] - }, - { - "Id": [ - 244005321, - 244005322, - 244005313, - 944005311 - ] - }, - { - "Id": [ - 244005331, - 244005332, - 244005313, - 944005311 - ] - }, - { - "Id": [ - 244005341, - 244005342, - 244005313, - 944005311 - ] - }, - { - "Id": [ - 244005341, - 244005342, - 244005313, - 944005311 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 135001011, - "Name": { - "key": "skillname_135001011", - "text": "师傅队长技" - }, - "ico": "jn_dzj_01", - "act": "", - "Type": 3, - "MaxLV": 1, - "CD": [ - -1 - ], - "Target": 1, - "ChildSkill": [ - { - "Id": [ - 235001011 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 135001111, - "Name": { - "key": "skillname_135001111", - "text": "师傅1技能" - }, - "ico": "jn_icon_001", - "act": "Skill_1", - "Type": 1, - "MaxLV": 6, - "CD": [ - 0, - 0, - 0, - 0, - 0, - 0 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 235001111, - 235001112, - 235001113, - 235001114, - 235001115, - 235001116 - ] - }, - { - "Id": [ - 235001111, - 235001122, - 235001123, - 235001114, - 235001115, - 235001116 - ] - }, - { - "Id": [ - 235001111, - 235001132, - 235001133, - 235001114, - 235001115, - 235001116 - ] - }, - { - "Id": [ - 235001111, - 235001142, - 235001143, - 235001114, - 235001115, - 235001116 - ] - }, - { - "Id": [ - 235001111, - 235001152, - 235001153, - 235001114, - 235001115, - 235001116 - ] - }, - { - "Id": [ - 235001111, - 235001152, - 235001153, - 235001114, - 235001115, - 235001116 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 135001211, - "Name": { - "key": "skillname_135001211", - "text": "师傅2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_2", - "Type": 1, - "MaxLV": 5, - "CD": [ - 3, - 3, - 3, - 3, - 2 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 235001211, - 235001212 - ] - }, - { - "Id": [ - 235001221, - 235001212 - ] - }, - { - "Id": [ - 235001231, - 235001212 - ] - }, - { - "Id": [ - 235001241, - 235001212 - ] - }, - { - "Id": [ - 235001251, - 235001212 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 135001311, - "Name": { - "key": "skillname_135001311", - "text": "师傅3技能" - }, - "ico": "jn_icon_003", - "act": "Skill_3", - "Type": 1, - "MaxLV": 4, - "CD": [ - 4, - 4, - 4, - 3 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 235001311, - 235001312, - 235001313, - 235001314 - ] - }, - { - "Id": [ - 235001311, - 235001312, - 235001313, - 235001324 - ] - }, - { - "Id": [ - 235001311, - 235001312, - 235001313, - 235001334 - ] - }, - { - "Id": [ - 235001311, - 235001312, - 235001313, - 235001344 - ] - } - ], - "Desc": [], - "buffid": [] - }, - { - "Id": 935001411, - "Name": { - "key": "skillname_935001411", - "text": "师傅2技能" - }, - "ico": "jn_icon_002", - "act": "Skill_2", - "Type": 1, - "MaxLV": 5, - "CD": [ - 3, - 3, - 3, - 3, - 2 - ], - "Target": 2, - "ChildSkill": [ - { - "Id": [ - 235001211, - 235001212, - 935001211, - 935001212 - ] - }, - { - "Id": [ - 235001221, - 235001212, - 935001211, - 935001212 - ] - }, - { - "Id": [ - 235001231, - 235001212, - 935001211, - 935001212 - ] - }, - { - "Id": [ - 235001241, - 235001212, - 935001211, - 935001212 - ] - }, - { - "Id": [ - 235001251, - 235001212 - ] - } - ], - "Desc": [], - "buffid": [] - } -] \ No newline at end of file diff --git a/cmd/v2/lib/common/utils.go b/cmd/v2/lib/common/utils.go index ae2db1bc3..c1047c1c8 100644 --- a/cmd/v2/lib/common/utils.go +++ b/cmd/v2/lib/common/utils.go @@ -3,6 +3,9 @@ package common import ( "bytes" "encoding/json" + "io/ioutil" + "os" + "path/filepath" "strings" "github.com/sirupsen/logrus" @@ -68,3 +71,38 @@ func IsUpgrade(newVersion, oldVersion string) bool { } return false } + +func Copy(srcFile, destFile string) (int, error) { + input, err := ioutil.ReadFile(srcFile) + if err != nil { + logrus.Error(err) + return 0, err + } + + err = ioutil.WriteFile(destFile, input, 0644) + if err != nil { + logrus.Error(err) + return 0, err + } + + return len(input), nil +} + +func RemoveContents(dir string) error { + d, err := os.Open(dir) + if err != nil { + return err + } + defer d.Close() + names, err := d.Readdirnames(-1) + if err != nil { + return err + } + for _, name := range names { + err = os.RemoveAll(filepath.Join(dir, name)) + if err != nil { + return err + } + } + return nil +} diff --git a/cmd/v2/model/gen.go b/cmd/v2/model/gen.go index 7f163b5a5..19ed28385 100644 --- a/cmd/v2/model/gen.go +++ b/cmd/v2/model/gen.go @@ -3,6 +3,7 @@ package model type GenTool struct { ServerAddr string //服务地址 ProjectDir string //项目目录 + TmpDir string //临时目录 Client string //Client 文件路径 WorkDir string //工作目录 InputDir string //输入目录 diff --git a/cmd/v2/ui/protocol.go b/cmd/v2/ui/protocol.go index 5efef34fb..93f7ae852 100644 --- a/cmd/v2/ui/protocol.go +++ b/cmd/v2/ui/protocol.go @@ -10,6 +10,7 @@ import ( "go_dreamfactory/lego/core" "go_dreamfactory/modules/friend" "go_dreamfactory/modules/hero" + "go_dreamfactory/modules/linestory" "go_dreamfactory/modules/mainline" "go_dreamfactory/modules/rtask" "go_dreamfactory/modules/task" @@ -83,6 +84,9 @@ var ( ff(comm.ModuleRtask, rtask.RtaskSubTypeChoose): &formview.RtaskChooseView{}, ff(comm.ModuleRtask, rtask.RtaskSubTypeReward): &formview.RtaskRewardView{}, ff(comm.ModuleRtask, "rtest"): &formview.RtaskTestView{}, + // linestory + ff(comm.ModuleLinestory, linestory.LinestorySubTypeDostart): &formview.LinestoryStartView{}, + ff(comm.ModuleLinestory, linestory.LinestorySubTypeDotask): &formview.LinestoryTaskView{}, } ) @@ -102,6 +106,7 @@ var ( string(comm.ModuleMainline), string(comm.ModulePagoda), string(comm.ModuleRtask), + string(comm.ModuleLinestory), }, "gm": {ff(comm.ModuleGM, "cmd")}, "user": { @@ -165,6 +170,9 @@ var ( ff(comm.ModuleRtask, rtask.RtaskSubTypeReward), ff(comm.ModuleRtask, "rtest"), }, + "linestory": { + ff(comm.ModuleLinestory, linestory.LinestorySubTypeDostart), + }, } ) @@ -592,6 +600,26 @@ var ( SubType: "rtest", Enabled: true, }, + //linestory + string(comm.ModuleLinestory): { + NavLabel: "支线剧情任务", + MainType: string(comm.ModuleLinestory), + Enabled: true, + }, + ff(comm.ModuleLinestory, linestory.LinestorySubTypeDostart): { + NavLabel: "启动", + Desc: "启动剧情任务", + MainType: string(comm.ModuleLinestory), + SubType: linestory.LinestorySubTypeDostart, + Enabled: true, + }, + ff(comm.ModuleLinestory, linestory.LinestorySubTypeDotask): { + NavLabel: "做任务", + Desc: "做任务", + MainType: string(comm.ModuleLinestory), + SubType: linestory.LinestorySubTypeDotask, + Enabled: true, + }, } ) diff --git a/cmd/v2/ui/tool_gen.go b/cmd/v2/ui/tool_gen.go index 07674799c..34a3eab1f 100644 --- a/cmd/v2/ui/tool_gen.go +++ b/cmd/v2/ui/tool_gen.go @@ -7,12 +7,18 @@ import ( "go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/cmd/v2/service/observer" + "go_dreamfactory/utils" + "io/ioutil" "os/exec" + "path/filepath" "runtime" + "time" "fyne.io/fyne/v2" "fyne.io/fyne/v2/container" + "fyne.io/fyne/v2/data/binding" "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/layout" "fyne.io/fyne/v2/theme" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" @@ -21,11 +27,17 @@ import ( type appGen struct { appAdapter - obs observer.Observer + obs observer.Observer + goList *fileList + jsonList *fileList + goChkList *widget.List + jsonChkList *widget.List } func (this *appGen) LazyInit(obs observer.Observer) error { this.obs = obs + this.goList = NewFileList() + this.jsonList = NewFileList() this.tabItem = container.NewTabItemWithIcon(common.TOOLBAR_GEN, theme.ContentCopyIcon(), nil) @@ -64,6 +76,10 @@ func (this *appGen) LazyInit(obs observer.Observer) error { inputDir := widget.NewEntry() inputDir.Text = "Datas" + tmpDir := widget.NewEntry() + tmpDir.Text = filepath.Join("c:\\tmp\\") + tmpDir.PlaceHolder = "临时目录,不要和工作目录和项目目录重复" + //genType var genTypeText string genType := widget.NewSelect([]string{"go", "json", "all"}, func(s string) { @@ -78,16 +94,18 @@ func (this *appGen) LazyInit(obs observer.Observer) error { client.Text = gt.Client //"Luban.Client\\Luban.Client.exe" genType.Selected = gt.GenType genTypeText = gt.GenType + tmpDir.Text = gt.TmpDir } form := widget.NewForm( widget.NewFormItem("服务地址", serverAddr), widget.NewFormItem("项目目录", projectDir), widget.NewFormItem("工作目录", workDir), - widget.NewFormItem("Client", client), + widget.NewFormItem("LuBan Cli", client), widget.NewFormItem("输入目录", inputDir), widget.NewFormItem("输出Code目录", outputCodeDir), widget.NewFormItem("输出JSON目录", outputJsonDir), + widget.NewFormItem("临时目录", tmpDir), widget.NewFormItem("生成类型", genType), ) @@ -116,16 +134,72 @@ func (this *appGen) LazyInit(obs observer.Observer) error { OutputCodeDir: outputCodeDir.Text, OutputJsonDir: outputJsonDir.Text, GenType: genTypeText, + TmpDir: tmpDir.Text, }); err != nil { logrus.WithField("err", err).Debug("保存配置") } logrus.Debug("save luban conf") }) + //go + this.goList.titleLabel = widget.NewLabel("Go文件") + this.goList.titleLabel.Hide() + // 复选列表 + this.goChkList = this.goList.createList() + + // 覆盖 -go + go_overrideBtn := &widget.Button{Text: "覆盖Go", Icon: theme.ConfirmIcon()} + go_overrideBtn.Hide() + go_overrideBtn.OnTapped = func() { + go_overrideBtn.Disable() + defer func() { + go_overrideBtn.Enable() + // _ = common.RemoveContents(filepath.Join(tmpDir.Text, "go")) + }() + for _, v := range this.goList.selItemIds { + // logrus.WithField("path1", filepath.Join(tmpDir.Text, "go", v)).Debug("copy go") + // logrus.WithField("path2", filepath.Join(projectDir.Text, outputCodeDir.Text, v)).Debug("copy go") + _, err := common.Copy(filepath.Join(tmpDir.Text, "go", v), + filepath.Join(projectDir.Text, outputCodeDir.Text, v)) + if err != nil { + logrus.Error(err) + } + } + } + + // json + this.jsonList.titleLabel = widget.NewLabel("Json文件") + this.jsonList.titleLabel.Hide() + // 复选列表 + this.jsonChkList = this.jsonList.createList() + + // 覆盖 -go + json_overrideBtn := &widget.Button{Text: "覆盖Json", Icon: theme.ConfirmIcon()} + json_overrideBtn.Hide() + json_overrideBtn.OnTapped = func() { + json_overrideBtn.Disable() + defer func() { + json_overrideBtn.Enable() + // _ = common.RemoveContents(filepath.Join(tmpDir.Text, "json")) + }() + for _, v := range this.jsonList.selItemIds { + // logrus.WithField("path1", filepath.Join(tmpDir.Text, "json", v)).Debug("copy json") + // logrus.WithField("path2", filepath.Join(projectDir.Text, outputJsonDir.Text, v)).Debug("copy json") + _, err := common.Copy(filepath.Join(tmpDir.Text, "json", v), + filepath.Join(projectDir.Text, outputJsonDir.Text, v)) + if err != nil { + logrus.Error(err) + } + logrus.Debug(v) + } + } + genBtn := &widget.Button{Text: "生成", Icon: theme.ConfirmIcon()} genBtn.OnTapped = func() { genBtn.Disable() - defer genBtn.Enable() + defer func() { + genBtn.Enable() + }() if runtime.GOOS != "windows" { dialog.ShowError(errors.New("no support "+runtime.GOOS), toolWin.w) return @@ -143,8 +217,8 @@ func (this *appGen) LazyInit(obs observer.Observer) error { serverAddr.Text, fmt.Sprintf("%s%s", workDir.Text, define.Text), fmt.Sprintf("%s%s", workDir.Text, inputDir.Text), - fmt.Sprintf("%s%s", projectDir.Text, outputCodeDir.Text), - fmt.Sprintf("%s%s", projectDir.Text, outputJsonDir.Text), + fmt.Sprintf("%s%s", tmpDir.Text, "go"), + fmt.Sprintf("%s%s", tmpDir.Text, "json"), getType(), ) @@ -154,15 +228,115 @@ func (this *appGen) LazyInit(obs observer.Observer) error { dialog.ShowError(err, toolWin.w) return } + + // 更新列表 + if genTypeText == "go" { + this.goList.changeItem(filepath.Join(tmpDir.Text, "go")) + this.goList.titleLabel.SetText(fmt.Sprintf("(%d/%d个)", len(this.goList.selItemIds), this.goList.fileTotal)) + go_overrideBtn.Show() + this.goList.titleLabel.Show() + } else if genTypeText == "json" { + this.jsonList.changeItem(filepath.Join(tmpDir.Text, "json")) + this.jsonList.titleLabel.SetText(fmt.Sprintf("(%d/%d)", len(this.jsonList.selItemIds), this.jsonList.fileTotal)) + json_overrideBtn.Show() + this.jsonList.titleLabel.Show() + } } - c := container.NewGridWithColumns(2, saveBtn, genBtn) - content.Objects = append(content.Objects, container.NewBorder(form, c, nil, nil)) + // layout + left := container.NewVBox(form, container.NewHBox(&layout.Spacer{}, saveBtn, genBtn)) + right := container.NewBorder( + container.NewHBox(widget.NewLabel("Go文件"), this.goList.titleLabel, &layout.Spacer{}, widget.NewLabel("Json文件"), this.jsonList.titleLabel), + container.NewHBox(go_overrideBtn, &layout.Spacer{}, json_overrideBtn), nil, nil, + container.NewMax( + container.NewGridWithColumns(2, + container.NewVScroll(this.goChkList), + container.NewVScroll(this.jsonChkList), + ))) + + content.Objects = append(content.Objects, container.NewGridWithColumns(2, left, right)) this.tabItem.Content = content return nil } +type fileList struct { + dataBinding binding.UntypedList + selItemIds []string //选择的ID + itemListData *model.ItemModelList + fileTotal int //文件总数 + titleLabel *widget.Label +} + +func NewFileList() *fileList { + return &fileList{ + dataBinding: binding.NewUntypedList(), + titleLabel: &widget.Label{}, + } +} + +func (f *fileList) createList() *widget.List { + return widget.NewListWithData(f.dataBinding, + func() fyne.CanvasObject { + return container.NewHBox( + &widget.Check{Checked: true}, + // widget.NewCheck("", func(b bool) { }), + widget.NewLabelWithStyle("", fyne.TextAlignCenter, fyne.TextStyle{}), + widget.NewLabel(""), + ) + }, + func(data binding.DataItem, item fyne.CanvasObject) { + o, _ := data.(binding.Untyped).Get() + pd := o.(*model.ItemModel) + item.(*fyne.Container).Objects[0].(*widget.Check).OnChanged = func(b bool) { + if b { + f.selItemIds = append(f.selItemIds, pd.Id) + } else { + f.selItemIds = utils.DeleteString(f.selItemIds, pd.Id) + } + f.titleLabel.SetText(fmt.Sprintf("(%d/%d)", len(f.selItemIds), f.fileTotal)) + } + item.(*fyne.Container).Objects[1].(*widget.Label).SetText(pd.Label) + }, + ) +} + +func (f *fileList) changeItem(dir string) { + f.itemListData = model.NewItemModelList() + files, err := ioutil.ReadDir(dir) + if err != nil { + logrus.Error(err) + return + } + + now := time.Now().Unix() + for _, file := range files { + if !file.IsDir() { + // 仅筛选出变更的文件 + if now-file.ModTime().Unix() < 5 { + fm := &model.ItemModel{ + Id: file.Name(), + Label: file.Name(), + } + f.itemListData.DataList = append(f.itemListData.DataList, fm) + f.selItemIds = append(f.selItemIds, fm.Id) + f.fileTotal++ + logrus.Debugf("%v", fm.Id) + } + + } + } + + f.reloadListData() +} + +func (f *fileList) reloadListData() { + if f.itemListData != nil { + d := f.itemListData.AsInterfaceArray() + f.dataBinding.Set(d) + } +} + func (a *appGen) GetAppName() string { return common.TOOLBAR_GEN } diff --git a/cmd/v2/ui/views/linestory_dotask.go b/cmd/v2/ui/views/linestory_dotask.go new file mode 100644 index 000000000..93ecf67c8 --- /dev/null +++ b/cmd/v2/ui/views/linestory_dotask.go @@ -0,0 +1,53 @@ +package formview + +import ( + "errors" + "go_dreamfactory/cmd/v2/model" + "go_dreamfactory/cmd/v2/service" + "go_dreamfactory/pb" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/widget" + "github.com/sirupsen/logrus" + "github.com/spf13/cast" +) + +type LinestoryTaskView struct { + BaseformView +} + +func (this *LinestoryTaskView) CreateView(t *model.TestCase) fyne.CanvasObject { + taskId := widget.NewEntry() + taskId.PlaceHolder = "任务ID" + + subTaskId := widget.NewEntry() + subTaskId.PlaceHolder = "子任务ID" + + this.form.AppendItem(widget.NewFormItem("任务ID", taskId)) + this.form.AppendItem(widget.NewFormItem("子任务ID", subTaskId)) + + this.form.OnSubmit = func() { + if taskId.Text == "" { + dialog.ShowError(errors.New("请任务ID"), this.w) + return + } + + if subTaskId.Text == "" { + dialog.ShowError(errors.New("请子任务ID"), this.w) + return + } + if err := service.GetPttService().SendToClient( + t.MainType, + t.SubType, + &pb.LinestoryDotaskReq{ + TaskId: cast.ToInt32(taskId.Text), + SubtaskId: cast.ToInt32(subTaskId.Text), + }, + ); err != nil { + logrus.Error(err) + return + } + } + return this.form +} diff --git a/cmd/v2/ui/views/linestory_start.go b/cmd/v2/ui/views/linestory_start.go new file mode 100644 index 000000000..7b726f27e --- /dev/null +++ b/cmd/v2/ui/views/linestory_start.go @@ -0,0 +1,43 @@ +package formview + +import ( + "errors" + "go_dreamfactory/cmd/v2/model" + "go_dreamfactory/cmd/v2/service" + "go_dreamfactory/pb" + + "fyne.io/fyne/v2" + "fyne.io/fyne/v2/dialog" + "fyne.io/fyne/v2/widget" + "github.com/sirupsen/logrus" + "github.com/spf13/cast" +) + +type LinestoryStartView struct { + BaseformView +} + +func (this *LinestoryStartView) CreateView(t *model.TestCase) fyne.CanvasObject { + jqId := widget.NewEntry() + jqId.PlaceHolder = "情景ID" + + this.form.AppendItem(widget.NewFormItem("情景ID", jqId)) + + this.form.OnSubmit = func() { + if jqId.Text == "" { + dialog.ShowError(errors.New("请情景ID"), this.w) + return + } + if err := service.GetPttService().SendToClient( + t.MainType, + t.SubType, + &pb.LinestoryStartReq{ + JqId: cast.ToInt32(jqId.Text), + }, + ); err != nil { + logrus.Error(err) + return + } + } + return this.form +} diff --git a/cmd/v2/ui/views/rtask_testview.go b/cmd/v2/ui/views/rtask_testview.go index 77cdc1304..ac51de767 100644 --- a/cmd/v2/ui/views/rtask_testview.go +++ b/cmd/v2/ui/views/rtask_testview.go @@ -1,14 +1,12 @@ package formview import ( - "errors" "go_dreamfactory/cmd/v2/model" "go_dreamfactory/cmd/v2/service" "go_dreamfactory/pb" "go_dreamfactory/utils" "fyne.io/fyne/v2" - "fyne.io/fyne/v2/dialog" "fyne.io/fyne/v2/widget" "github.com/sirupsen/logrus" "github.com/spf13/cast" @@ -24,24 +22,32 @@ func (this *RtaskTestView) CreateView(t *model.TestCase) fyne.CanvasObject { paramsInput := widget.NewEntry() paramsInput.PlaceHolder = "多个数值使用,分隔" + condiInput := widget.NewEntry() + condiInput.PlaceHolder = "条件配置ID" + this.form.AppendItem(widget.NewFormItem("任务类型", rtaskTypeInput)) this.form.AppendItem(widget.NewFormItem("参数", paramsInput)) + this.form.AppendItem(widget.NewFormItem("条件ID", condiInput)) this.form.OnSubmit = func() { - if rtaskTypeInput.Text == "" { - dialog.ShowError(errors.New("请填写任务类型ID"), this.w) - return - } + // if rtaskTypeInput.Text == "" { + // dialog.ShowError(errors.New("请填写任务类型ID"), this.w) + // return + // } - if paramsInput.Text == "" { - dialog.ShowError(errors.New("请填写任务条件参数"), this.w) - return - } + // if paramsInput.Text == "" { + // dialog.ShowError(errors.New("请填写任务条件参数"), this.w) + // return + // } if err := service.GetPttService().SendToClient( t.MainType, t.SubType, - &pb.RtaskTestReq{RtaskType: cast.ToInt32(rtaskTypeInput.Text), Params: utils.TrInt32(paramsInput.Text)}, + &pb.RtaskTestReq{ + RtaskType: cast.ToInt32(rtaskTypeInput.Text), + Params: utils.TrInt32(paramsInput.Text), + CondiId: cast.ToInt32(condiInput.Text), + }, ); err != nil { logrus.Error(err) return diff --git a/comm/const.go b/comm/const.go index 336f893da..a7b507791 100644 --- a/comm/const.go +++ b/comm/const.go @@ -58,6 +58,7 @@ const ( ModuleViking core.M_Modules = "viking" //维京远征 ModuleMoonfantasy core.M_Modules = "moonfantasy" //月之秘境模块 ModuleHunting core.M_Modules = "hunting" //狩猎 + ModuleLinestory core.M_Modules = "linestory" //支线剧情 ModuleBattle core.M_Modules = "battle" //战斗 ) @@ -129,6 +130,9 @@ const ( TableHunting = "hunting" // 维京远征排行榜 TableHuntingRank = "huntingrank" + + // 支线剧情任务 + TableLinestory = "linestory" ) //RPC服务接口定义处 diff --git a/comm/imodule.go b/comm/imodule.go index 8e6c71edc..742190dbb 100644 --- a/comm/imodule.go +++ b/comm/imodule.go @@ -109,10 +109,13 @@ type ( CleanData(uid string) // 获取当前任务 GetTaskById(uid string, taskId int32) *pb.DBTask + // 获取已完成的任务列表 + GetTaskFinished(uid string, taskType TaskTag) []*pb.DBTask } // 随机任务 IRtask interface { + CheckCondi(session IUserSession, condiId int32) (code pb.ErrorCode) //任务触发 SendToRtask(session IUserSession, rtaskType TaskType, params ...int32) (code pb.ErrorCode) } @@ -121,6 +124,8 @@ type ( IFriend interface { // 重置点赞列表和每日友情点 ResetFriend(uid string) + // 获取好友数量 + GetFriendCount(uid string) int32 } //聊天系统 diff --git a/modules/friend/api_agree.go b/modules/friend/api_agree.go index baf4c4591..385552717 100644 --- a/modules/friend/api_agree.go +++ b/modules/friend/api_agree.go @@ -99,5 +99,7 @@ func (this *apiComp) Agree(session comm.IUserSession, req *pb.FriendAgreeReq) (c return } + // 拥有xx个好友 + this.moduleFriend.ModuleRtask.SendToRtask(session, comm.Rtype10, int32(len(agreeIds))) return } diff --git a/modules/friend/api_assisthero.go b/modules/friend/api_assisthero.go index 7b5c6ec72..ce4338268 100644 --- a/modules/friend/api_assisthero.go +++ b/modules/friend/api_assisthero.go @@ -42,5 +42,7 @@ func (this *apiComp) Assisthero(session comm.IUserSession, req *pb.FriendAssisth return } + this.moduleFriend.ModuleRtask.SendToRtask(session, comm.Rtype13, 1) + return } diff --git a/modules/friend/api_zan.go b/modules/friend/api_zan.go index bf8fb332c..87dd8835f 100644 --- a/modules/friend/api_zan.go +++ b/modules/friend/api_zan.go @@ -98,5 +98,7 @@ func (this *apiComp) Zan(session comm.IUserSession, req *pb.FriendZanReq) (code return } + // 赠送X次友情点 + this.moduleFriend.ModuleRtask.SendToRtask(session, comm.Rtype11, 1) return } diff --git a/modules/friend/module.go b/modules/friend/module.go index 1ca73eea6..e4f199bb4 100644 --- a/modules/friend/module.go +++ b/modules/friend/module.go @@ -6,8 +6,12 @@ import ( "go_dreamfactory/lego/core" "go_dreamfactory/lego/sys/log" + + "github.com/spf13/cast" ) +var _ comm.IFriend = (*Friend)(nil) + func NewModule() core.IModule { m := new(Friend) return m @@ -56,3 +60,10 @@ func (this *Friend) ResetFriend(uid string) { } } + +func (this *Friend) GetFriendCount(uid string) (count int32) { + if friend := this.modelFriend.GetFriend(uid); friend != nil { + count = cast.ToInt32(len(friend.FriendIds)) + } + return +} diff --git a/modules/linestory/api.go b/modules/linestory/api.go new file mode 100644 index 000000000..9195dafc8 --- /dev/null +++ b/modules/linestory/api.go @@ -0,0 +1,29 @@ +package linestory + +import ( + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" +) + +const ( + LinestorySubTypeDostart = "dostart" //开始 + LinestorySubTypeDotask = "dotask" //做任务 +) + +type apiComp struct { + modules.MCompGate + service core.IService + moduleLinestory *ModuleLinestory +} + +func (this *apiComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + this.MCompGate.Init(service, module, comp, options) + this.moduleLinestory = module.(*ModuleLinestory) + this.service = service + return +} + +func (this *apiComp) Start() (err error) { + err = this.MCompGate.Start() + return +} diff --git a/modules/linestory/api_dotask.go b/modules/linestory/api_dotask.go new file mode 100644 index 000000000..deabe28f3 --- /dev/null +++ b/modules/linestory/api_dotask.go @@ -0,0 +1,139 @@ +package linestory + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/sys/log" + "go_dreamfactory/pb" + "go_dreamfactory/utils" + + "google.golang.org/protobuf/proto" +) + +func (this *apiComp) DotaskCheck(session comm.IUserSession, req *pb.LinestoryDotaskReq) (code pb.ErrorCode) { + if req.TaskId == 0 || req.SubtaskId == 0 { + code = pb.ErrorCode_ReqParameterError + } + return +} + +func (this *apiComp) Dotask(session comm.IUserSession, req *pb.LinestoryDotaskReq) (code pb.ErrorCode, data proto.Message) { + if code = this.DotaskCheck(session, req); code != pb.ErrorCode_Success { + return + } + + // task conf + conf := this.moduleLinestory.configure.getLinestoryTaskCfgById(req.TaskId) + if conf == nil { + code = pb.ErrorCode_ConfigNoFound + return + } + + // stage conf + stageConf := this.moduleLinestory.configure.getLinestoryStageCfgById(req.SubtaskId) + if stageConf == nil { + code = pb.ErrorCode_ConfigNoFound + return + } + + // 查询当前玩家的支线任务数据 + dbLinestory := &pb.DBLinestory{} + if err := this.moduleLinestory.modelLinestory.Get(session.GetUserId(), dbLinestory); err != nil { + code = pb.ErrorCode_DBError + return + } + + if dbLinestory.Tasks == nil { + dbLinestory.Tasks = make(map[int32]*pb.TaskNode) + } else { + if v, ok := dbLinestory.Tasks[req.TaskId]; ok { + // 是否被禁止进入 + if v.Status == 3 { + code = pb.ErrorCode_LinestoryTaskDisabledEnter + return + } + } + } + + var curTask *pb.TaskNode //当前任务 + rsp := &pb.LinestoryDotaskResp{} + + defer func() { + if err := session.SendMsg(string(this.moduleLinestory.GetType()), LinestorySubTypeDotask, rsp); err != nil { + code = pb.ErrorCode_SystemError + return + } + }() + + //校验前置 + if conf.PreTId != -1 { + if tn, ok := dbLinestory.Tasks[conf.PreTId]; !ok { + code = pb.ErrorCode_LinestoryTaskNoFinished + return + } else { + curTask = tn + // 判此任务是否是结局 + if conf.Ending == 0 && conf.Resetto != -1 { + // 重置任务 + for k, _ := range dbLinestory.Tasks { + if k >= conf.Resetto { + delete(dbLinestory.Tasks, k) + } + } + dbLinestory.Tasks[req.TaskId] = &pb.TaskNode{Status: 3} + } + // 判断是否最后一个 发奖励 + if code = this.moduleLinestory.DispenseRes(session, conf.Reward, true); code != pb.ErrorCode_Success { + log.Errorf("%v", code) + } + } + } + + // 校验子任务是否完成 + if _, ok := utils.Findx(curTask.SubtaskIds, req.SubtaskId); !ok { + code = pb.ErrorCode_LinestorySubTaskNoFinished + return + } + + // 校验子任务前置 + if stageConf.PreTId != -1 { + module, err := this.service.GetModule(comm.ModuleRtask) + if err != nil { + code = pb.ErrorCode_SystemError + return + } + //校验子任务完成条件 + if m, ok := module.(comm.IRtask); ok { + for _, condiId := range stageConf.Cond { + if code = m.CheckCondi(session, condiId); code != pb.ErrorCode_Success { + return + } + } + + // 全部符合条件 + curTask.SubtaskIds = append(curTask.SubtaskIds, req.SubtaskId) + if len(conf.StageTId) == len(curTask.SubtaskIds) { + curTask.Status = 2 //完成 + } else { + curTask.Status = 1 //进行中 + } + dbLinestory.Tasks[conf.PreTId] = curTask + } + } + + // 更新子任务 + update := map[string]interface{}{ + "tasks": dbLinestory.Tasks, + } + + if err := this.moduleLinestory.modelLinestory.Change(session.GetUserId(), update); err != nil { + code = pb.ErrorCode_DBError + return + } + + if stageConf.NextTId == -1 { + //派发奖励 + code = this.moduleLinestory.DispenseRes(session, stageConf.Reward, true) + } + + return +} diff --git a/modules/linestory/api_start.go b/modules/linestory/api_start.go new file mode 100644 index 000000000..d277a834c --- /dev/null +++ b/modules/linestory/api_start.go @@ -0,0 +1,74 @@ +package linestory + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/pb" + + "go.mongodb.org/mongo-driver/bson/primitive" + "go.mongodb.org/mongo-driver/mongo" + "google.golang.org/protobuf/proto" +) + +func (this *apiComp) DostartCheck(session comm.IUserSession, req *pb.LinestoryStartReq) (code pb.ErrorCode) { + return +} + +func (this *apiComp) Dostart(session comm.IUserSession, req *pb.LinestoryStartReq) (code pb.ErrorCode, data proto.Message) { + conf := this.moduleLinestory.configure.getLinestoryChapterCfgById(req.JqId) + if conf == nil { + code = pb.ErrorCode_ConfigNoFound + return + } + + module, err := this.service.GetModule(comm.ModuleRtask) + if err != nil { + code = pb.ErrorCode_SystemError + return + } + + if m, ok := module.(comm.IRtask); ok { + // 校验限定条件 + for _, condiId := range conf.Cond { + if code = m.CheckCondi(session, condiId); code != pb.ErrorCode_Success { + return + } + } + } + + rsp := &pb.LinestoryStartResp{ + JqId: req.JqId, + } + + defer func() { + if err := session.SendMsg(string(this.moduleLinestory.GetType()), LinestorySubTypeDostart, + rsp); err != nil { + code = pb.ErrorCode_SystemError + } + }() + + dbLinestory := &pb.DBLinestory{} + if err := this.moduleLinestory.modelLinestory.Get(session.GetUserId(), dbLinestory); err != nil { + if err == mongo.ErrNoDocuments { + //创建任务记录 + if err := this.moduleLinestory.modelLinestory.Add(session.GetUserId(), &pb.DBLinestory{ + Id: primitive.NewObjectID().Hex(), + Uid: session.GetUserId(), + JqId: req.JqId, + }); err != nil { + code = pb.ErrorCode_DBError + return + } + } else { + code = pb.ErrorCode_DBError + return + } + } + + if dbLinestory.Tasks != nil { + for k, _ := range dbLinestory.Tasks { + rsp.TaskIds = append(rsp.TaskIds, k) + } + } + + return +} diff --git a/modules/linestory/config.go b/modules/linestory/config.go new file mode 100644 index 000000000..43a348aa9 --- /dev/null +++ b/modules/linestory/config.go @@ -0,0 +1,113 @@ +package linestory + +import ( + "fmt" + "go_dreamfactory/lego/core" + "go_dreamfactory/lego/sys/log" + "go_dreamfactory/modules" + cfg "go_dreamfactory/sys/configure/structs" +) + +const ( + gameLinestoryChapter = "game_linestorychapter.json" + gameLinestoryTask = "game_linestorytask.json" + gameLinestoryStagetask = "game_linestorystagetask.json" +) + +type configureComp struct { + modules.MCompConfigure +} + +func (this *configureComp) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + err = this.MCompConfigure.Init(service, module, comp, options) + err = this.LoadMultiConfigure(map[string]interface{}{ + gameLinestoryChapter: cfg.NewGameLineStoryChapter, + gameLinestoryTask: cfg.NewGameLineStoryTask, + gameLinestoryStagetask: cfg.NewGameLineStoryStageTask, + }) + return +} + +func (this *configureComp) getLinestoryChapterCfg() (data *cfg.GameLineStoryChapter, err error) { + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(gameLinestoryChapter); err != nil { + return + } else { + if data, ok = v.(*cfg.GameLineStoryChapter); !ok { + err = fmt.Errorf("%T no is *cfg.GameLineStoryChapter", v) + return + } + } + return +} + +func (this *configureComp) getLinestoryTaskCfg() (data *cfg.GameLineStoryTask, err error) { + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(gameLinestoryTask); err != nil { + return + } else { + if data, ok = v.(*cfg.GameLineStoryTask); !ok { + err = fmt.Errorf("%T no is *cfg.GameLineStoryTask", v) + return + } + } + return +} + +func (this *configureComp) getLinestoryStageCfg() (data *cfg.GameLineStoryStageTask, err error) { + var ( + v interface{} + ok bool + ) + if v, err = this.GetConfigure(gameLinestoryStagetask); err != nil { + return + } else { + if data, ok = v.(*cfg.GameLineStoryStageTask); !ok { + err = fmt.Errorf("%T no is *cfg.GameLineStoryStageTask", v) + return + } + } + return +} + +func (this *configureComp) getLinestoryChapterCfgById(id int32) (data *cfg.GameLineStoryChapterData) { + if cfg, err := this.getLinestoryChapterCfg(); err != nil { + log.Errorf("%v", err) + return + } else { + if cfg != nil { + data = cfg.GetDataMap()[id] + } + } + return +} + +func (this *configureComp) getLinestoryTaskCfgById(id int32) (data *cfg.GameLineStoryTaskData) { + if cfg, err := this.getLinestoryTaskCfg(); err != nil { + log.Errorf("%v", err) + return + } else { + if cfg != nil { + data = cfg.GetDataMap()[id] + } + } + return +} + +func (this *configureComp) getLinestoryStageCfgById(id int32) (data *cfg.GameLineStoryStageTaskData) { + if cfg, err := this.getLinestoryStageCfg(); err != nil { + log.Errorf("%v", err) + return + } else { + if cfg != nil { + data = cfg.GetDataMap()[id] + } + } + return +} diff --git a/modules/linestory/model_linestory.go b/modules/linestory/model_linestory.go new file mode 100644 index 000000000..be20f54d9 --- /dev/null +++ b/modules/linestory/model_linestory.go @@ -0,0 +1,21 @@ +package linestory + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" +) + +type ModelLinestory struct { + modules.MCompModel + moduleLinestory *ModuleLinestory + service core.IService +} + +func (this *ModelLinestory) Init(service core.IService, module core.IModule, comp core.IModuleComp, options core.IModuleOptions) (err error) { + this.TableName = comm.TableLinestory + err = this.MCompModel.Init(service, module, comp, options) + this.moduleLinestory = module.(*ModuleLinestory) + this.service = service + return +} diff --git a/modules/linestory/module.go b/modules/linestory/module.go new file mode 100644 index 000000000..bf29363ea --- /dev/null +++ b/modules/linestory/module.go @@ -0,0 +1,34 @@ +package linestory + +import ( + "go_dreamfactory/comm" + "go_dreamfactory/lego/core" + "go_dreamfactory/modules" +) + +type ModuleLinestory struct { + modules.ModuleBase + api *apiComp + configure *configureComp + modelLinestory *ModelLinestory +} + +func NewModule() core.IModule { + return &ModuleLinestory{} +} + +func (this *ModuleLinestory) Init(service core.IService, module core.IModule, options core.IModuleOptions) (err error) { + err = this.ModuleBase.Init(service, module, options) + return +} + +func (this *ModuleLinestory) OnInstallComp() { + this.ModuleBase.OnInstallComp() + this.api = this.RegisterComp(new(apiComp)).(*apiComp) + this.modelLinestory = this.RegisterComp(new(ModelLinestory)).(*ModelLinestory) + this.configure = this.RegisterComp(new(configureComp)).(*configureComp) +} + +func (this *ModuleLinestory) GetType() core.M_Modules { + return comm.ModuleLinestory +} diff --git a/modules/rtask/api_tasktest.go b/modules/rtask/api_tasktest.go index d6f6d0c19..872216ccb 100644 --- a/modules/rtask/api_tasktest.go +++ b/modules/rtask/api_tasktest.go @@ -2,8 +2,10 @@ package rtask import ( "go_dreamfactory/comm" + "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" + "github.com/pkg/errors" "google.golang.org/protobuf/proto" ) @@ -12,9 +14,19 @@ func (this *apiComp) RtestCheck(session comm.IUserSession, req *pb.RtaskTestReq) } func (this *apiComp) Rtest(session comm.IUserSession, req *pb.RtaskTestReq) (code pb.ErrorCode, data proto.Message) { - code = this.moduleRtask.SendToRtask(session, comm.TaskType(req.RtaskType), req.Params...) + rsp := &pb.RtaskTestResp{Flag: true} + if req.CondiId != 0 { + if err, ok := this.moduleRtask.modelRtask.checkCondi(session.GetUserId(), req.CondiId); !ok { + rsp.Flag = false + log.Errorf("%v", errors.WithMessage(err, session.GetUserId())) + } + } else { + if code = this.moduleRtask.SendToRtask(session, comm.TaskType(req.RtaskType), req.Params...); code != pb.ErrorCode_Success { + rsp.Flag = false + } + } - if err := session.SendMsg(string(this.moduleRtask.GetType()), "rtasktest", &pb.RtaskTestResp{Flag: true}); err != nil { + if err := session.SendMsg(string(this.moduleRtask.GetType()), "rtest", rsp); err != nil { code = pb.ErrorCode_SystemError } return diff --git a/modules/rtask/condiFindHandle.go b/modules/rtask/condiFindHandle.go index a3c7fc8ea..8238b26f8 100644 --- a/modules/rtask/condiFindHandle.go +++ b/modules/rtask/condiFindHandle.go @@ -13,19 +13,116 @@ func (this *ModelRtaskRecord) equalParams(cfg *cfg.GameRdtaskCondiData, vals ... return } - if paramLen == 1 { - if vals[0] == cfg.Data1 { - condiId = cfg.Id + switch paramLen { + case 1: + if !soEqual(vals[0], cfg.Data1) { + return } - } else if paramLen == 2 { - if vals[0] == cfg.Data1 && vals[1] == cfg.Data2 { - condiId = cfg.Id + case 2: + if !(soEqual(vals[0], cfg.Data1) && soEqual(vals[1], cfg.Data2)) { + return } - } else if paramLen == 3 { - if vals[0] == cfg.Data1 && vals[1] == cfg.Data2 && vals[2] == cfg.Data3 { - condiId = cfg.Id + case 3: + if !(soEqual(vals[0], cfg.Data1) && soEqual(vals[1], cfg.Data2) && soEqual(vals[2], cfg.Data3)) { + return } + case 4: + if !(soEqual(vals[0], cfg.Data1) && soEqual(vals[1], cfg.Data2) && + soEqual(vals[2], cfg.Data3) && soEqual(vals[3], cfg.Data4)) { + return + } + case 5: + if !(soEqual(vals[0], cfg.Data1) && soEqual(vals[1], cfg.Data2) && + soEqual(vals[2], cfg.Data3) && soEqual(vals[3], cfg.Data4) && soEqual(vals[4], cfg.Data5)) { + return + } + default: + return } + condiId = cfg.Id + + return +} + +func (this *ModelRtaskRecord) greatThanParams(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32) { + var ( + err error + paramLen int + ) + if paramLen, err = verifyParam(cfg, vals...); err != nil { + return + } + + switch paramLen { + case 1: + if !soGreatThan(vals[0], cfg.Data1) { + return + } + case 2: + if !(soGreatThan(vals[0], cfg.Data1) && soGreatThan(vals[1], cfg.Data2)) { + return + } + case 3: + if !(soGreatThan(vals[0], cfg.Data1) && soGreatThan(vals[1], cfg.Data2) && soGreatThan(vals[2], cfg.Data3)) { + return + } + case 4: + if !(soGreatThan(vals[0], cfg.Data1) && soGreatThan(vals[1], cfg.Data2) && + soGreatThan(vals[2], cfg.Data3) && soGreatThan(vals[3], cfg.Data4)) { + return + } + case 5: + if !(soGreatThan(vals[0], cfg.Data1) && soGreatThan(vals[1], cfg.Data2) && + soGreatThan(vals[2], cfg.Data3) && soGreatThan(vals[3], cfg.Data4) && soGreatThan(vals[4], cfg.Data5)) { + return + } + default: + return + } + + condiId = cfg.Id + return +} + +// 需要累加更新的查询 +func (this *ModelRtaskRecord) lessThanParams(cfg *cfg.GameRdtaskCondiData, vals ...int32) (condiId int32) { + var ( + err error + paramLen int + ) + if paramLen, err = verifyParam(cfg, vals...); err != nil { + return + } + + switch paramLen { + case 1: + if !soLessThan(vals[0], cfg.Data1) { + return + } + case 2: + if !(soLessThan(vals[0], cfg.Data1) && soLessThan(vals[1], cfg.Data2)) { + return + } + case 3: + if !(soLessThan(vals[0], cfg.Data1) && soLessThan(vals[1], cfg.Data2) && soLessThan(vals[2], cfg.Data3)) { + return + } + case 4: + if !(soLessThan(vals[0], cfg.Data1) && soLessThan(vals[1], cfg.Data2) && + soLessThan(vals[2], cfg.Data3) && soLessThan(vals[3], cfg.Data4)) { + return + } + case 5: + if !(soLessThan(vals[0], cfg.Data1) && soLessThan(vals[1], cfg.Data2) && + soLessThan(vals[2], cfg.Data3) && soLessThan(vals[3], cfg.Data4) && soLessThan(vals[4], cfg.Data5)) { + return + } + default: + return + } + + condiId = cfg.Id + return return } diff --git a/modules/rtask/help.go b/modules/rtask/help.go index 1873ebb9e..19c434b0e 100644 --- a/modules/rtask/help.go +++ b/modules/rtask/help.go @@ -2,6 +2,7 @@ package rtask import ( "fmt" + "go_dreamfactory/lego/sys/log" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" @@ -9,14 +10,23 @@ import ( ) func verifyParam(cfg *cfg.GameRdtaskCondiData, vals ...int32) (n int, err error) { - // if cfg.Data1 != 0 && cfg.Data2 != 0 && cfg.Data3 != 0 { - // if len(vals) != 3 { - // err = errors.New(fmt.Sprintf("参数个数不一致,期望3实际是%v", len(vals))) - // return - // } else { - // n = len(vals) - // } - // } + if cfg.Data1 != 0 && cfg.Data2 != 0 && cfg.Data3 != 0 && cfg.Data4 != 0 && cfg.Data5 != 0 { + if len(vals) != 5 { + err = errors.New(fmt.Sprintf("参数个数不一致,期望5实际是%v", len(vals))) + return + } else { + n = len(vals) + } + } + + if cfg.Data1 != 0 && cfg.Data2 != 0 && cfg.Data3 != 0 && cfg.Data4 != 0 { + if len(vals) != 4 { + err = errors.New(fmt.Sprintf("参数个数不一致,期望4实际是%v", len(vals))) + return + } else { + n = len(vals) + } + } if cfg.Data1 != 0 && cfg.Data2 != 0 && cfg.Data3 != 0 { if len(vals) != 3 { @@ -63,32 +73,102 @@ func toArr(m map[int32]int32) (params []int32) { return } -func isEqual(len int, data *pb.RtaskData, cfg *cfg.GameRdtaskCondiData, vals ...int32) map[int32]int32 { +func hasUpdateData(len int, data *pb.RtaskData, vals ...int32) map[int32]int32 { if data == nil || len == 0 { return nil } res := make(map[int32]int32) - if len == 1 { - if data.Data[0] != cfg.Data1 { + switch len { + case 1: + if vals[0] > data.Data[0] { res[0] = vals[0] } - } - - if len == 2 { - if data.Data[0] != cfg.Data1 || data.Data[1] != cfg.Data2 { + case 2: + if vals[0] > data.Data[0] { res[0] = vals[0] + } else if vals[1] > data.Data[1] { res[1] = vals[1] } - } - if len == 3 { - if data.Data[0] != cfg.Data1 || data.Data[1] != cfg.Data2 || data.Data[2] != cfg.Data3 { + case 3: + if vals[0] > data.Data[0] { res[0] = vals[0] + } else if vals[1] > data.Data[1] { res[1] = vals[1] + } else if vals[2] > data.Data[2] { res[2] = vals[2] } + case 4: + if vals[0] > data.Data[0] { + res[0] = vals[0] + } else if vals[1] > data.Data[1] { + res[1] = vals[1] + } else if vals[2] > data.Data[2] { + res[2] = vals[2] + } else if vals[3] > data.Data[3] { + res[3] = vals[3] + } + case 5: + if vals[0] > data.Data[0] { + res[0] = vals[0] + } else if vals[1] > data.Data[1] { + res[1] = vals[1] + } else if vals[2] > data.Data[2] { + res[2] = vals[2] + } else if vals[3] > data.Data[3] { + res[3] = vals[3] + } else if vals[4] > data.Data[4] { + res[4] = vals[4] + } } return res } + +func printCondiLog(uid string, cfg *cfg.GameRdtaskCondiData) { + log.Infof("uid:%v condiId:%v rtype:%v", uid, cfg.Id, cfg.Type) +} + +type Num interface { + ~int32 | ~string | ~bool +} + +func equal[T Num](actual, expected T) bool { + return actual == expected +} + +func greatThan(actual, expected int32) bool { + return actual >= expected +} + +func lessThan(actual, expected int32) bool { + return actual <= expected +} + +func soEqual[T Num](actual T, expected T) (ok bool) { + if !equal(actual, expected) { + log.Debugf("实际:%v 期望:%v", actual, expected) + return + } + ok = true + return +} + +func soGreatThan(actual, expected int32) (ok bool) { + if !greatThan(actual, expected) { + log.Debugf("实际:%v 期望:%v", actual, expected) + return + } + ok = true + return +} + +func soLessThan(actual, expected int32) (ok bool) { + if !lessThan(actual, expected) { + log.Debugf("实际:%v 期望:%v", actual, expected) + return + } + ok = true + return +} diff --git a/modules/rtask/model_rtask.go b/modules/rtask/model_rtask.go index ecc6ff566..34daf2134 100644 --- a/modules/rtask/model_rtask.go +++ b/modules/rtask/model_rtask.go @@ -72,38 +72,12 @@ func (this *ModelRtask) checkCondi(uid string, condiId int32) (err error, ok boo //验证限定条件 var condi *rtaskCondi if condi, ok = this.moduleRtask.handleMap[condiId]; ok { - if err, ok = condi.verify(uid, condi.cfg); !ok { - err = errors.WithMessagef(err, "uid: %v do rtask %v condition not reach", uid, condiId) - return - } - return - } - return -} - -// 任务记录 -func (this *ModelRtask) findAndUpdate(uid string, rtypeId comm.TaskType, vals ...int32) (err error) { - var ( - condiId int32 - condi *rtaskCondi - ) - // 遍历当前已注册的任务条件 - for _, v := range this.moduleRtask.handleMap { - // 找到任务类型 - if int32(rtypeId) == v.cfg.Type { - if condiId = v.find(v.cfg, vals...); condiId == 0 { - continue - } else { - condi = v - break + if condi.verify != nil { + if err, ok = condi.verify(uid, condi.cfg); !ok { + err = errors.WithMessagef(err, "uid: %v do rtask %v condition not reach", uid, condiId) + return } } } - - // update - if condiId != 0 { - err = condi.update(uid, condi.cfg, vals...) - } - return } diff --git a/modules/rtask/module.go b/modules/rtask/module.go index a6d22130b..7bb101b25 100644 --- a/modules/rtask/module.go +++ b/modules/rtask/module.go @@ -10,6 +10,8 @@ import ( cfg "go_dreamfactory/sys/configure/structs" ) +var _ comm.IRtask = (*ModuleRtask)(nil) + // 限定条件 type rtaskCondi struct { cfg *cfg.GameRdtaskCondiData @@ -76,180 +78,465 @@ func (this *ModuleRtask) initRtaskVerifyHandle() { case comm.Rtype1: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - verify: this.modelRtaskRecord.verify, - find: this.modelRtaskRecord.equalParams, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verfiyRtype1, }) case comm.Rtype2: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - verify: this.modelRtaskRecord.verify, - find: this.modelRtaskRecord.equalParams, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verifyRtype2, }) case comm.Rtype3: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - verify: this.modelRtaskRecord.verify, - find: this.modelRtaskRecord.equalParams, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verifyRtype3, }) case comm.Rtype4: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - verify: this.modelRtaskRecord.verify, - find: this.modelRtaskRecord.equalParams, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verifyRtype4, }) case comm.Rtype5: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - verify: this.modelRtaskRecord.verify, - find: this.modelRtaskRecord.equalParams, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verifyRtype5, }) case comm.Rtype6: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verifyRtype6, }) case comm.Rtype7: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verfiyRtype7, }) case comm.Rtype8: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, - update: this.modelRtaskRecord.addUpdate, + verify: this.modelRtask.verfiyRtype8, }) case comm.Rtype9: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verfiyRtype9, }) case comm.Rtype10: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verfiyRtype10, }) case comm.Rtype11: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype12: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + find: this.modelRtaskRecord.greatThanParams, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype13: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + find: this.modelRtaskRecord.lessThanParams, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype14: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype15: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype16: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype17: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype18: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype19: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype20: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, - find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, - update: this.modelRtaskRecord.overrideUpdate, + verify: this.modelRtask.verifyRtype20, }) case comm.Rtype21: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype22: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype23: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype24: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) case comm.Rtype25: this.registerVerifyHandle(v.Id, &rtaskCondi{ cfg: typeCfg, find: this.modelRtaskRecord.equalParams, - verify: this.modelRtaskRecord.verify, + verify: this.modelRtaskRecord.verifyFromDb, update: this.modelRtaskRecord.overrideUpdate, }) + case comm.Rtype26: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype27: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype28: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype29: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype30: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype31: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype32: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype33: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype34: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype35: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype36: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype37: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype38: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype39: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype40: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype41: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype42: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype43: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype44: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype45: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype46: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype47: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype48: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype49: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype50: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype51: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype52: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype53: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype54: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype55: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype56: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype57: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype58: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype59: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype60: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype61: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype62: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype63: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + verify: this.modelRtask.verifyRtype63, + }) + case comm.Rtype64: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype65: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype66: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype67: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype68: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + case comm.Rtype69: + this.registerVerifyHandle(v.Id, &rtaskCondi{ + cfg: typeCfg, + find: this.modelRtaskRecord.equalParams, + verify: this.modelRtaskRecord.verifyFromDb, + update: this.modelRtaskRecord.overrideUpdate, + }) + default: - log.Warnf("%v rtask type not configure", typeCfg.Type) + log.Warnf("rtaskType[%v] not register", typeCfg.Type) } } } @@ -257,8 +544,45 @@ func (this *ModuleRtask) initRtaskVerifyHandle() { } func (this *ModuleRtask) SendToRtask(session comm.IUserSession, rtaskType comm.TaskType, params ...int32) (code pb.ErrorCode) { - if err := this.modelRtask.findAndUpdate(session.GetUserId(), rtaskType, params...); err != nil { - code = pb.ErrorCode_DBError + var ( + condiId int32 + condi *rtaskCondi + ) + + for _, v := range this.handleMap { + // 找到任务类型 + if int32(rtaskType) == v.cfg.Type { + if v.find == nil { + break + } + if condiId = v.find(v.cfg, params...); condiId == 0 { + continue + } else { + condi = v + break + } + } + } + + if condiId == 0 { + log.Debugf("condi not found, typeId: %v params: %v", rtaskType, params) + code = pb.ErrorCode_ConfigNoFound + return + } + + // update + if condi.update != nil { + if err := condi.update(session.GetUserId(), condi.cfg, params...); err != nil { + code = pb.ErrorCode_DBError + } + } + + return +} + +func (this *ModuleRtask) CheckCondi(session comm.IUserSession, condiId int32) (code pb.ErrorCode) { + if _, ok := this.modelRtask.checkCondi(session.GetUserId(), condiId); !ok { + code = pb.ErrorCode_RtaskCondiNoReach } return } diff --git a/modules/rtask/updateHandle.go b/modules/rtask/updateHandle.go index edf0556c7..88b8a0536 100644 --- a/modules/rtask/updateHandle.go +++ b/modules/rtask/updateHandle.go @@ -4,6 +4,7 @@ package rtask import ( "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" + "time" "github.com/pkg/errors" "go.mongodb.org/mongo-driver/bson/primitive" @@ -28,28 +29,40 @@ func (this *ModelRtaskRecord) overrideUpdate(uid string, cfg *cfg.GameRdtaskCond if record.Vals == nil { data := &pb.RtaskData{ - Data: toMap(vals...), + Rtype: cfg.Type, + Data: toMap(vals...), + Timestamp: time.Now().Unix(), } record.Vals = map[int32]*pb.RtaskData{ cfg.Id: data, } record.Id = primitive.NewObjectID().Hex() record.Uid = uid - record.RType = cfg.Type if err := this.Add(uid, record); err != nil { return errors.Wrapf(err, "添加玩家任务记录 err: %v rtype[%v]", uid, cfg.Id) } } else { if v, ok := record.Vals[cfg.Id]; ok { - m := isEqual(paramLen, v, cfg, vals...) + m := hasUpdateData(paramLen, v, vals...) if len(m) > 0 { update := map[string]interface{}{ "vals": m, } err = this.Change(uid, update) } + } else { + data := &pb.RtaskData{ + Rtype: cfg.Type, + Data: toMap(vals...), + Timestamp: time.Now().Unix(), + } + record.Vals[cfg.Id] = data + update := map[string]interface{}{ + "vals": record.Vals, + } + err = this.Change(uid, update) } } diff --git a/modules/rtask/verifyHandle.go b/modules/rtask/verifyHandle.go index ff23bff66..b0a649e91 100644 --- a/modules/rtask/verifyHandle.go +++ b/modules/rtask/verifyHandle.go @@ -2,13 +2,17 @@ package rtask import ( + "go_dreamfactory/comm" "go_dreamfactory/pb" cfg "go_dreamfactory/sys/configure/structs" + "go_dreamfactory/utils" "github.com/pkg/errors" + "github.com/spf13/cast" ) -func (this *ModelRtaskRecord) verify(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { +// Deprecated +func (this *ModelRtaskRecord) verifyFromDb(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { var rd *pb.RtaskData if rd, err = this.GetVerifyData(uid, cfg.Id); rd != nil { if len(rd.Data) == 0 { @@ -29,3 +33,240 @@ func (this *ModelRtaskRecord) verify(uid string, cfg *cfg.GameRdtaskCondiData) ( } return } + +// 英雄指定 +func (this *ModelRtask) verfiyRtype1(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + heroModule, err := this.service.GetModule(comm.ModuleHero) + if err != nil { + return nil, false + } + + if h, y := heroModule.(comm.IHero); y { + for _, v := range h.GetHeroList(uid) { + if cast.ToString(cfg.Data1) == v.HeroID { + ok = true + return + } + } + } + + return +} + +// 剧情 +func (this *ModelRtask) verifyRtype2(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + m, err := this.service.GetModule(comm.ModuleMainline) + if err != nil { + return + } + + if ml, y := m.(comm.IMainline); y { + qjId := ml.GetUsermainLineData(uid) + return nil, qjId == cfg.Data1 + } + return +} + +// 每日任务 +func (this *ModelRtask) verifyRtype3(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + m, err := this.service.GetModule(comm.ModuleTask) + if err != nil { + return + } + + if ml, y := m.(comm.ITask); y { + for _, task := range ml.GetTaskFinished(uid, comm.TASK_DAILY) { + if task.TaskId >= cfg.Data1 { + ok = true + break + } + } + } + return +} + +// 指定英雄等级 +func (this *ModelRtask) verifyRtype4(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + defer printCondiLog(uid, cfg) + m, err := this.service.GetModule(comm.ModuleHero) + if err != nil { + return + } + + if ml, y := m.(comm.IHero); y { + var hero *pb.DBHero + for _, v := range ml.GetHeroList(uid) { + if cast.ToString(cfg.Data1) == v.HeroID { + hero = v + break + } + } + if hero != nil { + return nil, soEqual(hero.HeroID, cast.ToString(cfg.Data1)) && + soEqual(hero.Lv, cfg.Data2) + } + } + return +} + +// 指定英雄的指定装备数量 +func (this *ModelRtask) verifyRtype5(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + defer printCondiLog(uid, cfg) + m, err := this.service.GetModule(comm.ModuleHero) + if err != nil { + return + } + + if ml, y := m.(comm.IHero); y { + var hero *pb.DBHero + for _, v := range ml.GetHeroList(uid) { + if cast.ToString(cfg.Data1) == v.HeroID { + hero = v + break + } + } + + var count int32 + if hero != nil { + for _, v := range hero.EquipID { + if v != "" { + count++ + } + } + } + return nil, soEqual(hero.HeroID, cast.ToString(cfg.Data1)) && + soEqual(count, cfg.Data2) + } + return +} + +// 指定英雄星级 +func (this *ModelRtask) verifyRtype6(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + defer printCondiLog(uid, cfg) + m, err := this.service.GetModule(comm.ModuleHero) + if err != nil { + return + } + + if ml, y := m.(comm.IHero); y { + var hero *pb.DBHero + for _, v := range ml.GetHeroList(uid) { + if cast.ToString(cfg.Data1) == v.HeroID { + hero = v + break + } + } + + if hero != nil { + return nil, soEqual(hero.HeroID, cast.ToString(cfg.Data1)) && + soEqual(hero.Star, cfg.Data2) + } + } + return +} + +// 日常登录一次 +func (this *ModelRtask) verfiyRtype7(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + defer printCondiLog(uid, cfg) + userModule, err := this.service.GetModule(comm.ModuleUser) + if err != nil { + return + } + + if um, y := userModule.(comm.IUser); y { + if user := um.GetUser(uid); user != nil { + return nil, soEqual(utils.IsToday(user.Logintime), true) + } + } + return +} + +// 累计登陆xx天 +func (this *ModelRtask) verfiyRtype8(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + defer printCondiLog(uid, cfg) + userModule, err := this.service.GetModule(comm.ModuleUser) + if err != nil { + return + } + + if um, y := userModule.(comm.IUser); y { + ud, err := um.GetUserExpand(uid) + if err != nil { + return err, false + } + return nil, soEqual(ud.LoginAddCount, cfg.Data1) + } + return +} + +// 连续登陆xx天 +func (this *ModelRtask) verfiyRtype9(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + defer printCondiLog(uid, cfg) + userModule, err := this.service.GetModule(comm.ModuleUser) + if err != nil { + return + } + + if um, y := userModule.(comm.IUser); y { + ud, err := um.GetUserExpand(uid) + if err != nil { + return err, false + } + return nil, soEqual(ud.LoginContinueCount, cfg.Data1) + } + return +} + +// 拥有xx个好友 +func (this *ModelRtask) verfiyRtype10(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + defer printCondiLog(uid, cfg) + m, err := this.service.GetModule(comm.ModuleFriend) + if err != nil { + return + } + + if mi, y := m.(comm.IFriend); y { + count := mi.GetFriendCount(uid) + return nil, soGreatThan(count, cfg.Data1) + } + return +} + +// 用户等级达到xx级 +func (this *ModelRtask) verifyRtype20(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + defer printCondiLog(uid, cfg) + userModule, err := this.service.GetModule(comm.ModuleUser) + if err != nil { + return + } + + if um, y := userModule.(comm.IUser); y { + if user := um.GetUser(uid); user != nil { + return nil, soEqual(user.Lv, cfg.Data1) + } + } + return +} + +// 日常任务活跃度达到xx +func (this *ModelRtask) verifyRtype63(uid string, cfg *cfg.GameRdtaskCondiData) (err error, ok bool) { + userModule, err := this.service.GetModule(comm.ModuleUser) + if err != nil { + return + } + + if um, y := userModule.(comm.IUser); y { + de, err := um.GetUserExpand(uid) + if err != nil { + return err, false + } + + if de != nil { + if de.Activeday == cfg.Data1 { + ok = true + } + } + } + + return +} diff --git a/modules/rtask/verify_test.go b/modules/rtask/verify_test.go index 3a956192f..27288e691 100644 --- a/modules/rtask/verify_test.go +++ b/modules/rtask/verify_test.go @@ -54,7 +54,7 @@ func TestVerify2(t *testing.T) { Type: 1, Data1: 25001, } - err, ok := rtask.verify("11", conf) + err, ok := rtask.verifyFromDb("11", conf) So(err, ShouldEqual, nil) So(ok, ShouldEqual, true) diff --git a/modules/task/model_task.go b/modules/task/model_task.go index 0721b982f..dbf72c43b 100644 --- a/modules/task/model_task.go +++ b/modules/task/model_task.go @@ -148,6 +148,17 @@ func (this *ModelTask) getUserTask(uid string, taskId string) *pb.DBTask { return userTask } +// 获取已完成的任务 +func (this *ModelTask) getFinishTasks(uid string, taskTag comm.TaskTag) (list []*pb.DBTask) { + taskList := this.getTaskListByTag(uid, taskTag) + for _, v := range taskList { + if v.Status == 1 { + list = append(list, v) + } + } + return +} + // 获取待处理的任务 func (this *ModelTask) getUnFinishTasks(uid string, taskId int32) (list []*pb.DBTask) { taskList := this.getTaskById(uid, taskId) diff --git a/modules/task/module.go b/modules/task/module.go index 51850db0b..0d093795a 100644 --- a/modules/task/module.go +++ b/modules/task/module.go @@ -10,6 +10,8 @@ import ( "go_dreamfactory/pb" ) +var _ comm.ITask = (*ModuleTask)(nil) + type ModuleTask struct { modules.ModuleBase modelTask *ModelTask @@ -110,6 +112,10 @@ func (this *ModuleTask) SendToTask(session comm.IUserSession, taskType comm.Task if err := session.SendMsg(string(comm.ModuleTask), TaskSubTypeFinishedPush, &pb.TaskFinishedPush{TaskId: t.TaskId}); err != nil { this.modelTask.moduleTask.Errorf("SendToTask sendmsg err:%v", err) } + // 每日任务 + if t.Tag == int32(comm.TASK_DAILY) { + this.ModuleRtask.SendToRtask(session, comm.Rtype3, t.TaskId) + } } } return @@ -157,3 +163,7 @@ func (this *ModuleTask) initTaskHandle() { } } } + +func (this *ModuleTask) GetTaskFinished(uid string, taskTage comm.TaskTag) []*pb.DBTask { + return this.modelTask.getFinishTasks(uid, taskTage) +} diff --git a/modules/user/api_login.go b/modules/user/api_login.go index 69e2a7e9b..7e7a44866 100644 --- a/modules/user/api_login.go +++ b/modules/user/api_login.go @@ -105,7 +105,7 @@ func (this *apiComp) Login(session comm.IUserSession, req *pb.UserLoginReq) (cod } if this.module.modelUser.isLoginFirst(lastLoginTime) { - this.module.ModuleRtask.SendToRtask(session, comm.Rtype7, 1) + this.module.modelExpand.updateLoginDay(user.Uid, lastLoginTime) //清空日常 this.module.ModuleTask.ResetTask(user.Uid, comm.TASK_DAILY) //清周常 diff --git a/modules/user/model_expand.go b/modules/user/model_expand.go index f763c5888..e376778c8 100644 --- a/modules/user/model_expand.go +++ b/modules/user/model_expand.go @@ -5,6 +5,7 @@ import ( "go_dreamfactory/lego/core" "go_dreamfactory/modules" "go_dreamfactory/pb" + "go_dreamfactory/utils" "go.mongodb.org/mongo-driver/mongo" ) @@ -50,3 +51,21 @@ func (this *ModelExpand) ChangeUserExpand(uid string, value map[string]interface return this.module.modelExpand.Change(uid, value) } + +// 累计登录天数 +func (this *ModelExpand) updateLoginDay(uid string, timestamp int64) (err error) { + var de *pb.DBUserExpand + if de, err = this.GetUserExpand(uid); err == nil { + count := de.LoginAddCount + 1 + update := map[string]interface{}{ + "loginAddCount": count, + } + + // 更新连续等登录天数 + if utils.IsYestoday(timestamp) { + update["loginContinueCount"] = de.LoginContinueCount + 1 + } + err = this.ChangeUserExpand(uid, update) + } + return +} diff --git a/modules/user/module.go b/modules/user/module.go index d81756fde..570d00abf 100644 --- a/modules/user/module.go +++ b/modules/user/module.go @@ -10,6 +10,8 @@ import ( "go_dreamfactory/lego/sys/event" ) +var _ comm.IUser = (*User)(nil) + func NewModule() core.IModule { m := new(User) return m diff --git a/pb/errorcode.pb.go b/pb/errorcode.pb.go index 26a2d28f1..0c11d2c25 100644 --- a/pb/errorcode.pb.go +++ b/pb/errorcode.pb.go @@ -165,12 +165,15 @@ const ( ErrorCode_VikingBoosType ErrorCode = 2302 // BOSS 类型不对 ErrorCode_VikingBuyMaxCount ErrorCode = 2303 // 购买达到最大次数 // moonfantasy 月之秘境 - ErrorCode_MoonfantasyHasExpired ErrorCode = 2401 // boos 连接已失效 - ErrorCode_MoonfantasyJoinUp ErrorCode = 2402 // boos 参与人数已达上限 - ErrorCode_MoonfantasyDareUp ErrorCode = 2403 // boos 挑战次数已达上限 - ErrorCode_MoonfantasyBattleNoEnd ErrorCode = 2404 // boos 战斗未结束 - ErrorCode_MoonfantasyBattleNoWin ErrorCode = 2405 // boos 战斗魏未胜利 - ErrorCode_BattleNoFoundRecord ErrorCode = 2501 // 未找到记录 + ErrorCode_MoonfantasyHasExpired ErrorCode = 2401 // boos 连接已失效 + ErrorCode_MoonfantasyJoinUp ErrorCode = 2402 // boos 参与人数已达上限 + ErrorCode_MoonfantasyDareUp ErrorCode = 2403 // boos 挑战次数已达上限 + ErrorCode_MoonfantasyBattleNoEnd ErrorCode = 2404 // boos 战斗未结束 + ErrorCode_MoonfantasyBattleNoWin ErrorCode = 2405 // boos 战斗魏未胜利 + ErrorCode_BattleNoFoundRecord ErrorCode = 2501 // 未找到记录 + ErrorCode_LinestoryTaskNoFinished ErrorCode = 2601 //任务未完成 + ErrorCode_LinestorySubTaskNoFinished ErrorCode = 2602 //子任务未完成 + ErrorCode_LinestoryTaskDisabledEnter ErrorCode = 2603 //禁止进入 ) // Enum value maps for ErrorCode. @@ -309,141 +312,147 @@ var ( 2404: "MoonfantasyBattleNoEnd", 2405: "MoonfantasyBattleNoWin", 2501: "BattleNoFoundRecord", + 2601: "LinestoryTaskNoFinished", + 2602: "LinestorySubTaskNoFinished", + 2603: "LinestoryTaskDisabledEnter", } ErrorCode_value = map[string]int32{ - "Success": 0, - "NoFindService": 10, - "NoFindServiceHandleFunc": 11, - "RpcFuncExecutionError": 12, - "CacheReadError": 13, - "SqlExecutionError": 14, - "ReqParameterError": 15, - "SignError": 16, - "InsufficientPermissions": 17, - "NoLogin": 18, - "UserSessionNobeing": 19, - "StateInvalid": 20, - "DBError": 21, - "SystemError": 22, - "DecodeError": 23, - "TimestampTimeout": 24, - "PbError": 25, - "AgentUidEmpty": 26, - "Exception": 100, - "Unknown": 101, - "ResNoEnough": 102, - "ConfigurationException": 103, - "ConfigNoFound": 104, - "SecKeyInvalid": 1000, - "SecKey": 1001, - "BindUser": 1002, - "GoldNoEnough": 1003, - "DiamondNoEnough": 1004, - "RoleCreated": 1005, - "UserNickNameExist": 1006, - "VeriCodeNoValid": 1007, - "VeriCodeExpired": 1008, - "UserResetData": 1009, - "UserModiNameCount": 1010, - "UserNickNameEmpty": 1011, - "UserExpandNull": 1012, - "FriendNotSelf": 1100, - "FriendSelfMax": 1101, - "FriendTargetMax": 1102, - "FriendSelfNoData": 1103, - "FriendTargetNoData": 1104, - "FriendYet": 1105, - "FriendApplyYet": 1106, - "FriendSelfBlackYet": 1107, - "FriendTargetBlackYet": 1108, - "FriendApplyError": 1109, - "FriendBlackMax": 1110, - "FriendSearchNameEmpty": 1111, - "FriendZaned": 1112, - "FriendZanreceived": 1113, - "FriendZanSelf": 1114, - "FriendPointLimit": 1115, - "ItemsNoEnough": 1200, - "ItemsNoFoundGird": 1201, - "ItemsGridNumUpper": 1202, - "ItemsGirdAmountUpper": 1203, - "ItemsUseNotSupported": 1204, - "HeroNoExist": 1300, - "HeroNoEnough": 1301, - "HeroMaxLv": 1302, - "HeroInitCreat": 1303, - "HeroColorErr": 1304, - "HeroSkillUpErr": 1305, - "HeroMaxResonate": 1306, - "HeroNoResonate": 1307, - "HeroNotNeedResonate": 1308, - "HeroNoEnergy": 1309, - "HeroCreate": 1310, - "HeroEquipUpdate": 1311, - "HeroMaxAwaken": 1312, - "HeroIsLock": 1313, - "HeroMaxCount": 1314, - "HeroCostTypeErr": 1315, - "HeroStarErr": 1316, - "HeroTypeErr": 1317, - "HeroExpTypeErr": 1318, - "HeroAddMaxExp": 1319, - "HeroStarLvErr": 1320, - "HeroMaxStarLv": 1321, - "DrawCardTypeNotFound": 1322, - "HeroMaxSkillLv": 1323, - "HeroAlreadyKongFuStatus": 1324, - "EquipmentOnFoundEquipment": 1400, - "EquipmentLvlimitReached": 1401, - "EquipmentIsWorn": 1402, - "EquipmentNoCanSell": 1403, - "MainlineNotFindChapter": 1500, - "MainlineIDFailed": 1501, - "MainlineNotFound": 1502, - "MainlinePreNotFound": 1503, - "MainlineRepeatReward": 1504, - "MainlineCompleteReward": 1505, - "TaskInit": 1600, - "TaskReset": 1601, - "TaskHandle": 1602, - "TaskReceived": 1603, - "TaskActiveInit": 1604, - "TaskActiveNofound": 1605, - "TaskActiveNoenough": 1606, - "TaskNoFinished": 1607, - "TaskFinished": 1608, - "TaskTagEmpty": 1609, - "TaskIdEmpty": 1610, - "TaskNotFound": 1611, - "ShopGoodsIsSoldOut": 1700, - "ShopNoSurplusRefreshNum": 1701, - "MailErr": 1800, - "PagodaNotFound": 1900, - "PagodaLevlErr": 1901, - "PagodaGetRewardErr": 1902, - "PagodaConditionErr": 1903, - "MartialhallNotUnlocked": 2000, - "MartialhallInUse": 2001, - "MartialhallUnlocked": 2002, - "MartialhallNoUnlocked": 2003, - "GourmetMoreOrderTime": 2101, - "GourmetSkillMaxLv": 2102, - "RtaskFinished": 2201, - "RtaskUnFinished": 2202, - "RtaskNoRtask": 2203, - "RtaskRewarded": 2204, - "RtaskPreNoFinish": 2205, - "RtaskCondiNoReach": 2206, - "RtaskNoLastOne": 2207, - "VikingLvErr": 2301, - "VikingBoosType": 2302, - "VikingBuyMaxCount": 2303, - "MoonfantasyHasExpired": 2401, - "MoonfantasyJoinUp": 2402, - "MoonfantasyDareUp": 2403, - "MoonfantasyBattleNoEnd": 2404, - "MoonfantasyBattleNoWin": 2405, - "BattleNoFoundRecord": 2501, + "Success": 0, + "NoFindService": 10, + "NoFindServiceHandleFunc": 11, + "RpcFuncExecutionError": 12, + "CacheReadError": 13, + "SqlExecutionError": 14, + "ReqParameterError": 15, + "SignError": 16, + "InsufficientPermissions": 17, + "NoLogin": 18, + "UserSessionNobeing": 19, + "StateInvalid": 20, + "DBError": 21, + "SystemError": 22, + "DecodeError": 23, + "TimestampTimeout": 24, + "PbError": 25, + "AgentUidEmpty": 26, + "Exception": 100, + "Unknown": 101, + "ResNoEnough": 102, + "ConfigurationException": 103, + "ConfigNoFound": 104, + "SecKeyInvalid": 1000, + "SecKey": 1001, + "BindUser": 1002, + "GoldNoEnough": 1003, + "DiamondNoEnough": 1004, + "RoleCreated": 1005, + "UserNickNameExist": 1006, + "VeriCodeNoValid": 1007, + "VeriCodeExpired": 1008, + "UserResetData": 1009, + "UserModiNameCount": 1010, + "UserNickNameEmpty": 1011, + "UserExpandNull": 1012, + "FriendNotSelf": 1100, + "FriendSelfMax": 1101, + "FriendTargetMax": 1102, + "FriendSelfNoData": 1103, + "FriendTargetNoData": 1104, + "FriendYet": 1105, + "FriendApplyYet": 1106, + "FriendSelfBlackYet": 1107, + "FriendTargetBlackYet": 1108, + "FriendApplyError": 1109, + "FriendBlackMax": 1110, + "FriendSearchNameEmpty": 1111, + "FriendZaned": 1112, + "FriendZanreceived": 1113, + "FriendZanSelf": 1114, + "FriendPointLimit": 1115, + "ItemsNoEnough": 1200, + "ItemsNoFoundGird": 1201, + "ItemsGridNumUpper": 1202, + "ItemsGirdAmountUpper": 1203, + "ItemsUseNotSupported": 1204, + "HeroNoExist": 1300, + "HeroNoEnough": 1301, + "HeroMaxLv": 1302, + "HeroInitCreat": 1303, + "HeroColorErr": 1304, + "HeroSkillUpErr": 1305, + "HeroMaxResonate": 1306, + "HeroNoResonate": 1307, + "HeroNotNeedResonate": 1308, + "HeroNoEnergy": 1309, + "HeroCreate": 1310, + "HeroEquipUpdate": 1311, + "HeroMaxAwaken": 1312, + "HeroIsLock": 1313, + "HeroMaxCount": 1314, + "HeroCostTypeErr": 1315, + "HeroStarErr": 1316, + "HeroTypeErr": 1317, + "HeroExpTypeErr": 1318, + "HeroAddMaxExp": 1319, + "HeroStarLvErr": 1320, + "HeroMaxStarLv": 1321, + "DrawCardTypeNotFound": 1322, + "HeroMaxSkillLv": 1323, + "HeroAlreadyKongFuStatus": 1324, + "EquipmentOnFoundEquipment": 1400, + "EquipmentLvlimitReached": 1401, + "EquipmentIsWorn": 1402, + "EquipmentNoCanSell": 1403, + "MainlineNotFindChapter": 1500, + "MainlineIDFailed": 1501, + "MainlineNotFound": 1502, + "MainlinePreNotFound": 1503, + "MainlineRepeatReward": 1504, + "MainlineCompleteReward": 1505, + "TaskInit": 1600, + "TaskReset": 1601, + "TaskHandle": 1602, + "TaskReceived": 1603, + "TaskActiveInit": 1604, + "TaskActiveNofound": 1605, + "TaskActiveNoenough": 1606, + "TaskNoFinished": 1607, + "TaskFinished": 1608, + "TaskTagEmpty": 1609, + "TaskIdEmpty": 1610, + "TaskNotFound": 1611, + "ShopGoodsIsSoldOut": 1700, + "ShopNoSurplusRefreshNum": 1701, + "MailErr": 1800, + "PagodaNotFound": 1900, + "PagodaLevlErr": 1901, + "PagodaGetRewardErr": 1902, + "PagodaConditionErr": 1903, + "MartialhallNotUnlocked": 2000, + "MartialhallInUse": 2001, + "MartialhallUnlocked": 2002, + "MartialhallNoUnlocked": 2003, + "GourmetMoreOrderTime": 2101, + "GourmetSkillMaxLv": 2102, + "RtaskFinished": 2201, + "RtaskUnFinished": 2202, + "RtaskNoRtask": 2203, + "RtaskRewarded": 2204, + "RtaskPreNoFinish": 2205, + "RtaskCondiNoReach": 2206, + "RtaskNoLastOne": 2207, + "VikingLvErr": 2301, + "VikingBoosType": 2302, + "VikingBuyMaxCount": 2303, + "MoonfantasyHasExpired": 2401, + "MoonfantasyJoinUp": 2402, + "MoonfantasyDareUp": 2403, + "MoonfantasyBattleNoEnd": 2404, + "MoonfantasyBattleNoWin": 2405, + "BattleNoFoundRecord": 2501, + "LinestoryTaskNoFinished": 2601, + "LinestorySubTaskNoFinished": 2602, + "LinestoryTaskDisabledEnter": 2603, } ) @@ -478,7 +487,7 @@ var File_errorcode_proto protoreflect.FileDescriptor var file_errorcode_proto_rawDesc = []byte{ 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x63, 0x6f, 0x64, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x2a, 0xd3, 0x16, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, + 0x6f, 0x2a, 0xb3, 0x17, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, @@ -659,7 +668,13 @@ var file_errorcode_proto_rawDesc = []byte{ 0x12, 0x1b, 0x0a, 0x16, 0x4d, 0x6f, 0x6f, 0x6e, 0x66, 0x61, 0x6e, 0x74, 0x61, 0x73, 0x79, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x57, 0x69, 0x6e, 0x10, 0xe5, 0x12, 0x12, 0x18, 0x0a, 0x13, 0x42, 0x61, 0x74, 0x74, 0x6c, 0x65, 0x4e, 0x6f, 0x46, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x10, 0xc5, 0x13, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, + 0x63, 0x6f, 0x72, 0x64, 0x10, 0xc5, 0x13, 0x12, 0x1c, 0x0a, 0x17, 0x4c, 0x69, 0x6e, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, 0x68, + 0x65, 0x64, 0x10, 0xa9, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x53, 0x75, 0x62, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x46, 0x69, 0x6e, 0x69, 0x73, + 0x68, 0x65, 0x64, 0x10, 0xaa, 0x14, 0x12, 0x1f, 0x0a, 0x1a, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, + 0x6f, 0x72, 0x79, 0x54, 0x61, 0x73, 0x6b, 0x44, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x45, + 0x6e, 0x74, 0x65, 0x72, 0x10, 0xab, 0x14, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } diff --git a/pb/linestory_db.pb.go b/pb/linestory_db.pb.go new file mode 100644 index 000000000..b6ce9188a --- /dev/null +++ b/pb/linestory_db.pb.go @@ -0,0 +1,251 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc v3.20.0 +// source: linestory/linestory_db.proto + +package pb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type TaskNode struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Status int32 `protobuf:"varint,1,opt,name=status,proto3" json:"status" bson:"status"` //状态 0未做 + // 1进行中(子任务没有全部完成) 2已做 3禁止进入 + SubtaskIds []int32 `protobuf:"varint,2,rep,packed,name=subtaskIds,proto3" json:"subtaskIds" bson:"subtasks"` //子任务 +} + +func (x *TaskNode) Reset() { + *x = TaskNode{} + if protoimpl.UnsafeEnabled { + mi := &file_linestory_linestory_db_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TaskNode) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TaskNode) ProtoMessage() {} + +func (x *TaskNode) ProtoReflect() protoreflect.Message { + mi := &file_linestory_linestory_db_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TaskNode.ProtoReflect.Descriptor instead. +func (*TaskNode) Descriptor() ([]byte, []int) { + return file_linestory_linestory_db_proto_rawDescGZIP(), []int{0} +} + +func (x *TaskNode) GetStatus() int32 { + if x != nil { + return x.Status + } + return 0 +} + +func (x *TaskNode) GetSubtaskIds() []int32 { + if x != nil { + return x.SubtaskIds + } + return nil +} + +type DBLinestory struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID + JqId int32 `protobuf:"varint,3,opt,name=jqId,proto3" json:"jqId" bson:"jqId"` //剧情ID + Tasks map[int32]*TaskNode `protobuf:"bytes,4,rep,name=tasks,proto3" json:"tasks" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" bson:"tasks"` //任务 +} + +func (x *DBLinestory) Reset() { + *x = DBLinestory{} + if protoimpl.UnsafeEnabled { + mi := &file_linestory_linestory_db_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DBLinestory) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DBLinestory) ProtoMessage() {} + +func (x *DBLinestory) ProtoReflect() protoreflect.Message { + mi := &file_linestory_linestory_db_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DBLinestory.ProtoReflect.Descriptor instead. +func (*DBLinestory) Descriptor() ([]byte, []int) { + return file_linestory_linestory_db_proto_rawDescGZIP(), []int{1} +} + +func (x *DBLinestory) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *DBLinestory) GetUid() string { + if x != nil { + return x.Uid + } + return "" +} + +func (x *DBLinestory) GetJqId() int32 { + if x != nil { + return x.JqId + } + return 0 +} + +func (x *DBLinestory) GetTasks() map[int32]*TaskNode { + if x != nil { + return x.Tasks + } + return nil +} + +var File_linestory_linestory_db_proto protoreflect.FileDescriptor + +var file_linestory_linestory_db_proto_rawDesc = []byte{ + 0x0a, 0x1c, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x6c, 0x69, 0x6e, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x64, 0x62, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x42, + 0x0a, 0x08, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, + 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, + 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x74, 0x61, 0x73, 0x6b, 0x49, + 0x64, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x0b, 0x44, 0x42, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, + 0x72, 0x79, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x75, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6a, 0x71, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x6a, 0x71, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x74, 0x61, 0x73, 0x6b, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x44, 0x42, 0x4c, 0x69, 0x6e, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x05, 0x74, 0x61, 0x73, 0x6b, 0x73, 0x1a, 0x43, 0x0a, 0x0a, 0x54, 0x61, 0x73, 0x6b, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x1f, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x09, 0x2e, 0x54, 0x61, 0x73, 0x6b, 0x4e, 0x6f, 0x64, + 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, + 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_linestory_linestory_db_proto_rawDescOnce sync.Once + file_linestory_linestory_db_proto_rawDescData = file_linestory_linestory_db_proto_rawDesc +) + +func file_linestory_linestory_db_proto_rawDescGZIP() []byte { + file_linestory_linestory_db_proto_rawDescOnce.Do(func() { + file_linestory_linestory_db_proto_rawDescData = protoimpl.X.CompressGZIP(file_linestory_linestory_db_proto_rawDescData) + }) + return file_linestory_linestory_db_proto_rawDescData +} + +var file_linestory_linestory_db_proto_msgTypes = make([]protoimpl.MessageInfo, 3) +var file_linestory_linestory_db_proto_goTypes = []interface{}{ + (*TaskNode)(nil), // 0: TaskNode + (*DBLinestory)(nil), // 1: DBLinestory + nil, // 2: DBLinestory.TasksEntry +} +var file_linestory_linestory_db_proto_depIdxs = []int32{ + 2, // 0: DBLinestory.tasks:type_name -> DBLinestory.TasksEntry + 0, // 1: DBLinestory.TasksEntry.value:type_name -> TaskNode + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 2, // [2:2] is the sub-list for extension type_name + 2, // [2:2] is the sub-list for extension extendee + 0, // [0:2] is the sub-list for field type_name +} + +func init() { file_linestory_linestory_db_proto_init() } +func file_linestory_linestory_db_proto_init() { + if File_linestory_linestory_db_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_linestory_linestory_db_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TaskNode); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_linestory_linestory_db_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DBLinestory); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_linestory_linestory_db_proto_rawDesc, + NumEnums: 0, + NumMessages: 3, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_linestory_linestory_db_proto_goTypes, + DependencyIndexes: file_linestory_linestory_db_proto_depIdxs, + MessageInfos: file_linestory_linestory_db_proto_msgTypes, + }.Build() + File_linestory_linestory_db_proto = out.File + file_linestory_linestory_db_proto_rawDesc = nil + file_linestory_linestory_db_proto_goTypes = nil + file_linestory_linestory_db_proto_depIdxs = nil +} diff --git a/pb/linestory_msg.pb.go b/pb/linestory_msg.pb.go new file mode 100644 index 000000000..ffbdcbb92 --- /dev/null +++ b/pb/linestory_msg.pb.go @@ -0,0 +1,500 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.0 +// protoc v3.20.0 +// source: linestory/linestory_msg.proto + +package pb + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// 剧情开始 +type LinestoryStartReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + JqId int32 `protobuf:"varint,1,opt,name=jqId,proto3" json:"jqId"` //剧情ID +} + +func (x *LinestoryStartReq) Reset() { + *x = LinestoryStartReq{} + if protoimpl.UnsafeEnabled { + mi := &file_linestory_linestory_msg_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinestoryStartReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinestoryStartReq) ProtoMessage() {} + +func (x *LinestoryStartReq) ProtoReflect() protoreflect.Message { + mi := &file_linestory_linestory_msg_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinestoryStartReq.ProtoReflect.Descriptor instead. +func (*LinestoryStartReq) Descriptor() ([]byte, []int) { + return file_linestory_linestory_msg_proto_rawDescGZIP(), []int{0} +} + +func (x *LinestoryStartReq) GetJqId() int32 { + if x != nil { + return x.JqId + } + return 0 +} + +type LinestoryStartResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + JqId int32 `protobuf:"varint,1,opt,name=jqId,proto3" json:"jqId"` + TaskIds []int32 `protobuf:"varint,2,rep,packed,name=taskIds,proto3" json:"taskIds"` //已完成的任务ID +} + +func (x *LinestoryStartResp) Reset() { + *x = LinestoryStartResp{} + if protoimpl.UnsafeEnabled { + mi := &file_linestory_linestory_msg_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinestoryStartResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinestoryStartResp) ProtoMessage() {} + +func (x *LinestoryStartResp) ProtoReflect() protoreflect.Message { + mi := &file_linestory_linestory_msg_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinestoryStartResp.ProtoReflect.Descriptor instead. +func (*LinestoryStartResp) Descriptor() ([]byte, []int) { + return file_linestory_linestory_msg_proto_rawDescGZIP(), []int{1} +} + +func (x *LinestoryStartResp) GetJqId() int32 { + if x != nil { + return x.JqId + } + return 0 +} + +func (x *LinestoryStartResp) GetTaskIds() []int32 { + if x != nil { + return x.TaskIds + } + return nil +} + +// 做任务 +type LinestoryDotaskReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TaskId int32 `protobuf:"varint,1,opt,name=taskId,proto3" json:"taskId"` //任务ID + SubtaskId int32 `protobuf:"varint,2,opt,name=subtaskId,proto3" json:"subtaskId"` //子任务ID +} + +func (x *LinestoryDotaskReq) Reset() { + *x = LinestoryDotaskReq{} + if protoimpl.UnsafeEnabled { + mi := &file_linestory_linestory_msg_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinestoryDotaskReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinestoryDotaskReq) ProtoMessage() {} + +func (x *LinestoryDotaskReq) ProtoReflect() protoreflect.Message { + mi := &file_linestory_linestory_msg_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinestoryDotaskReq.ProtoReflect.Descriptor instead. +func (*LinestoryDotaskReq) Descriptor() ([]byte, []int) { + return file_linestory_linestory_msg_proto_rawDescGZIP(), []int{2} +} + +func (x *LinestoryDotaskReq) GetTaskId() int32 { + if x != nil { + return x.TaskId + } + return 0 +} + +func (x *LinestoryDotaskReq) GetSubtaskId() int32 { + if x != nil { + return x.SubtaskId + } + return 0 +} + +type LinestoryDotaskResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TaskId int32 `protobuf:"varint,1,opt,name=taskId,proto3" json:"taskId"` //任务ID + SubtaskId int32 `protobuf:"varint,2,opt,name=subtaskId,proto3" json:"subtaskId"` //子任务ID + ResetTaskId int32 `protobuf:"varint,3,opt,name=resetTaskId,proto3" json:"resetTaskId"` //重置任务起始ID +} + +func (x *LinestoryDotaskResp) Reset() { + *x = LinestoryDotaskResp{} + if protoimpl.UnsafeEnabled { + mi := &file_linestory_linestory_msg_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinestoryDotaskResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinestoryDotaskResp) ProtoMessage() {} + +func (x *LinestoryDotaskResp) ProtoReflect() protoreflect.Message { + mi := &file_linestory_linestory_msg_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinestoryDotaskResp.ProtoReflect.Descriptor instead. +func (*LinestoryDotaskResp) Descriptor() ([]byte, []int) { + return file_linestory_linestory_msg_proto_rawDescGZIP(), []int{3} +} + +func (x *LinestoryDotaskResp) GetTaskId() int32 { + if x != nil { + return x.TaskId + } + return 0 +} + +func (x *LinestoryDotaskResp) GetSubtaskId() int32 { + if x != nil { + return x.SubtaskId + } + return 0 +} + +func (x *LinestoryDotaskResp) GetResetTaskId() int32 { + if x != nil { + return x.ResetTaskId + } + return 0 +} + +// 做子任务 +type LinestoryDosubtaskReq struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubtaskId int32 `protobuf:"varint,1,opt,name=subtaskId,proto3" json:"subtaskId"` //子任务ID +} + +func (x *LinestoryDosubtaskReq) Reset() { + *x = LinestoryDosubtaskReq{} + if protoimpl.UnsafeEnabled { + mi := &file_linestory_linestory_msg_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinestoryDosubtaskReq) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinestoryDosubtaskReq) ProtoMessage() {} + +func (x *LinestoryDosubtaskReq) ProtoReflect() protoreflect.Message { + mi := &file_linestory_linestory_msg_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinestoryDosubtaskReq.ProtoReflect.Descriptor instead. +func (*LinestoryDosubtaskReq) Descriptor() ([]byte, []int) { + return file_linestory_linestory_msg_proto_rawDescGZIP(), []int{4} +} + +func (x *LinestoryDosubtaskReq) GetSubtaskId() int32 { + if x != nil { + return x.SubtaskId + } + return 0 +} + +type LinestoryDosubtaskResp struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + SubtaskId int32 `protobuf:"varint,1,opt,name=subtaskId,proto3" json:"subtaskId"` //子任务ID +} + +func (x *LinestoryDosubtaskResp) Reset() { + *x = LinestoryDosubtaskResp{} + if protoimpl.UnsafeEnabled { + mi := &file_linestory_linestory_msg_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *LinestoryDosubtaskResp) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LinestoryDosubtaskResp) ProtoMessage() {} + +func (x *LinestoryDosubtaskResp) ProtoReflect() protoreflect.Message { + mi := &file_linestory_linestory_msg_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LinestoryDosubtaskResp.ProtoReflect.Descriptor instead. +func (*LinestoryDosubtaskResp) Descriptor() ([]byte, []int) { + return file_linestory_linestory_msg_proto_rawDescGZIP(), []int{5} +} + +func (x *LinestoryDosubtaskResp) GetSubtaskId() int32 { + if x != nil { + return x.SubtaskId + } + return 0 +} + +var File_linestory_linestory_msg_proto protoreflect.FileDescriptor + +var file_linestory_linestory_msg_proto_rawDesc = []byte{ + 0x0a, 0x1d, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x6c, 0x69, 0x6e, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x5f, 0x6d, 0x73, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, + 0x27, 0x0a, 0x11, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x52, 0x65, 0x71, 0x12, 0x12, 0x0a, 0x04, 0x6a, 0x71, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x04, 0x6a, 0x71, 0x49, 0x64, 0x22, 0x42, 0x0a, 0x12, 0x4c, 0x69, 0x6e, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x53, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, + 0x0a, 0x04, 0x6a, 0x71, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x04, 0x6a, 0x71, + 0x49, 0x64, 0x12, 0x18, 0x0a, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x18, 0x02, 0x20, + 0x03, 0x28, 0x05, 0x52, 0x07, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x73, 0x22, 0x4a, 0x0a, 0x12, + 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x6f, 0x74, 0x61, 0x73, 0x6b, 0x52, + 0x65, 0x71, 0x12, 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, + 0x62, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, + 0x75, 0x62, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x6d, 0x0a, 0x13, 0x4c, 0x69, 0x6e, 0x65, + 0x73, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x6f, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, + 0x16, 0x0a, 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, + 0x06, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x74, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x75, 0x62, 0x74, + 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x65, 0x74, 0x54, 0x61, + 0x73, 0x6b, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x72, 0x65, 0x73, 0x65, + 0x74, 0x54, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x35, 0x0a, 0x15, 0x4c, 0x69, 0x6e, 0x65, 0x73, + 0x74, 0x6f, 0x72, 0x79, 0x44, 0x6f, 0x73, 0x75, 0x62, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x71, + 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x75, 0x62, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x22, 0x36, + 0x0a, 0x16, 0x4c, 0x69, 0x6e, 0x65, 0x73, 0x74, 0x6f, 0x72, 0x79, 0x44, 0x6f, 0x73, 0x75, 0x62, + 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x74, + 0x61, 0x73, 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x73, 0x75, 0x62, + 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_linestory_linestory_msg_proto_rawDescOnce sync.Once + file_linestory_linestory_msg_proto_rawDescData = file_linestory_linestory_msg_proto_rawDesc +) + +func file_linestory_linestory_msg_proto_rawDescGZIP() []byte { + file_linestory_linestory_msg_proto_rawDescOnce.Do(func() { + file_linestory_linestory_msg_proto_rawDescData = protoimpl.X.CompressGZIP(file_linestory_linestory_msg_proto_rawDescData) + }) + return file_linestory_linestory_msg_proto_rawDescData +} + +var file_linestory_linestory_msg_proto_msgTypes = make([]protoimpl.MessageInfo, 6) +var file_linestory_linestory_msg_proto_goTypes = []interface{}{ + (*LinestoryStartReq)(nil), // 0: LinestoryStartReq + (*LinestoryStartResp)(nil), // 1: LinestoryStartResp + (*LinestoryDotaskReq)(nil), // 2: LinestoryDotaskReq + (*LinestoryDotaskResp)(nil), // 3: LinestoryDotaskResp + (*LinestoryDosubtaskReq)(nil), // 4: LinestoryDosubtaskReq + (*LinestoryDosubtaskResp)(nil), // 5: LinestoryDosubtaskResp +} +var file_linestory_linestory_msg_proto_depIdxs = []int32{ + 0, // [0:0] is the sub-list for method output_type + 0, // [0:0] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_linestory_linestory_msg_proto_init() } +func file_linestory_linestory_msg_proto_init() { + if File_linestory_linestory_msg_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_linestory_linestory_msg_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinestoryStartReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_linestory_linestory_msg_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinestoryStartResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_linestory_linestory_msg_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinestoryDotaskReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_linestory_linestory_msg_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinestoryDotaskResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_linestory_linestory_msg_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinestoryDosubtaskReq); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_linestory_linestory_msg_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*LinestoryDosubtaskResp); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_linestory_linestory_msg_proto_rawDesc, + NumEnums: 0, + NumMessages: 6, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_linestory_linestory_msg_proto_goTypes, + DependencyIndexes: file_linestory_linestory_msg_proto_depIdxs, + MessageInfos: file_linestory_linestory_msg_proto_msgTypes, + }.Build() + File_linestory_linestory_msg_proto = out.File + file_linestory_linestory_msg_proto_rawDesc = nil + file_linestory_linestory_msg_proto_goTypes = nil + file_linestory_linestory_msg_proto_depIdxs = nil +} diff --git a/pb/rtask_db.pb.go b/pb/rtask_db.pb.go index 1572179bc..d729e69d4 100644 --- a/pb/rtask_db.pb.go +++ b/pb/rtask_db.pb.go @@ -152,7 +152,9 @@ type RtaskData struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Data map[int32]int32 `protobuf:"bytes,1,rep,name=data,proto3" json:"data" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"data"` // 当前任务值 + Data map[int32]int32 `protobuf:"bytes,1,rep,name=data,proto3" json:"data" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3" bson:"data"` // 当前任务值 + Rtype int32 `protobuf:"varint,2,opt,name=rtype,proto3" json:"rtype" bson:"rtype"` // 任务类型 + Timestamp int64 `protobuf:"varint,3,opt,name=timestamp,proto3" json:"timestamp"` //@go_tasg(`bson:"timestamp"`) 时间戳 } func (x *RtaskData) Reset() { @@ -194,17 +196,29 @@ func (x *RtaskData) GetData() map[int32]int32 { return nil } +func (x *RtaskData) GetRtype() int32 { + if x != nil { + return x.Rtype + } + return 0 +} + +func (x *RtaskData) GetTimestamp() int64 { + if x != nil { + return x.Timestamp + } + return 0 +} + // 玩家任务记录 type DBRtaskRecord struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID - Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID - RType int32 `protobuf:"varint,3,opt,name=rType,proto3" json:"rType" bson:"rType"` //任务类型 - Vals map[int32]*RtaskData `protobuf:"bytes,4,rep,name=vals,proto3" json:"vals" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" bson:"vals"` //任务记录值 - Timestamp int64 `protobuf:"varint,5,opt,name=timestamp,proto3" json:"timestamp"` //@go_tasg(`bson:"timestamp"`) 时间戳 + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id" bson:"_id"` //ID + Uid string `protobuf:"bytes,2,opt,name=uid,proto3" json:"uid" bson:"uid"` //用户ID + Vals map[int32]*RtaskData `protobuf:"bytes,3,rep,name=vals,proto3" json:"vals" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3" bson:"vals"` //任务记录值 } func (x *DBRtaskRecord) Reset() { @@ -253,13 +267,6 @@ func (x *DBRtaskRecord) GetUid() string { return "" } -func (x *DBRtaskRecord) GetRType() int32 { - if x != nil { - return x.RType - } - return 0 -} - func (x *DBRtaskRecord) GetVals() map[int32]*RtaskData { if x != nil { return x.Vals @@ -267,13 +274,6 @@ func (x *DBRtaskRecord) GetVals() map[int32]*RtaskData { return nil } -func (x *DBRtaskRecord) GetTimestamp() int64 { - if x != nil { - return x.Timestamp - } - return 0 -} - var File_rtask_rtask_db_proto protoreflect.FileDescriptor var file_rtask_rtask_db_proto_rawDesc = []byte{ @@ -295,29 +295,29 @@ var file_rtask_rtask_db_proto_rawDesc = []byte{ 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0a, 0x2e, 0x66, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, - 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x6e, 0x0a, 0x09, - 0x72, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, 0x74, - 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x44, - 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xa2, 0x01, 0x0a, + 0x09, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x12, 0x28, 0x0a, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x72, 0x74, 0x61, 0x73, 0x6b, + 0x44, 0x61, 0x74, 0x61, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x05, 0x52, 0x05, 0x72, 0x74, 0x79, 0x70, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x1a, 0x37, 0x0a, 0x09, 0x44, 0x61, 0x74, 0x61, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, + 0x01, 0x22, 0xa4, 0x01, 0x0a, 0x0d, 0x44, 0x42, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x03, 0x75, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x04, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, + 0x6f, 0x72, 0x64, 0x2e, 0x56, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, 0x76, + 0x61, 0x6c, 0x73, 0x1a, 0x43, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, - 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd8, 0x01, 0x0a, - 0x0d, 0x44, 0x42, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x75, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x69, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x72, 0x54, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x05, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2c, 0x0a, 0x04, 0x76, 0x61, 0x6c, 0x73, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x44, 0x42, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x52, 0x65, - 0x63, 0x6f, 0x72, 0x64, 0x2e, 0x56, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x04, - 0x76, 0x61, 0x6c, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, - 0x6d, 0x70, 0x1a, 0x43, 0x0a, 0x09, 0x56, 0x61, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x0a, 0x2e, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x79, 0x12, 0x20, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0a, 0x2e, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x44, 0x61, 0x74, 0x61, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/pb/rtask_msg.pb.go b/pb/rtask_msg.pb.go index 5b77e5658..e608224ae 100644 --- a/pb/rtask_msg.pb.go +++ b/pb/rtask_msg.pb.go @@ -512,6 +512,7 @@ type RtaskTestReq struct { RtaskType int32 `protobuf:"varint,1,opt,name=rtaskType,proto3" json:"rtaskType"` //任务类型 Params []int32 `protobuf:"varint,2,rep,packed,name=params,proto3" json:"params"` //参数 + CondiId int32 `protobuf:"varint,3,opt,name=condiId,proto3" json:"condiId"` //条件ID } func (x *RtaskTestReq) Reset() { @@ -560,6 +561,13 @@ func (x *RtaskTestReq) GetParams() []int32 { return nil } +func (x *RtaskTestReq) GetCondiId() int32 { + if x != nil { + return x.CondiId + } + return 0 +} + type RtaskTestResp struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -650,14 +658,16 @@ var file_rtask_rtask_msg_proto_rawDesc = []byte{ 0x6b, 0x49, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x49, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x62, 0x49, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x53, 0x75, 0x62, - 0x49, 0x64, 0x22, 0x44, 0x0a, 0x0c, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x73, 0x74, 0x52, + 0x49, 0x64, 0x22, 0x5e, 0x0a, 0x0c, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x71, 0x12, 0x1c, 0x0a, 0x09, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x05, - 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x22, 0x23, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73, - 0x6b, 0x54, 0x65, 0x73, 0x74, 0x52, 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x42, 0x06, 0x5a, - 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x52, 0x06, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6e, 0x64, + 0x69, 0x49, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x63, 0x6f, 0x6e, 0x64, 0x69, + 0x49, 0x64, 0x22, 0x23, 0x0a, 0x0d, 0x52, 0x74, 0x61, 0x73, 0x6b, 0x54, 0x65, 0x73, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x42, 0x06, 0x5a, 0x04, 0x2e, 0x3b, 0x70, 0x62, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/services/worker/main.go b/services/worker/main.go index 216c13948..6b744dcf8 100644 --- a/services/worker/main.go +++ b/services/worker/main.go @@ -13,6 +13,7 @@ import ( "go_dreamfactory/modules/hero" "go_dreamfactory/modules/hunting" "go_dreamfactory/modules/items" + "go_dreamfactory/modules/linestory" "go_dreamfactory/modules/mail" "go_dreamfactory/modules/mainline" "go_dreamfactory/modules/martialhall" @@ -76,6 +77,7 @@ func main() { moonfantasy.NewModule(), hunting.NewModule(), battle.NewModule(), + linestory.NewModule(), ) } diff --git a/sys/configure/structs/Game.LineStoryStageTaskData.go b/sys/configure/structs/Game.LineStoryStageTaskData.go index e3053387d..a5897270e 100644 --- a/sys/configure/structs/Game.LineStoryStageTaskData.go +++ b/sys/configure/structs/Game.LineStoryStageTaskData.go @@ -12,11 +12,10 @@ import "errors" type GameLineStoryStageTaskData struct { Id int32 - PosTId int32 + PreTId int32 NextTId int32 Cond []int32 Reward []*Gameatn - Jump string } const TypeId_GameLineStoryStageTaskData = 884678024 @@ -27,7 +26,7 @@ func (*GameLineStoryStageTaskData) GetTypeId() int32 { func (_v *GameLineStoryStageTaskData)Deserialize(_buf map[string]interface{}) (err error) { { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["posTId"].(float64); !_ok_ { err = errors.New("posTId error"); return }; _v.PosTId = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["preTId"].(float64); !_ok_ { err = errors.New("preTId error"); return }; _v.PreTId = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["nextTId"].(float64); !_ok_ { err = errors.New("nextTId error"); return }; _v.NextTId = int32(_tempNum_) } { var _arr_ []interface{} @@ -57,7 +56,6 @@ func (_v *GameLineStoryStageTaskData)Deserialize(_buf map[string]interface{}) (e } } - { var _ok_ bool; if _v.Jump, _ok_ = _buf["jump"].(string); !_ok_ { err = errors.New("jump error"); return } } return } diff --git a/sys/configure/structs/Game.LineStoryTaskData.go b/sys/configure/structs/Game.LineStoryTaskData.go index 976fa566c..1076da9f9 100644 --- a/sys/configure/structs/Game.LineStoryTaskData.go +++ b/sys/configure/structs/Game.LineStoryTaskData.go @@ -17,6 +17,7 @@ type GameLineStoryTaskData struct { Reward []*Gameatn Finish int32 Ending int32 + Resetto int32 } const TypeId_GameLineStoryTaskData = -2080476076 @@ -58,6 +59,7 @@ func (_v *GameLineStoryTaskData)Deserialize(_buf map[string]interface{}) (err er { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["finish"].(float64); !_ok_ { err = errors.New("finish error"); return }; _v.Finish = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["ending"].(float64); !_ok_ { err = errors.New("ending error"); return }; _v.Ending = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["resetto"].(float64); !_ok_ { err = errors.New("resetto error"); return }; _v.Resetto = int32(_tempNum_) } return } diff --git a/sys/configure/structs/Game.VikingBossSkill.go b/sys/configure/structs/Game.VikingBossSkill.go new file mode 100644 index 000000000..fc41f99ff --- /dev/null +++ b/sys/configure/structs/Game.VikingBossSkill.go @@ -0,0 +1,42 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +type GameVikingBossSkill struct { + _dataMap map[int32]*GameVikingBossSkillData + _dataList []*GameVikingBossSkillData +} + +func NewGameVikingBossSkill(_buf []map[string]interface{}) (*GameVikingBossSkill, error) { + _dataList := make([]*GameVikingBossSkillData, 0, len(_buf)) + dataMap := make(map[int32]*GameVikingBossSkillData) + for _, _ele_ := range _buf { + if _v, err2 := DeserializeGameVikingBossSkillData(_ele_); err2 != nil { + return nil, err2 + } else { + _dataList = append(_dataList, _v) + dataMap[_v.Type] = _v + } + } + return &GameVikingBossSkill{_dataList:_dataList, _dataMap:dataMap}, nil +} + +func (table *GameVikingBossSkill) GetDataMap() map[int32]*GameVikingBossSkillData { + return table._dataMap +} + +func (table *GameVikingBossSkill) GetDataList() []*GameVikingBossSkillData { + return table._dataList +} + +func (table *GameVikingBossSkill) Get(key int32) *GameVikingBossSkillData { + return table._dataMap[key] +} + + diff --git a/sys/configure/structs/Game.VikingBossSkillData.go b/sys/configure/structs/Game.VikingBossSkillData.go new file mode 100644 index 000000000..3b91b0cc1 --- /dev/null +++ b/sys/configure/structs/Game.VikingBossSkillData.go @@ -0,0 +1,56 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + +package cfg + +import "errors" + +type GameVikingBossSkillData struct { + Type int32 + Name string + Introduce string + Icon string + Guardskill []int32 +} + +const TypeId_GameVikingBossSkillData = -1331434488 + +func (*GameVikingBossSkillData) GetTypeId() int32 { + return -1331434488 +} + +func (_v *GameVikingBossSkillData)Deserialize(_buf map[string]interface{}) (err error) { + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) } + {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } + {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["introduce"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Introduce error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Introduce, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } + { var _ok_ bool; if _v.Icon, _ok_ = _buf["icon"].(string); !_ok_ { err = errors.New("icon error"); return } } + { + var _arr_ []interface{} + var _ok_ bool + if _arr_, _ok_ = _buf["guardskill"].([]interface{}); !_ok_ { err = errors.New("guardskill error"); return } + + _v.Guardskill = make([]int32, 0, len(_arr_)) + + for _, _e_ := range _arr_ { + var _list_v_ int32 + { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } + _v.Guardskill = append(_v.Guardskill, _list_v_) + } + } + + return +} + +func DeserializeGameVikingBossSkillData(_buf map[string]interface{}) (*GameVikingBossSkillData, error) { + v := &GameVikingBossSkillData{} + if err := v.Deserialize(_buf); err == nil { + return v, nil + } else { + return nil, err + } +} diff --git a/sys/configure/structs/Tables.go b/sys/configure/structs/Tables.go index 749f010ff..6f46c173b 100644 --- a/sys/configure/structs/Tables.go +++ b/sys/configure/structs/Tables.go @@ -58,7 +58,6 @@ type Tables struct { Facemod *GameFacemod Msgdistrib *GameMsgdistrib Opencond *GameOpencond - Stroy *GameStroy Pagoda *GamePagoda PagodaTaskReward *GamePagodaTaskReward PagodaSeasonReward *GamePagodaSeasonReward @@ -87,6 +86,7 @@ type Tables struct { LineStoryChapter *GameLineStoryChapter LineStoryTask *GameLineStoryTask LineStoryStageTask *GameLineStoryStageTask + VikingBossSkill *GameVikingBossSkill } func NewTables(loader JsonLoader) (*Tables, error) { @@ -376,12 +376,6 @@ func NewTables(loader JsonLoader) (*Tables, error) { if tables.Opencond, err = NewGameOpencond(buf) ; err != nil { return nil, err } - if buf, err = loader("game_stroy") ; err != nil { - return nil, err - } - if tables.Stroy, err = NewGameStroy(buf) ; err != nil { - return nil, err - } if buf, err = loader("game_pagoda") ; err != nil { return nil, err } @@ -550,5 +544,11 @@ func NewTables(loader JsonLoader) (*Tables, error) { if tables.LineStoryStageTask, err = NewGameLineStoryStageTask(buf) ; err != nil { return nil, err } + if buf, err = loader("game_vikingbossskill") ; err != nil { + return nil, err + } + if tables.VikingBossSkill, err = NewGameVikingBossSkill(buf) ; err != nil { + return nil, err + } return tables, nil } diff --git a/sys/configure/structs/game.monsterData.go b/sys/configure/structs/game.monsterData.go index 8b7270be2..71c1b4138 100644 --- a/sys/configure/structs/game.monsterData.go +++ b/sys/configure/structs/game.monsterData.go @@ -15,7 +15,8 @@ type GameMonsterData struct { HeroId string Name string Star int32 - Equip []int32 + Equip2 int32 + Equip4 int32 } const TypeId_GameMonsterData = 31965864 @@ -29,20 +30,8 @@ func (_v *GameMonsterData)Deserialize(_buf map[string]interface{}) (err error) { { var _ok_ bool; if _v.HeroId, _ok_ = _buf["hero_id"].(string); !_ok_ { err = errors.New("hero_id error"); return } } {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["star"].(float64); !_ok_ { err = errors.New("star error"); return }; _v.Star = int32(_tempNum_) } - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["equip"].([]interface{}); !_ok_ { err = errors.New("equip error"); return } - - _v.Equip = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.Equip = append(_v.Equip, _list_v_) - } - } - + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["equip2"].(float64); !_ok_ { err = errors.New("equip2 error"); return }; _v.Equip2 = int32(_tempNum_) } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["equip4"].(float64); !_ok_ { err = errors.New("equip4 error"); return }; _v.Equip4 = int32(_tempNum_) } return } diff --git a/sys/configure/structs/game.opencondData.go b/sys/configure/structs/game.opencondData.go index e7fa7b104..3d6a2a42b 100644 --- a/sys/configure/structs/game.opencondData.go +++ b/sys/configure/structs/game.opencondData.go @@ -13,7 +13,7 @@ import "errors" type GameOpencondData struct { Id string Name string - Main string + Main int32 Optional string Wkqbx int32 Kqbx int32 @@ -31,7 +31,7 @@ func (*GameOpencondData) GetTypeId() int32 { func (_v *GameOpencondData)Deserialize(_buf map[string]interface{}) (err error) { { var _ok_ bool; if _v.Id, _ok_ = _buf["id"].(string); !_ok_ { err = errors.New("id error"); return } } {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } - { var _ok_ bool; if _v.Main, _ok_ = _buf["main"].(string); !_ok_ { err = errors.New("main error"); return } } + { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["main"].(float64); !_ok_ { err = errors.New("main error"); return }; _v.Main = int32(_tempNum_) } { var _ok_ bool; if _v.Optional, _ok_ = _buf["optional"].(string); !_ok_ { err = errors.New("optional error"); return } } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["wkqbx"].(float64); !_ok_ { err = errors.New("wkqbx error"); return }; _v.Wkqbx = int32(_tempNum_) } { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["kqbx"].(float64); !_ok_ { err = errors.New("kqbx error"); return }; _v.Kqbx = int32(_tempNum_) } diff --git a/sys/configure/structs/game.skill.go b/sys/configure/structs/game.skill.go deleted file mode 100644 index b6a31dbda..000000000 --- a/sys/configure/structs/game.skill.go +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -type GameSkill struct { - _dataMap map[int32]*GameSkillData - _dataList []*GameSkillData -} - -func NewGameSkill(_buf []map[string]interface{}) (*GameSkill, error) { - _dataList := make([]*GameSkillData, 0, len(_buf)) - dataMap := make(map[int32]*GameSkillData) - for _, _ele_ := range _buf { - if _v, err2 := DeserializeGameSkillData(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.Id] = _v - } - } - return &GameSkill{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *GameSkill) GetDataMap() map[int32]*GameSkillData { - return table._dataMap -} - -func (table *GameSkill) GetDataList() []*GameSkillData { - return table._dataList -} - -func (table *GameSkill) Get(key int32) *GameSkillData { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/game.skillData.go b/sys/configure/structs/game.skillData.go deleted file mode 100644 index 9319fe124..000000000 --- a/sys/configure/structs/game.skillData.go +++ /dev/null @@ -1,107 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" - -type GameSkillData struct { - Id int32 - Name string - Ico string - Act string - Type int32 - MaxLV int32 - CD []int32 - Target int32 - ChildSkill []*GameChildSkills - Desc []string - Buffid []int32 -} - -const TypeId_GameSkillData = -598580577 - -func (*GameSkillData) GetTypeId() int32 { - return -598580577 -} - -func (_v *GameSkillData)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Id"].(float64); !_ok_ { err = errors.New("Id error"); return }; _v.Id = int32(_tempNum_) } - {var _ok_ bool; var __json_text__ map[string]interface{}; if __json_text__, _ok_ = _buf["Name"].(map[string]interface{}) ; !_ok_ { err = errors.New("_v.Name error"); return }; { var _ok_ bool; if _, _ok_ = __json_text__["key"].(string); !_ok_ { err = errors.New("key error"); return } }; { var _ok_ bool; if _v.Name, _ok_ = __json_text__["text"].(string); !_ok_ { err = errors.New("text error"); return } } } - { var _ok_ bool; if _v.Ico, _ok_ = _buf["ico"].(string); !_ok_ { err = errors.New("ico error"); return } } - { var _ok_ bool; if _v.Act, _ok_ = _buf["act"].(string); !_ok_ { err = errors.New("act error"); return } } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Type"].(float64); !_ok_ { err = errors.New("Type error"); return }; _v.Type = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["MaxLV"].(float64); !_ok_ { err = errors.New("MaxLV error"); return }; _v.MaxLV = int32(_tempNum_) } - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["CD"].([]interface{}); !_ok_ { err = errors.New("CD error"); return } - - _v.CD = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.CD = append(_v.CD, _list_v_) - } - } - - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["Target"].(float64); !_ok_ { err = errors.New("Target error"); return }; _v.Target = int32(_tempNum_) } - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["ChildSkill"].([]interface{}); !_ok_ { err = errors.New("ChildSkill error"); return } - - _v.ChildSkill = make([]*GameChildSkills, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ *GameChildSkills - { var _ok_ bool; var _x_ map[string]interface{}; if _x_, _ok_ = _e_.(map[string]interface{}); !_ok_ { err = errors.New("_list_v_ error"); return }; if _list_v_, err = DeserializeGameChildSkills(_x_); err != nil { return } } - _v.ChildSkill = append(_v.ChildSkill, _list_v_) - } - } - - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["Desc"].([]interface{}); !_ok_ { err = errors.New("Desc error"); return } - - _v.Desc = make([]string, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ string - { if _list_v_, _ok_ = _e_.(string); !_ok_ { err = errors.New("_list_v_ error"); return } } - _v.Desc = append(_v.Desc, _list_v_) - } - } - - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["buffid"].([]interface{}); !_ok_ { err = errors.New("buffid error"); return } - - _v.Buffid = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.Buffid = append(_v.Buffid, _list_v_) - } - } - - return -} - -func DeserializeGameSkillData(_buf map[string]interface{}) (*GameSkillData, error) { - v := &GameSkillData{} - if err := v.Deserialize(_buf); err == nil { - return v, nil - } else { - return nil, err - } -} diff --git a/sys/configure/structs/game.stroy.go b/sys/configure/structs/game.stroy.go deleted file mode 100644 index a6fa0afff..000000000 --- a/sys/configure/structs/game.stroy.go +++ /dev/null @@ -1,42 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -type GameStroy struct { - _dataMap map[int32]*GameStroyData - _dataList []*GameStroyData -} - -func NewGameStroy(_buf []map[string]interface{}) (*GameStroy, error) { - _dataList := make([]*GameStroyData, 0, len(_buf)) - dataMap := make(map[int32]*GameStroyData) - for _, _ele_ := range _buf { - if _v, err2 := DeserializeGameStroyData(_ele_); err2 != nil { - return nil, err2 - } else { - _dataList = append(_dataList, _v) - dataMap[_v.Id] = _v - } - } - return &GameStroy{_dataList:_dataList, _dataMap:dataMap}, nil -} - -func (table *GameStroy) GetDataMap() map[int32]*GameStroyData { - return table._dataMap -} - -func (table *GameStroy) GetDataList() []*GameStroyData { - return table._dataList -} - -func (table *GameStroy) Get(key int32) *GameStroyData { - return table._dataMap[key] -} - - diff --git a/sys/configure/structs/game.stroyData.go b/sys/configure/structs/game.stroyData.go deleted file mode 100644 index 0667c7489..000000000 --- a/sys/configure/structs/game.stroyData.go +++ /dev/null @@ -1,122 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -package cfg - -import "errors" -import "bright/serialization" - -type GameStroyData struct { - Id int32 - Groupid int32 - Before int32 - Next int32 - Type int32 - Bg string - Place int32 - Speak string - Listen string - Emoji string - Des string - Modelstatetarget string - Modelstate int32 - Modelaction string - State string - Chose []int32 - Turn int32 - Show int32 - Move string - Action string - Sound string - Position serialization.Vector3 - Revolve serialization.Vector3 - Size serialization.Vector3 - Perf string - Cg string - Skip bool -} - -const TypeId_GameStroyData = 1697302313 - -func (*GameStroyData) GetTypeId() int32 { - return 1697302313 -} - -func (_v *GameStroyData)Deserialize(_buf map[string]interface{}) (err error) { - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["id"].(float64); !_ok_ { err = errors.New("id error"); return }; _v.Id = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["groupid"].(float64); !_ok_ { err = errors.New("groupid error"); return }; _v.Groupid = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["before"].(float64); !_ok_ { err = errors.New("before error"); return }; _v.Before = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["next"].(float64); !_ok_ { err = errors.New("next error"); return }; _v.Next = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["type"].(float64); !_ok_ { err = errors.New("type error"); return }; _v.Type = int32(_tempNum_) } - { var _ok_ bool; if _v.Bg, _ok_ = _buf["bg"].(string); !_ok_ { err = errors.New("bg error"); return } } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["place"].(float64); !_ok_ { err = errors.New("place error"); return }; _v.Place = int32(_tempNum_) } - { var _ok_ bool; if _v.Speak, _ok_ = _buf["speak"].(string); !_ok_ { err = errors.New("speak error"); return } } - { var _ok_ bool; if _v.Listen, _ok_ = _buf["listen"].(string); !_ok_ { err = errors.New("listen error"); return } } - { var _ok_ bool; if _v.Emoji, _ok_ = _buf["emoji"].(string); !_ok_ { err = errors.New("emoji error"); return } } - { var _ok_ bool; if _v.Des, _ok_ = _buf["des"].(string); !_ok_ { err = errors.New("des error"); return } } - { var _ok_ bool; if _v.Modelstatetarget, _ok_ = _buf["modelstatetarget"].(string); !_ok_ { err = errors.New("modelstatetarget error"); return } } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["modelstate"].(float64); !_ok_ { err = errors.New("modelstate error"); return }; _v.Modelstate = int32(_tempNum_) } - { var _ok_ bool; if _v.Modelaction, _ok_ = _buf["modelaction"].(string); !_ok_ { err = errors.New("modelaction error"); return } } - { var _ok_ bool; if _v.State, _ok_ = _buf["state"].(string); !_ok_ { err = errors.New("state error"); return } } - { - var _arr_ []interface{} - var _ok_ bool - if _arr_, _ok_ = _buf["chose"].([]interface{}); !_ok_ { err = errors.New("chose error"); return } - - _v.Chose = make([]int32, 0, len(_arr_)) - - for _, _e_ := range _arr_ { - var _list_v_ int32 - { var _ok_ bool; var _x_ float64; if _x_, _ok_ = _e_.(float64); !_ok_ { err = errors.New("_list_v_ error"); return }; _list_v_ = int32(_x_) } - _v.Chose = append(_v.Chose, _list_v_) - } - } - - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["turn"].(float64); !_ok_ { err = errors.New("turn error"); return }; _v.Turn = int32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _buf["show"].(float64); !_ok_ { err = errors.New("show error"); return }; _v.Show = int32(_tempNum_) } - { var _ok_ bool; if _v.Move, _ok_ = _buf["move"].(string); !_ok_ { err = errors.New("move error"); return } } - { var _ok_ bool; if _v.Action, _ok_ = _buf["action"].(string); !_ok_ { err = errors.New("action error"); return } } - { var _ok_ bool; if _v.Sound, _ok_ = _buf["sound"].(string); !_ok_ { err = errors.New("sound error"); return } } - { var _ok_ bool; var _v_ map[string]interface{}; if _v_, _ok_ = _buf["position"].(map[string]interface{}); !_ok_ { err = errors.New("position error"); return } - var _x_, _y_, _z_ float32; - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["x"].(float64); !_ok_ { err = errors.New("x error"); return }; _x_ = float32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["y"].(float64); !_ok_ { err = errors.New("y error"); return }; _y_ = float32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["z"].(float64); !_ok_ { err = errors.New("z error"); return }; _z_ = float32(_tempNum_) } - _v.Position = serialization.NewVector3(_x_, _y_, _z_) - } - - { var _ok_ bool; var _v_ map[string]interface{}; if _v_, _ok_ = _buf["revolve"].(map[string]interface{}); !_ok_ { err = errors.New("revolve error"); return } - var _x_, _y_, _z_ float32; - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["x"].(float64); !_ok_ { err = errors.New("x error"); return }; _x_ = float32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["y"].(float64); !_ok_ { err = errors.New("y error"); return }; _y_ = float32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["z"].(float64); !_ok_ { err = errors.New("z error"); return }; _z_ = float32(_tempNum_) } - _v.Revolve = serialization.NewVector3(_x_, _y_, _z_) - } - - { var _ok_ bool; var _v_ map[string]interface{}; if _v_, _ok_ = _buf["size"].(map[string]interface{}); !_ok_ { err = errors.New("size error"); return } - var _x_, _y_, _z_ float32; - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["x"].(float64); !_ok_ { err = errors.New("x error"); return }; _x_ = float32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["y"].(float64); !_ok_ { err = errors.New("y error"); return }; _y_ = float32(_tempNum_) } - { var _ok_ bool; var _tempNum_ float64; if _tempNum_, _ok_ = _v_["z"].(float64); !_ok_ { err = errors.New("z error"); return }; _z_ = float32(_tempNum_) } - _v.Size = serialization.NewVector3(_x_, _y_, _z_) - } - - { var _ok_ bool; if _v.Perf, _ok_ = _buf["perf"].(string); !_ok_ { err = errors.New("perf error"); return } } - { var _ok_ bool; if _v.Cg, _ok_ = _buf["cg"].(string); !_ok_ { err = errors.New("cg error"); return } } - { var _ok_ bool; if _v.Skip, _ok_ = _buf["skip"].(bool); !_ok_ { err = errors.New("skip error"); return } } - return -} - -func DeserializeGameStroyData(_buf map[string]interface{}) (*GameStroyData, error) { - v := &GameStroyData{} - if err := v.Deserialize(_buf); err == nil { - return v, nil - } else { - return nil, err - } -} diff --git a/utils/time.go b/utils/time.go index 05e69b2b5..4bd35ccf5 100644 --- a/utils/time.go +++ b/utils/time.go @@ -28,3 +28,9 @@ func GetZeroTime(curTime int64) int64 { return startTime.Unix() + 86400 //3600*24 } + +func IsYestoday(timestamp int64) bool { + tt := time.Unix(timestamp, 0) + yesTime := time.Now().AddDate(0, 0, -1) + return tt.Year() == yesTime.Year() && tt.Month() == yesTime.Month() && tt.Day() == yesTime.Day() +} diff --git a/utils/utils_test.go b/utils/utils_test.go index cca736546..62b591e8f 100644 --- a/utils/utils_test.go +++ b/utils/utils_test.go @@ -5,6 +5,8 @@ import ( "go_dreamfactory/utils" "testing" "time" + + . "github.com/smartystreets/goconvey/convey" ) func TestIsToday(t *testing.T) { @@ -13,6 +15,14 @@ func TestIsToday(t *testing.T) { fmt.Println(time.Now().Before(tt)) } +func TestIsYestoday(t *testing.T) { + Convey("昨天", t, func() { + b := utils.IsYestoday(1661912369) + So(b, ShouldEqual, true) + }) + +} + func TestSubTime(t *testing.T) { fmt.Println(utils.IsAfterWeek(1657172915)) }