autoImport("EquipInfo") autoImport("SuitInfo") autoImport("AdventureAppendData") AdventureItemData = class("AdventureItemData") function AdventureItemData:ctor(serverData,type) --動態唯一標識id self.type = type self.cardSlotNum = 0 self.num = 0 self.tabData = nil self.staticId = serverData.id self:updateManualData(serverData) self:initStaticData(self.staticId,serverData) end function AdventureItemData:test( ) -- body if(#self.setAppendDatas>0)then self.status = SceneManual_pb.EMANUALSTATUS_UNLOCK_STEP for i=1,#self.setAppendDatas do local single = self.setAppendDatas [i] single.finish = true single.rewardget = false end end end function AdventureItemData:GetFoodSData( ) end function AdventureItemData:IsLimitUse( ) return false end function AdventureItemData:isCollectionGroup( ) if(self.type == nil)then return true end end function AdventureItemData:canBeClick( ) -- body local bRet = self.status == SceneManual_pb.EMANUALSTATUS_UNLOCK_CLIENT local cps = self:getCompleteNoRewardAppend() if(cps and #cps>0)then bRet = true end return bRet end function AdventureItemData:updateManualData( serverData ) -- body self.status = serverData.status self.attrUnlock = serverData.unlock self.store = serverData.store if(serverData.data_params and self.type == SceneManual_pb.EMANUALTYPE_SCENERY)then self:updateSceneData(serverData.data_params) end if(serverData.quests)then self:updateAppendData(serverData.quests) end local item = serverData.item if(item and self.equipInfo)then self.equipInfo:SetStrengthRefine(item.equip.strengthlv,item.equip.refinelv) end end function AdventureItemData:updateSceneData( params ) -- body self.anglez = params[1] or 0 self.anglez = tonumber(self.anglez) self.time = params[2] or 0 self.time = tonumber(self.time) self.roleId = params[3] if not self.oldRoleId then self.oldRoleId = self.roleId end if(self.roleId)then self.roleId = tonumber(self.roleId) end if(self.oldRoleId)then self.oldRoleId = tonumber(self.oldRoleId) end MySceneryPictureManager.Instance():log("updateSceneData:",self.staticId,tostring(self.roleId),tostring(self.time),self.anglez,self.oldRoleId) end function AdventureItemData:updateAppendData( appends ) -- body self.setAppendDatas = self.setAppendDatas or {} -- printRed("updateAppendData",#appends) for i=1,#appends do local single = appends[i] -- printRed(single.rewardget) -- printRed(single.process) -- printRed(single.finish) local appData = self:getAppendDataById(single.id) if(appData)then appData:updateData(single) else appData = AdventureAppendData.new(single) table.insert(self.setAppendDatas,appData) end end table.sort(self.setAppendDatas,function ( l,r ) -- body return l.staticId < r.staticId end) end function AdventureItemData:GetFoodSData( ) end function AdventureItemData:getAppendDataById( appendId ) -- body if(self.setAppendDatas)then for i=1,#self.setAppendDatas do local single = self.setAppendDatas[i] if(single.staticId == appendId)then return single end end end end function AdventureItemData:setIsSelected( isSelected ) -- body if(self.isSelected ~= isSelected)then self.isSelected = isSelected end end function AdventureItemData:initStaticData(staticId,serverData) self.staticId = staticId if(self.type == SceneManual_pb.EMANUALTYPE_NPC)then self.staticData = Table_Npc[staticId] elseif(self.type == SceneManual_pb.EMANUALTYPE_MONSTER or self.type == SceneManual_pb.EMANUALTYPE_MATE or self.type == SceneManual_pb.EMANUALTYPE_PET)then self.staticData = Table_Monster[staticId] -- printRed("initStaticData:self.status",self.status,self.staticData.NameZh) elseif(self.type == SceneManual_pb.EMANUALTYPE_MAP)then self.staticData = Table_Map[staticId] elseif(self.type == SceneManual_pb.EMANUALTYPE_ACHIEVE)then self.staticData = Table_Achievement[staticId] elseif(self.type == SceneManual_pb.EMANUALTYPE_SCENERY)then self.staticData = Table_Viewspot[staticId] -- printRed("AdventureItemData:ResetData(staticId)") -- printRed(staticId) else self.staticData = Table_Item[staticId] local equipData = Table_Equip[staticId] if(equipData~=nil) then self.equipInfo = EquipInfo.new(equipData) local item = serverData.item if(item)then -- helplog("item.equip.strengthlv",item.equip.strengthlv,item.equip.refinelv) self.equipInfo:SetStrengthRefine(item.equip.strengthlv,item.equip.refinelv) end else self.equipInfo = nil end self.cardInfo = Table_Card[staticId] -- init suit if(self.equipInfo)then local suitId = self.equipInfo.equipData.SuitID; local suitSData = Table_EquipSuit[suitId]; if(suitSData)then self.suitInfo = SuitInfo.new(suitId); end end self.monthCardInfo = Table_MonthCard[staticId] end if(self.staticData and self.staticData.AdventureValue and self.staticData.AdventureValue > 0)then self.AdventureValue = self.staticData.AdventureValue else self.AdventureValue = 0 end -- self.setAppendDatas = AdventureAppendData.getAppendData(self.type,self.staticId) end function AdventureItemData:CanEquip( ) return false end function AdventureItemData:getAdventureValue( ) -- body return self.AdventureValue end function AdventureItemData:GetName() if(self.staticData) then -- if(self.equipInfo and self.equipInfo.refinelv>0) then -- return "+"..self.equipInfo.refinelv..self.staticData.NameZh -- else if(self.type == SceneManual_pb.EMANUALTYPE_SCENERY)then return self.staticData.SpotName elseif(self.type == SceneManual_pb.EMANUALTYPE_CARD)then -- local str = self.staticData.NameZh -- str = string.gsub(str,"^"..ZhString.AdventureHomePage_CardName,"") return ZhString.AdventureHomePage_CardName end return self.staticData.NameZh end return "" end function AdventureItemData:IsEquip() return self.equipInfo~=nil end function AdventureItemData:IsFashion() if(self.staticData and self.staticData.Type)then return BagProxy.fashionType[self.staticData.Type]; end end function AdventureItemData:IsMount() return self.staticData.Type==90; end function AdventureItemData:IsNew() return self.isNew or false end function AdventureItemData:Clone() local item = ItemData.new(self.id,self.staticData and self.staticData.id or 0) if(item.equipInfo) then item.equipInfo:Clone(self.equipInfo) end return item end function AdventureItemData:getCompleteNoRewardAppend( ) -- body local list = {} if(self.setAppendDatas)then for i=1,#self.setAppendDatas do local single = self.setAppendDatas [i] -- printRed("single.finish",single.finish) if(single.finish and not single.rewardget)then table.insert(list,single) end end end return list end function AdventureItemData:getNoRewardAppend( ) -- body local list = {} if(self.setAppendDatas)then for i=1,#self.setAppendDatas do local single = self.setAppendDatas [i] if(not single.rewardget)then table.insert(list,single) end end end return list end function AdventureItemData:getAppendDatas( ) -- body return self.setAppendDatas end function AdventureItemData:getCatId( ) -- body return self.CatId end function AdventureItemData:setCatId( CatId ) -- body self.CatId = CatId end function AdventureItemData:IsValid( ) return AdventureItemData.CheckValid(self.staticData ) end function AdventureItemData.CheckValid( staticData ) if(not staticData )then return true end if(StringUtil.IsEmpty(staticData.ValidDate) and StringUtil.IsEmpty(staticData.TFValidDate))then return true end local validDate if(EnvChannel.IsReleaseBranch())then validDate = staticData.ValidDate elseif(EnvChannel.IsTFBranch())then validDate = staticData.TFValidDate end if(not StringUtil.IsEmpty(validDate) and ServerTime.CurServerTime())then local p ="(%d+)-(%d+)-(%d+) (%d+):(%d+):(%d+)" local year,month,day,hour,min,sec = validDate:match(p) local ddd = tonumber(os.date("%z", 0))/100 local offset = (8 - ddd)*3600 local startDate = os.time({day=day,month=month,year=year,hour=hour,min=min,sec=sec}) startDate = startDate - offset local server = ServerTime.CurServerTime()/1000 if(server