|
|
- 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
|