/// <summary> /// 開く /// </summary> public static void Open(PresentBoxDialogContent prefab, Action <PresentBoxDialogContent> onClose) { //BOX内リスト確認通信 PresentApi.CallListApi((response) => { //ローダー準備 var loader = new AssetListLoader(response.tPresentBox .Concat(response.tPresentBoxLimited) .Concat(response.tPresentBoxReceived) .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId)) .Where(x => !x.IsCommonSprite()) .Select(x => new AssetLoader <Sprite>(x.GetSpritePath()))); //ロード中はタッチブロック SharedUI.Instance.DisableTouch(); //ロード loader.Load(() => { //タッチブロック解除 SharedUI.Instance.EnableTouch(); //ダイアログ表示 var dialog = SharedUI.Instance.ShowSimpleDialog(); dialog.titleText.text = Masters.LocalizeTextDB.Get("PresentBoxTitle"); dialog.closeButtonEnabled = true; var content = dialog.AddContent(prefab); content.Setup(response, loader); content.onClose = onClose; }); }); }
/// <summary> /// リロード /// </summary> private void Reload() { //BOX内リスト確認通信 PresentApi.CallListApi((response) => { //追加ローダー準備 var addLoader = new AssetListLoader(response.tPresentBox .Concat(response.tPresentBoxLimited) .Concat(response.tPresentBoxReceived) .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId)) .Where(x1 => !x1.IsCommonSprite() && !this.loader.Exists(x2 => x2.path == x1.GetSpritePath())) .Select(x => new AssetLoader <Sprite>(x.GetSpritePath()))); //ロード中はタッチブロック SharedUI.Instance.DisableTouch(); //ロード addLoader.Load(() => { //タッチブロック解除 SharedUI.Instance.EnableTouch(); //ローダー統合 this.loader.AddRange(addLoader); //再セットアップ this.Setup(response, this.loader); //必要ならVIPレベルアップ表示 UIVipLevelUp.OpenIfNeed(this.vipLevelUpPrefab); }); }); }
/// <summary> /// ショップ開く /// </summary> public static void Open(MultiBattleShop prefab) { //通信で商品リスト取得 BillingApi.CallListApi(() => { ShopApi.CallNowShopApi((tShops) => { //ローダー準備 var loader = new AssetListLoader(Masters.ShopDB .GetList() .Where(x => x.multiFlg > 0) .SelectMany(x1 => Masters.ShopItemDB.GetList().FindAll(x2 => x2.shopItemId == x1.shopItemId)) .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId)) .Where(x => !x.IsCommonSprite()) .Select(x => new AssetLoader <Sprite>(x.GetSpritePath()))); //ロード中タッチブロック SharedUI.Instance.DisableTouch(); //リソースロード loader.Load(() => { //タッチブロック解除 SharedUI.Instance.EnableTouch(); //ショップダイアログ生成 var dialog = SharedUI.Instance.ShowPopup(prefab); dialog.loader = loader; dialog.Setup(tShops); }); }); }); }
/// <summary> /// 分解リストスクロールビューアイテムセット /// </summary> public void Set(uint itemType, uint itemId, uint itemNum) { var itemInfo = CommonIconUtility.GetItemInfo(itemType, itemId); this.commonIcon.Set(itemInfo, false); this.commonIcon.SetCountText(itemNum); }
/// <summary> /// 開く /// </summary> public static void Open( SingleBattleResultPopupContent prefab, Master.SingleStageData stageData, SinglePlayApi.ClearResponseData response, Rank clearRank, Action onClose) { //報酬 var rewards = response.firstReward.Concat(response.normalReward).ToArray(); //ローダー準備 var loader = new AssetListLoader(rewards .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId)) .Where(x => !x.IsCommonSprite()) .Select(x => new AssetLoader <Sprite>(x.GetSpritePath()))); //ロード中はタッチブロック SharedUI.Instance.DisableTouch(); //ロード loader.Load(() => { //タッチブロック解除 SharedUI.Instance.EnableTouch(); //ダイアログ開く var dialog = SharedUI.Instance.ShowSimpleDialog(); var content = dialog.AddContent(prefab); content.Setup(dialog, stageData, response, clearRank, rewards, loader, onClose); }); }
/// <summary> /// vip詳細開く /// </summary> public static void Open(VipInfoDialog prefab) { // 通信で、vipLevel, 補償取得の可否取得 VipApi.CallVipLevelApi((response) => { var loader = new AssetListLoader(Masters.VipRewardDB .GetList() .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId)) .Where(x => !x.IsCommonSprite()) .Select(x => new AssetLoader <Sprite>(x.GetSpritePath())) ); // タッチブロック SharedUI.Instance.DisableTouch(); // 読み込み開始 loader.Load(() => { //タッチブロック解除 SharedUI.Instance.EnableTouch(); // ロード後 var dialog = SharedUI.Instance.ShowSimpleDialog(); dialog.closeButtonEnabled = true; dialog.titleText.text = Masters.LocalizeTextDB.Get("VipInfoTitle"); var content = dialog.AddContent(prefab); content.assetLoader = loader; content.Set(response); }); }); }
/// <summary> /// 必要リソースの読み込み /// </summary> private void Load(Action onCompleted) { var items = Masters.ShopGroupDB .GetList() .SelectMany(x1 => Masters.ShopDB.GetList().FindAll(x2 => x2.shopGroupId == x1.id)) .SelectMany(x1 => Masters.ShopItemDB.GetList().FindAll(x2 => x2.shopItemId == x1.shopItemId)) .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId)) .Concat(Masters.BillingGroupDB .GetList() .SelectMany(x1 => Masters.BillingDB.GetList().FindAll(x2 => x2.billingGroupId == x1.id)) .SelectMany(x1 => Masters.BillingItemDB.GetList().FindAll(x2 => x2.billingItemId == x1.billingItemId)) .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId))) .Where(x => !x.IsCommonSprite()) .ToArray(); foreach (var item in items) { if (item is Master.CannonSetData) { var cannonSet = item as Master.CannonSetData; var batteryData = Masters.BatteryDB.FindById(cannonSet.batteryId); var barrelData = Masters.BarrelDB.FindById(cannonSet.barrelId); var bulletData = Masters.BulletDB.FindById(cannonSet.bulletId); var fvaData = Masters.FvAttackDB.FindById(batteryData.fvAttackId); //砲台サムネロード this.assetLoader.Add <Sprite>(SharkDefine.GetTurretSetSpritePath(batteryData.key)); //砲台パーツスプライトロード this.assetLoader.Add <Sprite>(SharkDefine.GetBatterySpritePath(batteryData.key)); this.assetLoader.Add <Sprite>(SharkDefine.GetBarrelSpritePath(barrelData.key)); this.assetLoader.Add <Sprite>(SharkDefine.GetBulletThumbnailPath(bulletData.key)); //砲台パーツプレハブロード this.assetLoader.Add <GameObject>(SharkDefine.GetBatteryPrefabPath(batteryData.key)); this.assetLoader.Add <GameObject>(SharkDefine.GetBarrelPrefabPath(barrelData.key)); this.assetLoader.Add <BulletBase>(SharkDefine.GetBulletPrefabPath(bulletData.key)); //FVAアイコンスプライトロード this.assetLoader.Add <Sprite>(SharkDefine.GetFvAttackTypeIconSpritePath((FvAttackType)fvaData.type)); //シリーズスキルスプライトロード if (batteryData.seriesId == barrelData.seriesId && batteryData.seriesId == bulletData.seriesId) { var serieseData = Masters.TurretSerieseDB.FindById(batteryData.seriesId); var serieseSkillData = Masters.SerieseSkillDB.FindById(serieseData.seriesSkillId); this.assetLoader.Add <Sprite>(SharkDefine.GetSeriesSkillIconSpritePath(serieseSkillData.key)); } } else { var spritePath = item.GetSpritePath(); this.assetLoader.Add <Sprite>(spritePath); } } //読み込み開始 this.assetLoader.Load(onCompleted); }
/// <summary> /// 表示構築 /// </summary> public void BuildView(TPresentBox server, Action <PresentBoxItem> onClickReceiveButton) { this.server = server; this.onClickReceiveButton = onClickReceiveButton; var limitedData = this.server as TPresentBoxLimited; var itemInfo = CommonIconUtility.GetItemInfo(this.server.itemType, this.server.itemId); //CommonIcon表示構築 this.icon.Set(itemInfo, false); //アイテム数表示 if (this.server.itemNum > 1) { this.icon.SetCountText(this.server.itemNum); } else { this.icon.countText.text = null; } //名前テキスト設定 this.nameText.text = itemInfo.GetName(); //メッセージテキスト設定 this.messageText.text = Masters.MessageDB.FindById(this.server.messageId).messageText; //有期限プレゼントなら if (limitedData != null && limitedData.limitDate.HasValue) { //有期限オブジェクト表示ON this.limitedDateContent.SetActive(true); //残り時間表示 var span = limitedData.limitDate.Value - DateTime.Now; this.limitedDateText.text = (span.Days > 0) ? Masters.LocalizeTextDB.GetFormat("ReceiveLimitedToDay", span.Days) : (span.Hours > 0) ? Masters.LocalizeTextDB.GetFormat("ReceiveLimitedToHour", span.Hours) : (span.Minutes > 0) ? Masters.LocalizeTextDB.GetFormat("ReceiveLimitedToMinites", span.Minutes) : Masters.LocalizeTextDB.GetFormat("ReceiveLimitedToMinites", 0); } //無期限プレゼントなら else { this.limitedDateContent.SetActive(false); } if (this.server.created_at == null) { //生成日付がnullだったらエラー回避のため今の時間を入れておく this.server.created_at = DateTime.Now; } //生成日付表示 this.createDateText.text = this.server.created_at.Value.ToString(); //受け取り済みプレゼントじゃなければ受け取りボタンを表示 this.receiveButton.gameObject.SetActive(!(this.server is TPresentBoxReceived) && this.onClickReceiveButton != null); }
/// <summary> /// 表示構築 /// </summary> public void BuildView(ProductBase product) { this.Initialize(); //長押し時コールバック this.onLongPress = () => { this.infoDialogData.OpenDialog(product); }; //CommonIcon表示構築 this.commonIcon.Set(product.addItems[0].itemType, product.addItems[0].itemId, false); //CommonIconのフレームと背景表示切り替え this.commonIcon.SetFrameVisible(product.isVisibleProductIconFrame); //CommonIconのサイズ変更 this.commonIcon.rectTransform.sizeDelta = product.iconSize; //CommonIconに対する追加処理 product.SetCommonIcon(this.commonIcon); //商品名 this.productNameText.text = product.productName; //値段テキスト string priceText = product.price.ToString("#,0"); if (product is ProductBilling) { //一次通貨で購入する場合は¥マーク表示になるので、支払いアイコンは非表示 this.paymentItemIconImage.gameObject.SetActive(false); //値段テキスト priceText = Masters.LocalizeTextDB.GetFormat("Price", priceText); } else { var payInfo = CommonIconUtility.GetItemInfo((uint)product.payType, 0); if (payInfo.IsCommonSprite()) { //支払いアイコン設定 this.paymentItemIconImage.gameObject.SetActive(true); this.paymentItemIconImage.sprite = SharedUI.Instance.commonAtlas.GetSprite(payInfo.GetSpritePath()); } } //値段テキスト this.priceText.text = priceText; //残り購入回数表示 this.SetPurchasesCountText(product.remainCount); //おすすめの設定 (α版では表示したくないとのこと) this.recommendContent.SetActive(false);//(product.Recommended > 0); }
/// <summary> /// 表示構築 /// </summary> public void BuildView(MissionContent content) { var rewardData = Masters.MissionRewardDB.FindById(content.server.missionRewardId); var rewardItemInfo = CommonIconUtility.GetItemInfo(rewardData.itemType, rewardData.itemId); //アイコンイメージ設定 this.iconImage.sprite = content.iconImage.sprite; //報酬名 this.itemNameText.text = string.Format("{0}×{1:#,0}", rewardItemInfo.GetName(), rewardData.itemNum); //報酬説明文 this.itemDescriptionText.text = rewardItemInfo.GetDescription(); }
/// <summary> /// 開く /// </summary> public static void Open(MultiPlayApi.LogData logData, UILevelUp prefab, RectTransform parent, Action onClose) { //API実行 MultiPlayApi.CallLevelUpApi(logData, (response) => { //レベルアップ前後の値 //uint beforeLevel = UserData.Get().lv; uint afterLevel = response.tUsers.level; UserData.Get().lv = afterLevel; //ローダー var loader = new AssetListLoader(); if (response.mLevelReward != null) { //汎用スプライトじゃなければローダーに積む loader.AddRange(response.mLevelReward .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId)) .Where(x => !x.IsCommonSprite()) .Select(x => new AssetLoader <Sprite>(x.GetSpritePath()))); //報酬付与 foreach (var reward in response.mLevelReward) { UserData.Get().AddItem((ItemType)reward.itemType, reward.itemId, reward.itemNum); } } //ロード中のタッチブロック SharedUI.Instance.DisableTouch(); //ロード開始 loader.Load(() => { //タッチブロック解除 SharedUI.Instance.EnableTouch(); //レベルアップダイアログ開く var dialog = Instantiate(prefab, parent, false); dialog.Setup(response, loader, onClose); }); }); }
/// <summary> /// 表示構築 /// </summary> public void BuildView( MissionApi.MissionProgress server, Action <MissionContent> onClickChallengeButton, Action <MissionContent> onClickReceiveButton) { this.server = server; this.onClickChallengeButton = onClickChallengeButton; this.onClickReceiveButton = onClickReceiveButton; var rewardData = Masters.MissionRewardDB.FindById(this.server.missionRewardId); var rewardItemInfo = CommonIconUtility.GetItemInfo(rewardData.itemType, rewardData.itemId); //ミッション名 this.missionNameText.text = Masters.MissionTypeDB.FindById(this.server.missionTypeId).missionName; switch (this.server.missionTypeId) { //シングルモードステージ△△を〇〇回クリアする case (uint)Master.MissionData.MainType.SingleSelectStageClear: var stageName = Masters.SingleStageDB.FindById(this.server.missionTypeSubId.Value).name; this.missionNameText.text = string.Format(this.missionNameText.text, this.server.clearCondition, stageName); break; //マルチモードでバトルアイテム△△を〇〇個使用する case (uint)Master.MissionData.MainType.MultiConsumSelectItem: var itemName = Masters.BattleItemDB.FindById(this.server.missionTypeSubId.Value).name; this.missionNameText.text = string.Format(this.missionNameText.text, this.server.clearCondition, itemName); break; //マルチモードで特定の魚△△を〇〇匹捕まえる case (uint)Master.MissionData.MainType.MultiCatchSelectFish: var fishName = Masters.FishDB.FindById(this.server.missionTypeSubId.Value).name; this.missionNameText.text = string.Format(this.missionNameText.text, this.server.clearCondition, fishName); break; default: this.missionNameText.text = string.Format(this.missionNameText.text, this.server.clearCondition); break; } //アイコンイメージ this.iconImage.sprite = this.itemTypeToIconSprites.First(x => (uint)x.itemType == rewardData.itemType).sprite; //アイテム名テキスト this.itemNameText.text = rewardItemInfo.GetName(); //アイテム個数テキスト this.itemCountText.text = rewardData.itemNum.ToString("#,0"); //通算ミッション以外は期限表示有り this.limitDateContent.SetActive(this.server.category != MissionApi.Category.Total); if (this.limitDateContent.activeSelf) { //残り時間表示 var span = TimeSpan.FromSeconds(this.server.endTime ?? 0); this.limitDateText.text = (span.Days > 0) ? Masters.LocalizeTextDB.GetFormat("ReceiveLimitedToDay", span.Days) : (span.Hours > 0) ? Masters.LocalizeTextDB.GetFormat("ReceiveLimitedToHour", span.Hours) : Masters.LocalizeTextDB.GetFormat("ReceiveLimitedToMinites", span.Minutes); } //進捗ゲージ表示 if (this.server.status == MissionApi.Status.NotClear) { this.progressText.text = string.Format("{0}/{1}", this.server.missionCount, this.server.clearCondition); this.progressBarImage.color = Color.blue; this.progressBarImage.fillAmount = (float)this.server.missionCount / this.server.clearCondition; } else { this.progressText.text = Masters.LocalizeTextDB.Get("MissionAchieved"); this.progressBarImage.color = Color.red; this.progressBarImage.fillAmount = 1.0f; } //挑戦ボタンの表示切り替え this.challengeButton.gameObject.SetActive(this.server.status == MissionApi.Status.NotClear); //受け取りボタンの表示切り替え this.receiveButton.gameObject.SetActive(this.server.status == MissionApi.Status.ClearNotReceived); //受け取り済みテキストの表示切り替え this.receivedText.gameObject.SetActive(this.server.status == MissionApi.Status.ClearReceived); }
/// <summary> /// 報酬情報の設定 /// </summary> public void SetInfo(uint itemType, uint itemId, uint itemNum) { var itemInfo = CommonIconUtility.GetItemInfo(itemType, itemId); bool isCannon = true; var config = Masters.ConfigDB.FindById(1); switch ((ItemType)itemType) { case ItemType.CannonSet: var cannonSet = itemInfo as Master.CannonSetData; Master.BatteryData batteryData = Masters.BatteryDB.FindById(cannonSet.batteryId); Master.BarrelData barrelData = Masters.BarrelDB.FindById(cannonSet.barrelId); Master.BulletData bulletData = Masters.BulletDB.FindById(cannonSet.bulletId); Master.TurretSerieseData cannonSeries = Masters.TurretSerieseDB.FindById(batteryData.seriesId); this.nameText.text = cannonSeries.name; // ゲージセット SetStatusGauge( itemType, bulletData.power, config.maxBulletPower, barrelData.speed, config.maxBarrelSpeed, batteryData.fvPoint, config.maxBatteryFvPoint); isCannon = true; break; case ItemType.Gear: nameText.text = itemInfo.GetName(); // ゲージセット var gear = itemInfo as Master.GearData; SetStatusGauge( itemType, gear.power, config.maxGearPower, gear.speed, config.maxGearSpeed, gear.fvPoint, config.maxGearFvPoint); isCannon = true; break; case ItemType.BattleItem: this.nameText.text = itemInfo.GetName() + string.Format("×{0}", itemNum); isCannon = false; break; case ItemType.FreeGem: this.nameText.text = Masters.LocalizeTextDB.GetFormat("UnitGem", itemNum); isCannon = false; break; case ItemType.Coin: this.nameText.text = Masters.LocalizeTextDB.GetFormat("UnitCoin", itemNum); isCannon = false; break; default: Debug.LogError("到達報酬に想定外のItemTypeが指定されています ItemType = " + (ItemType)itemType); return; } this.commonIcon.Set(itemInfo, false); //砲台系のコンテンツの表示・非表示切り替え cannonContent.SetActive(isCannon); }
/// <summary> /// セット /// </summary> public void Set(uint itemType, uint itemId, bool setLongPress) { var itemInfo = CommonIconUtility.GetItemInfo(itemType, itemId); this.Set(itemInfo, setLongPress); }
/// <summary> /// 開く /// </summary> public static void Open( SingleStageChallengeConfirmDialogContent prefab, Master.SingleStageData stageData, Rank rank, Action <uint> onStageStart) { bool isCleared = rank > Rank.None; //報酬リスト List <RewardData> rewards = new List <RewardData>(); //このステージで入手可能な報酬一覧 var lotDatas = Masters.SingleStageRewardDB .GetList() .Where(x => x.groupId == stageData.rewardGroupId) .SelectMany(x1 => Masters.SingleStageRewardLotDB.GetList().FindAll(x2 => x2.lotGroupId == x1.lotGroupId)) .ToArray(); foreach (var data in lotDatas) { if (!rewards.Exists(x => x.itemType == data.itemType && x.itemId == data.itemId)) { rewards.Add(new RewardData { itemType = data.itemType, itemId = data.itemId, itemNum = data.itemNum }); } } //初回報酬 var firstReward = Masters.SingleStageFirstRewardDB .GetList() .Where(x => x.groupId == stageData.rewardFirstGroupId) .Select(x => new RewardData { itemType = x.itemType, itemId = x.itemId, itemNum = x.amount, isFirstReward = true }); if (isCleared) { //初回報酬入手済みなら末尾に追加 rewards.AddRange(firstReward); } else { //初回報酬未入手なら先頭に追加 rewards.InsertRange(0, firstReward); } //ローダー準備 var loader = new AssetListLoader(rewards .Select(x => CommonIconUtility.GetItemInfo(x.itemType, x.itemId)) .Where(x => !x.IsCommonSprite()) .Select(x => new AssetLoader <Sprite>(x.GetSpritePath()))); //ロード中はタッチブロック SharedUI.Instance.DisableTouch(); //ロード loader.Load(() => { //タッチブロック解除 SharedUI.Instance.EnableTouch(); //ダイアログ開く var dialog = SharedUI.Instance.ShowSimpleDialog(); var content = dialog.AddContent(prefab); content.Set(dialog, stageData, rank, rewards, loader, onStageStart); }); }
/// <summary> /// 内容構築 /// </summary> public override void Setup(ProductBase product) { var itemInfo = CommonIconUtility.GetItemInfo(product.addItems[0].itemType, product.addItems[0].itemId); this.Setup(itemInfo); }