共通ミッション周り修正
This commit is contained in:
parent
750b5166bc
commit
a6125c289d
|
@ -2,6 +2,7 @@ using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using I2.Loc;
|
using I2.Loc;
|
||||||
|
using MyGame.Scenes.Main.Scripts;
|
||||||
using MyGame.Scripts;
|
using MyGame.Scripts;
|
||||||
using UniRx;
|
using UniRx;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
@ -69,7 +70,7 @@ public class MissionManager : MonoBehaviour
|
||||||
|
|
||||||
// ミッション読み込み
|
// ミッション読み込み
|
||||||
var missionList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet);
|
var missionList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet);
|
||||||
GenerateNormalMission(missionList);
|
GenerateNormalMission();
|
||||||
|
|
||||||
// dailyMission
|
// dailyMission
|
||||||
// コンプリートミッション
|
// コンプリートミッション
|
||||||
|
@ -116,7 +117,7 @@ public class MissionManager : MonoBehaviour
|
||||||
foreach (var missionData in missionList.Where(data => globalGameData.dailyMissionIdArray.Contains(data.id)))
|
foreach (var missionData in missionList.Where(data => globalGameData.dailyMissionIdArray.Contains(data.id)))
|
||||||
{
|
{
|
||||||
var missionView = listView.AddItemView(missionData);
|
var missionView = listView.AddItemView(missionData);
|
||||||
var progressValue = GetDailyProgressValue(missionData);
|
var progressValue = MissionUtils.GetDailyProgressValue(missionData);
|
||||||
missionView.SetData(missionData, progressValue);
|
missionView.SetData(missionData, progressValue);
|
||||||
missionView.SetButtonActive(missionData.count <= progressValue);
|
missionView.SetButtonActive(missionData.count <= progressValue);
|
||||||
if (globalGameData.dailyMissionAchievedIdArray.Contains(missionData.id)) // 達成済み
|
if (globalGameData.dailyMissionAchievedIdArray.Contains(missionData.id)) // 達成済み
|
||||||
|
@ -157,28 +158,22 @@ public class MissionManager : MonoBehaviour
|
||||||
listView.SetIndicator(MissionCategory.Daily, dailyIndicateFlag > 0);
|
listView.SetIndicator(MissionCategory.Daily, dailyIndicateFlag > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void GenerateNormalMission(List<MissionData> missionList)
|
private void GenerateNormalMission()
|
||||||
{
|
{
|
||||||
// ミッション表示
|
// ミッション表示
|
||||||
normalIndicateFlag = 0;
|
normalIndicateFlag = 0;
|
||||||
var latestMissionList = missionList
|
var latestMissionList = MissionUtils.GetLatestNormalMissions(true);
|
||||||
.Where(data => data.Category == MissionCategory.Normal && data.shopLevel <= globalGameData.ViewedShopLevel)
|
|
||||||
.GroupBy(data => data.Condition, (cond, list) =>
|
|
||||||
{
|
|
||||||
return list.FirstOrDefault(data => !cityGameData.AchievedMission.Contains(data.id)) ?? list.Last();
|
|
||||||
});
|
|
||||||
latestMissionList = latestMissionList.Where(data => CheckAvailableMission(data, globalGameData.MyRecipes));
|
|
||||||
// 達成済み未獲得,進行中,すべて達成の順にミッションを並べ替え
|
// 達成済み未獲得,進行中,すべて達成の順にミッションを並べ替え
|
||||||
latestMissionList = latestMissionList.OrderByDescending(data => data.RewardType == MissionRewardType.ShopCustomizeCoin);
|
latestMissionList = latestMissionList.OrderByDescending(data => data.RewardType == MissionRewardType.ShopCustomizeCoin);
|
||||||
latestMissionList = latestMissionList.OrderByDescending(data => data.count <= GetProgressValue(data));
|
latestMissionList = latestMissionList.OrderByDescending(data => data.count <= MissionUtils.GetProgressValue(data));
|
||||||
latestMissionList = latestMissionList.OrderBy(data => cityGameData.AchievedMission.Contains(data.id));
|
latestMissionList = latestMissionList.OrderBy(MissionUtils.IsAchievedMission);
|
||||||
foreach (var missionData in latestMissionList)
|
foreach (var missionData in latestMissionList)
|
||||||
{
|
{
|
||||||
var missionView = listView.AddItemView(missionData);
|
var missionView = listView.AddItemView(missionData);
|
||||||
var progressValue = GetProgressValue(missionData);
|
var progressValue = MissionUtils.GetProgressValue(missionData);
|
||||||
missionView.SetData(missionData, progressValue);
|
missionView.SetData(missionData, progressValue);
|
||||||
missionView.SetButtonActive(missionData.count <= progressValue);
|
missionView.SetButtonActive(missionData.count <= progressValue);
|
||||||
if (cityGameData.AchievedMission.Contains(missionData.id)) // 達成済み
|
if (MissionUtils.IsAchievedMission(missionData)) // 達成済み
|
||||||
{
|
{
|
||||||
missionView.SetRewarded();
|
missionView.SetRewarded();
|
||||||
}
|
}
|
||||||
|
@ -195,12 +190,11 @@ public class MissionManager : MonoBehaviour
|
||||||
LocalCacheManager.Save(MissionDataTag, (missionData, new Action(() =>
|
LocalCacheManager.Save(MissionDataTag, (missionData, new Action(() =>
|
||||||
{
|
{
|
||||||
GetReward(missionData);
|
GetReward(missionData);
|
||||||
// 達成ID保存
|
AddAchievedList(missionData);
|
||||||
cityGameData.AchievedMission.Add(missionData.id);
|
|
||||||
GameDataManager.SaveGameData();
|
GameDataManager.SaveGameData();
|
||||||
listView.ResetItemList(MissionCategory.Normal);
|
listView.ResetItemList(MissionCategory.Normal);
|
||||||
// 通常ミッションリスト更新
|
// 通常ミッションリスト更新
|
||||||
GenerateNormalMission(missionList);
|
GenerateNormalMission();
|
||||||
onAchieved?.Invoke(normalIndicateFlag + dailyIndicateFlag > 0);
|
onAchieved?.Invoke(normalIndicateFlag + dailyIndicateFlag > 0);
|
||||||
})));
|
})));
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.MissionAchievement);
|
TransitionManager.Instance.LoadSceneAdditive(GameScenes.MissionAchievement);
|
||||||
|
@ -209,6 +203,8 @@ public class MissionManager : MonoBehaviour
|
||||||
listView.SetIndicator(MissionCategory.Normal, normalIndicateFlag > 0);
|
listView.SetIndicator(MissionCategory.Normal, normalIndicateFlag > 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void AddAchievedList(MissionData missionData) => (MissionUtils.IsGlobalMission(missionData) ? globalGameData : cityGameData).AchievedMission.Add(missionData.id);
|
||||||
|
|
||||||
private string GetTimeLimitText(TimeSpan limitTime)
|
private string GetTimeLimitText(TimeSpan limitTime)
|
||||||
{
|
{
|
||||||
if (limitTime.TotalSeconds < 0) limitTime = TimeSpan.Zero;
|
if (limitTime.TotalSeconds < 0) limitTime = TimeSpan.Zero;
|
||||||
|
@ -222,299 +218,6 @@ public class MissionManager : MonoBehaviour
|
||||||
TransitionManager.Instance.LoadSceneAdditive(GameScenes.Mission);
|
TransitionManager.Instance.LoadSceneAdditive(GameScenes.Mission);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static bool CheckAvailableMission(MissionData missionData, int[] myRecipe)
|
|
||||||
{
|
|
||||||
// 購入レシピなど所持判定
|
|
||||||
// ここ、今後追加メンテがだるいのでシートかScriptableObjectに逃したい
|
|
||||||
// 自動生成とか理想だけどenum不使用でもいい
|
|
||||||
switch (missionData.Condition)
|
|
||||||
{
|
|
||||||
case MissionCondition.NoriSoysourceSalesCount:
|
|
||||||
return myRecipe.Contains(20);
|
|
||||||
case MissionCondition.RareNoriSoysourceSalesCount:
|
|
||||||
return myRecipe.Contains(20);
|
|
||||||
case MissionCondition.SaltButterSalesCount:
|
|
||||||
return myRecipe.Contains(21);
|
|
||||||
case MissionCondition.RareSaltButterSalesCount:
|
|
||||||
return myRecipe.Contains(21);
|
|
||||||
case MissionCondition.StrawberryMilkSalesCount:
|
|
||||||
return myRecipe.Contains(22);
|
|
||||||
case MissionCondition.RareStrawberryMilkSalesCount:
|
|
||||||
return myRecipe.Contains(22);
|
|
||||||
case MissionCondition.SaltChocolateSalesCount:
|
|
||||||
return myRecipe.Contains(23);
|
|
||||||
case MissionCondition.RareSaltChocolateSalesCount:
|
|
||||||
return myRecipe.Contains(23);
|
|
||||||
case MissionCondition.ChocolateGreenteaSalesCount:
|
|
||||||
return myRecipe.Contains(24);
|
|
||||||
case MissionCondition.RareChocolateGreenteaSalesCount:
|
|
||||||
return myRecipe.Contains(24);
|
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int GetProgressValue(MissionData missionData)
|
|
||||||
{
|
|
||||||
var globalGameData = GameDataManager.GameData;
|
|
||||||
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
|
||||||
switch (missionData.Condition)
|
|
||||||
{
|
|
||||||
case MissionCondition.CornCount:
|
|
||||||
return cityGameData.TotalAddCornSeed;
|
|
||||||
case MissionCondition.CustomerCount: // タップor来客した数
|
|
||||||
return cityGameData.TotalCustomerCount;
|
|
||||||
case MissionCondition.SalesCount: // 売った数
|
|
||||||
return cityGameData.TotalSales;
|
|
||||||
case MissionCondition.RareSalesCount: // レアを売った数
|
|
||||||
return cityGameData.RareTotalSales;
|
|
||||||
case MissionCondition.RecipeCount: // レシピの数
|
|
||||||
return globalGameData.MyRecipes.Length;
|
|
||||||
case MissionCondition.CoinConsumeCount: // コイン消費数
|
|
||||||
return cityGameData.TotalSubCoin;
|
|
||||||
case MissionCondition.BulkOrderDeliveredCount:
|
|
||||||
return cityGameData.BulkOrderDeliveredCount;
|
|
||||||
case MissionCondition.SaltSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(1);
|
|
||||||
case MissionCondition.RareSaltSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(1);
|
|
||||||
case MissionCondition.CaramelSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(2);
|
|
||||||
case MissionCondition.RareCaramelSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(2);
|
|
||||||
case MissionCondition.PepperSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(3);
|
|
||||||
case MissionCondition.RarePepperSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(3);
|
|
||||||
case MissionCondition.HoneySalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(4);
|
|
||||||
case MissionCondition.RareHoneySalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(4);
|
|
||||||
case MissionCondition.CheeseSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(5);
|
|
||||||
case MissionCondition.RareCheeseSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(5);
|
|
||||||
case MissionCondition.SoysourceSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(6);
|
|
||||||
case MissionCondition.RareSoysourceSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(6);
|
|
||||||
case MissionCondition.StrawberrySalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(7);
|
|
||||||
case MissionCondition.RareStrawberrySalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(7);
|
|
||||||
case MissionCondition.GreenteaSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(8);
|
|
||||||
case MissionCondition.RareGreenteaSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(8);
|
|
||||||
case MissionCondition.ChocolateSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(9);
|
|
||||||
case MissionCondition.RareChocolateSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(9);
|
|
||||||
case MissionCondition.NoriSaltSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(10);
|
|
||||||
case MissionCondition.RareNoriSaltSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(10);
|
|
||||||
case MissionCondition.ButterSoysourceSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(11);
|
|
||||||
case MissionCondition.RareButterSoysourceSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(11);
|
|
||||||
case MissionCondition.PepperCheeseSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(12);
|
|
||||||
case MissionCondition.RarePepperCheeseSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(12);
|
|
||||||
case MissionCondition.SaltCaramelSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(13);
|
|
||||||
case MissionCondition.RareSaltCaramelSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(13);
|
|
||||||
case MissionCondition.NoriButterSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(14);
|
|
||||||
case MissionCondition.RareNoriButterSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(14);
|
|
||||||
case MissionCondition.MilkChocolateSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(15);
|
|
||||||
case MissionCondition.RareMilkChocolateSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(15);
|
|
||||||
case MissionCondition.CaramelCheeseSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(16);
|
|
||||||
case MissionCondition.RareCaramelCheeseSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(16);
|
|
||||||
case MissionCondition.HoneyButterSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(17);
|
|
||||||
case MissionCondition.RareHoneyButterSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(17);
|
|
||||||
case MissionCondition.GreenteaMilkSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(18);
|
|
||||||
case MissionCondition.RareGreenteaMilkSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(18);
|
|
||||||
case MissionCondition.StrawberryChocolaSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(19);
|
|
||||||
case MissionCondition.RareStrawberryChocolateSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(19);
|
|
||||||
case MissionCondition.NoriSoysourceSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(20);
|
|
||||||
case MissionCondition.RareNoriSoysourceSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(20);
|
|
||||||
case MissionCondition.SaltButterSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(21);
|
|
||||||
case MissionCondition.RareSaltButterSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(21);
|
|
||||||
case MissionCondition.StrawberryMilkSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(22);
|
|
||||||
case MissionCondition.RareStrawberryMilkSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(22);
|
|
||||||
case MissionCondition.SaltChocolateSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(23);
|
|
||||||
case MissionCondition.RareSaltChocolateSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(23);
|
|
||||||
case MissionCondition.ChocolateGreenteaSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavor(24);
|
|
||||||
case MissionCondition.RareChocolateGreenteaSalesCount:
|
|
||||||
return cityGameData.GetTotalSalesByFlavorWithRare(24);
|
|
||||||
case MissionCondition.WatchVideo:
|
|
||||||
return cityGameData.adCount;
|
|
||||||
case MissionCondition.VipCustomer:
|
|
||||||
return cityGameData.TotalVipCustomer;
|
|
||||||
case MissionCondition.UseFertilizer:
|
|
||||||
return cityGameData.TotalUseFertiliser;
|
|
||||||
case MissionCondition.UseAdWalker:
|
|
||||||
return cityGameData.TotalUseAdWalker;
|
|
||||||
case MissionCondition.UseAutoCook:
|
|
||||||
return cityGameData.TotalUseAutoCook;
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static int GetDailyProgressValue(MissionData missionData)
|
|
||||||
{
|
|
||||||
var globalGameData = GameDataManager.GameData;
|
|
||||||
switch (missionData.Condition)
|
|
||||||
{
|
|
||||||
case MissionCondition.CornCount:
|
|
||||||
return globalGameData.DailyTotalAddCornSeed;
|
|
||||||
case MissionCondition.CustomerCount: // タップor来客した数
|
|
||||||
return globalGameData.DailyTotalCustomerCount;
|
|
||||||
case MissionCondition.SalesCount: // 売った数
|
|
||||||
return globalGameData.DailyTotalSales;
|
|
||||||
case MissionCondition.RareSalesCount: // レアを売った数
|
|
||||||
return globalGameData.DailyRareTotalSales;
|
|
||||||
case MissionCondition.RecipeCount: // レシピの数
|
|
||||||
return globalGameData.DailyRecipeGetCount;
|
|
||||||
case MissionCondition.CoinConsumeCount: // コイン消費数
|
|
||||||
return globalGameData.DailyTotalSubCoin;
|
|
||||||
case MissionCondition.BulkOrderDeliveredCount:
|
|
||||||
return globalGameData.DailyBulkOrderDeliveredCount;
|
|
||||||
case MissionCondition.SaltSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(1);
|
|
||||||
case MissionCondition.RareSaltSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(1);
|
|
||||||
case MissionCondition.CaramelSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(2);
|
|
||||||
case MissionCondition.RareCaramelSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(2);
|
|
||||||
case MissionCondition.PepperSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(3);
|
|
||||||
case MissionCondition.RarePepperSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(3);
|
|
||||||
case MissionCondition.HoneySalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(4);
|
|
||||||
case MissionCondition.RareHoneySalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(4);
|
|
||||||
case MissionCondition.CheeseSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(5);
|
|
||||||
case MissionCondition.RareCheeseSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(5);
|
|
||||||
case MissionCondition.SoysourceSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(6);
|
|
||||||
case MissionCondition.RareSoysourceSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(6);
|
|
||||||
case MissionCondition.StrawberrySalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(7);
|
|
||||||
case MissionCondition.RareStrawberrySalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(7);
|
|
||||||
case MissionCondition.GreenteaSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(8);
|
|
||||||
case MissionCondition.RareGreenteaSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(8);
|
|
||||||
case MissionCondition.ChocolateSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(9);
|
|
||||||
case MissionCondition.RareChocolateSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(9);
|
|
||||||
case MissionCondition.NoriSaltSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(10);
|
|
||||||
case MissionCondition.RareNoriSaltSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(10);
|
|
||||||
case MissionCondition.ButterSoysourceSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(11);
|
|
||||||
case MissionCondition.RareButterSoysourceSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(11);
|
|
||||||
case MissionCondition.PepperCheeseSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(12);
|
|
||||||
case MissionCondition.RarePepperCheeseSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(12);
|
|
||||||
case MissionCondition.SaltCaramelSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(13);
|
|
||||||
case MissionCondition.RareSaltCaramelSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(13);
|
|
||||||
case MissionCondition.NoriButterSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(14);
|
|
||||||
case MissionCondition.RareNoriButterSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(14);
|
|
||||||
case MissionCondition.MilkChocolateSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(15);
|
|
||||||
case MissionCondition.RareMilkChocolateSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(15);
|
|
||||||
case MissionCondition.CaramelCheeseSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(16);
|
|
||||||
case MissionCondition.RareCaramelCheeseSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(16);
|
|
||||||
case MissionCondition.HoneyButterSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(17);
|
|
||||||
case MissionCondition.RareHoneyButterSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(17);
|
|
||||||
case MissionCondition.GreenteaMilkSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(18);
|
|
||||||
case MissionCondition.RareGreenteaMilkSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(18);
|
|
||||||
case MissionCondition.StrawberryChocolaSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(19);
|
|
||||||
case MissionCondition.RareStrawberryChocolateSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(19);
|
|
||||||
case MissionCondition.NoriSoysourceSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(20);
|
|
||||||
case MissionCondition.RareNoriSoysourceSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(20);
|
|
||||||
case MissionCondition.SaltButterSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(21);
|
|
||||||
case MissionCondition.RareSaltButterSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(21);
|
|
||||||
case MissionCondition.StrawberryMilkSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(22);
|
|
||||||
case MissionCondition.RareStrawberryMilkSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(22);
|
|
||||||
case MissionCondition.SaltChocolateSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(23);
|
|
||||||
case MissionCondition.RareSaltChocolateSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(23);
|
|
||||||
case MissionCondition.ChocolateGreenteaSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavor(24);
|
|
||||||
case MissionCondition.RareChocolateGreenteaSalesCount:
|
|
||||||
return globalGameData.GetDailyTotalSalesByFlavorWithRare(24);
|
|
||||||
case MissionCondition.WatchVideo:
|
|
||||||
return globalGameData.DailyWatchVideo;
|
|
||||||
case MissionCondition.VipCustomer:
|
|
||||||
return globalGameData.DailyVipCustomer;
|
|
||||||
case MissionCondition.UseFertilizer:
|
|
||||||
return globalGameData.DailyUseFertiliser;
|
|
||||||
case MissionCondition.UseAdWalker:
|
|
||||||
return globalGameData.DailyUseAdWalker;
|
|
||||||
case MissionCondition.UseAutoCook:
|
|
||||||
return globalGameData.DailyUseAutoCook;
|
|
||||||
default:
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void GetReward(MissionData missionData)
|
private void GetReward(MissionData missionData)
|
||||||
{
|
{
|
||||||
switch (missionData.RewardType)
|
switch (missionData.RewardType)
|
||||||
|
|
|
@ -0,0 +1,340 @@
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace MyGame.Scenes.Main.Scripts
|
||||||
|
{
|
||||||
|
public class MissionUtils
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 現在の進行中ミッション一覧
|
||||||
|
/// 各条件の最前の未達成のミッションのみにフィルタ
|
||||||
|
/// すべて達成した項目を残す場合 withLastAchievedを使う
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="withLastAchieved"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static IEnumerable<MissionData> GetLatestNormalMissions(bool withLastAchieved = false)
|
||||||
|
{
|
||||||
|
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||||
|
var globalGameData = GameDataManager.GameData;
|
||||||
|
return SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet)
|
||||||
|
.Where(data => data.Category == MissionCategory.Normal)
|
||||||
|
.Where(data => data.shopLevel <= cityGameData.ViewedShopLevel)
|
||||||
|
.Where(data => CheckAvailableMission(data, globalGameData.MyRecipes))
|
||||||
|
.GroupBy(data => data.Condition, (_, enumerable) =>
|
||||||
|
{
|
||||||
|
var missionData = enumerable.FirstOrDefault(data =>
|
||||||
|
!(IsGlobalMission(data) ? globalGameData : cityGameData).AchievedMission.Contains(data.id));
|
||||||
|
if (missionData is null && withLastAchieved) return enumerable.Last();
|
||||||
|
return missionData;
|
||||||
|
})
|
||||||
|
.Where(data => data is not null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool IsGlobalMission(MissionData missionData) =>
|
||||||
|
missionData.Condition switch
|
||||||
|
{
|
||||||
|
MissionCondition.RecipeCount => true,
|
||||||
|
_ => false
|
||||||
|
};
|
||||||
|
|
||||||
|
public static bool IsAchievedMission(MissionData missionData)
|
||||||
|
{
|
||||||
|
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||||
|
var globalGameData = GameDataManager.GameData;
|
||||||
|
return (IsGlobalMission(missionData) ? globalGameData : cityGameData).AchievedMission.Contains(missionData.id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool CheckAvailableMission(MissionData missionData, int[] myRecipe)
|
||||||
|
{
|
||||||
|
// 購入レシピなど所持判定
|
||||||
|
// ここ、今後追加メンテがだるいのでシートかScriptableObjectに逃したい
|
||||||
|
// 自動生成とか理想だけどenum不使用でもいい
|
||||||
|
switch (missionData.Condition)
|
||||||
|
{
|
||||||
|
case MissionCondition.NoriSoysourceSalesCount:
|
||||||
|
return myRecipe.Contains(20);
|
||||||
|
case MissionCondition.RareNoriSoysourceSalesCount:
|
||||||
|
return myRecipe.Contains(20);
|
||||||
|
case MissionCondition.SaltButterSalesCount:
|
||||||
|
return myRecipe.Contains(21);
|
||||||
|
case MissionCondition.RareSaltButterSalesCount:
|
||||||
|
return myRecipe.Contains(21);
|
||||||
|
case MissionCondition.StrawberryMilkSalesCount:
|
||||||
|
return myRecipe.Contains(22);
|
||||||
|
case MissionCondition.RareStrawberryMilkSalesCount:
|
||||||
|
return myRecipe.Contains(22);
|
||||||
|
case MissionCondition.SaltChocolateSalesCount:
|
||||||
|
return myRecipe.Contains(23);
|
||||||
|
case MissionCondition.RareSaltChocolateSalesCount:
|
||||||
|
return myRecipe.Contains(23);
|
||||||
|
case MissionCondition.ChocolateGreenteaSalesCount:
|
||||||
|
return myRecipe.Contains(24);
|
||||||
|
case MissionCondition.RareChocolateGreenteaSalesCount:
|
||||||
|
return myRecipe.Contains(24);
|
||||||
|
default:
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int GetProgressValue(MissionData missionData)
|
||||||
|
{
|
||||||
|
var globalGameData = GameDataManager.GameData;
|
||||||
|
var cityGameData = GameDataManager.GetCurrentCityGameData();
|
||||||
|
switch (missionData.Condition)
|
||||||
|
{
|
||||||
|
case MissionCondition.CornCount:
|
||||||
|
return cityGameData.TotalAddCornSeed;
|
||||||
|
case MissionCondition.CustomerCount: // タップor来客した数
|
||||||
|
return cityGameData.TotalCustomerCount;
|
||||||
|
case MissionCondition.SalesCount: // 売った数
|
||||||
|
return cityGameData.TotalSales;
|
||||||
|
case MissionCondition.RareSalesCount: // レアを売った数
|
||||||
|
return cityGameData.RareTotalSales;
|
||||||
|
case MissionCondition.RecipeCount: // レシピの数
|
||||||
|
return globalGameData.MyRecipes.Length;
|
||||||
|
case MissionCondition.CoinConsumeCount: // コイン消費数
|
||||||
|
return cityGameData.TotalSubCoin;
|
||||||
|
case MissionCondition.BulkOrderDeliveredCount:
|
||||||
|
return cityGameData.BulkOrderDeliveredCount;
|
||||||
|
case MissionCondition.SaltSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(1);
|
||||||
|
case MissionCondition.RareSaltSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(1);
|
||||||
|
case MissionCondition.CaramelSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(2);
|
||||||
|
case MissionCondition.RareCaramelSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(2);
|
||||||
|
case MissionCondition.PepperSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(3);
|
||||||
|
case MissionCondition.RarePepperSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(3);
|
||||||
|
case MissionCondition.HoneySalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(4);
|
||||||
|
case MissionCondition.RareHoneySalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(4);
|
||||||
|
case MissionCondition.CheeseSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(5);
|
||||||
|
case MissionCondition.RareCheeseSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(5);
|
||||||
|
case MissionCondition.SoysourceSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(6);
|
||||||
|
case MissionCondition.RareSoysourceSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(6);
|
||||||
|
case MissionCondition.StrawberrySalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(7);
|
||||||
|
case MissionCondition.RareStrawberrySalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(7);
|
||||||
|
case MissionCondition.GreenteaSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(8);
|
||||||
|
case MissionCondition.RareGreenteaSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(8);
|
||||||
|
case MissionCondition.ChocolateSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(9);
|
||||||
|
case MissionCondition.RareChocolateSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(9);
|
||||||
|
case MissionCondition.NoriSaltSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(10);
|
||||||
|
case MissionCondition.RareNoriSaltSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(10);
|
||||||
|
case MissionCondition.ButterSoysourceSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(11);
|
||||||
|
case MissionCondition.RareButterSoysourceSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(11);
|
||||||
|
case MissionCondition.PepperCheeseSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(12);
|
||||||
|
case MissionCondition.RarePepperCheeseSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(12);
|
||||||
|
case MissionCondition.SaltCaramelSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(13);
|
||||||
|
case MissionCondition.RareSaltCaramelSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(13);
|
||||||
|
case MissionCondition.NoriButterSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(14);
|
||||||
|
case MissionCondition.RareNoriButterSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(14);
|
||||||
|
case MissionCondition.MilkChocolateSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(15);
|
||||||
|
case MissionCondition.RareMilkChocolateSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(15);
|
||||||
|
case MissionCondition.CaramelCheeseSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(16);
|
||||||
|
case MissionCondition.RareCaramelCheeseSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(16);
|
||||||
|
case MissionCondition.HoneyButterSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(17);
|
||||||
|
case MissionCondition.RareHoneyButterSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(17);
|
||||||
|
case MissionCondition.GreenteaMilkSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(18);
|
||||||
|
case MissionCondition.RareGreenteaMilkSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(18);
|
||||||
|
case MissionCondition.StrawberryChocolaSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(19);
|
||||||
|
case MissionCondition.RareStrawberryChocolateSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(19);
|
||||||
|
case MissionCondition.NoriSoysourceSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(20);
|
||||||
|
case MissionCondition.RareNoriSoysourceSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(20);
|
||||||
|
case MissionCondition.SaltButterSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(21);
|
||||||
|
case MissionCondition.RareSaltButterSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(21);
|
||||||
|
case MissionCondition.StrawberryMilkSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(22);
|
||||||
|
case MissionCondition.RareStrawberryMilkSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(22);
|
||||||
|
case MissionCondition.SaltChocolateSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(23);
|
||||||
|
case MissionCondition.RareSaltChocolateSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(23);
|
||||||
|
case MissionCondition.ChocolateGreenteaSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavor(24);
|
||||||
|
case MissionCondition.RareChocolateGreenteaSalesCount:
|
||||||
|
return cityGameData.GetTotalSalesByFlavorWithRare(24);
|
||||||
|
case MissionCondition.WatchVideo:
|
||||||
|
return cityGameData.adCount;
|
||||||
|
case MissionCondition.VipCustomer:
|
||||||
|
return cityGameData.TotalVipCustomer;
|
||||||
|
case MissionCondition.UseFertilizer:
|
||||||
|
return cityGameData.TotalUseFertiliser;
|
||||||
|
case MissionCondition.UseAdWalker:
|
||||||
|
return cityGameData.TotalUseAdWalker;
|
||||||
|
case MissionCondition.UseAutoCook:
|
||||||
|
return cityGameData.TotalUseAutoCook;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int GetDailyProgressValue(MissionData missionData)
|
||||||
|
{
|
||||||
|
var globalGameData = GameDataManager.GameData;
|
||||||
|
switch (missionData.Condition)
|
||||||
|
{
|
||||||
|
case MissionCondition.CornCount:
|
||||||
|
return globalGameData.DailyTotalAddCornSeed;
|
||||||
|
case MissionCondition.CustomerCount: // タップor来客した数
|
||||||
|
return globalGameData.DailyTotalCustomerCount;
|
||||||
|
case MissionCondition.SalesCount: // 売った数
|
||||||
|
return globalGameData.DailyTotalSales;
|
||||||
|
case MissionCondition.RareSalesCount: // レアを売った数
|
||||||
|
return globalGameData.DailyRareTotalSales;
|
||||||
|
case MissionCondition.RecipeCount: // レシピの数
|
||||||
|
return globalGameData.DailyRecipeGetCount;
|
||||||
|
case MissionCondition.CoinConsumeCount: // コイン消費数
|
||||||
|
return globalGameData.DailyTotalSubCoin;
|
||||||
|
case MissionCondition.BulkOrderDeliveredCount:
|
||||||
|
return globalGameData.DailyBulkOrderDeliveredCount;
|
||||||
|
case MissionCondition.SaltSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(1);
|
||||||
|
case MissionCondition.RareSaltSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(1);
|
||||||
|
case MissionCondition.CaramelSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(2);
|
||||||
|
case MissionCondition.RareCaramelSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(2);
|
||||||
|
case MissionCondition.PepperSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(3);
|
||||||
|
case MissionCondition.RarePepperSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(3);
|
||||||
|
case MissionCondition.HoneySalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(4);
|
||||||
|
case MissionCondition.RareHoneySalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(4);
|
||||||
|
case MissionCondition.CheeseSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(5);
|
||||||
|
case MissionCondition.RareCheeseSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(5);
|
||||||
|
case MissionCondition.SoysourceSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(6);
|
||||||
|
case MissionCondition.RareSoysourceSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(6);
|
||||||
|
case MissionCondition.StrawberrySalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(7);
|
||||||
|
case MissionCondition.RareStrawberrySalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(7);
|
||||||
|
case MissionCondition.GreenteaSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(8);
|
||||||
|
case MissionCondition.RareGreenteaSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(8);
|
||||||
|
case MissionCondition.ChocolateSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(9);
|
||||||
|
case MissionCondition.RareChocolateSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(9);
|
||||||
|
case MissionCondition.NoriSaltSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(10);
|
||||||
|
case MissionCondition.RareNoriSaltSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(10);
|
||||||
|
case MissionCondition.ButterSoysourceSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(11);
|
||||||
|
case MissionCondition.RareButterSoysourceSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(11);
|
||||||
|
case MissionCondition.PepperCheeseSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(12);
|
||||||
|
case MissionCondition.RarePepperCheeseSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(12);
|
||||||
|
case MissionCondition.SaltCaramelSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(13);
|
||||||
|
case MissionCondition.RareSaltCaramelSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(13);
|
||||||
|
case MissionCondition.NoriButterSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(14);
|
||||||
|
case MissionCondition.RareNoriButterSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(14);
|
||||||
|
case MissionCondition.MilkChocolateSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(15);
|
||||||
|
case MissionCondition.RareMilkChocolateSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(15);
|
||||||
|
case MissionCondition.CaramelCheeseSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(16);
|
||||||
|
case MissionCondition.RareCaramelCheeseSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(16);
|
||||||
|
case MissionCondition.HoneyButterSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(17);
|
||||||
|
case MissionCondition.RareHoneyButterSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(17);
|
||||||
|
case MissionCondition.GreenteaMilkSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(18);
|
||||||
|
case MissionCondition.RareGreenteaMilkSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(18);
|
||||||
|
case MissionCondition.StrawberryChocolaSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(19);
|
||||||
|
case MissionCondition.RareStrawberryChocolateSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(19);
|
||||||
|
case MissionCondition.NoriSoysourceSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(20);
|
||||||
|
case MissionCondition.RareNoriSoysourceSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(20);
|
||||||
|
case MissionCondition.SaltButterSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(21);
|
||||||
|
case MissionCondition.RareSaltButterSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(21);
|
||||||
|
case MissionCondition.StrawberryMilkSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(22);
|
||||||
|
case MissionCondition.RareStrawberryMilkSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(22);
|
||||||
|
case MissionCondition.SaltChocolateSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(23);
|
||||||
|
case MissionCondition.RareSaltChocolateSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(23);
|
||||||
|
case MissionCondition.ChocolateGreenteaSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavor(24);
|
||||||
|
case MissionCondition.RareChocolateGreenteaSalesCount:
|
||||||
|
return globalGameData.GetDailyTotalSalesByFlavorWithRare(24);
|
||||||
|
case MissionCondition.WatchVideo:
|
||||||
|
return globalGameData.DailyWatchVideo;
|
||||||
|
case MissionCondition.VipCustomer:
|
||||||
|
return globalGameData.DailyVipCustomer;
|
||||||
|
case MissionCondition.UseFertilizer:
|
||||||
|
return globalGameData.DailyUseFertiliser;
|
||||||
|
case MissionCondition.UseAdWalker:
|
||||||
|
return globalGameData.DailyUseAdWalker;
|
||||||
|
case MissionCondition.UseAutoCook:
|
||||||
|
return globalGameData.DailyUseAutoCook;
|
||||||
|
default:
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 9ec53ae7c7694cd5b2f3d6241d23e5c1
|
||||||
|
timeCreated: 1670303820
|
|
@ -1,6 +1,7 @@
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using MyGame.Scenes.Main.Scripts;
|
||||||
using MyGame.Scripts;
|
using MyGame.Scripts;
|
||||||
using UniRx;
|
using UniRx;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
@ -33,7 +34,6 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
private GameData cityGameData;
|
private GameData cityGameData;
|
||||||
private List<MissionData> missionDataList;
|
private List<MissionData> missionDataList;
|
||||||
private List<MissionData> latestNormalMissions;
|
private List<MissionData> latestNormalMissions;
|
||||||
private List<MissionData> normalMissionList;
|
|
||||||
|
|
||||||
private static readonly MissionCondition[] StaticMissionConditions = {
|
private static readonly MissionCondition[] StaticMissionConditions = {
|
||||||
MissionCondition.UseFertilizer,
|
MissionCondition.UseFertilizer,
|
||||||
|
@ -55,7 +55,7 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
heartObserver.OnNext(GameDataUtils.GetTotalHeart());
|
heartObserver.OnNext(GameDataUtils.GetTotalHeart());
|
||||||
sceneCounter.OnNext(SceneManager.sceneCount);
|
sceneCounter.OnNext(SceneManager.sceneCount);
|
||||||
shopLevelObserver.OnNext(globalGameData.ViewedShopLevel);
|
shopLevelObserver.OnNext(globalGameData.ViewedShopLevel);
|
||||||
achievedMissionObserver.OnNext(cityGameData.AchievedMission.Count);
|
achievedMissionObserver.OnNext(globalGameData.AchievedMission.Count + cityGameData.AchievedMission.Count);
|
||||||
// addCoinObserver.OnNext(cityGameData.TotalAddCoin);
|
// addCoinObserver.OnNext(cityGameData.TotalAddCoin);
|
||||||
subCoinObserver.OnNext(cityGameData.TotalSubCoin);
|
subCoinObserver.OnNext(cityGameData.TotalSubCoin);
|
||||||
addCornObserver.OnNext(cityGameData.TotalAddCornSeed);
|
addCornObserver.OnNext(cityGameData.TotalAddCornSeed);
|
||||||
|
@ -68,7 +68,6 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
|
|
||||||
// ミッション達成チェッカー
|
// ミッション達成チェッカー
|
||||||
missionDataList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet);
|
missionDataList = SpreadsheetDataManager.Instance.GetBaseDataList<MissionData>(Const.MissionDataSheet);
|
||||||
normalMissionList = missionDataList.Where(data => data.Category == MissionCategory.Normal).ToList();
|
|
||||||
UpdateLatestNormalMissions();
|
UpdateLatestNormalMissions();
|
||||||
|
|
||||||
// 店舗レベルアップorミッション達成でリスト更新して達成チェック
|
// 店舗レベルアップorミッション達成でリスト更新して達成チェック
|
||||||
|
@ -132,7 +131,7 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
// 新ミッション登録
|
// 新ミッション登録
|
||||||
var targetList = missionDataList
|
var targetList = missionDataList
|
||||||
.Where(data => data.Category == MissionCategory.Daily && data.shopLevel <= globalGameData.ViewedShopLevel)
|
.Where(data => data.Category == MissionCategory.Daily && data.shopLevel <= globalGameData.ViewedShopLevel)
|
||||||
.Where(data => MissionManager.CheckAvailableMission(data, globalGameData.MyRecipes))
|
.Where(data => MissionUtils.CheckAvailableMission(data, globalGameData.MyRecipes))
|
||||||
.ToList();
|
.ToList();
|
||||||
var staticMissionList = targetList
|
var staticMissionList = targetList
|
||||||
.Where(data => StaticMissionConditions.Contains(data.Condition))
|
.Where(data => StaticMissionConditions.Contains(data.Condition))
|
||||||
|
@ -150,20 +149,13 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void UpdateLatestNormalMissions()
|
private void UpdateLatestNormalMissions() => latestNormalMissions = MissionUtils.GetLatestNormalMissions().ToList();
|
||||||
{
|
|
||||||
// 各条件の最前の未達成のミッションのみにフィルタ
|
|
||||||
latestNormalMissions = normalMissionList
|
|
||||||
.Where(data => data.shopLevel <= cityGameData.ViewedShopLevel)
|
|
||||||
.Where(data => !cityGameData.AchievedMission.Contains(data.id))
|
|
||||||
.GroupBy(data => data.Condition, (_, list) => list.FirstOrDefault()).ToList();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void CheckNormalMissionNewAchieved(MissionCondition condition)
|
private void CheckNormalMissionNewAchieved(MissionCondition condition)
|
||||||
{
|
{
|
||||||
if (latestNormalMissions
|
if (latestNormalMissions
|
||||||
.Where(data => data.Condition == condition)
|
.Where(data => data.Condition == condition)
|
||||||
.Any(data => data.count <= MissionManager.GetProgressValue(data)))
|
.Any(data => data.count <= MissionUtils.GetProgressValue(data)))
|
||||||
{
|
{
|
||||||
updateMissionAchieved.Value = true;
|
updateMissionAchieved.Value = true;
|
||||||
}
|
}
|
||||||
|
@ -172,7 +164,7 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
private void CheckNormalMissionNewAchieved()
|
private void CheckNormalMissionNewAchieved()
|
||||||
{
|
{
|
||||||
updateMissionAchieved.Value = latestNormalMissions
|
updateMissionAchieved.Value = latestNormalMissions
|
||||||
.Any(data => data.count <= MissionManager.GetProgressValue(data));
|
.Any(data => data.count <= MissionUtils.GetProgressValue(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckDailyMissionNewAchieved()
|
private void CheckDailyMissionNewAchieved()
|
||||||
|
@ -181,7 +173,7 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
.Except(globalGameData.dailyMissionAchievedIdArray);
|
.Except(globalGameData.dailyMissionAchievedIdArray);
|
||||||
if (missionDataList
|
if (missionDataList
|
||||||
.Where(data => ids.Contains(data.id))
|
.Where(data => ids.Contains(data.id))
|
||||||
.Any(missionData => missionData.count <= MissionManager.GetDailyProgressValue(missionData)))
|
.Any(missionData => missionData.count <= MissionUtils.GetDailyProgressValue(missionData)))
|
||||||
{
|
{
|
||||||
updateMissionAchieved.Value = true;
|
updateMissionAchieved.Value = true;
|
||||||
}
|
}
|
||||||
|
@ -196,7 +188,7 @@ public class GameDataObserver : SingletonMonoBehaviour<GameDataObserver>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void CheckMissionProgress(){
|
public void UpdateMissionProgress(){
|
||||||
updateMissionProgress.OnNext(Unit.Default);
|
updateMissionProgress.OnNext(Unit.Default);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class HeaderManager : MonoBehaviour
|
||||||
MissionManager.ShowDialog(() =>
|
MissionManager.ShowDialog(() =>
|
||||||
{
|
{
|
||||||
isOpenMission = false;
|
isOpenMission = false;
|
||||||
GameDataObserver.Instance.CheckMissionProgress();
|
GameDataObserver.Instance.UpdateMissionProgress();
|
||||||
},
|
},
|
||||||
active => missionIndicator.SetActive(active));
|
active => missionIndicator.SetActive(active));
|
||||||
}).AddTo(this);
|
}).AddTo(this);
|
||||||
|
|
Loading…
Reference in New Issue