RandomGFGoStop/Assets/Scripts/Utilities/Utility.cs

395 lines
16 KiB
C#
Raw Blame History

namespace CodeJay
{
namespace CodeJayUtility
{
using CodeJay.Enum;
using System.Collections.Generic;
public static class Utility
{
public static bool IsSameMonthCard(ECardType first, ECardType second)
{
int firstNum = (int)first / 4;
int secondNum = (int)second / 4;
return firstNum == secondNum;
}
public static bool IsSameScoreType(ECardType a, ECardType b)
{
return Converter.CardTypeToScoreType(a) == Converter.CardTypeToScoreType(b);
}
public static bool IsSameMonthType(ECardType type1, ECardType type2)
{
return Converter.CardTypeToMonthType(type1) == Converter.CardTypeToMonthType(type2);
}
public static List<ECombinationType> GetCombinationTypes(ref List<ECardType> lst)
{
List<ECombinationType> result = new List<ECombinationType>();
HashSet<ECardType> hongdan = new HashSet<ECardType> { ECardType.Jan_Hongdan, ECardType.Feb_Hongdan, ECardType.Mar_Hongdan };
HashSet<ECardType> chungdan = new HashSet<ECardType> { ECardType.Jun_Chungdan, ECardType.Oct_Chungdan, ECardType.Sep_Chungdan };
HashSet<ECardType> chodan = new HashSet<ECardType> { ECardType.Apr_Chodan, ECardType.Jul_Chodan, ECardType.May_Chodan };
HashSet<ECardType> godori = new HashSet<ECardType> { ECardType.Feb_Bird, ECardType.Apr_Bird, ECardType.Aug_Bird };
if (hongdan.IsSubsetOf(lst))
result.Add(ECombinationType.Hongdan);
if (chungdan.IsSubsetOf(lst))
result.Add(ECombinationType.Chungdan);
if (chodan.IsSubsetOf(lst))
result.Add(ECombinationType.Chodan);
if (godori.IsSubsetOf(lst))
result.Add(ECombinationType.Godori);
int ghwangCount = 0;
bool hasNovGhwang = false;
// <20>ŰԺ<C5B0><D4BA><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ī<><C4AB><20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ȯ<EFBFBD>ؾ<EFBFBD><D8BE><EFBFBD>.
for (int i = 0; i < lst.Count; i++)
{
if (lst[i] == ECardType.Nov_Ghwang)
{
hasNovGhwang = true;
}
if (lst[i] == ECardType.Jan_Ghwang || lst[i] == ECardType.Mar_Ghwang ||
lst[i] == ECardType.Aug_Ghwang || lst[i] == ECardType.Nov_Ghwang ||
lst[i] == ECardType.Dec_Ghwang)
{
ghwangCount++;
}
}
if (hasNovGhwang)
{
if (ghwangCount == 3)
result.Add(ECombinationType.Be_Three_Ghwang);
else if (ghwangCount == 4)
result.Add(ECombinationType.Four_Ghwang);
else if (ghwangCount == 5)
result.Add(ECombinationType.Five_Ghwang);
}
else
{
if (ghwangCount == 3)
result.Add(ECombinationType.Three_Ghwang);
else if (ghwangCount == 4)
result.Add(ECombinationType.Four_Ghwang);
}
return result;
}
public static int GetCombinationScore(ECombinationType type)
{
switch (type)
{
case ECombinationType.Hongdan:
return 3;
case ECombinationType.Chungdan:
return 3;
case ECombinationType.Chodan:
return 3;
case ECombinationType.Godori:
return 5;
case ECombinationType.Be_Three_Ghwang:
return 2;
case ECombinationType.Three_Ghwang:
return 3;
case ECombinationType.Four_Ghwang:
return 4;
case ECombinationType.Five_Ghwang:
return 15;
default:
return 0;
}
}
public static int GetScoreMultiplyValue(EScoreMutiplyType type)
{
switch (type)
{
case EScoreMutiplyType.Go:
return 2;
case EScoreMutiplyType.Gobak:
return 2;
case EScoreMutiplyType.Peebak:
return 2;
case EScoreMutiplyType.Gwhangbak:
return 2;
case EScoreMutiplyType.Shake:
return 2;
case EScoreMutiplyType.Nagari:
return 2;
case EScoreMutiplyType.ClickedFromResultPopup:
return 2;
case EScoreMutiplyType.Meongbak:
return 2;
default:
return 0;
}
}
public static string GetCombinationTypeString(ECombinationType type)
{
switch (type)
{
case ECombinationType.Hongdan:
return "+홍단3점";
case ECombinationType.Chungdan:
return "+청단3점";
case ECombinationType.Chodan:
return "+초단3점";
case ECombinationType.Godori:
return "+고도리5점";
case ECombinationType.Be_Three_Ghwang:
return "+비삼광2점";
case ECombinationType.Three_Ghwang:
return "+삼광3점";
case ECombinationType.Four_Ghwang:
return "+사광4점";
case ECombinationType.Five_Ghwang:
return "+오광15점";
default:
return "";
}
}
public static string GetScoreMultiplyTypeString(EScoreMutiplyType type, int num)
{
switch (type)
{
case EScoreMutiplyType.Gobak:
return "x고박2배";
case EScoreMutiplyType.Peebak:
return "x피박2배";
case EScoreMutiplyType.Gwhangbak:
return "x광박2배";
case EScoreMutiplyType.Shake:
return $"x흔들기{num * 2}배";
case EScoreMutiplyType.Nagari:
return $"x나가리2배";
case EScoreMutiplyType.ClickedFromResultPopup:
return $"x이번판2배";
default:
return "";
}
}
public static bool IsDoublePee(ECardType type, bool useSepYulgget_To_pee)
{
switch (type)
{
case ECardType.Bonus_1:
case ECardType.Bonus_2:
case ECardType.Bonus_3:
case ECardType.Nov_Double:
case ECardType.Dec_Double:
return true;
case ECardType.Sep_Yulkkeut:
return useSepYulgget_To_pee ? true : false;
default:
return false;
}
}
}
public static class Converter
{
public static readonly string[] Units = new string[4] { "만", "억", "조", "경" };
private const long UNIT_INTERVAL = 10000;
private static readonly System.Text.StringBuilder stringBuilder = new System.Text.StringBuilder();
public static string MoneyToString(long money)
{
stringBuilder.Clear();
int digit = (int)(System.Math.Log(money, UNIT_INTERVAL));
if (digit > 0)
{
for (int i = digit - 1; i >= 0; i--)
{
long temp = money / (long)System.Math.Pow(UNIT_INTERVAL, i + 1);
if (temp % UNIT_INTERVAL > 0)
{
stringBuilder.Append(temp % UNIT_INTERVAL);
stringBuilder.Append(Units[i]);
}
}
if (money % UNIT_INTERVAL > 0)
stringBuilder.Append(money % UNIT_INTERVAL);
}
else
{
stringBuilder.Append(money);
}
stringBuilder.Append("냥");
return stringBuilder.ToString();
}
public static string MoneyToString_withOutline(long money)
{
return $"<material=NotoSansKR-Regular - BoldOutline Y>{Converter.MoneyToString(money)}</material> ";
}
public static ECardScoreType CardTypeToScoreType(ECardType cardType)
{
switch (cardType)
{
case ECardType.Jan_Ghwang:
case ECardType.Mar_Ghwang:
case ECardType.Aug_Ghwang:
case ECardType.Nov_Ghwang:
case ECardType.Dec_Ghwang:
return ECardScoreType.Ghwang;
case ECardType.Jan_Hongdan:
case ECardType.Feb_Hongdan:
case ECardType.Mar_Hongdan:
case ECardType.Apr_Chodan:
case ECardType.May_Chodan:
case ECardType.Jun_Chungdan:
case ECardType.Jul_Chodan:
case ECardType.Sep_Chungdan:
case ECardType.Oct_Chungdan:
case ECardType.Nov_Tee:
return ECardScoreType.Tee;
case ECardType.Feb_Bird:
case ECardType.Apr_Bird:
case ECardType.May_Yulkkeut:
case ECardType.Jun_Yulkkeut:
case ECardType.Jul_Yulkkeut:
case ECardType.Aug_Bird:
case ECardType.Oct_Yulkkeut:
case ECardType.Nov_Yulgget:
return ECardScoreType.Yul_ggeut;
case ECardType.Jan_Normal_1:
case ECardType.Jan_Normal_2:
case ECardType.Feb_Normal_2:
case ECardType.Feb_Normal_1:
case ECardType.Mar_Normal_1:
case ECardType.Mar_Normal_2:
case ECardType.Apr_Normal_1:
case ECardType.Apr_Normal_2:
case ECardType.May_Normal_1:
case ECardType.May_Normal_2:
case ECardType.Jun_Normal_1:
case ECardType.Jun_Normal_2:
case ECardType.Jul_Normal_1:
case ECardType.Jul_Normal_2:
case ECardType.Aug_Normal_1:
case ECardType.Aug_Normal_2:
case ECardType.Sep_Normal_1:
case ECardType.Sep_Normal_2:
case ECardType.Oct_Normal_1:
case ECardType.Oct_Normal_2:
case ECardType.Nov_Double:
case ECardType.Dec_Double:
case ECardType.Dec_Pee_1:
case ECardType.Dec_Pee_2:
case ECardType.Bonus_1:
case ECardType.Bonus_2:
case ECardType.Bonus_3:
return ECardScoreType.Pee;
case ECardType.Sep_Yulkkeut:
return GamePanel.Instance.UseSepYulgget_To_Pee ? ECardScoreType.Pee : ECardScoreType.Yul_ggeut;
default:
return ECardScoreType.Max;
}
}
public static ECardMonthType CardTypeToMonthType(ECardType type)
{
switch (type)
{
case ECardType.Jan_Ghwang:
case ECardType.Jan_Hongdan:
case ECardType.Jan_Normal_1:
case ECardType.Jan_Normal_2:
return ECardMonthType.Jan;
case ECardType.Feb_Bird:
case ECardType.Feb_Hongdan:
case ECardType.Feb_Normal_1:
case ECardType.Feb_Normal_2:
return ECardMonthType.Feb;
case ECardType.Mar_Ghwang:
case ECardType.Mar_Hongdan:
case ECardType.Mar_Normal_1:
case ECardType.Mar_Normal_2:
return ECardMonthType.Mar;
case ECardType.Apr_Bird:
case ECardType.Apr_Chodan:
case ECardType.Apr_Normal_1:
case ECardType.Apr_Normal_2:
return ECardMonthType.Apr;
case ECardType.May_Yulkkeut:
case ECardType.May_Chodan:
case ECardType.May_Normal_1:
case ECardType.May_Normal_2:
return ECardMonthType.May;
case ECardType.Jun_Yulkkeut:
case ECardType.Jun_Chungdan:
case ECardType.Jun_Normal_1:
case ECardType.Jun_Normal_2:
return ECardMonthType.Jun;
case ECardType.Jul_Yulkkeut:
case ECardType.Jul_Chodan:
case ECardType.Jul_Normal_1:
case ECardType.Jul_Normal_2:
return ECardMonthType.Jul;
case ECardType.Aug_Ghwang:
case ECardType.Aug_Bird:
case ECardType.Aug_Normal_1:
case ECardType.Aug_Normal_2:
return ECardMonthType.Aug;
case ECardType.Sep_Yulkkeut:
case ECardType.Sep_Chungdan:
case ECardType.Sep_Normal_1:
case ECardType.Sep_Normal_2:
return ECardMonthType.Sep;
case ECardType.Oct_Yulkkeut:
case ECardType.Oct_Chungdan:
case ECardType.Oct_Normal_1:
case ECardType.Oct_Normal_2:
return ECardMonthType.Oct;
case ECardType.Nov_Ghwang:
case ECardType.Nov_Double:
case ECardType.Nov_Tee:
case ECardType.Nov_Yulgget:
return ECardMonthType.Nov;
case ECardType.Dec_Ghwang:
case ECardType.Dec_Double:
case ECardType.Dec_Pee_1:
case ECardType.Dec_Pee_2:
return ECardMonthType.Dec;
default:
return ECardMonthType.Max;
}
}
public static EEffectDirectType GuideTypeToDirectType(EGuideType type)
{
switch (type)
{
case EGuideType.OnlyMine:
case EGuideType.Discardable:
return EEffectDirectType.Normal;
case EGuideType.Selectable:
return EEffectDirectType.Selectable;
case EGuideType.Get_Bbug_Own:
return EEffectDirectType.GetBbug_Own;
case EGuideType.Get_Bbug:
return EEffectDirectType.GetBbug;
case EGuideType.Bell:
return EEffectDirectType.Bell;
case EGuideType.Bomb_Triple:
return EEffectDirectType.Bomb_Triple;
case EGuideType.Bomb_Double:
return EEffectDirectType.Bomb_Double;
default:
return EEffectDirectType.NoneCard;
}
}
}
}
}