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