ミッション条件追加

This commit is contained in:
kimura 2021-10-25 12:27:56 +09:00
parent 91d110fb0f
commit 83724af0e9
5 changed files with 348 additions and 6 deletions

View File

@ -81,8 +81,224 @@ public class MissionManager : MonoBehaviour
return gameData.MyRecipes.Length;
case MissionCondition.CoinConsumeCount: // コイン消費数
return gameData.TotalSubCoin;
case MissionCondition.BulkOrderDeliveredCount:
return gameData.BulkOrderDeliveredCount;
case MissionCondition.SaltSalesCount:
return gameData.GetTotalSalesByFlavor(1);
case MissionCondition.RareSaltSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(1);
case MissionCondition.CaramelSalesCount:
return gameData.GetTotalSalesByFlavor(2);
case MissionCondition.RareCaramelSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(2);
case MissionCondition.PepperSalesCount:
return gameData.GetTotalSalesByFlavor(3);
case MissionCondition.RarePepperSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(3);
case MissionCondition.HoneySalesCount:
return gameData.GetTotalSalesByFlavor(4);
case MissionCondition.RareHoneySalesCount:
return gameData.GetTotalSalesByFlavorWithRare(4);
case MissionCondition.CheeseSalesCount:
return gameData.GetTotalSalesByFlavor(5);
case MissionCondition.RareCheeseSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(5);
case MissionCondition.SoysourceSalesCount:
return gameData.GetTotalSalesByFlavor(6);
case MissionCondition.RareSoysourceSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(6);
case MissionCondition.StrawberrySalesCount:
return gameData.GetTotalSalesByFlavor(7);
case MissionCondition.RareStrawberrySalesCount:
return gameData.GetTotalSalesByFlavorWithRare(7);
case MissionCondition.GreenteaSalesCount:
return gameData.GetTotalSalesByFlavor(8);
case MissionCondition.RareGreenteaSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(8);
case MissionCondition.ChocolateSalesCount:
return gameData.GetTotalSalesByFlavor(9);
case MissionCondition.RareChocolateSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(9);
case MissionCondition.NoriSaltSalesCount:
return gameData.GetTotalSalesByFlavor(10);
case MissionCondition.RareNoriSaltSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(10);
case MissionCondition.ButterSoysourceSalesCount:
return gameData.GetTotalSalesByFlavor(11);
case MissionCondition.RareButterSoysourceSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(11);
case MissionCondition.PepperCheeseSalesCount:
return gameData.GetTotalSalesByFlavor(12);
case MissionCondition.RarePepperCheeseSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(12);
case MissionCondition.SaltCaramelSalesCount:
return gameData.GetTotalSalesByFlavor(13);
case MissionCondition.RareSaltCaramelSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(13);
case MissionCondition.NoriButterSalesCount:
return gameData.GetTotalSalesByFlavor(14);
case MissionCondition.RareNoriButterSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(14);
case MissionCondition.MilkChocolateSalesCount:
return gameData.GetTotalSalesByFlavor(15);
case MissionCondition.RareMilkChocolateSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(15);
case MissionCondition.CaramelCheeseSalesCount:
return gameData.GetTotalSalesByFlavor(16);
case MissionCondition.RareCaramelCheeseSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(16);
case MissionCondition.HoneyButterSalesCount:
return gameData.GetTotalSalesByFlavor(17);
case MissionCondition.RareHoneyButterSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(17);
case MissionCondition.GreenteaMilkSalesCount:
return gameData.GetTotalSalesByFlavor(18);
case MissionCondition.RareGreenteaMilkSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(18);
case MissionCondition.StrawberryChocolaSalesCount:
return gameData.GetTotalSalesByFlavor(19);
case MissionCondition.RareStrawberryChocolateSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(19);
case MissionCondition.NoriSoysourceSalesCount:
return gameData.GetTotalSalesByFlavor(20);
case MissionCondition.RareNoriSoysourceSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(20);
case MissionCondition.SaltButterSalesCount:
return gameData.GetTotalSalesByFlavor(21);
case MissionCondition.RareSaltButterSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(21);
case MissionCondition.StrawberryMilkSalesCount:
return gameData.GetTotalSalesByFlavor(22);
case MissionCondition.RareStrawberryMilkSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(22);
case MissionCondition.SaltChocolateSalesCount:
return gameData.GetTotalSalesByFlavor(23);
case MissionCondition.RareSaltChocolateSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(23);
case MissionCondition.ChocolateGreenteaSalesCount:
return gameData.GetTotalSalesByFlavor(24);
case MissionCondition.RareChocolateGreenteaSalesCount:
return gameData.GetTotalSalesByFlavorWithRare(24);
default:
return 0;
}
}
private int GetDailyProgressValue(MissionData missionData)
{
var gameData = GameDataManager.GameData;
switch (missionData.Condition)
{
case MissionCondition.CornCount:
return gameData.DailyTotalAddCornSeed;
case MissionCondition.CustomerCount: // タップor来客した数
return gameData.DailyTotalCustomerCount;
case MissionCondition.SalesCount: // 売った数
return gameData.DailyTotalSales;
case MissionCondition.RareSalesCount: // レアを売った数
return gameData.DailyRareTotalSales;
case MissionCondition.RecipeCount: // レシピの数
return gameData.DailyRecipeGetCount;
case MissionCondition.CoinConsumeCount: // コイン消費数
return gameData.DailyTotalSubCoin;
case MissionCondition.BulkOrderDeliveredCount:
return gameData.DailyBulkOrderDeliveredCount;
case MissionCondition.SaltSalesCount:
return gameData.GetDailyTotalSalesByFlavor(1);
case MissionCondition.RareSaltSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(1);
case MissionCondition.CaramelSalesCount:
return gameData.GetDailyTotalSalesByFlavor(2);
case MissionCondition.RareCaramelSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(2);
case MissionCondition.PepperSalesCount:
return gameData.GetDailyTotalSalesByFlavor(3);
case MissionCondition.RarePepperSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(3);
case MissionCondition.HoneySalesCount:
return gameData.GetDailyTotalSalesByFlavor(4);
case MissionCondition.RareHoneySalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(4);
case MissionCondition.CheeseSalesCount:
return gameData.GetDailyTotalSalesByFlavor(5);
case MissionCondition.RareCheeseSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(5);
case MissionCondition.SoysourceSalesCount:
return gameData.GetDailyTotalSalesByFlavor(6);
case MissionCondition.RareSoysourceSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(6);
case MissionCondition.StrawberrySalesCount:
return gameData.GetDailyTotalSalesByFlavor(7);
case MissionCondition.RareStrawberrySalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(7);
case MissionCondition.GreenteaSalesCount:
return gameData.GetDailyTotalSalesByFlavor(8);
case MissionCondition.RareGreenteaSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(8);
case MissionCondition.ChocolateSalesCount:
return gameData.GetDailyTotalSalesByFlavor(9);
case MissionCondition.RareChocolateSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(9);
case MissionCondition.NoriSaltSalesCount:
return gameData.GetDailyTotalSalesByFlavor(10);
case MissionCondition.RareNoriSaltSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(10);
case MissionCondition.ButterSoysourceSalesCount:
return gameData.GetDailyTotalSalesByFlavor(11);
case MissionCondition.RareButterSoysourceSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(11);
case MissionCondition.PepperCheeseSalesCount:
return gameData.GetDailyTotalSalesByFlavor(12);
case MissionCondition.RarePepperCheeseSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(12);
case MissionCondition.SaltCaramelSalesCount:
return gameData.GetDailyTotalSalesByFlavor(13);
case MissionCondition.RareSaltCaramelSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(13);
case MissionCondition.NoriButterSalesCount:
return gameData.GetDailyTotalSalesByFlavor(14);
case MissionCondition.RareNoriButterSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(14);
case MissionCondition.MilkChocolateSalesCount:
return gameData.GetDailyTotalSalesByFlavor(15);
case MissionCondition.RareMilkChocolateSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(15);
case MissionCondition.CaramelCheeseSalesCount:
return gameData.GetDailyTotalSalesByFlavor(16);
case MissionCondition.RareCaramelCheeseSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(16);
case MissionCondition.HoneyButterSalesCount:
return gameData.GetDailyTotalSalesByFlavor(17);
case MissionCondition.RareHoneyButterSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(17);
case MissionCondition.GreenteaMilkSalesCount:
return gameData.GetDailyTotalSalesByFlavor(18);
case MissionCondition.RareGreenteaMilkSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(18);
case MissionCondition.StrawberryChocolaSalesCount:
return gameData.GetDailyTotalSalesByFlavor(19);
case MissionCondition.RareStrawberryChocolateSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(19);
case MissionCondition.NoriSoysourceSalesCount:
return gameData.GetDailyTotalSalesByFlavor(20);
case MissionCondition.RareNoriSoysourceSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(20);
case MissionCondition.SaltButterSalesCount:
return gameData.GetDailyTotalSalesByFlavor(21);
case MissionCondition.RareSaltButterSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(21);
case MissionCondition.StrawberryMilkSalesCount:
return gameData.GetDailyTotalSalesByFlavor(22);
case MissionCondition.RareStrawberryMilkSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(22);
case MissionCondition.SaltChocolateSalesCount:
return gameData.GetDailyTotalSalesByFlavor(23);
case MissionCondition.RareSaltChocolateSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(23);
case MissionCondition.ChocolateGreenteaSalesCount:
return gameData.GetDailyTotalSalesByFlavor(24);
case MissionCondition.RareChocolateGreenteaSalesCount:
return gameData.GetDailyTotalSalesByFlavorWithRare(24);
default:
return 0;
}

View File

@ -20,6 +20,7 @@ public class MissionView : MonoBehaviour
public void SetData(MissionData missionData, int curentValue)
{
coinText.text = missionData.reward.ToString();
missionText.text = missionData.text;
progressBar.value = Mathf.InverseLerp(0, missionData.count, curentValue);
progressText.text = string.Format(progressFormat, curentValue, missionData.count);
}

View File

@ -14,6 +14,7 @@ public static class Const {
public static readonly int SpecialCategory = 9999;
public static readonly int NotSetMaterialId = 0;
public static readonly string RedColorString = "#fb6346";
public static readonly int DailyMissionResetOffset = 0;
// tag
public static readonly string GameDataTag = "GameData";

View File

@ -139,28 +139,61 @@ public sealed class GameData {
public int TotalCustomerCount { get; private set; }
[DataMember(Name = "Data1005")]
public List<ProductStockData> TotalSalesList { get; private set; }
[DataMember(Name = "Data1006")]
public int BulkOrderDeliveredCount;
public int TotalSales => TotalSalesList.Sum(data => data.Stock);
public int RareTotalSales => TotalSalesList.Where(data => data.Rarity != ProductRarity.Normal).Sum(data => data.Stock);
// daily mission
[DataMember(Name = "Data2001")]
public long lastDailyMissionSetTime = DateTime.MinValue.ToBinary();
[DataMember(Name = "Data2002")]
public int[] dailyMissionIdArray;
[DataMember(Name = "Data2003")]
public int[] dailyMissionAchievedIdArray;
[DataMember(Name = "Data2004")]
public bool dailyMissionCompleted;
// [DataMember(Name = "Data2100")]
[DataMember(Name = "Data2101")]
public int DailyTotalAddCoin { get; private set; }
[DataMember(Name = "Data2102")]
public int DailyTotalSubCoin { get; private set; }
[DataMember(Name = "Data2103")]
public int DailyTotalAddCornSeed { get; private set; }
[DataMember(Name = "Data2104")]
public int DailyTotalCustomerCount { get; private set; }
[DataMember(Name = "Data2105")]
public List<ProductStockData> DailyTotalSalesList { get; private set; }
[DataMember(Name = "Data2106")]
public int DailyRecipeGetCount;
[DataMember(Name = "Data2107")]
public int DailyBulkOrderDeliveredCount;
public int DailyTotalSales => DailyTotalSalesList.Sum(data => data.Stock);
public int DailyRareTotalSales => DailyTotalSalesList.Where(data => data.Rarity != ProductRarity.Normal).Sum(data => data.Stock);
private void ChangeCornSeed(int value)
{
if (cornSeed < value)
{
TotalAddCornSeed += value - cornSeed;
DailyTotalAddCornSeed += value - cornSeed;
}
cornSeed = value;
}
private void ChangeCoin(int value)
{
Debug.Log($"{coin} {value}");
// Debug.Log($"{coin} {value}");
if (coin < value)
{
TotalAddCoin += value - coin;
DailyTotalAddCoin += value - coin;
}
else
{
TotalSubCoin += coin - value;
DailyTotalSubCoin += coin - value;
}
coin = value;
}
@ -168,31 +201,70 @@ public sealed class GameData {
public void AddCustomerCount(int value)
{
TotalCustomerCount += value;
DailyTotalCustomerCount += value;
}
public void AddSalesCount(int id, int stock, ProductRarity rarity)
{
OrderConditionCount += stock;
if (TotalSalesList.FirstOrDefault(x => x.Rarity == rarity) is ProductStockData stockData)
if (!(TotalSalesList.FirstOrDefault(x => x.Rarity == rarity) is ProductStockData stockData))
{
stockData.Stock += stock;
stockData = new ProductStockData {FlavorId = id, Rarity = rarity, Stock = 0};
TotalSalesList.Add(stockData);
}
else
stockData.Stock += stock;
if (!(DailyTotalSalesList.FirstOrDefault(x => x.Rarity == rarity) is ProductStockData dailyStockData))
{
TotalSalesList.Add(new ProductStockData{FlavorId = id, Rarity = rarity, Stock = stock});
dailyStockData = new ProductStockData {FlavorId = id, Rarity = rarity, Stock = 0};
DailyTotalSalesList.Add(dailyStockData);
}
dailyStockData.Stock += stock;
}
public int GetTotalSalesByFlavor(int id)
{
return TotalSalesList.Where(data => data.FlavorId == id).Sum(data => data.Stock);
}
public int GetTotalSalesByFlavorWithRare(int id)
{
return TotalSalesList.Where(data => data.FlavorId == id && data.Rarity != ProductRarity.Normal).Sum(data => data.Stock);
}
public int GetDailyTotalSalesByFlavor(int id)
{
return DailyTotalSalesList.Where(data => data.FlavorId == id).Sum(data => data.Stock);
}
public int GetDailyTotalSalesByFlavorWithRare(int id)
{
return DailyTotalSalesList.Where(data => data.FlavorId == id && data.Rarity != ProductRarity.Normal).Sum(data => data.Stock);
}
public void ResetDailyTotalCount()
{
DailyTotalAddCoin = 0;
DailyTotalSubCoin = 0;
DailyTotalAddCornSeed = 0;
DailyTotalCustomerCount = 0;
DailyTotalSalesList.Clear();
DailyRecipeGetCount = 0;
DailyBulkOrderDeliveredCount = 0;
}
public void AddTastingCustomerCount(int value)
{
TastingCount += Mathf.FloorToInt(value / 2f);
}
public TimeSpan GetDailyMissionLimitTime()
{
return DateTime.FromBinary(lastDailyMissionSetTime).ToLocalTime().AddHours(Const.DailyMissionResetOffset).Date
.AddDays(1).AddHours(-Const.DailyMissionResetOffset)
.Subtract(DateTime.UtcNow.ToLocalTime());
}
// public void ChangeAvatar(AvatarData avatarData){
// newAvatarIdList.Remove(avatarData.id);
// }
@ -253,6 +325,9 @@ public sealed class GameData {
AchievedMission = achievedMission?.ToList() ?? new List<int>();
CompletedProductList = CompletedProductList ?? new List<BulkOrderResultData>();
DeliveredOrder = deliveredOrder?.ToList() ?? new List<int>();
dailyMissionIdArray = dailyMissionIdArray ?? new int[0];
dailyMissionAchievedIdArray = dailyMissionAchievedIdArray ?? new int[0];
DailyTotalSalesList = DailyTotalSalesList ?? new List<ProductStockData>();
}
private Dictionary<int, int> ArrayToDictionary(KeyValueOfintint[] array){
var dictionary = new Dictionary<int, int>();

View File

@ -55,7 +55,55 @@ public enum MissionCondition
RareSalesCount = 4,
RecipeCount = 5,
CoinConsumeCount = 6,
SaltSalesCount = 7,
BulkOrderDeliveredCount = 7,
SaltSalesCount = 8,
RareSaltSalesCount = 9,
CaramelSalesCount = 10,
RareCaramelSalesCount = 11,
PepperSalesCount = 12,
RarePepperSalesCount = 13,
HoneySalesCount = 14,
RareHoneySalesCount = 15,
CheeseSalesCount = 16,
RareCheeseSalesCount = 17,
SoysourceSalesCount = 18,
RareSoysourceSalesCount = 19,
StrawberrySalesCount = 20,
RareStrawberrySalesCount = 21,
GreenteaSalesCount = 22,
RareGreenteaSalesCount = 23,
ChocolateSalesCount = 24,
RareChocolateSalesCount = 25,
NoriSaltSalesCount = 26,
RareNoriSaltSalesCount = 27,
ButterSoysourceSalesCount = 28,
RareButterSoysourceSalesCount = 29,
PepperCheeseSalesCount = 30,
RarePepperCheeseSalesCount = 31,
SaltCaramelSalesCount = 32,
RareSaltCaramelSalesCount = 33,
NoriButterSalesCount = 34,
RareNoriButterSalesCount = 35,
MilkChocolateSalesCount = 36,
RareMilkChocolateSalesCount = 37,
CaramelCheeseSalesCount = 38,
RareCaramelCheeseSalesCount = 39,
HoneyButterSalesCount = 40,
RareHoneyButterSalesCount = 41,
GreenteaMilkSalesCount = 42,
RareGreenteaMilkSalesCount = 43,
StrawberryChocolaSalesCount = 44,
RareStrawberryChocolateSalesCount = 45,
NoriSoysourceSalesCount = 46,
RareNoriSoysourceSalesCount = 47,
SaltButterSalesCount = 48,
RareSaltButterSalesCount = 49,
StrawberryMilkSalesCount = 50,
RareStrawberryMilkSalesCount = 51,
SaltChocolateSalesCount = 52,
RareSaltChocolateSalesCount = 53,
ChocolateGreenteaSalesCount = 54,
RareChocolateGreenteaSalesCount = 55,
}
public enum MissionRewardType
@ -103,6 +151,7 @@ public sealed class MissionData
public int count;
public int rewardType;
public int reward;
public string text;
public MissionCategory Category => (MissionCategory) category;
public MissionCondition Condition => (MissionCondition) condition;
public MissionRewardType RewardType => (MissionRewardType) rewardType;