private void Setup() { itemList.Setup(itemPrefab, layout, (data, view) => view.Setup(data), (data1, data2) => data1.Id == data2.Id, (data1, data2) => { IUpgradeService serv = Services.UpgradeService; bool isAllowBuyFirst = serv.IsAllowBuy(data1); bool isAllowBuySecond = serv.IsAllowBuy(data2); if (isAllowBuyFirst && !isAllowBuySecond) { return(-1); } if (!isAllowBuyFirst && isAllowBuySecond) { return(1); } return(data1.Price(() => { return BosUtils.GetUpgradePriceMult(Planets.CurrentPlanet.Data, data1); }).CompareTo(data2.Price(() => { return BosUtils.GetUpgradePriceMult(Planets.CurrentPlanet.Data, data2); }))); }); itemList.UpdateViews(DataSource); }