Ejemplo n.º 1
0
    /// <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);
            });
        }
Ejemplo n.º 3
0
 /// <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;
        }
Ejemplo n.º 5
0
    /// <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);
    }