源战役客户端
Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.
 
 
 
 
 

185 wiersze
5.1 KiB

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