ro-table/Asstes/Resources/Script/FrameWork/Proxy/AdventureDataProxy.txt
2025-06-04 05:02:57 +08:00

2074 lines
55 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

AdventureDataProxy = class('AdventureDataProxy', pm.Proxy)
AdventureDataProxy.Instance = nil;
AdventureDataProxy.NAME = "AdventureDataProxy"
autoImport('AdventureBagData')
autoImport('AdventureCollectionGroupData')
autoImport("WholeQuestData")
autoImport("Table_ItemBeTransformedWay")
autoImport("Table_AdventureValue")
autoImport("Table_AdventureItem")
autoImport ("PersonalPictureManager")
autoImport ("MySceneryPictureManager")
AdventureDataProxy.Instance = nil;
AdventureDataProxy.InitBag = {
SceneManual_pb.EMANUALTYPE_FASHION,
SceneManual_pb.EMANUALTYPE_CARD,
SceneManual_pb.EMANUALTYPE_EQUIP,
SceneManual_pb.EMANUALTYPE_ITEM,
SceneManual_pb.EMANUALTYPE_MOUNT,
SceneManual_pb.EMANUALTYPE_MONSTER,
SceneManual_pb.EMANUALTYPE_NPC,
SceneManual_pb.EMANUALTYPE_MAP,
SceneManual_pb.EMANUALTYPE_ACHIEVE,
SceneManual_pb.EMANUALTYPE_SCENERY,
SceneManual_pb.EMANUALTYPE_COLLECTION,
SceneManual_pb.EMANUALTYPE_RESEARCH,
SceneManual_pb.EMANUALTYPE_HAIRSTYLE,
SceneManual_pb.EMANUALTYPE_PET,
SceneManual_pb.EMANUALTYPE_MATE,
}
AdventureDataProxy.NoServerSyncType = {
SceneManual_pb.EMANUALTYPE_EQUIP,
SceneManual_pb.EMANUALTYPE_HAIRSTYLE,
SceneManual_pb.EMANUALTYPE_ITEM,
}
AdventureDataProxy.DeathDrop = {
SceneManual_pb.EMANUALTYPE_CARD,
SceneManual_pb.EMANUALTYPE_FASHION,
SceneManual_pb.EMANUALTYPE_EQUIP,
SceneManual_pb.EMANUALTYPE_ITEM,
SceneManual_pb.EMANUALTYPE_MOUNT,
SceneManual_pb.EMANUALTYPE_COLLECTION,
}
AdventureDataProxy.FilterPropType = {
"AttrChange",
"AddBuff",
"BattleAttr",
"ChangeScale",
"ForceAttr",
"ImmuneStatus",
"ResistStatus",
"StatusChange",
"HSPChange"
}
AdventureDataProxy.FilterSkillType = {
"AffactSkill",
"DeepHide",
"AddSkillCD",
"BuffSpeedUp",
"DelSkillStatus",
"GetSkill",
"ReplaceSkill",
"UseSkill"
}
AdventureDataProxy.MonthCardTabId = 1052
local tempArrayData = {}
function AdventureDataProxy:ctor(proxyName, data)
self.proxyName = proxyName or AdventureDataProxy.NAME
if(AdventureDataProxy.Instance == nil) then
AdventureDataProxy.Instance = self
end
if data ~= nil then
self:setData(data)
end
self:initTableItemTypeAdventure()
self.bagMap = {}
self.NpcCount = 0
-- for k,v in pairs(Table_Npc) do
-- if(v.AdventureValue and v.AdventureValue >0)then
-- self.NpcCount = self.NpcCount +1
-- end
-- end
self.NpcCount = Table_AdventureValue["npc"].count
for k,v in pairs(AdventureDataProxy.InitBag) do
local bagData = AdventureBagData.new(nil,v)
self.bagMap[v] = bagData
end
self.finishGenThumbnail = true
self.tobeGenList = {}
self.collectionGroupDatas = {}
self.tempScenerys = {}
self.tempAlbumTime = 0
self:initBagData()
self.hasCountNpsDeathDrop = {}
self.hasCountNps = {}
self.hasCountMap = {}
self.hasCountMenu = {}
self.hasCountCollection = {}
self.adventurePropClassify = {}
self.fashionGroupData = {}
self.propTypeDatas = {}
self:initFashionGroupData()
-- self:Test()
end
local tempTable = {}
function AdventureDataProxy:initFashionGroupData( )
TableUtility.ArrayClear(self.fashionGroupData)
for k,v in pairs(Table_Equip) do
if(v.GroupID and not v.GroupID ~= k)then
local tb = self.fashionGroupData[v.GroupID] or {}
tb[#tb+1] = v
self.fashionGroupData[v.GroupID] = tb
end
end
for k,v in pairs(self.fashionGroupData) do
table.sort(v,function (l,r )
-- body
return l.id<r.id
end)
end
end
function AdventureDataProxy:initBagData( )
-- body
for i=1,#Table_AdventureItem do
local id = Table_AdventureItem[i]
tempTable.id = id
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
for i=1,#AdventureDataProxy.NoServerSyncType do
local type = AdventureDataProxy.NoServerSyncType[i]
local item = AdventureItemData.new(tempTable,type)
local bagData = self.bagMap[type]
local tab = bagData:getTabByItemAndType(item,type)
if(tab and tab.tab.id ~= AdventureDataProxy.MonthCardTabId)then
-- if(tab )then
-- helplog("initBagData:tabId:",tab.tab.id,item.staticData.NameZh)
bagData:AddItem(item,type)
break
end
end
end
-- for k,v in pairs(Table_Item) do
-- if(v.AdventureValue == -1)then
-- tempTable.id = v.id
-- tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
-- for i=1,#AdventureDataProxy.NoServerSyncType do
-- local type = AdventureDataProxy.NoServerSyncType[i]
-- local item = AdventureItemData.new(tempTable,type)
-- local bagData = self.bagMap[type]
-- local tab = bagData:getTabByItemAndType(item,type)
-- if(tab and tab.tab.id ~= AdventureDataProxy.MonthCardTabId)then
-- -- if(tab )then
-- -- helplog("initBagData:tabId:",tab.tab.id,item.staticData.NameZh)
-- bagData:AddItem(item,type)
-- break
-- end
-- end
-- end
-- end
for k,v in pairs(Table_MercenaryCat) do
if(v.AdventureValue == -1 and v.MonsterID)then
tempTable.id = v.MonsterID
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
local type = SceneManual_pb.EMANUALTYPE_MATE
local item = AdventureItemData.new(tempTable,type)
item:setCatId(v.id)
local bagData = self.bagMap[type]
local tab = bagData:getTabByItemAndType(item,type)
if(tab)then
bagData:AddItem(item,type)
end
end
end
for k,v in pairs(Table_Collection) do
local groupData = AdventureCollectionGroupData.new(k)
self.collectionGroupDatas[#self.collectionGroupDatas+1] = groupData
for i=1,#v.ItemId do
local single = v.ItemId[i]
local type = SceneManual_pb.EMANUALTYPE_COLLECTION
local bagData = self.bagMap[type]
local oldItem = bagData:GetItemByStaticID(single)
if(oldItem)then
oldItem:setCollectionGroupId(v.GroupID)
else
tempTable.id = single
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
local item = AdventureItemData.new(tempTable,type)
item:setCollectionGroupId(k)
local tab = bagData:getTabByItemAndType(item,type)
if(tab)then
bagData:AddItem(item,type)
groupData:addCollectionData(item)
end
end
end
end
local tb = GameConfig.Pet.cancel_special_effects or {}
for k,v in pairs(Table_Pet) do
if(TableUtility.ArrayFindIndex(tb,v.id) == 0)then
tempTable.id = v.id
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
local type = SceneManual_pb.EMANUALTYPE_PET
local item = AdventureItemData.new(tempTable,type)
local bagData = self.bagMap[type]
local tab = bagData:getTabByItemAndType(item,type)
if(tab)then
bagData:AddItem(item,type)
end
end
end
end
function AdventureDataProxy:initTableItemTypeAdventure()
self.categoryDatas = {}
-- local itemType = {unpack(Table_ItemType)}
-- local tableAdventure = {unpack(Table_ItemTypeAdventureLog)}
-- TableUtil.Print(tableAdventure)
self.categoryDatas[SceneManual_pb.EMANUALTYPE_HOMEPAGE] = {staticData = Table_ItemTypeAdventureLog[SceneManual_pb.EMANUALTYPE_HOMEPAGE]}
for k,v in pairs(Table_ItemTypeAdventureLog) do
-- printRed("log type:"..k)
-- print(v.type)
if(v.type)then
local categorys = self.categoryDatas[v.type] or { staticData = Table_ItemTypeAdventureLog[v.type] }
local childs = categorys.childs or {}
local child = childs[k] or {staticData = v }
local types = child.types or {}
for k1,v1 in pairs(Table_ItemType) do
-- printRed(k1,v1)
if(v1.AdventureLogGroup and v1.AdventureLogGroup == k)then
table.insert(types,v1.id)
end
end
child.types = types
childs[k] = child
categorys.childs = childs
self.categoryDatas[v.type] = categorys
end
if(v.Classify)then
local classifyData = Table_ItemTypeAdventureLog[v.Classify]
if(classifyData)then
local categorys = self.categoryDatas[classifyData.type] or { staticData = Table_ItemTypeAdventureLog[classifyData.type] }
local childs = categorys.childs or {}
local child = childs[classifyData.id] or {staticData = classifyData }
local classifys = child.classifys or {}
table.insert(classifys,v)
child.classifys = classifys
childs[classifyData.id] = child
categorys.childs = childs
self.categoryDatas[classifyData.type] = categorys
end
end
end
end
function AdventureDataProxy:GetCollectionGroup(groupId)
for i=1,#self.collectionGroupDatas do
local single = self.collectionGroupDatas[i]
if(single.staticId == groupId)then
return single
end
end
end
function AdventureDataProxy:GetAllCollectionGroups( )
-- body
return self.collectionGroupDatas
end
function AdventureDataProxy:GetAllUnlockCollectionGroups( )
-- body
local list = {}
for i=1,#self.collectionGroupDatas do
local single = self.collectionGroupDatas[i]
if(single:IsUnlock())then
list[#list +1] = single
end
end
return list
end
function AdventureDataProxy:GetCollectionsByGroup(groupId)
local groupData = self:GetCollectionGroup(groupId)
if(groupData)then
return groupData.collections
end
end
function AdventureDataProxy:CheckItemIsCollection(itemdata)
local bagData = self.bagMap[SceneManual_pb.EMANUALTYPE_COLLECTION];
if(bagData)then
local tab = bagData:getTabByItemAndType(itemdata, SceneManual_pb.EMANUALTYPE_COLLECTION)
if(tab~=nil)then
return true;
end
end
return false;
end
function AdventureDataProxy:NewMapAdd( mapId )
-- body
--TODO
-- self.hasCountMap[mapId] = true
if(self.hasCountMap[mapId])then
return
end
self.hasCountMap[mapId] = true
local mapData = Table_Map[mapId]
if(mapData)then
self:NewCollectionAdd(mapId)
local sceneName = mapData.NameEn
local sceneInfo = autoImport("Scene_"..sceneName)
local scenePartInfo = nil
if sceneInfo and sceneInfo.PVE then
scenePartInfo = sceneInfo.PVE
if scenePartInfo and scenePartInfo.nps and #scenePartInfo.nps>0 then
local nps = scenePartInfo.nps
for i=1,#nps do
local npcId = nps[i].ID
-- helplog("NewMapAdd:",mapId,npcId)
self:NewMonsterAdd(npcId)
end
end
end
for k,v in pairs(Table_Boss) do
for i=1,#v.Map do
local single = v.Map[i]
if(mapId == single)then
self:NewMonsterAdd(k)
end
end
end
end
end
function AdventureDataProxy:NewMonsterAdd( monsterId )
if(self.hasCountNps[monsterId])then
return
end
self.hasCountNps[monsterId] = true
local type
local data
if(NpcMonsterUtility.IsMonsterByID(monsterId))then
type = SceneManual_pb.EMANUALTYPE_MONSTER
self:NewMonsterDeathDropAdd(monsterId)
data = Table_Monster[monsterId]
elseif(NpcMonsterUtility.IsNpcByID(monsterId))then
type = SceneManual_pb.EMANUALTYPE_NPC
data = Table_Npc[monsterId]
end
if(type and data and (data.AdventureValue and data.AdventureValue ~= 0))then
tempTable.id = monsterId
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
local item = AdventureItemData.new(tempTable,type)
local bagData = self.bagMap[type]
local tab = bagData:getTabByItemAndType(item,type)
local oldItem = bagData:GetItemByStaticID(monsterId)
if(tab and not oldItem)then
bagData:AddItem(item,type)
end
end
end
function AdventureDataProxy:NewMonsterDeathDropAdd( monsterId )
-- body
if(self.hasCountNpsDeathDrop[monsterId])then
return
end
self.hasCountNpsDeathDrop[monsterId] = true
local items = ItemUtil.GetDeath_Drops(monsterId)
if(items and #items>0)then
for i=1,#items do
local itemData = items[i].itemData
if(itemData.AdventureValue and itemData.AdventureValue ~= 0)then
tempTable.id = itemData.id
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
for i=1,#AdventureDataProxy.DeathDrop do
local type = AdventureDataProxy.DeathDrop[i]
local item = AdventureItemData.new(tempTable,type)
local bagData = self.bagMap[type]
local tab = bagData:getTabByItemAndType(item,type)
local oldItem = bagData:GetItemByStaticID(itemData.id)
-- helplog("NewMonsterDeathDropAdd:",itemData.id,type,tostring(monsterId),tostring(tab.tab.id),tostring(oldItem))
-- helplog("NewMonsterDeathDropAdd:",itemData.NameZh)
if(tab and not oldItem)then
bagData:AddItem(item,type)
end
end
end
local productId = ItemUtil.GetComposeItemByBlueItem(itemData)
local productItem = Table_Item[productId]
if(productItem and productItem.AdventureValue and productItem.AdventureValue ~= 0)then
tempTable.id = productItem.id
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
for i=1,#AdventureDataProxy.DeathDrop do
local type = AdventureDataProxy.DeathDrop[i]
local item = AdventureItemData.new(tempTable,type)
local bagData = self.bagMap[type]
local tab = bagData:getTabByItemAndType(item,type)
local oldItem = bagData:GetItemByStaticID(productItem.id)
-- helplog("NewMonsterDeathDropAdd productItem:",productItem.id,type,tostring(monsterId),tostring(tab),tostring(oldItem))
-- helplog("NewMonsterDeathDropAdd productItem:",productItem.NameZh)
if(tab and not oldItem)then
bagData:AddItem(item,type)
end
end
end
end
end
end
function AdventureDataProxy:NewMenusAdd( menuIds )
-- body
if(menuIds and #menuIds>0)then
for i=1,#menuIds do
self:NewMenuAdd(menuIds[i])
end
end
end
function AdventureDataProxy:NewMenuAdd( menuId )
-- body
-- helplog("NewMenuAdd:",menuId)
-- self.hasCountMenu[menuId] = true
if(self.hasCountMenu[menuId])then
return
end
self.hasCountMenu[menuId] = true
local menuData = Table_Menu[menuId]
if(menuData)then
local eventType = menuData.event.type
-- helplog("NewMenuAdd:",menuId,eventType)
if(eventType and eventType == "unlockmanual")then
if(menuData.event.param and menuData.event.param[1] == SceneManual_pb.EMANUALTYPE_MONSTER)then
for i=2,#menuData.event.param do
-- helplog("NewMenuAdd:",tostring(menuData.event.param[i]))
self:NewMonsterAdd(menuData.event.param[i])
end
elseif(menuData.event.param and menuData.event.param[1] == SceneManual_pb.EMANUALTYPE_COLLECTION)then
for i=2,#menuData.event.param do
-- helplog("NewMenuAdd:",tostring(menuData.event.param[i]))
self:NewSingleCollectionAdd(menuData.event.param[i])
end
elseif(menuData.event.param and menuData.event.param[1] == SceneManual_pb.EMANUALTYPE_MAP)then
for i=2,#menuData.event.param do
self:NewCollectionAdd(menuData.event.param[i])
end
end
elseif(eventType and eventType == "scenery")then
for i=1,#menuData.event.param do
self:NewSceneryAdd(menuData.event.param[i])
end
end
end
end
function AdventureDataProxy:NewSingleCollectionAdd( itemId )
local itemData = Table_Item[itemId]
if(itemData and itemData.AdventureValue and itemData.AdventureValue ~= 0)then
tempTable.id = itemId
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
local type = SceneManual_pb.EMANUALTYPE_COLLECTION
local item = AdventureItemData.new(tempTable,type)
local bagData = self.bagMap[type]
local tab = bagData:getTabByItemAndType(item,type)
local oldItem = bagData:GetItemByStaticID(itemId)
if(tab and not oldItem)then
bagData:AddItem(item,type)
end
end
end
function AdventureDataProxy:NewCollectionAdd( collectionId )
if(self.hasCountCollection[collectionId])then
return
end
self.hasCountCollection[collectionId] = true
for i=1,#self.collectionGroupDatas do
local single = self.collectionGroupDatas[i]
if(single.staticData.mapID == collectionId)then
single:setUnlock(true)
end
end
end
function AdventureDataProxy:NewSceneryAdd( sceneryId )
local sceneryData = Table_Viewspot[sceneryId]
if(sceneryData and sceneryData.AdventureValue and sceneryData.AdventureValue ~= 0)then
tempTable.id = sceneryId
tempTable.status = SceneManual_pb.EMANUALSTATUS_DISPLAY
local type = SceneManual_pb.EMANUALTYPE_SCENERY
local item = AdventureItemData.new(tempTable,type)
local bagData = self.bagMap[type]
local tab = bagData:getTabByItemAndType(item,type)
local oldItem = bagData:GetItemByStaticID(sceneryId)
if(tab and not oldItem)then
bagData:AddItem(item,type)
end
end
end
function AdventureDataProxy:thumbCpCallback( data )
-- body
-- {baID = ba_id})
self:thumbnailCompleteCallback( data.baID,data.bytes )
end
function AdventureDataProxy:thumbPgCallback( data )
-- body
-- {baID = ba_id, progress = x}
self:thumbnailProgressCallback( data.baID,data.progress )
end
function AdventureDataProxy:onRegister()
end
function AdventureDataProxy:getRidTipsByCategoryId( id )
-- body
local redTipIds = {}
local categorys = AdventureDataProxy.Instance:getTabsByCategory(id)
if(categorys and categorys.childs)then
for k,v in pairs(categorys.childs) do
local redId = v.staticData.RidTip
if( redId and type(redId) == "number")then
table.insert(redTipIds,redId)
elseif( redId and type(redId) == "table")then
for i=1,#redId do
table.insert(redTipIds,redId[i])
end
end
end
end
return redTipIds
end
function AdventureDataProxy:checkSceneryRedTips(bagType )
-- body
for k1,v1 in pairs(self.categoryDatas) do
local categorys = v1
if(k1 ~= SceneManual_pb.EMANUALTYPE_ACHIEVE )then
if((bagType and bagType == k1) or bagType == nil )then
local bgData = self.bagMap[k1]
-- printRed(v1,k1)
if(categorys and categorys.childs and bgData)then
for k,v in pairs(categorys.childs) do
local redId = v.staticData.RidTip
if(redId)then
local list = bgData:GetItems(k)
local addRed = false
for i=1,#list do
local single = list[i]
local append = single:getCompleteNoRewardAppend()
if(#append > 0 or single.status == SceneManual_pb.EMANUALSTATUS_UNLOCK_CLIENT and not single:getCollectionGroupId())then
addRed = true
break
end
end
if(type(redId) == "number")then
if(addRed)then
RedTipProxy.Instance:UpdateRedTip(redId)
else
RedTipProxy.Instance:RemoveWholeTip(redId)
end
elseif(type(redId) == "table")then
for i=1,#redId do
if(addRed)then
RedTipProxy.Instance:UpdateRedTip(redId[i])
else
RedTipProxy.Instance:RemoveWholeTip(redId[i])
end
end
end
end
end
end
if(bagType == SceneManual_pb.EMANUALTYPE_COLLECTION and bgData)then
self:checkCollectionRedTips()
end
if(bagType)then
break
end
end
end
end
end
function AdventureDataProxy:checkCollectionRedTips( )
for i=1,#self.collectionGroupDatas do
local single = self.collectionGroupDatas[i]
local hasRed = single:hasToBeUnlockItem()
if(not single:IsUnlock() and not single:isTotalUnComplete())then
single:setUnlock(true)
end
if hasRed then
RedTipProxy.Instance:UpdateRedTip(single.staticData.RedTip)
else
RedTipProxy.Instance:RemoveWholeTip(single.staticData.RedTip)
end
end
end
function AdventureDataProxy:checkFoodRedTips( )
-- body
local food_cook_info = FoodProxy.Instance.food_cook_info
local notifySv = true
for k,v in pairs(food_cook_info) do
local AdventureValue = v.itemData.staticData and v.itemData.staticData.AdventureValue
if(v.status == SceneFood_pb.EFOODSTATUS_ADD and AdventureValue and AdventureValue ~=0 )then
notifySv = false
RedTipProxy.Instance:UpdateRedTip(38)
break
end
end
if(notifySv)then
RedTipProxy.Instance:RemoveWholeTip(38)
end
end
function AdventureDataProxy:getTabsByCategory(categoryId)
-- printRed("categoryId"..categoryId)
-- print(self.categoryDatas[categoryId].child)
return self.categoryDatas[categoryId]
end
function AdventureDataProxy:isCard( type )
-- body
local categorys = self.categoryDatas[SceneManual_pb.EMANUALTYPE_CARD]
if(categorys and categorys.childs)then
for k,v in pairs(categorys.childs) do
for i=1,#v.types do
local single = v.types[i]
if(type == single )then
return true
end
end
end
end
end
function AdventureDataProxy:hasUnlockCard( Quality,cardType )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_CARD]
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(single.staticData and single.staticData.Quality == Quality and
single.status == SceneManual_pb.EMANUALSTATUS_DISPLAY and
single.cardInfo.CardType == cardType)then
return true
end
end
end
end
function AdventureDataProxy:onRemove()
end
function AdventureDataProxy:SetIsNewFlag(package,value)
local bag = self.bagMap[package]
local items = bag:GetItems()
for i=1,#items do
items[i].isNew = value
end
end
function AdventureDataProxy:setPointData( value )
-- body
self.totalData = value
end
function AdventureDataProxy:getPointData( )
-- body
return self.totalData or 0
end
function AdventureDataProxy:setSkillPoint(value)
self.skillPoint = value
end
function AdventureDataProxy:getSkillPoint(value)
return self.skillPoint or 0
end
function AdventureDataProxy:setManualLevel( value )
-- body
-- printRed("setManualLevel",value)
local cur = self:getManualLevel()
self.manualLevel = value
if(cur<value)then
GameFacade.Instance:sendNotification(SceneUserEvent.LevelUp, self,SceneUserEvent.ManualLevelUp)
end
end
function AdventureDataProxy:getManualLevel( )
-- body
return self.manualLevel or 1
end
function AdventureDataProxy:IsNpcUnlock( npcId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_NPC]
if(bgData)then
local npcData = bgData:GetItemByStaticID(npcId)
if(npcData)then
return npcData.status == SceneManual_pb.EMANUALSTATUS_UNLOCK
end
end
end
function AdventureDataProxy:IsSceneryUnlock( sceneryId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_SCENERY]
if(bgData)then
local data = bgData:GetItemByStaticID(sceneryId)
if(data)then
return data.status == SceneManual_pb.EMANUALSTATUS_UNLOCK
end
end
end
function AdventureDataProxy:IsFashionUnlock( itemId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_FASHION]
if(bgData)then
local data = bgData:GetItemByStaticID(itemId)
if(data)then
return data.status == SceneManual_pb.EMANUALSTATUS_UNLOCK
end
end
end
function AdventureDataProxy:IsFashionStored( itemId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_FASHION]
if(bgData)then
local data = bgData:GetItemByStaticID(itemId)
if(data)then
return data.store
end
end
end
----------布点作品坐骑
function AdventureDataProxy:IsMountUnlock( itemId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_MOUNT]
if(bgData)then
local data = bgData:GetItemByStaticID(itemId)
if(data)then
return data.status == SceneManual_pb.EMANUALSTATUS_UNLOCK
end
end
end
function AdventureDataProxy:IsMountStored( itemId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_MOUNT]
if(bgData)then
local data = bgData:GetItemByStaticID(itemId)
if(data)then
return data.store
end
end
end
function AdventureDataProxy:IsCardUnlock( itemId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_CARD]
if(bgData)then
local data = bgData:GetItemByStaticID(itemId)
if(data)then
return data.status == SceneManual_pb.EMANUALSTATUS_UNLOCK
end
end
end
function AdventureDataProxy:IsCardStored( itemId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_CARD]
if(bgData)then
local data = bgData:GetItemByStaticID(itemId)
if(data)then
return data.store
end
end
end
function AdventureDataProxy:GetSceneryData( sceneryId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_SCENERY]
if(bgData)then
return bgData:GetItemByStaticID(sceneryId)
end
end
function AdventureDataProxy:IsSceneryHasTakePic( sceneryId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_SCENERY]
if(bgData)then
local data = bgData:GetItemByStaticID(sceneryId)
if(data)then
return data.status ~= SceneManual_pb.EMANUALSTATUS_DISPLAY
end
end
end
function AdventureDataProxy:IsSceneryDisplay( sceneryId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_SCENERY]
if(bgData)then
local data = bgData:GetItemByStaticID(sceneryId)
if(data)then
return data.status == SceneManual_pb.EMANUALSTATUS_DISPLAY
end
end
end
function AdventureDataProxy:IsSceneryUpload( sceneryId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_SCENERY]
if(bgData)then
local data = bgData:GetItemByStaticID(sceneryId)
if(data)then
return data.attrUnlock
end
end
end
function AdventureDataProxy:IsCollectionGained( collectionId )
-- body
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_COLLECTION]
if(bgData)then
local data = bgData:GetItemByStaticID(collectionId)
if(data)then
return data.status ~= SceneManual_pb.EMANUALSTATUS_DISPLAY
end
end
end
function AdventureDataProxy:getAllUploadedScenerys( )
-- body
local ret = {}
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_SCENERY]
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(single.attrUnlock)then
table.insert(ret,single)
end
end
end
return ret
end
function AdventureDataProxy:getCanAndHasUnlockedScenerys( )
-- body
local ret = {}
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_SCENERY]
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(single.status == SceneManual_pb.EMANUALSTATUS_UNLOCK or single.status == SceneManual_pb.EMANUALSTATUS_UNLOCK_CLIENT)then
table.insert(ret,single)
end
end
end
return ret
end
function AdventureDataProxy:getUnlockNumByType( type )
-- body
local ret = {}
local bgData = self.bagMap[type] or self.bagMap[SceneManual_pb.EMANUALTYPE_FASHION]-- or self.bagMap[SceneManual_pb.EMANUALTYPE_MOUNT]
local num = 0
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(single.status == SceneManual_pb.EMANUALSTATUS_UNLOCK)then
num = num+1
end
end
end
return tostring(num)
end
function AdventureDataProxy:getUnuploadScenerys( )
-- body
local ret = {}
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_SCENERY]
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(not single.attrUnlock)then
table.insert(ret,single)
end
end
end
return ret
end
function AdventureDataProxy:getUnLockMonsterByType( type ,status)
-- body
local ret = {}
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_MONSTER]
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(single.staticData and type == NpcData.NpcDetailedType[single.staticData.Type] and single.status > status)then
table.insert(ret,single)
end
end
end
return #ret
end
function AdventureDataProxy:getNextAchievement( )
-- body
local manualLevel = self:getManualLevel()
for i=1,#Table_AdventureLevel do
local single = Table_AdventureLevel[i]
if(single.id > manualLevel)then
return single
end
end
end
function AdventureDataProxy:getNumOfStoredHeaddress( Quality )
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_FASHION]-- or self.bagMap[SceneManual_pb.EMANUALTYPE_MOUNT]
--bagMap字典获取 `EMANUALTYPE_FASHION` 类型的背包数据,赋值给 `bgData`
local num = 0
--初始化一个计数器num 记录符合条件的物品数量
if(bgData)then
-- 检查 `bgData` 是否存在
local list = bgData:GetItems()
-- 获取背包中所有物品的列表赋值list
for i=1,#list do -- for循环遍历list中的每一个物品
local single = list[i]
if(single.staticData and single.staticData.Quality == Quality and single.store)then
-- 检查当前物品的 `staticData` 是否存在,且物品的质量 `Quality` 是否等于传入参数的 `Quality`,并且该物品是否存储(`single.store` 为真)
num = num +1
end
end
end
return num
-- 返回符合条件的物品数量 `num`
end
function AdventureDataProxy:getNumOfStoredCard( Quality ) --卡片
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_CARD]
local num = 0
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(single.staticData and single.staticData.Quality == Quality and single.store)then
num = num +1
end
end
end
return num
end
function AdventureDataProxy:GetCurAdventureAppellation( )
-- body
local achData = MyselfProxy.Instance:GetCurManualAppellation( )
if(achData)then
return achData.id
end
end
function AdventureDataProxy:getCurAchievement( )
-- body
local manualLevel = self:getManualLevel()
for i=1,#Table_AdventureLevel do
local single = Table_AdventureLevel[i]
if(single.id == manualLevel)then
return single
end
end
end
function AdventureDataProxy:getAdventureSkillByAppellation( appellation )
-- body
local skills = {}
if(not self.adShopSkills)then
self.adShopSkills = {}
for k,v in pairs(Table_Skill) do
if(v.Contidion.riskid)then
table.insert(self.adShopSkills,v)
end
end
end
for i=1,#self.adShopSkills do
local single = self.adShopSkills[i]
if(single.Contidion.riskid == appellation)then
table.insert(skills,single.id)
end
end
return skills
end
function AdventureDataProxy:getAppendRewardByTargetId( targetId ,type)
-- body
TableUtility.ArrayClear(tempArrayData)
for k,v in pairs(Table_AdventureAppend) do
if(v.targetID == targetId and type == v.Content and v.Reward)then
table.insert(tempArrayData,v.Reward)
end
end
return tempArrayData
end
function AdventureDataProxy:checkHasMonsterDropCard( id )
-- body
if(id)then
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_CARD]
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(single.staticId == id and single.status ~= SceneManual_pb.EMANUALSTATUS_DISPLAY)then
return true
end
end
end
end
return false
end
function AdventureDataProxy:getItemsByCategoryAndClassify( classify,profession,id )
-- body
if(classify)then
TableUtility.ArrayClear(tempArrayData)
local types = {}
for i,v in pairs(Table_ItemTypeAdventureLog) do
local idFit = true
if(id ~= nil)then
idFit = id == v.id
end
if(v.Classify == classify and idFit)then
table.insert(types,v)
end
end
table.sort(types,function ( l,r )
-- body
return l.Order < r.Order
end)
for i=1,#types do
local single = types[i]
local bgData = self.bagMap[single.type]
if(bgData)then
local list = bgData:GetItems(single.id)
for i=1,#list do
local single = list[i]
if(profession and single.equipInfo)then
local profess = MyselfProxy.Instance:GetMyProfession()
if(single.equipInfo:CanUseByProfess(profess)) then
tempArrayData[#tempArrayData +1 ] = single
end
else
tempArrayData[#tempArrayData +1 ] = single
end
end
end
end
return tempArrayData
end
end
function AdventureDataProxy:getLockNumInfoByClassify( classify )
-- body
local total = 0
local unlock = 0
if(classify)then
for i,v in pairs(Table_ItemTypeAdventureLog) do
if(v.Classify == classify)then
local bgData = self.bagMap[v.type]
if(bgData)then
local list = bgData:GetItems(v.id)
for i=1,#list do
local single = list[i]
if(single.type == SceneManual_pb.EMANUALTYPE_EQUIP )then
if(self:checkEquipIsUnlock(single.staticId))then
unlock = unlock +1
end
elseif(single.type == SceneManual_pb.EMANUALTYPE_HAIRSTYLE or single.type == SceneManual_pb.EMANUALTYPE_ITEM)then
if(self:checkShopItemIsUnlock(single.staticId))then
unlock = unlock +1
end
elseif(single.type == SceneManual_pb.EMANUALTYPE_MATE)then
if(self:checkMercenaryCatIsUnlock(single:getCatId()))then
unlock = unlock +1
end
end
total = total + 1
end
end
end
end
end
return unlock,total
end
function AdventureDataProxy:getMenuLockInfo( )
-- body
local total = 0
local unlock = 0
for i,v in pairs(Table_GameFunction) do
local menuId = v.MenuID
if(FunctionUnLockFunc.Me():CheckCanOpen(menuId))then
unlock = unlock + 1
end
total = total + 1
end
return unlock,total
end
function AdventureDataProxy:checkMercenaryCatIsUnlock(id)
-- body
local data = Table_MercenaryCat[id]
-- helplog("checkMercenaryCatIsUnlock1:",id)
if(data and data.MenuID)then
-- helplog("checkMercenaryCatIsUnlock1:",id)
-- helplog("checkMercenaryCatIsUnlock2:",FunctionUnLockFunc.Me():CheckCanOpen(data.MenuID))
if(not FunctionUnLockFunc.Me():CheckCanOpen(data.MenuID))then
return false
end
end
return true
end
function AdventureDataProxy:checkEquipIsUnlock(id)
-- body
for k,v in pairs(Table_Compose) do
if(v.Product and v.Product.id == id )then
if(not FunctionUnLockFunc.Me():CheckCanOpen(v.MenuID))then
return false
end
end
end
return true
end
function AdventureDataProxy:checkShopItemIsUnlock(id)
-- body
local staticData = Table_MenuUnclock[id]
if(staticData)then
local MenuID = staticData.MenuID
if(not FunctionUnLockFunc.Me():CheckCanOpen(MenuID))then
return false
end
end
return true
end
function AdventureDataProxy:GetMenuDesById(id)
local staticData = Table_MenuUnclock[id]
if(staticData)then
local MenuDes = staticData.MenuDes
return MenuDes
end
return nil;
end
function AdventureDataProxy.getUnlockCondition( data,notItem )
local str = ""
if(data.staticData and data.staticData.Condition)then
local condition = data.staticData.Condition
if(notItem)then
local pre = ""
if(data.staticData.Type ~= "MVP" and data.staticData.Type ~= "MINI" and data.type == SceneManual_pb.EMANUALTYPE_MONSTER)then
pre = ZhString.MonsterScoreTip_Condition
end
str = GameConfig.AdventureUnlockCodition[condition] or ""
str = pre..str..data:GetName()
else
for i=1,#GameConfig.AdventureUnlockCodition do
if(BitUtil.band(condition,i-1) ~= 0)then
-- if(i == #GameConfig.AdventureUnlockCodition)then
if(str == "")then
str = GameConfig.AdventureUnlockCodition[i]
else
str = str..ZhString.Common_Comma..GameConfig.AdventureUnlockCodition[i]
end
-- else
-- str = str..GameConfig.AdventureUnlockCodition[i].."、"
-- end
end
end
str = str..data:GetName()
end
return str
else
str = "please check Excel!!!"
end
return str
end
function AdventureDataProxy:getUnlockRewardStr( staticData, splitStr )
-- body
local advReward = staticData.AdventureReward
splitStr = splitStr or "\n"
if(type(advReward)=="table" and type(advReward.buffid)=="table")then
local str = ""
for i=1,#advReward.buffid do
-- local temp = {};
-- temp.type = "buffid";
local value = advReward.buffid[i];
local bufferData = Table_Buffer[value]
if bufferData and bufferData.Dsc ~= "" then
if(str ~= "")then
str = str..splitStr
end
str = str..(bufferData.Dsc or "");
end
end
return str
end
end
function AdventureDataProxy:QueryUnresolvedPhotoManualCmd( data )
local photos = data.photos
self.tempAlbumTime = data.time
-- helplog("QueryUnresolvedPhotoManualCmd:")
self.tempScenerys = {}
if(photos and #photos>0)then
for i=1,#photos do
local single = photos[i]
local playerData = {}
local scenerys = nil
playerData.name = single.name
playerData.roleId = single.charid
-- helplog("QueryUnresolvedPhotoManualCmd:",single.name,single.charid)
for j=1,#single.photos do
local singleData = single.photos[j]
local tempData = {}
tempData.staticId = singleData.id
tempData.roleId = single.charid
tempData.time = singleData.time
scenerys = scenerys or {}
scenerys[#scenerys+1] = tempData
-- helplog("QueryUnresolvedPhotoManualCmd 11:",singleData.id,singleData.time)
MySceneryPictureManager.Instance():log("QueryUnresolvedPhotoManualCmd:",tostring(singleData.id),tostring(singleData.time),single.name,single.charid)
end
if(scenerys)then
playerData.scenerys = scenerys
self.tempScenerys[#self.tempScenerys+1] = playerData
end
end
end
end
function AdventureDataProxy:UpdateResolvedPhotoManualCmd( data )
local roleId = data.charid
local sceneryId = data.sceneryid
if(self.tempScenerys)then
for i=1,#self.tempScenerys do
local single = self.tempScenerys[i]
if(single.roleId == roleId and single.scenerys and #single.scenerys>0)then
for j=1,#single.scenerys do
local singleScenery = single.scenerys[j]
if(singleScenery.staticId == sceneryId)then
table.remove(single.scenerys,j)
break
end
end
if(#single.scenerys == 0)then
table.remove(self.tempScenerys,i)
break
end
end
end
end
end
function AdventureDataProxy:GetAllTempScenerys( )
return self.tempScenerys
end
function AdventureDataProxy:HasTempSceneryExsit( )
return #self.tempScenerys>0
end
function AdventureDataProxy:getIntoPackageRewardStr( staticData, splitStr )
-- body
local advReward = staticData.StorageReward
splitStr = splitStr or "\n"
if(type(advReward)=="table" and type(advReward.buffid)=="table")then
local str = ""
for i=1,#advReward.buffid do
local value = advReward.buffid[i];
local bufferData = Table_Buffer[value]
if bufferData and bufferData.Dsc ~= "" then
if(str ~= "")then
str = str..splitStr
end
str = str..(bufferData.Dsc or "");
end
end
return str
end
end
function AdventureDataProxy:getNextAppellationProp( )
local achData = MyselfProxy.Instance:GetCurManualAppellation( )
local str = ""
if(achData)then
local staticData = Table_Appellation[achData.staticData.PostID]
if(staticData)then
str = string.format(ZhString.AdventureHomePage_TitleDes,staticData.Name)
for k,v in pairs(staticData.BaseProp) do
local prop = Game.Config_PropName[ k]
if(prop and v > 0)then
str = str.."\n"..prop.RuneName.."+"..v;
end
end
str = str.."[-][/c]"
end
end
return str
end
function AdventureDataProxy:getNextAdventureLevelProp( curLv )
-- body
curLv = curLv or self:getManualLevel()
local str = ""
local nextLv = curLv +1
local staticData = Table_AdventureLevel[nextLv]
if(staticData)then
if(staticData.AdventureAttr and next(staticData.AdventureAttr))then
local i = 0
for k,v in pairs(staticData.AdventureAttr) do
local prop = Game.Config_PropName[ k]
if(prop and v > 0)then
if(i == 0)then
str = prop.RuneName.."+"..v;
else
str = str.."\n"..prop.RuneName.."+"..v;
end
end
i = i+1
end
end
if(staticData.SkillPoint and staticData.SkillPoint>0)then
str = str..string.format(ZhString.AdventureHomePage_manualPoint,staticData.SkillPoint);
end
end
return str
end
function AdventureDataProxy:GetAppellationProp( )
TableUtility.ArrayClear(tempArrayData)
local id = self:GetCurAdventureAppellation()
local tempPropMap = {}
if(id)then
local count = id - 1000
for i=1,count do
local num = i+1000
local staticData = Table_Appellation[num]
if(staticData and next(staticData.BaseProp))then
for k,v in pairs(staticData.BaseProp) do
local prop = Game.Config_PropName[ k]
if(prop)then
local data = tempPropMap[k]
if(data)then
data.value = data.value + v
else
data = {}
data.value = v
data.prop = prop
tempArrayData[#tempArrayData+1] = data
end
tempPropMap[k] = data
end
end
end
end
end
return tempArrayData
end
function AdventureDataProxy:GetPropsByBufferId(buff,tempArrayData,tempMap)
if(buff and next(buff))then
for j=1,#buff do
local bufferData = Table_Buffer[buff[j]]
if(bufferData and bufferData.BuffEffect.type == "AttrChange" and bufferData.Condition == _EmptyTable)then
for k,v in pairs(bufferData.BuffEffect) do
local prop = Game.Config_PropName[ k]
if(prop)then
local data = tempMap[k]
if(data)then
data.value = data.value + v
else
data = {}
data.value = v
data.prop = prop
tempArrayData[#tempArrayData+1] = data
end
tempMap[k] = data
end
end
end
end
end
end
function AdventureDataProxy:GetPropsByItemData(type,props,tempMap)
local bgData = self.bagMap[type]
if(bgData)then
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
if(single.staticData and next(single.staticData.AdventureReward) and single.status == SceneManual_pb.EMANUALSTATUS_UNLOCK)then
local buff = single.staticData.AdventureReward.buffid
self:GetPropsByBufferId(buff,props,tempMap)
end
if(single.staticData and next(single.staticData.StorageReward) and single.store)then
local buff = single.staticData.StorageReward.buffid
self:GetPropsByBufferId(buff,props,tempMap)
end
end
end
end
function AdventureDataProxy:GetPropsByPetData(props,tempMap)
local bgData = self.bagMap[SceneManual_pb.EMANUALTYPE_PET]
if(not bgData)then
return
end
local list = bgData:GetItems()
for i=1,#list do
local single = list[i]
local petData = single.staticData
if(petData and next(petData.AdventureReward) and single.status == SceneManual_pb.EMANUALSTATUS_UNLOCK)then
local buff = petData.AdventureReward.buffid
self:GetPropsByBufferId(buff,props,tempMap)
end
end
end
function AdventureDataProxy:GetPropsByCollectGroupData(tempArrayData,tempMap)
for i=1,#self.collectionGroupDatas do
local single = self.collectionGroupDatas[i]
if(single:isTotalComplete() and single.staticData.RewardProperty)then
for k,v in pairs(single.staticData.RewardProperty) do
local prop = Game.Config_PropName[ k]
if(prop)then
local data = tempMap[k]
if(data)then
data.value = data.value + v
else
data = {}
data.value = v
data.prop = prop
tempArrayData[#tempArrayData+1] = data
end
tempMap[k] = data
end
end
end
end
end
function AdventureDataProxy:GetPropsByTitleData(tempArrayData,tempMap)
local props = TitleProxy.Instance:GetAllTitleProp()
for k,v in pairs(props) do
local prop = Game.Config_PropName[ k]
if(prop)then
local data = tempMap[k]
if(data)then
data.value = data.value + v
else
data = {}
data.value = v
data.prop = prop
tempArrayData[#tempArrayData+1] = data
end
tempMap[k] = data
end
end
end
function AdventureDataProxy:GetPropsByAppellationData(tempArrayData,tempMap)
local id = self:GetCurAdventureAppellation()
if(id)then
local count = id - 1000
for i=1,count do
local num = i+1000
local staticData = Table_Appellation[num]
if(staticData and next(staticData.BaseProp))then
for k,v in pairs(staticData.BaseProp) do
local prop = Game.Config_PropName[ k]
if(prop)then
local data = tempMap[k]
if(data)then
data.value = data.value + v
else
data = {}
data.value = v
data.prop = prop
tempArrayData[#tempArrayData+1] = data
end
tempMap[k] = data
end
end
end
end
end
end
function AdventureDataProxy:GetPropsByBufferData(tempArrayData,tempMap)
-- if(MyselfProxy.Instance.buffAttr)then
-- for k,v in pairs(MyselfProxy.Instance.buffAttr) do
-- local prop = MyselfProxy.Instance.buffersProps[k]
-- if(prop and prop:GetValue() >0)then
-- local data = {}
-- data.prop = prop
-- data.type = BaseAttributeView.cellType.fixed
-- table.insert(datas,data)
-- end
-- end
-- end
end
function AdventureDataProxy:GetPropsByFoodData(tempArrayData,tempMap)
local food_cook_info = FoodProxy.Instance.food_cook_info
for k,cookInfo in pairs(food_cook_info) do
if(cookInfo.itemData and cookInfo.itemData.staticData and cookInfo.itemData.staticData.AdventureValue and cookInfo.itemData.staticData.AdventureValue ~=0 )then
local foodInfo = Table_Food[cookInfo.itemid]
if(cookInfo and cookInfo.level == 10 and next(foodInfo.CookLvAttr))then
for k,v in pairs(foodInfo.CookLvAttr) do
local prop = Game.Config_PropName[ k]
if(prop)then
local data = tempMap[k]
if(data)then
data.value = data.value + v
else
data = {}
data.value = v
data.prop = prop
tempArrayData[#tempArrayData+1] = data
end
tempMap[k] = data
end
end
end
--品嚐熟練度
local tasteInfo = FoodProxy.Instance:Get_FoodEatExpInfo(cookInfo.itemid)
if(tasteInfo and tasteInfo.level == 10 and next(foodInfo.TasteLvAttr))then
for k,v in pairs(foodInfo.TasteLvAttr) do
local prop = Game.Config_PropName[ k]
if(prop)then
local data = tempMap[k]
if(data)then
data.value = data.value + v
else
data = {}
data.value = v
data.prop = prop
tempArrayData[#tempArrayData+1] = data
end
tempMap[k] = data
end
end
end
end
end
end
function AdventureDataProxy:GetAllAdventureProp( )
-- 此處顯示手冊內全部加成的永久屬性:
-- 1.頭飾解鎖&儲存獎勵的屬性
-- 2.卡片解鎖&儲存獎勵的屬性
-- 3.料理熟練度獎勵的屬性
-- 4.珍藏品獎勵的屬性
-- 5.以及以後會在手冊中增加的屬性
TableUtility.ArrayClear(tempArrayData)
local tempPropMap = {}
self:GetPropsByItemData(SceneManual_pb.EMANUALTYPE_CARD,tempArrayData,tempPropMap)
self:GetPropsByItemData(SceneManual_pb.EMANUALTYPE_FASHION,tempArrayData,tempPropMap)
self:GetPropsByItemData(SceneManual_pb.EMANUALTYPE_MOUNT,tempArrayData,tempPropMap)
self:GetPropsByItemData(SceneManual_pb.EMANUALTYPE_COLLECTION,tempArrayData,tempPropMap)
self:GetPropsByPetData(tempArrayData,tempPropMap)
self:GetPropsByFoodData(tempArrayData,tempPropMap)
self:GetPropsByTitleData(tempArrayData,tempPropMap)
self:GetPropsByCollectGroupData(tempArrayData,tempPropMap)
return tempArrayData
end
function AdventureDataProxy:CheckFashionCanMake( staticId )
local cid = Table_ItemBeTransformedWay[staticId] and Table_ItemBeTransformedWay[staticId].composeWay or 0
local composeData = Table_Compose[cid]
if(not composeData)then
return false
end
local costItem = composeData.BeCostItem
local tbItem = Table_Item
local bagtype = BagProxy.Instance:Get_PackageMaterialCheck_BagTypes(BagProxy.MaterialCheckBag_Type.adventureProduce)
for i=1,#costItem do
local single = costItem[i]
local itemData = tbItem[single.id]
if(itemData and itemData.Type ~= 50)then
local itemDatas = BagProxy.Instance:GetMaterialItems_ByItemId(single.id,bagtype)
local exsitNum = 0
if(itemDatas and #itemDatas>0)then
for j=1,#itemDatas do
local single = itemDatas[j]
exsitNum = exsitNum+single.num
end
end
local need = single.num or 0
if(need > exsitNum)then
return false
end
end
end
return true
end
function AdventureDataProxy:GetAllFixProp( )
TableUtility.ArrayClear(tempArrayData)
local tempPropMap = {}
self:GetPropsByFoodData(tempArrayData,tempPropMap)
self:GetPropsByCollectGroupData(tempArrayData,tempPropMap)
self:GetPropsByTitleData(tempArrayData,tempPropMap)
self:GetPropsByAppellationData(tempArrayData,tempPropMap)
self:GetPropsByBufferData(tempArrayData,tempPropMap)
-- self:GetPropsByPetData(tempArrayData,tempPropMap)
local props = RolePropsContainer.CreateAsTable()
if(props)then
for _, o in pairs(props.configs) do
props:SetValueById(o.id,0)
end
end
local datas = {}
for k,v in pairs(Game.Config_PropName) do
local prop = props[k]
local value = 0
local buffValue = MyselfProxy.Instance.buffersProps:GetValueByName(k)
local otherValue = 0
if(tempPropMap[k] and tempPropMap[k].value>0)then
otherValue = tempPropMap[k].value
end
value = otherValue + buffValue
if(value ~= 0 )then
local data = {}
if(prop.propVO.isPercent)then
value = value * 1000
end
prop:SetValue(value)
data.prop = prop
data.type = BaseAttributeView.cellType.fixed
table.insert(datas,data)
end
end
return datas
end
function AdventureDataProxy:checkFashionCanStore( itemData )
local card = itemData.type == SceneManual_pb.EMANUALTYPE_CARD
if(card)then
return BagProxy.Instance:GetItemByStaticID(itemData.staticId)
end
local tempArrayData = self:GetFashionEquipByStatic(itemData)
if(tempArrayData and #tempArrayData>0)then
return true
end
end
function AdventureDataProxy:insertPropData( datas,roleDatas)
for i=1,#roleDatas do
local single = roleDatas[i]
datas[#datas+1] = single
end
end
function AdventureDataProxy:getSinglePropDatas( propData,keys)
local datas = {}
if(not keys or #keys == 0)then
if(propData.subTable and next(propData.subTable))then
for k,v in pairs(propData.subTable) do
for k1,v1 in pairs(v) do
if(v1.roleDatas)then
self:insertPropData(datas,v1.roleDatas)
end
end
end
end
else
for i=1,#keys do
local single = keys[i]
if(single.roleDatas)then
self:insertPropData(datas,single.roleDatas)
end
end
end
return datas
end
function AdventureDataProxy:getCollectionItemsByFilterData( items,propData,keys)
if(propData.propId == 7)then
TableUtility.ArrayClear(items)
return items
end
local retDatas = {}
local otherDatas = {}
local datas = self:getSinglePropDatas(propData,keys)
for i=1,#items do
local single = items[i]
local find = false
if(single.staticData.RewardProperty)then
for j=1,#datas do
local singleProp = datas[j]
if(single.staticData.RewardProperty[singleProp.VarName])then
retDatas[#retDatas+1] = single
find = true
break
end
end
end
if(not find)then
otherDatas[#otherDatas+1] = single
end
end
if(propData.propId == 8)then
return otherDatas
else
return retDatas
end
end
function AdventureDataProxy:CheckBufferisSkillType( buffType)
for k,v in pairs(AdventureDataProxy.FilterSkillType) do
if(buffType == v)then
return true
end
end
end
function AdventureDataProxy:CheckBufferisPropType( buffType)
for k,v in pairs(AdventureDataProxy.FilterPropType) do
if(buffType == v)then
return true
end
end
end
function AdventureDataProxy:CheckBufferisOtherRequire( buff)
for k,v in pairs(GameConfig.AdventurePropClassify) do
local datas = self:getKeywords(k,v)
if(k ~= 8)then
datas = self:getSinglePropDatas(datas)
resutl = self:CheckBufferisRequire(buff,datas,k)
if(resutl)then
return true
end
end
end
end
function AdventureDataProxy:CheckBufferisRequire( buff,datas,propid)
if(not buff or not next(buff) or not datas)then
return
end
for i=1,#buff do
local bufferData = Table_Buffer[buff[i]]
if(bufferData)then
if(propid == 7 and self:CheckBufferisSkillType(bufferData.BuffEffect.type))then
return true
elseif(self:CheckBufferisPropType(bufferData.BuffEffect.type))then
if(bufferData.BuffEffect.type == "AddBuff")then
return self:CheckBufferisRequire(bufferData.BuffEffect.id,datas,propid)
elseif(bufferData.BuffEffect.type == "ImmuneStatus" or bufferData.BuffEffect.type == "ResistStatus")then
local st = bufferData.BuffEffect.status[1]
local propKey = GameConfig.Status2RoleData and GameConfig.Status2RoleData[st]
prop = Game.Config_PropName[propKey]
if(prop)then
for j=1,#datas do
local singleProp = datas[j]
if(prop.id == singleProp.id)then
return true
end
end
end
end
for k,v in pairs(bufferData.BuffEffect) do
local prop = Game.Config_PropName[ k]
if(prop)then
for j=1,#datas do
local singleProp = datas[j]
if(prop.id == singleProp.id)then
return true
end
end
end
end
end
end
end
end
function AdventureDataProxy:getNorItemsByFilterData( items,propData,keys)
local retDatas = {}
local datas = self:getSinglePropDatas(propData,keys)
local buffers = {}
for i=1,#items do
local single = items[i]
local beIn = false
TableUtility.ArrayClear(buffers)
if(single.staticData and next(single.staticData.AdventureReward))then
local buff = single.staticData.AdventureReward.buffid
beIn = self:CheckBufferisRequire(buff,datas,propData.propId)
buffers[#buffers+1] = buff
end
if(not beIn)then
if(single.staticData and next(single.staticData.StorageReward))then
local buff = single.staticData.StorageReward.buffid
beIn = self:CheckBufferisRequire(buff,datas,propData.propId)
buffers[#buffers+1] = buff
end
end
if(not beIn)then
if(single.cardInfo)then
local buff = single.cardInfo.BuffEffect.buff
beIn = self:CheckBufferisRequire(buff,datas,propData.propId)
buffers[#buffers+1] = buff
end
end
if(not beIn)then
if(single.equipInfo and single.equipInfo.equipData)then
local buff = single.equipInfo.equipData.UniqueEffect.buff
beIn = self:CheckBufferisRequire(buff,datas,propData.propId)
buffers[#buffers+1] = buff
end
end
if(beIn)then
retDatas[#retDatas+1] = single
end
if(not beIn and propData.propId == 8)then
local find = false
for j=1,#buffers do
local single = buffers[j]
find = self:CheckBufferisOtherRequire(single)
if(find)then
break
end
end
if(not find)then
retDatas[#retDatas+1] = single
end
end
end
return retDatas
end
function AdventureDataProxy:getItemsByFilterData( type,items,propData,keys)
if(not propData or #items==0)then
return items
end
if(type == SceneManual_pb.EMANUALTYPE_COLLECTION)then
items = self:getCollectionItemsByFilterData(items,propData,keys)
else
items = self:getNorItemsByFilterData(items,propData,keys)
end
return items
end
function AdventureDataProxy:getRoleDatas( filter,tag,id )
local roleDatas = {}
for k,v in pairs(Table_RoleData) do
local ret = v[tag] and (v[tag]& 2^(id-1))>0
if(next(filter))then
for k1,v1 in pairs(filter) do
for i=1,#v1 do
local ret2 = v[k1] and (v[k1]& 2^(v1[i].id-1))>0
if(ret and ret2)then
roleDatas[#roleDatas+1] = v
end
end
end
elseif(ret)then
roleDatas[#roleDatas+1] = v
end
end
return roleDatas
end
function AdventureDataProxy:getKeywords( propId,data )
local tRet = self.propTypeDatas[propId]
if(tRet)then
return tRet
end
local defaultGroup = data.defaultGroup
local group = data.group
local filterTable = {}
for k,v in pairs(defaultGroup) do
local fdata = filterTable[k] or {}
local ptdata = GameConfig.PropTag[k]
if(ptdata)then
for k1,v1 in pairs(ptdata) do
if(v&2^(k1-1) >0)then
fdata[#fdata+1] = {id = k1,name = v1,tag = k}
end
end
end
filterTable[k] = fdata
end
local subTable = {}
for k,v in pairs(group) do
local fdata = subTable[k] or {}
local ptdata = GameConfig.PropTag[k]
if(ptdata)then
for k1,v1 in pairs(ptdata) do
if(v&2^(k1-1) >0)then
local roleDatas = self:getRoleDatas(filterTable,k,k1)
fdata[#fdata+1] = {id = k1,name = v1,tag = k,roleDatas = roleDatas}
end
end
end
subTable[k] = fdata
end
tRet = {subTable = subTable,filterTable = filterTable,propId = propId}
self.propTypeDatas[propId] = tRet
return tRet
end
function AdventureDataProxy:GetFashionEquipByStatic( itemData )
local equipInfo = itemData.equipInfo
if(equipInfo and equipInfo.equipData)then
local GroupID = equipInfo.equipData.GroupID
TableUtility.ArrayClear(tempArrayData)
if(GroupID)then
local equipDatas = self.fashionGroupData[GroupID]
if(equipDatas)then
for i=1,#equipDatas do
local single = equipDatas[i]
local data = BagProxy.Instance:GetItemByStaticIDWithoutCard(single.id)
if(data)then
tempArrayData[#tempArrayData+1] = data
end
end
end
else
tempArrayData[#tempArrayData+1] = BagProxy.Instance:GetItemByStaticIDWithoutCard(itemData.staticId)
end
return tempArrayData
end
end
function AdventureDataProxy:GetFashionEquipByStaticNormal( itemData )
local equipInfo = itemData.equipInfo
if(equipInfo and equipInfo.equipData)then
local GroupID = equipInfo.equipData.GroupID
TableUtility.ArrayClear(tempArrayData)
if(GroupID)then
local equipDatas = self.fashionGroupData[GroupID]
if(equipDatas)then
for i=1,#equipDatas do
local single = equipDatas[i]
local data = BagProxy.Instance:GetItemByStaticID(single.id)
if(data)then
tempArrayData[#tempArrayData+1] = data
end
end
end
else
tempArrayData[#tempArrayData+1] = BagProxy.Instance:GetItemByStaticID(itemData.staticId)
end
return tempArrayData
end
end
function AdventureDataProxy:FilterEquipByProp( )
-- body
-- local GetFashionEquipByStatic
end
function AdventureDataProxy:Test( )
-- body
local list = {}
for i=1,3 do
local data = {}
data.name = "xx"..i
data.charid = i*10000+i*10
local scenerys = {}
for j=1,10 do
local tempData = {}
tempData.id = j
tempData.time = 10000
scenerys[#scenerys+1] = tempData
end
data.photos = scenerys
list[#list+1] = data
end
local data = {}
data.photos = list
self:QueryUnresolvedPhotoManualCmd(data)
end