StarMapModel = StarMapModel or BaseClass(BaseModel)
|
|
|
|
StarMapModel.REQUEST_STAR_MAP_DATA = "REQUEST_STAR_MAP_DATA" -- 请求星图信息
|
|
StarMapModel.UPDATE_STAR_MAP_DATA = "UPDATE_STAR_MAP_DATA" -- 更新星图信息
|
|
StarMapModel.LIGHT_STAR_POINT = "LIGHT_STAR_POINT" -- 点亮星点
|
|
StarMapModel.LIGHT_STAR_POINT_SUCCESS = "LIGHT_STAR_POINT_SUCCESS" -- 成功点亮星点
|
|
StarMapModel.CLICK_POINT_ITEM = "CLICK_POINT_ITEM" -- 点击星点
|
|
StarMapModel.OPEN_STAGE_VIEW = "OPEN_STAGE_VIEW" -- 打开阶段目标
|
|
StarMapModel.UPDATE_RED_POINT = "UPDATE_RED_POINT" -- 星图红点
|
|
|
|
StarMapModel.STAR_POWER_ID = 36200001 -- 星力物品id
|
|
|
|
function StarMapModel:__init()
|
|
StarMapModel.Instance = self
|
|
self.starMap_data = nil
|
|
|
|
end
|
|
|
|
function StarMapModel:getInstance()
|
|
if StarMapModel.Instance == nil then
|
|
StarMapModel.New()
|
|
end
|
|
return StarMapModel.Instance
|
|
end
|
|
|
|
-- 获取星点信息
|
|
function StarMapModel:GetStarMapData(id)
|
|
id = id > 0 and id or 1
|
|
local cfg = Config.Starmap
|
|
if cfg == nil or cfg[id] == nil then return end
|
|
|
|
-- 当为该阶的最后一级时,显示下一阶的星点
|
|
if cfg[id+1] ~= nil and cfg[id+1].class_id ~= cfg[id].class_id then
|
|
id = id +1
|
|
end
|
|
return cfg[id]
|
|
end
|
|
|
|
function StarMapModel:GetStarPointCosume(id)
|
|
local cfg = Config.Starmap[id]
|
|
if cfg == nil then return end
|
|
return cfg.consume
|
|
end
|
|
|
|
-- 获得该阶段的星点列表
|
|
function StarMapModel:GetStarPointList(id)
|
|
local cfg = Config.Starmap
|
|
if cfg == nil or cfg[id] == nil then return end
|
|
|
|
-- 当为该阶的最后一级时,显示下一阶的星点
|
|
if cfg[id+1] ~= nil and cfg[id+1].class_id ~= cfg[id].class_id then
|
|
id = id +1
|
|
end
|
|
|
|
local stage = cfg[id].class_id
|
|
local cons = cfg[id].cons_id
|
|
local point_list = {}
|
|
for k,v in pairs(cfg) do
|
|
if v.cons_id== cons and v.class_id == stage and v.point_id > 0 then
|
|
table.insert(point_list,v)
|
|
end
|
|
end
|
|
table.sort(point_list,function(a,b) return a.star_map_id < b.star_map_id end)
|
|
return point_list
|
|
end
|
|
|
|
-- 获得星点的属性
|
|
function StarMapModel:GetStarPointProp(id)
|
|
local cfg = Config.Starmap[id]
|
|
if cfg == nil then return end
|
|
local list = {}
|
|
local attr_list = ErlangParser:GetInstance():Parse(cfg.attr)
|
|
local last_cfg = Config.Starmap[id-1]
|
|
if last_cfg == nil or ErlangParser:GetInstance():Parse(last_cfg.attr) == {} then
|
|
list = attr_list
|
|
else
|
|
local last_attr = ErlangParser:GetInstance():Parse(last_cfg.attr)
|
|
for i = 1,#attr_list do
|
|
if attr_list[i][2] - last_attr[i][2] > 0 then
|
|
table.insert(list,{attr_list[i][1],attr_list[i][2] - last_attr[i][2]})
|
|
end
|
|
end
|
|
end
|
|
return list
|
|
end
|
|
|
|
-- 获得星点的星座名称阶段级数(for stagetip)
|
|
function StarMapModel:GetPointId(id)
|
|
local cfg = Config.Starmap[id]
|
|
if cfg == nil then return end
|
|
return Trim(cfg.cons_name),cfg.class_id,cfg.point_id
|
|
end
|
|
|
|
-- 获取战力
|
|
function StarMapModel:GetCombat(prop_list)
|
|
local list = {}
|
|
for i = 1,#prop_list do
|
|
list[i] = {[1] = prop_list[i].attr_type,[2] = prop_list[i].attr_value}
|
|
end
|
|
return GetFighting(list)
|
|
end
|
|
|
|
-- 获得当前额外属性
|
|
function StarMapModel:GetNowExtraAttr2(id)
|
|
local cfg = Config.Starmap
|
|
local now_list = cfg[id].extra_attr
|
|
local final_id = id
|
|
for i = id-1,1,-1 do
|
|
if cfg[i].extra_attr ~= now_list then
|
|
break
|
|
end
|
|
final_id = i
|
|
end
|
|
local attr_list = ErlangParser:GetInstance():Parse(cfg[final_id].extra_attr)
|
|
return attr_list,final_id
|
|
|
|
end
|
|
|
|
-- 获得下一额外属性
|
|
function StarMapModel:GetNextExtraAttr2(id)
|
|
local cfg = Config.Starmap
|
|
local now_list = cfg[id].extra_attr
|
|
local final_id = id
|
|
for i = id+1,#cfg do
|
|
final_id = i
|
|
if cfg[i].extra_attr ~= now_list then
|
|
break
|
|
end
|
|
end
|
|
local attr_list = ErlangParser:GetInstance():Parse(cfg[final_id].extra_attr)
|
|
return attr_list,final_id
|
|
end
|
|
|
|
-- 获得当前额外属性
|
|
function StarMapModel:GetNowExtraAttr(id)
|
|
local cfg = Config.Starmap
|
|
local attr_list = {}
|
|
for i = id,1,-1 do
|
|
attr_list = ErlangParser:GetInstance():Parse(cfg[i].extra_attr)
|
|
if #attr_list > 0 then
|
|
return attr_list,i
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 获得下级额外属性
|
|
function StarMapModel:GetNextExtraAttr(id)
|
|
local cfg = Config.Starmap
|
|
local attr_list = {}
|
|
for i = id+1,#cfg do
|
|
attr_list = ErlangParser:GetInstance():Parse(cfg[i].extra_attr)
|
|
if #attr_list > 0 then
|
|
return attr_list,i
|
|
end
|
|
end
|
|
end
|
|
|
|
-- 获取星点生成位置
|
|
function StarMapModel:GetPointPos(id)
|
|
local cfg = Config.ConfigStarPoint.PointPos[id]
|
|
if cfg == nil then return end
|
|
return cfg
|
|
end
|
|
|
|
------- 协议相关 ---------------
|
|
function StarMapModel:UpdateStarMapData(data)
|
|
if data == nil then return end
|
|
self.starMap_data = data
|
|
self:Fire(StarMapModel.UPDATE_STAR_MAP_DATA,data)
|
|
self:Fire(StarMapModel.UPDATE_RED_POINT)
|
|
end
|
|
|
|
function StarMapModel:UpdateStarPower(data)
|
|
if data == nil or self.starMap_data == nil or data.currency_id ~= StarMapModel.STAR_POWER_ID then return end
|
|
self.starMap_data.star_power = data.num
|
|
self:Fire(StarMapModel.UPDATE_RED_POINT)
|
|
end
|
|
|
|
function StarMapModel:HaveRedPoint()
|
|
if self.starMap_data == nil then return false end
|
|
local cfg = Config.Starmap[self.starMap_data.star_map_id+1]
|
|
if cfg == nil then return false end
|
|
if self.starMap_data.star_power >= cfg.consume then return true end
|
|
return false
|
|
end
|