using System.Collections.Generic;
namespace GFGGame
{
public class EquipDataCache
{
private static DressUpObjDataCache _cacher;
public static DressUpObjDataCache cacher
{
get
{
if(_cacher == null)
{
_cacher = new DressUpObjDataCache();
}
return _cacher;
}
}
public static CustomSuitData GetCurSuitData(int index)
{
CustomSuitData suitSavedData = new CustomSuitData(index);
suitSavedData.EquipData = EquipDataCache.cacher.GetEquiptDataClone();
return suitSavedData;
}
///
/// 检测是否穿戴完整(穿着连衣裙或同时穿着上装下装)
///
///
public static bool CheckPutOnFinish()
{
if (EquipDataCache.cacher.suitId > 0) return true;
List equipDatas = EquipDataCache.cacher.equipDatas;
bool isLianYiQun = false;
bool isShangYi = false;
bool isXiaZhuang = false;
for (int i = 0; i < equipDatas.Count; i++)
{
ItemCfg itemCfg = ItemCfgArray.Instance.GetCfg(equipDatas[i]);
if (itemCfg.subType == ConstDressUpItemType.LIAN_YI_QUN && itemCfg.id != ConstItemID.DEFULT_LIAN_YI_QUN)
{
isLianYiQun = true; break;
}
if (itemCfg.subType == ConstDressUpItemType.SHANG_YI && itemCfg.id != ConstItemID.DEFULT_NEI_DA)
{
isShangYi = true;
}
if (itemCfg.subType == ConstDressUpItemType.XIA_ZHUANG && itemCfg.id != ConstItemID.DEFULT_XIA_ZHUANG)
{
isXiaZhuang = true;
}
}
return isLianYiQun || isXiaZhuang && isShangYi;
}
public static bool CheckEquipedFightNeeded()
{
StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);
StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
if (fightCfg.needItemId > 0)
{
return cacher.CheckDressUpItemIsOn(fightCfg.needItemId);
}
else if (fightCfg.needSuitId > 0)
{
return cacher.CheckSuitIsOn(fightCfg.needSuitId);
}
return true;
}
public static void PutOnRecommendItems()
{
List recommendList = DressUpMenuItemDataManager.GetRecommendItemList();
StoryLevelCfg levelCfg = StoryLevelCfgArray.Instance.GetCfg(InstanceZonesDataManager.currentLevelCfgId);
StoryFightCfg fightCfg = StoryFightCfgArray.Instance.GetCfg(levelCfg.fightID);
int liangyiqunIndex = -1;
int shangyiIndex = -1;
int xiazhuangIndex = -1;
int neidaIndex = -1;
for (int i = 0; i < recommendList.Count; i++)
{
int subType = ItemUtilCS.GetItemSubType(recommendList[i]);
if (subType == ConstDressUpItemType.LIAN_YI_QUN)
{
liangyiqunIndex = i;
continue;
}
if (subType == ConstDressUpItemType.SHANG_YI)
{
shangyiIndex = i;
continue;
}
if (subType == ConstDressUpItemType.XIA_ZHUANG)
{
xiazhuangIndex = i;
continue;
}
if (subType == ConstDressUpItemType.NEI_DA)
{
neidaIndex = i;
continue;
}
}
if (liangyiqunIndex >= 0 && (shangyiIndex >= 0 || xiazhuangIndex >= 0))
{
if (shangyiIndex < 0 && xiazhuangIndex >= 0) recommendList.RemoveAt(xiazhuangIndex);//上衣下装只有一件,则保留连衣裙
if (xiazhuangIndex < 0 && shangyiIndex >= 0) recommendList.RemoveAt(shangyiIndex);
if (shangyiIndex >= 0 && xiazhuangIndex >= 0)//同时拥有上衣、下装、连衣裙
{
int lianyiqunScore = ItemDataManager.GetItemAdditionScore(recommendList[liangyiqunIndex], InstanceZonesDataManager.currentScoreType);
int shangyiScore = ItemDataManager.GetItemAdditionScore(recommendList[shangyiIndex], InstanceZonesDataManager.currentScoreType);
int xiazhuangScore = ItemDataManager.GetItemAdditionScore(recommendList[xiazhuangIndex], InstanceZonesDataManager.currentScoreType);
int neidaScore = neidaIndex >= 0 ? ItemDataManager.GetItemAdditionScore(recommendList[neidaIndex], InstanceZonesDataManager.currentScoreType) : 0;
int subType = ItemUtilCS.GetItemSubType(fightCfg.needItemId);
if (fightCfg.needItemId > 0 && recommendList.IndexOf(fightCfg.needItemId) >= 0 && (subType == ConstDressUpItemType.SHANG_YI || subType == ConstDressUpItemType.XIA_ZHUANG || subType == ConstDressUpItemType.NEI_DA || subType == ConstDressUpItemType.LIAN_YI_QUN))//推荐列表里有必需品且,必需品类型为上衣或下装或连衣裙,有先穿戴必须品,其次穿戴高分服装
{
if (subType == ConstDressUpItemType.LIAN_YI_QUN)
{
shangyiIndex = CheckIndex(ConstDressUpItemType.SHANG_YI, recommendList);
if (shangyiIndex >= 0) recommendList.RemoveAt(shangyiIndex);
xiazhuangIndex = CheckIndex(ConstDressUpItemType.XIA_ZHUANG, recommendList);
if (xiazhuangIndex >= 0) recommendList.RemoveAt(xiazhuangIndex);
neidaIndex = CheckIndex(ConstDressUpItemType.NEI_DA, recommendList);
if (neidaIndex >= 0) recommendList.RemoveAt(neidaIndex);
}
else if (subType == ConstDressUpItemType.SHANG_YI || subType == ConstDressUpItemType.XIA_ZHUANG || subType == ConstDressUpItemType.NEI_DA)
{
liangyiqunIndex = CheckIndex(ConstDressUpItemType.LIAN_YI_QUN, recommendList);
if (liangyiqunIndex >= 0) recommendList.RemoveAt(liangyiqunIndex);
}
}
else
{
if (lianyiqunScore > shangyiScore + xiazhuangScore + neidaScore)
{
shangyiIndex = CheckIndex(ConstDressUpItemType.SHANG_YI, recommendList);
if (shangyiIndex >= 0) recommendList.RemoveAt(shangyiIndex);
xiazhuangIndex = CheckIndex(ConstDressUpItemType.XIA_ZHUANG, recommendList);
if (xiazhuangIndex >= 0) recommendList.RemoveAt(xiazhuangIndex);
neidaIndex = CheckIndex(ConstDressUpItemType.NEI_DA, recommendList);
if (neidaIndex >= 0) recommendList.RemoveAt(neidaIndex);
}
else
{
liangyiqunIndex = CheckIndex(ConstDressUpItemType.LIAN_YI_QUN, recommendList);
if (liangyiqunIndex >= 0) recommendList.RemoveAt(liangyiqunIndex);
}
}
}
}
//推荐搭配自动穿必穿品
if (fightCfg.needItemId > 0 && DressUpMenuItemDataManager.CheckHasItem(fightCfg.needItemId) && recommendList.IndexOf(fightCfg.needItemId) < 0)
{
int subType = ItemUtilCS.GetItemSubType(fightCfg.needItemId);
for (int i = 0; i < recommendList.Count; i++)
{
int recommendSubType = ItemUtilCS.GetItemSubType(recommendList[i]);
if (recommendSubType == subType)
{
recommendList.RemoveAt(i);
break;
}
}
recommendList.Add(fightCfg.needItemId);
}
else if (fightCfg.needSuitId > 0 && DressUpMenuSuitDataManager.CheckHaveSuit(fightCfg.needSuitId))
{
recommendList.Clear();
SuitCfg cfg = SuitCfgArray.Instance.GetCfg(fightCfg.needSuitId);
recommendList.AddRange(cfg.partsArr);
}
cacher.PutOnItemList(recommendList);
}
private static int CheckIndex(int _subType, List recommendList)
{
for (int i = 0; i < recommendList.Count; i++)
{
int itemSubType = ItemUtilCS.GetItemSubType(recommendList[i]);
if (itemSubType == _subType)
{
return i;
}
}
return -1;
}
}
}