void IOpenCellEventDetailsPopup.Update(CellEventDetailsPopup popup) { popup.ApplyTitle(this.EventName, this.Level); popup.UpdateProperties(); popup.ClearLevelUpCosts(); this.AttachDetailsPopup(popup); }
/// <summary> /// <see cref="ILevelUpEvent"/>で共通して<see cref="CellEventDetailsPopup"/>にアタッチする処理 /// </summary> public static void AttachDetailsPopup(this ILevelUpEvent self, CellEventDetailsPopup popup) { var gameSystem = GameSystem.Instance; var levelUpCostRecord = gameSystem.MasterData.LevelUpCost.Records.Get(self.Id, self.Level); if (levelUpCostRecord == null) { return; } var properties = new List <Property>(); // お金を表示 properties.Add( popup.AddLevelUpCost(property => { var stringBuilder = new StringBuilder(); var color = (gameSystem.User.Wallet.Money >= levelUpCostRecord.Cost.Money) ? popup.EnoughLevelUpCostColor : popup.NotEnoughLevelUpCostColor; property.Prefix.text = popup.Money.Get; property.Value.text = stringBuilder.AppendColorCode(color, levelUpCostRecord.Cost.Money.ToReadableString("###")).ToString(); }) ); // アイテムを表示 foreach (var n in levelUpCostRecord.Cost.NeedItems) { properties.Add( popup.AddLevelUpCost(property => { var inventoryItem = gameSystem.User.Inventory.Items; var itemRecord = gameSystem.MasterData.Item.Records.Get(n.ItemId); var possessionItemAmount = inventoryItem.ContainsKey(itemRecord.Id) ? inventoryItem[itemRecord.Id] : 0; var stringBuilder = new StringBuilder(); var color = (possessionItemAmount >= n.Amount) ? popup.EnoughLevelUpCostColor : popup.NotEnoughLevelUpCostColor; property.Prefix.text = itemRecord.Name; property.Value.text = stringBuilder.AppendColorCode(color, popup.NeedItemValue.Format(possessionItemAmount, n.Amount)).ToString(); }) ); } // ポップアップを開いているときもお金やアイテムの所持数が更新されるのを考慮してプロパティも更新する popup.UpdateAsObservable() .SubscribeWithState(properties, (_, _properties) => { foreach (var p in _properties) { p.UpdateProperty(); } }); }
void IOpenCellEventDetailsPopup.Attach(CellEventDetailsPopup popup) { popup.AddProperty(property => { property.Prefix.text = popup.Popularity.Get; property.Value.text = this.LevelParameter.Popularity.ToReadableString("###"); }); popup.AddProperty(property => { property.Prefix.text = popup.Product.Get; property.Value.text = popup.ProductValue.Format(this.LevelParameter.ProductRecord.Name, this.LevelParameter.NeedProductTime); }); this.AttachDetailsPopup(popup); }
void IOpenCellEventDetailsPopup.Attach(CellEventDetailsPopup popup) { var population = popup.AddProperty(property => { property.Prefix.text = popup.Population.Get; property.Value.text = this.CurrentPopulation.ToReadableString("###"); }); popup.AddProperty(property => { property.Prefix.text = popup.BasePopulation.Get; property.Value.text = this.levelParameter.Population.ToReadableString("###"); }); popup.UpdateAsObservable() .SubscribeWithState(population, (_, _population) => { _population.UpdateProperty(); }) .AddTo(popup); this.AttachDetailsPopup(popup); }