/// <summary> /// Start /// </summary> private void Start() { #if UNITY_EDITOR && DEBUG if (this.stageData == null) { this.stageData = Masters.SingleStageDB.GetList()[0]; } #endif this.worldData = Masters.SingleWorldDB.FindById(this.stageData.worldId); this.stageFishDataList = Masters.SingleStageFishDB .GetList() .Where(x => x.stageId == this.stageData.id) .ToDictionary(x => x.fishId, x => x); //魚用カメラの描画範囲設定 BattleGlobal.instance.SetFishCameraViewport(); //バトル用ユーザーデータ作成 BattleGlobal.instance.userData = new SingleBattleUserData(this.stageData, UserData.Get().GetSelectedTurretData()); BattleGlobal.instance.userData.turret = this.turret; //砲台データ設定 this.turret.Init(BattleGlobal.instance.userData); //HPゲージ, FVゲージ初期値設定 this.OnHpGaugeUpdate(); //必要リソースの読み込み this.Load(); }
/// <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> /// シーンロード完了時 /// </summary> public override void OnSceneLoaded(SceneDataPackBase dataPack) { if (dataPack is ToBattleSceneDataPack) { var data = dataPack as ToBattleSceneDataPack; this.stageData = Masters.SingleStageDB.FindById(data.stageId); } }
/// <summary> /// セットアップ /// </summary> private void Setup( SimpleDialog dialog, Master.SingleStageData stageData, SinglePlayApi.ClearResponseData response, Rank clearRank, SinglePlayApi.RewardData[] rewards, AssetListLoader loader, Action onClose) { this.dialog = dialog; this.dialog.onClose = onClose; this.response = response; this.rewards = rewards; this.loader = loader; //星マーク for (int i = 0; i < this.starImage.Length; i++) { this.starImage[i].enabled = i < (int)clearRank - 2; } //通常報酬が8個以下なら if (this.rewards.Length < 9) { //非スクロールエリアに報酬アイコンを生成する this.horizontalLayoutGroup.gameObject.SetActive(true); this.scrollView.gameObject.SetActive(false); for (int i = 0; i < this.rewards.Length; i++) { var icon = Instantiate(this.rewardIconPrefab, this.horizontalLayoutGroup.transform, false); this.OnUpdateRewardIconView(icon.gameObject, i); } } //通常報酬が9個以上なら else { //スクロールエリアに報酬アイコンを生成する this.horizontalLayoutGroup.gameObject.SetActive(true); this.scrollView.gameObject.SetActive(true); this.scrollView.Initialize(this.rewardIconPrefab.gameObject, this.rewards.Length, this.OnUpdateRewardIconView); } //タイトルテキスト設定 this.dialog.titleText.text = Masters.LocalizeTextDB.Get("Result"); //ステージセレクトへ戻るボタンの追加 var button = this.dialog.AddOKButton(); button.text.text = Masters.LocalizeTextDB.Get("ToStageSelect"); button.onClick = this.OnClickOKButton; }
/// <summary> /// construct /// </summary> public SingleBattleUserData(Master.SingleStageData stageData, UserTurretData turretData) : base(turretData) { this.maxHp = this.hp = (int)stageData.userHp; this.currentBetData = new Master.BetData{ maxBet = stageData.bet, needFvPoint = stageData.needFvPoint, }; //スキル効果による開戦時FVゲージの上昇 float fvGaugeUp = this.skill.InitFvGaugeUp(); this.fvPoint += (long)(this.currentBetData.needFvPoint * fvGaugeUp); this.fvPoint = (long)Mathf.Min(this.currentBetData.needFvPoint, this.fvPoint); //Debug.LogFormat("スキル効果によりFVゲージ{0}%上昇。{1}/{2}から開始。", fvGaugeUp * 100, this.fvPoint, this.currentBetData.needFvPoint); }