85 lines
2.9 KiB
Lua
85 lines
2.9 KiB
Lua
------------------------------------------------
|
||
--作者:xihan
|
||
--日期:2019-05-17
|
||
--文件:AchievementItem.lua
|
||
--模块:AchievementItem
|
||
--描述:成就Info
|
||
------------------------------------------------
|
||
local L_Tonumber = tonumber;
|
||
local L_SplitStr = Utils.SplitStr;
|
||
local L_DeepCopy = Utils.DeepCopy;
|
||
|
||
--成就Info
|
||
local AchievementInfo = {
|
||
--配置Id
|
||
Id = nil,
|
||
--成就[配置表的数据,严禁修改]
|
||
DataAchievementItem = nil,
|
||
--成就类型[配置表的数据,严禁修改]
|
||
DataAchievementTypeItem = nil,
|
||
--功能Id
|
||
FunctionId = nil,
|
||
--需要达成的数量
|
||
Count = nil,
|
||
--当前状态(AchievementState枚举类型)
|
||
State = nil,
|
||
--奖励ItemId
|
||
AwardItemId = nil,
|
||
--奖励Item数量
|
||
AwardItemCount = nil,
|
||
--奖励Item是否绑定
|
||
AwardItemBind = nil,
|
||
--进度
|
||
Progress = nil,
|
||
}
|
||
|
||
-- AchievementItem.__index = AchievementItem
|
||
local function InitData(self ,DataAchievementItem, DataAchievementTypeItem)
|
||
self.Id = DataAchievementItem.Id;
|
||
self.DataAchievementItem = DataAchievementItem;
|
||
self.DataAchievementTypeItem = DataAchievementTypeItem;
|
||
local _t = L_SplitStr(DataAchievementItem.Condition, "_");
|
||
self.FunctionId = L_Tonumber(_t[1]);
|
||
self.Count = L_Tonumber(_t[#_t]);
|
||
local _award = L_SplitStr(DataAchievementItem.Item, "_");
|
||
self.AwardItemId = L_Tonumber(_award[1]);
|
||
self.AwardItemCount = L_Tonumber(_award[2]);
|
||
self.AwardItemBind = L_Tonumber(_award[3]);
|
||
self.State = AchievementStateEnum.None;
|
||
end
|
||
|
||
function AchievementInfo:New(id)
|
||
-- local _data = setmetatable({},self)
|
||
local _data = L_DeepCopy(self)
|
||
local DataAchievement = DataConfig.DataAchievement;
|
||
local DataAchievementType = DataConfig.DataAchievementType;
|
||
local DataAchievementItem = DataAchievement[id]
|
||
InitData(_data, DataAchievementItem, DataAchievementType[DataAchievementItem.BigType])
|
||
return _data
|
||
end
|
||
|
||
function AchievementInfo:NewAll(DataTypeDic, DataIdDic)
|
||
local DataAchievementType = DataConfig.DataAchievementType;
|
||
DataConfig.DataAchievement:Foreach(function(_, v)
|
||
-- local _data = setmetatable({},self)
|
||
local _data = L_DeepCopy(self)
|
||
InitData(_data, v, DataAchievementType[v.BigType]);
|
||
if not DataTypeDic:ContainsKey(v.BigType) then
|
||
DataTypeDic:Add(v.BigType,Dictionary:New());
|
||
end
|
||
local _DataTypeDicBigType = DataTypeDic[v.BigType];
|
||
if not _DataTypeDicBigType:ContainsKey(_data.FunctionId) then
|
||
_DataTypeDicBigType:Add(_data.FunctionId, List:New());
|
||
end
|
||
_DataTypeDicBigType[_data.FunctionId]:Add(_data);
|
||
DataIdDic:Add(v.Id,_data);
|
||
end)
|
||
DataTypeDic:SortKey(function(a, b) return a < b end)
|
||
-- DataTypeDic:Foreach(function(_, v)
|
||
-- table.sort(v, function(a, b)
|
||
-- return a.Count < b.Count;
|
||
-- end)
|
||
-- end)
|
||
end
|
||
|
||
return AchievementInfo |