/// <summary> /// construct /// </summary> protected BattleUserData(UserTurretData turretData) { //砲台データ this.turretData = turretData; var batteryData = Masters.BatteryDB.FindById(turretData.batteryMasterId); var barrelData = Masters.BarrelDB.FindById(turretData.barrelMasterId); var bulletData = Masters.BulletDB.FindById(turretData.bulletMasterId); //砲台に付いてるギア一覧 this.gears = this.turretData.GetGearMasterIds().Select(id => Masters.GearDB.FindById(id)).ToArray(); //スキル効果追加 this.skill = new SkillGroupManager(); this.skill.AddRangeSkillGroup(gears.Select(x => x.skillGroupId)); this.skill.AddSkillGroup(bulletData.skillGroupId); //シリーズスキル効果追加 if (batteryData.seriesId == barrelData.seriesId && batteryData.seriesId == bulletData.seriesId) { var seriesData = Masters.TurretSerieseDB.FindById(batteryData.seriesId); var seriesSkillData = Masters.SerieseSkillDB.FindById(seriesData.seriesSkillId); this.skill.AddSkillGroup(seriesSkillData.skillGroupId); } //VIPスキル効果追加 this.skill.AddRangeSkillGroup(Masters.VipBenefitDB .GetList() .Where(x => x.skillGroupId > 0 && x.vipLevel <= UserData.Get().vipLevel) .Select(x => x.skillGroupId) ); }
/// <summary> /// スクロールビュー要素クリック時 /// </summary> private void OnClickScrollViewItem(CustomTurretScrollViewItem item) { this.focusedTurretData = item.turretData; this.scene.turretView.turretData.Set(this.focusedTurretData); this.scene.turretView.Reflesh(); this.scene.scrollView.UpdateElement(); this.scene.turretInfo.Reflesh(this.scene.turretView.turretData); }
/// <summary> /// まとめてセット /// </summary> public void Set(UserTurretData obj) { this.serverId = obj.serverId; this.settingNumber = obj.settingNumber; this.useFlg = obj.useFlg; this.SetBatteryServerId(obj.batteryServerId); this.SetBarrelServerId(obj.barrelServerId); this.SetBulletServerId(obj.bulletServerId); this.SetAccessoryServerId(obj.accessoryServerId); }
/// <summary> /// construct /// </summary> public MultiBattleUserData(UserTurretData turretData, long fvPoint, Master.BetData betData, MultiPlayApi.TMultiSoulBall soulBall) : base(turretData) { this.fvPoint = fvPoint; this.currentBetData = betData; if (soulBall != null) { this.ballNum = soulBall.ball % 9; this.soulNum = soulBall.soul % 9; } }
/// <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); }
/// <summary> /// 表示構築 /// </summary> public void Set(UserTurretData data, bool isEquipped, bool isSelected, Action <CustomTurretScrollViewItem> onClick) { this.turretData = data; this.turretBase.batteryKey = Masters.BatteryDB.FindById(this.turretData.batteryMasterId).key; this.turretBase.barrelKey = Masters.BarrelDB.FindById(this.turretData.barrelMasterId).key; this.turretBase.bulletKey = Masters.BulletDB.FindById(this.turretData.bulletMasterId).key; this.turretBase.Reflesh(); //装備中マークON/OFF this.equippedMark.SetActive(isEquipped); //選択中マークON/OFF this.selectedMark.SetActive(isSelected); //クリック時処理登録 this.onClick = onClick; }
/// <summary> /// Start /// </summary> public override void Start() { this.scene.plusButton.SetActive(true); if (this.focusedTurretData == null) { this.focusedTurretData = UserData.Get().turretData.First(x => x.useFlg > 0); } //砲台ビューの更新 this.scene.turretView.turretData.Set(this.focusedTurretData); this.scene.turretView.Reflesh(); //砲台情報の更新 this.scene.turretInfo.Reflesh(this.scene.turretView.turretData); //ボタンを表示 TODO.まだAPIがないので、アルファでは使用しない this.scene.partsChangeButton.gameObject.SetActive(true); this.scene.decideButton.gameObject.SetActive(true); this.scene.scrollView.Initialize( this.scene.turretScrollViewItemPrefab.gameObject, UserData.Get().turretData.Length, this.OnUpdateScrollViewItem ); int focusIndex = Array.FindIndex(UserData.Get().turretData, (x) => x.serverId == this.focusedTurretData.serverId); this.scene.scrollView.SetFocus(focusIndex); // ログイン時の、tUtilityDataのutilityId修得 this.scene.firstUtilityId = UserData.Get().tUtilityData.First(x => x.utilityType == (uint)UtilityType.MaxCannon).utilityId; this.scene.maxCannon = Masters.CannonExpansionDB.FindById(this.scene.firstUtilityId).maxPossession; this.scene.defominatorText.text = this.scene.maxCannon.ToString(); // TODO.Sceneの名前を比較してtrue、false判断 this.scene.turretInfo.SetTurretInfo(true, false, true); }
/// <summary> /// 表示更新 /// </summary> public void Reflesh(UserTurretData data) { //ゲージ最大値設定 var config = Masters.ConfigDB.FindById(1); var MAX_POWER = config.maxBulletPower; var MAX_BULLET_SPEED = config.maxBarrelSpeed; var MAX_FV_POINT_GET_VALUE = config.maxBatteryFvPoint; // マスターデータ var batteryData = Masters.BatteryDB.FindById(data.batteryMasterId); var barrelData = Masters.BarrelDB.FindById(data.barrelMasterId); var bulletData = Masters.BulletDB.FindById(data.bulletMasterId); var accessoryData = Masters.AccessoriesDB.FindById(data.accessoryMasterId); var fvAttackData = Masters.FvAttackDB.FindById(batteryData.fvAttackId); // 現在のパーツ var batteryPartsData = UserData.Get().batteryData.First(x => x.serverId == data.batteryServerId); var barrelPartsData = UserData.Get().barrelData.First(x => x.serverId == data.barrelServerId); var bulletPartsData = UserData.Get().bulletData.First(x => x.serverId == data.bulletServerId); // 装着中のギアを配列に合併 var gearDatas = batteryPartsData.gearMasterIds .Concat(barrelPartsData.gearMasterIds) .Concat(bulletPartsData.gearMasterIds) .Select(gearId => Masters.GearDB.FindById(gearId)) .ToArray(); // 能力値別に合算 var gearPower = gearDatas.Select(x => (long)x.power).Sum(); var gearSpeed = gearDatas.Select(x => (long)x.speed).Sum(); var gearFvPoint = gearDatas.Select(x => (long)x.fvPoint).Sum(); // パーツ能力値デとギア能力値を合併 uint power = bulletData.power + (uint)gearPower; uint bulletSpeed = barrelData.speed + (uint)gearSpeed; uint fvPointGetValue = batteryData.fvPoint + (uint)gearFvPoint; Debug.LogFormat("power : {0}, bulletSpeed : {1}, fvPointGetValue{2} : {2}", power, bulletSpeed, fvPointGetValue); var fvAttackIconSprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetFvAttackTypeIconSpritePath((FvAttackType)fvAttackData.type)).asset as Sprite; var batterySprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetBatterySpritePath(batteryData.key)).asset as Sprite; var barrelSprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetBarrelSpritePath(barrelData.key)).asset as Sprite; var bulletSprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetBulletThumbnailPath(bulletData.key)).asset as Sprite; var accessorySprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetAccessoryThumbnailPath(accessoryData.key)).asset as Sprite; //攻撃力ゲージ設定 //float p = (float)(power - CustomTurretScene.minBulletPower) / (MAX_POWER - CustomTurretScene.minBulletPower) + 0.2f; float p; if (power < MAX_POWER / 5) { p = 0.2f; } else { p = (float)power / MAX_POWER; } this.powerGauge.SetGaugeValue(Mathf.Clamp01(p)); this.partsPowerGauge.SetGaugeValue(Mathf.Clamp01(p)); //発射速度ゲージ設定 //p = (float)(bulletSpeed - CustomTurretScene.minBarrelSpeed) / (MAX_BULLET_SPEED - CustomTurretScene.minBarrelSpeed) + 0.2f; if (bulletSpeed < MAX_BULLET_SPEED / 5) { p = 0.2f; } else { p = (float)bulletSpeed / MAX_BULLET_SPEED; } this.bulletSpeedGauge.SetGaugeValue(Mathf.Clamp01(p)); this.partsBulletSpeedGauge.SetGaugeValue(Mathf.Clamp01(p)); //FVポイント獲得値ゲージ設定 //p = (float)(fvPointGetValue - CustomTurretScene.minBatteryFvPoint) / (MAX_FV_POINT_GET_VALUE - CustomTurretScene.minBatteryFvPoint) + 0.2f; if (fvPointGetValue < MAX_FV_POINT_GET_VALUE / 5) { p = 0.2f; } else { p = (float)fvPointGetValue / MAX_FV_POINT_GET_VALUE; } this.fvPointGetValueGauge.SetGaugeValue(Mathf.Clamp01(p)); this.partsfvPointGetCalueGauge.SetGaugeValue(Mathf.Clamp01(p)); //パーツページのFVアタック名、アイコン画像、説明文設定 this.partsViewFvAttackNameText.text = fvAttackData.name; this.partsViewFvAttackIconImage.sprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetFvAttackTypeIconSpritePath((FvAttackType)fvAttackData.type)).asset as Sprite; this.partsViewFvAttackDescriptionText.text = fvAttackData.description; //砲台ページのFVアタック名、アイコン画像、説明文設定 this.turretViewFvAttackNameText.text = fvAttackData.name; this.turretViewFvAttackIconImage.sprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetFvAttackTypeIconSpritePath((FvAttackType)fvAttackData.type)).asset as Sprite; this.turretViewFvAttackDescriptionText.text = fvAttackData.description; //セットスキル発動 if (batteryData.seriesId == barrelData.seriesId && batteryData.seriesId == bulletData.seriesId) { var seriesData = Masters.TurretSerieseDB.FindById(batteryData.seriesId); var seriesSkillData = Masters.SerieseSkillDB.FindById(seriesData.seriesSkillId); //パーツページのセットスキル名、説明文、アイコン画像設定 this.partsViewSetSkillIconImage.enabled = true; this.partsViewSetSkillIconImage.sprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetSeriesSkillIconSpritePath(seriesSkillData.key)).asset as Sprite; this.partsViewSetSkillNameText.text = seriesSkillData.name; this.partsViewSetSkillDescriptionText.text = seriesSkillData.description; //砲台ページのセットスキル名、説明文、アイコン画像設定 this.turretViewSetSkillIconImage.enabled = true; this.turretViewSetSkillIconImage.sprite = AssetManager.FindHandle <Sprite>(SharkDefine.GetSeriesSkillIconSpritePath(seriesSkillData.key)).asset as Sprite; this.turretViewSetSkillNameText.text = seriesSkillData.name; this.turretViewSetSkillDescriptionText.text = seriesSkillData.description; } //セットスキル不発 else { //パーツページのセットスキル名、説明文、アイコン画像非表示 this.partsViewSetSkillIconImage.enabled = false; this.partsViewSetSkillNameText.text = null; this.partsViewSetSkillDescriptionText.text = null; //砲台ページのセットスキル名、説明文、アイコン画像非表示 this.turretViewSetSkillIconImage.enabled = false; this.turretViewSetSkillNameText.text = null; this.turretViewSetSkillDescriptionText.text = null; } //パーツページ台座アイコン this.partsViewBatteryIcon.SetIconSprite(batterySprite); this.partsViewBatteryIcon.SetRank((Rank)batteryData.rarity); this.partsViewBatteryIcon.SetGearSlot(batteryPartsData); //パーツページ砲身アイコン this.partsViewBarrelIcon.SetIconSprite(barrelSprite); this.partsViewBarrelIcon.SetRank((Rank)barrelData.rarity); this.partsViewBarrelIcon.SetGearSlot(barrelPartsData); //パーツページ砲弾アイコン this.partsViewBulletIcon.SetIconSprite(bulletSprite); this.partsViewBulletIcon.SetRank((Rank)bulletData.rarity); this.partsViewBulletIcon.SetGearSlot(bulletPartsData); //パーツページアクセサリアイコン this.partsViewAccessoryIcon.SetIconSprite(accessorySprite); this.partsViewAccessoryIcon.SetRank((Rank)accessoryData.rarity); //砲台ページ台座アイコン this.turretViewBatteryIcon.SetIconSprite(batterySprite); this.turretViewBatteryIcon.SetRank((Rank)batteryData.rarity); this.turretViewBatteryIcon.SetGearSlot(batteryPartsData); //砲台ページ砲身アイコン this.turretViewBarrelIcon.SetIconSprite(barrelSprite); this.turretViewBarrelIcon.SetRank((Rank)barrelData.rarity); this.turretViewBarrelIcon.SetGearSlot(barrelPartsData); //砲台ページ砲弾アイコン this.turretViewBulletIcon.SetIconSprite(bulletSprite); this.turretViewBulletIcon.SetRank((Rank)bulletData.rarity); this.turretViewBulletIcon.SetGearSlot(bulletPartsData); //砲台ページアクセサリアイコン this.turretViewAccessoryIcon.SetIconSprite(accessorySprite); this.turretViewAccessoryIcon.SetRank((Rank)accessoryData.rarity); }