Commit a5161237 authored by SherryChaos's avatar SherryChaos

add search filter and sort condition for genesys points

parent ece75000
...@@ -62,3 +62,4 @@ Data/ur.ydk ...@@ -62,3 +62,4 @@ Data/ur.ydk
/Assets/Wallpaper/ /Assets/Wallpaper/
Data/lflist_genesys.conf Data/lflist_genesys.conf
Data/mycard_apps.json Data/mycard_apps.json
Data/Rarity.json
MDPro3 v1.3.5更新:
1.修复除外区域的决斗按钮无法被点击的错误。
MDPro3 v1.3.4更新: MDPro3 v1.3.4更新:
1.组卡界面新增Info类型(上方第一个按钮):Genesys积分模式。 1.组卡界面新增Info类型(上方第一个按钮):Genesys积分模式。
2.决斗链接更新: 2.决斗链接更新:
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -2582,11 +2582,6 @@ MonoBehaviour: ...@@ -2582,11 +2582,6 @@ MonoBehaviour:
baseRect: {fileID: 5484811793682048071} baseRect: {fileID: 5484811793682048071}
scrollRect: {fileID: 2740834218755119401} scrollRect: {fileID: 2740834218755119401}
showing: 0 showing: 0
chainSolving: 0
lastMoveReason: 0
lastSpSummonReason: 0
psum: 0
cacheLp: 0
--- !u!1 &2680087416863519693 --- !u!1 &2680087416863519693
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
......
...@@ -4,6 +4,7 @@ using MDPro3.Utility; ...@@ -4,6 +4,7 @@ using MDPro3.Utility;
using MDPro3.Duel.YGOSharp; using MDPro3.Duel.YGOSharp;
using System.Diagnostics; using System.Diagnostics;
using static YgomSystem.UI.ViewController; using static YgomSystem.UI.ViewController;
using MDPro3.Net;
namespace MDPro3.Duel.YGOSharp namespace MDPro3.Duel.YGOSharp
{ {
...@@ -217,6 +218,11 @@ namespace MDPro3.Duel.YGOSharp ...@@ -217,6 +218,11 @@ namespace MDPro3.Duel.YGOSharp
return (Attribute & (uint)attribute) > 0; return (Attribute & (uint)attribute) > 0;
} }
public int GetGenesysPoint()
{
return OnlineService.GetGenesysPoint(GetOriginalID());
}
#endregion #endregion
#region String #region String
......
...@@ -125,21 +125,15 @@ namespace MDPro3.Duel.YGOSharp ...@@ -125,21 +125,15 @@ namespace MDPro3.Duel.YGOSharp
internal static void LoadCDB(string databaseFullPath, bool render = false, bool isPreCards = false) internal static void LoadCDB(string databaseFullPath, bool render = false, bool isPreCards = false)
{ {
using (SqliteConnection connection = new SqliteConnection("Data Source=" + databaseFullPath)) using SqliteConnection connection = new("Data Source=" + databaseFullPath);
{ connection.Open();
connection.Open();
using (IDbCommand command = using IDbCommand command =
new SqliteCommand("SELECT datas.*, texts.* FROM datas,texts WHERE datas.id=texts.id;", connection)) new SqliteCommand("SELECT datas.*, texts.* FROM datas,texts WHERE datas.id=texts.id;", connection);
{ using IDataReader reader = command.ExecuteReader();
using (IDataReader reader = command.ExecuteReader()) while (reader.Read())
{ {
while (reader.Read()) LoadCard(reader, render, isPreCards);
{
LoadCard(reader, render, isPreCards);
}
}
}
} }
} }
...@@ -175,7 +169,7 @@ namespace MDPro3.Duel.YGOSharp ...@@ -175,7 +169,7 @@ namespace MDPro3.Duel.YGOSharp
internal static Card Get(int id, bool noneIsZero = false) internal static Card Get(int id, bool noneIsZero = false)
{ {
Card returnValue = new Card(); var returnValue = new Card();
if (id > 0) if (id > 0)
{ {
for (int i = 0; i < 10; i++) for (int i = 0; i < 10; i++)
...@@ -240,7 +234,7 @@ namespace MDPro3.Duel.YGOSharp ...@@ -240,7 +234,7 @@ namespace MDPro3.Duel.YGOSharp
public static List<string> GetMiddleStrings(string str, string start, string end) public static List<string> GetMiddleStrings(string str, string start, string end)
{ {
List<string> returnValue = new List<string>(); List<string> returnValue = new List<string>();
Regex reg = new Regex("(?<=(" + start + "))[.\\s\\S]*?(?=(" + end + "))", RegexOptions.RightToLeft); var reg = new Regex("(?<=(" + start + "))[.\\s\\S]*?(?=(" + end + "))", RegexOptions.RightToLeft);
while (reg.Match(str).Value != "") while (reg.Match(str).Value != "")
{ {
string s = reg.Match(str).Value; string s = reg.Match(str).Value;
...@@ -252,7 +246,7 @@ namespace MDPro3.Duel.YGOSharp ...@@ -252,7 +246,7 @@ namespace MDPro3.Duel.YGOSharp
private static List<string> GetSetNamesInDescription(string input) private static List<string> GetSetNamesInDescription(string input)
{ {
List <string> returnValue = new List<string>(); var returnValue = new List<string>();
foreach(string s in setNameHead) foreach(string s in setNameHead)
{ {
List<string> setNames = GetMiddleStrings(input, s + "「", "」"); List<string> setNames = GetMiddleStrings(input, s + "「", "」");
...@@ -282,7 +276,7 @@ namespace MDPro3.Duel.YGOSharp ...@@ -282,7 +276,7 @@ namespace MDPro3.Duel.YGOSharp
string pack string pack
) )
{ {
List<Card> returnValue = new List<Card>(); var returnValue = new List<Card>();
string[] strings = getName.Split(' '); string[] strings = getName.Split(' ');
nameInSearch = getName; nameInSearch = getName;
foreach (var item in _cards) foreach (var item in _cards)
...@@ -501,16 +495,17 @@ namespace MDPro3.Duel.YGOSharp ...@@ -501,16 +495,17 @@ namespace MDPro3.Duel.YGOSharp
if (JudgeInt((int)filters[13], (int)filters[14], card.Attack)) if (JudgeInt((int)filters[13], (int)filters[14], card.Attack))
if (JudgeInt((int)filters[15], (int)filters[16], card.Defense)) if (JudgeInt((int)filters[15], (int)filters[16], card.Defense))
if (JudgeInt((int)filters[17], (int)filters[18], card.LScale)) if (JudgeInt((int)filters[17], (int)filters[18], card.LScale))
if (JudgeInt((int)filters[19], (int)filters[20], card.year)) if (JudgeInt((int)filters[19], (int)filters[20], card.GetGenesysPoint()))
{ if (JudgeInt((int)filters[21], (int)filters[22], card.year))
if (pack == string.Empty)
returnValue.Add(card);
else
{ {
if (card.packFullName == pack) if (pack == string.Empty)
returnValue.Add(card); returnValue.Add(card);
else
{
if (card.packFullName == pack)
returnValue.Add(card);
}
} }
}
} }
} }
} }
...@@ -2017,6 +2012,254 @@ namespace MDPro3.Duel.YGOSharp ...@@ -2017,6 +2012,254 @@ namespace MDPro3.Duel.YGOSharp
}; };
} }
internal static Comparison<Card> ComparisonOfCard_GP_Up()
{
return (left, right) =>
{
int a = 1;
if(left.GetGenesysPoint() < right.GetGenesysPoint())
{
a = -1;
}
else if (left.GetGenesysPoint() > right.GetGenesysPoint())
{
a = 1;
}
else
{
if (left.Name == nameInSearch && right.Name != nameInSearch)
{
a = -1;
}
else if (right.Name == nameInSearch && left.Name != nameInSearch)
{
a = 1;
}
else
{
if ((left.Type & 7) < (right.Type & 7))
{
a = -1;
}
else if ((left.Type & 7) > (right.Type & 7))
{
a = 1;
}
else
{
//if ((left.Type >> 3) > (right.Type >> 3))
//{
// a = 1;
//}
//else if ((left.Type >> 3) < (right.Type >> 3))
//{
// a = -1;
//}
if ((left.Type & 0x58020f0) < (right.Type & 0x58020f0))
{
a = -1;
}
else if ((left.Type & 0x58020f0) > (right.Type & 0x58020f0))
{
a = 1;
}
else
{
if (left.Level > right.Level)
{
a = -1;
}
else if (left.Level < right.Level)
{
a = 1;
}
else
{
if (left.Attack > right.Attack)
{
a = -1;
}
else if (left.Attack < right.Attack)
{
a = 1;
}
else
{
if (left.Attribute > right.Attribute)
{
a = 1;
}
else if (left.Attribute < right.Attribute)
{
a = -1;
}
else
{
if (left.Race > right.Race)
{
a = 1;
}
else if (left.Race < right.Race)
{
a = -1;
}
else
{
if (left.Category > right.Category)
{
a = 1;
}
else if (left.Category < right.Category)
{
a = -1;
}
else
{
if (left.Id > right.Id)
{
a = 1;
}
else if (left.Id < right.Id)
{
a = -1;
}
}
}
}
}
}
}
}
}
}
return a;
};
}
internal static Comparison<Card> ComparisonOfCard_GP_Down()
{
return (left, right) =>
{
int a = 1;
if (left.GetGenesysPoint() < right.GetGenesysPoint())
{
a = 1;
}
else if (left.GetGenesysPoint() > right.GetGenesysPoint())
{
a = -1;
}
else
{
if (left.Name == nameInSearch && right.Name != nameInSearch)
{
a = -1;
}
else if (right.Name == nameInSearch && left.Name != nameInSearch)
{
a = 1;
}
else
{
if ((left.Type & 7) < (right.Type & 7))
{
a = -1;
}
else if ((left.Type & 7) > (right.Type & 7))
{
a = 1;
}
else
{
//if ((left.Type >> 3) > (right.Type >> 3))
//{
// a = 1;
//}
//else if ((left.Type >> 3) < (right.Type >> 3))
//{
// a = -1;
//}
if ((left.Type & 0x58020f0) < (right.Type & 0x58020f0))
{
a = -1;
}
else if ((left.Type & 0x58020f0) > (right.Type & 0x58020f0))
{
a = 1;
}
else
{
if (left.Level > right.Level)
{
a = -1;
}
else if (left.Level < right.Level)
{
a = 1;
}
else
{
if (left.Attack > right.Attack)
{
a = -1;
}
else if (left.Attack < right.Attack)
{
a = 1;
}
else
{
if (left.Attribute > right.Attribute)
{
a = 1;
}
else if (left.Attribute < right.Attribute)
{
a = -1;
}
else
{
if (left.Race > right.Race)
{
a = 1;
}
else if (left.Race < right.Race)
{
a = -1;
}
else
{
if (left.Category > right.Category)
{
a = 1;
}
else if (left.Category < right.Category)
{
a = -1;
}
else
{
if (left.Id > right.Id)
{
a = 1;
}
else if (left.Id < right.Id)
{
a = -1;
}
}
}
}
}
}
}
}
}
}
return a;
};
}
} }
internal static class PacksManager internal static class PacksManager
......
...@@ -19,6 +19,8 @@ namespace MDPro3.UI.Popup ...@@ -19,6 +19,8 @@ namespace MDPro3.UI.Popup
public TMP_InputField inputDefenceTo; public TMP_InputField inputDefenceTo;
public TMP_InputField inputScaleFrom; public TMP_InputField inputScaleFrom;
public TMP_InputField inputScaleTo; public TMP_InputField inputScaleTo;
public TMP_InputField inputGPFrom;
public TMP_InputField inputGPTo;
public TMP_InputField inputYearFrom; public TMP_InputField inputYearFrom;
public TMP_InputField inputYearTo; public TMP_InputField inputYearTo;
...@@ -69,10 +71,14 @@ namespace MDPro3.UI.Popup ...@@ -69,10 +71,14 @@ namespace MDPro3.UI.Popup
inputScaleFrom.text = f[17].ToString(); inputScaleFrom.text = f[17].ToString();
if (f[18] > 0) if (f[18] > 0)
inputScaleTo.text = f[18].ToString(); inputScaleTo.text = f[18].ToString();
if (f[19] > 0) if (f[19] >= 0)
inputYearFrom.text = f[19].ToString(); inputGPFrom.text = f[19].ToString();
if (f[20] > 0) if (f[20] >= 0)
inputYearTo.text = f[20].ToString(); inputGPTo.text = f[20].ToString();
if (f[21] > 0)
inputYearFrom.text = f[21].ToString();
if (f[22] > 0)
inputYearTo.text = f[22].ToString();
} }
Manager.GetElement<SelectionButton>("ButtonPack") Manager.GetElement<SelectionButton>("ButtonPack")
.SetButtonText(CardCollectionView.packName == string.Empty .SetButtonText(CardCollectionView.packName == string.Empty
...@@ -203,6 +209,20 @@ namespace MDPro3.UI.Popup ...@@ -203,6 +209,20 @@ namespace MDPro3.UI.Popup
dirty = true; dirty = true;
filters.Add(long.Parse(inputScaleTo.text)); filters.Add(long.Parse(inputScaleTo.text));
} }
else
filters.Add(-233);
if (inputGPFrom.text.Length > 0)
{
dirty = true;
filters.Add(long.Parse(inputGPFrom.text));
}
else
filters.Add(-233);
if (inputGPTo.text.Length > 0)
{
dirty = true;
filters.Add(long.Parse(inputGPTo.text));
}
else else
filters.Add(-233); filters.Add(-233);
if (inputYearFrom.text.Length > 0) if (inputYearFrom.text.Length > 0)
...@@ -252,6 +272,8 @@ namespace MDPro3.UI.Popup ...@@ -252,6 +272,8 @@ namespace MDPro3.UI.Popup
inputDefenceTo.text = string.Empty; inputDefenceTo.text = string.Empty;
inputScaleFrom.text = string.Empty; inputScaleFrom.text = string.Empty;
inputScaleTo.text = string.Empty; inputScaleTo.text = string.Empty;
inputGPFrom.text = string.Empty;
inputGPTo.text = string.Empty;
inputYearFrom.text = string.Empty; inputYearFrom.text = string.Empty;
inputYearTo.text = string.Empty; inputYearTo.text = string.Empty;
Manager.GetElement<SelectionButton>("ButtonPack").SetButtonText(InterString.Get("所有卡包")); Manager.GetElement<SelectionButton>("ButtonPack").SetButtonText(InterString.Get("所有卡包"));
......
...@@ -179,6 +179,8 @@ namespace MDPro3.UI ...@@ -179,6 +179,8 @@ namespace MDPro3.UI
Manager.GetElement("IconPool").SetActive(DeckEditorUI.cardInfoType == DeckEditorUI.CardInfoType.Pool); Manager.GetElement("IconPool").SetActive(DeckEditorUI.cardInfoType == DeckEditorUI.CardInfoType.Pool);
CardPoint.SetActive(DeckEditorUI.cardInfoType == DeckEditorUI.CardInfoType.Genesys); CardPoint.SetActive(DeckEditorUI.cardInfoType == DeckEditorUI.CardInfoType.Genesys);
Manager.GetElement("IconLimit").SetActive(DeckEditorUI.cardInfoType != DeckEditorUI.CardInfoType.Genesys);
} }
public void RefreshCountIcon() public void RefreshCountIcon()
......
...@@ -57,6 +57,8 @@ namespace MDPro3.UI ...@@ -57,6 +57,8 @@ namespace MDPro3.UI
SortOrder.ByDefenceDown => InterString.Get("守备力"), SortOrder.ByDefenceDown => InterString.Get("守备力"),
SortOrder.ByRarityUp => InterString.Get("稀有度"), SortOrder.ByRarityUp => InterString.Get("稀有度"),
SortOrder.ByRarityDown => InterString.Get("稀有度"), SortOrder.ByRarityDown => InterString.Get("稀有度"),
SortOrder.ByGPUp => InterString.Get("Genesys分数"),
SortOrder.ByGPDown => InterString.Get("Genesys分数"),
_ => string.Empty _ => string.Empty
}; };
} }
......
...@@ -193,7 +193,9 @@ namespace MDPro3.UI ...@@ -193,7 +193,9 @@ namespace MDPro3.UI
ByDefenceUp = 7, ByDefenceUp = 7,
ByDefenceDown = 8, ByDefenceDown = 8,
ByRarityUp = 9, ByRarityUp = 9,
ByRarityDown = 10 ByRarityDown = 10,
ByGPUp = 11,
ByGPDown = 12
} }
public static SortOrder _SortOrder = SortOrder.ByType; public static SortOrder _SortOrder = SortOrder.ByType;
...@@ -240,39 +242,7 @@ namespace MDPro3.UI ...@@ -240,39 +242,7 @@ namespace MDPro3.UI
{ {
var cards = new List<int>(); var cards = new List<int>();
var results = CardsManager.Search(InputSearch.InputField.text, filters, DeckEditor.banlist, packName); var results = CardsManager.Search(InputSearch.InputField.text, filters, DeckEditor.banlist, packName);
switch (_SortOrder) SortCards(results);
{
case SortOrder.ByType:
results.Sort(CardsManager.ComparisonOfCard());
break;
case SortOrder.ByTypeReverse:
results.Sort(CardsManager.ComparisonOfCardReverse());
break;
case SortOrder.ByLevelUp:
results.Sort(CardsManager.ComparisonOfCard_LV_Up());
break;
case SortOrder.ByLevelDown:
results.Sort(CardsManager.ComparisonOfCard_LV_Down());
break;
case SortOrder.ByAttackUp:
results.Sort(CardsManager.ComparisonOfCard_ATK_Up());
break;
case SortOrder.ByAttackDown:
results.Sort(CardsManager.ComparisonOfCard_ATK_Down());
break;
case SortOrder.ByDefenceUp:
results.Sort(CardsManager.ComparisonOfCard_DEF_Up());
break;
case SortOrder.ByDefenceDown:
results.Sort(CardsManager.ComparisonOfCard_DEF_Down());
break;
case SortOrder.ByRarityUp:
results.Sort(CardsManager.ComparisonOfCard_Rarity_Up());
break;
case SortOrder.ByRarityDown:
results.Sort(CardsManager.ComparisonOfCard_Rarity_Down());
break;
}
foreach(var card in results) foreach(var card in results)
cards.Add(card.Id); cards.Add(card.Id);
...@@ -287,55 +257,66 @@ namespace MDPro3.UI ...@@ -287,55 +257,66 @@ namespace MDPro3.UI
relatedCardData = data; relatedCardData = data;
var cards = new List<int>(); var cards = new List<int>();
var results = CardsManager.RelatedSearch(data.Id); var results = CardsManager.RelatedSearch(data.Id);
SortCards(results);
foreach (var card in results)
cards.Add(card.Id);
ButtonSearch.SetButtonText(cards.Count == 0 ? InterString.Get("搜索") : cards.Count.ToString());
PrintCards(cards);
}
public void PrintBookmarkCards()
{
PrintCards(CardRarity.GetBookCards());
}
public void PrintHistoryCards()
{
PrintCards(historyCards);
}
private void SortCards(List<Card> cards)
{
switch (_SortOrder) switch (_SortOrder)
{ {
case SortOrder.ByType: case SortOrder.ByType:
results.Sort(CardsManager.ComparisonOfCard()); cards.Sort(CardsManager.ComparisonOfCard());
break; break;
case SortOrder.ByTypeReverse: case SortOrder.ByTypeReverse:
results.Sort(CardsManager.ComparisonOfCardReverse()); cards.Sort(CardsManager.ComparisonOfCardReverse());
break; break;
case SortOrder.ByLevelUp: case SortOrder.ByLevelUp:
results.Sort(CardsManager.ComparisonOfCard_LV_Up()); cards.Sort(CardsManager.ComparisonOfCard_LV_Up());
break; break;
case SortOrder.ByLevelDown: case SortOrder.ByLevelDown:
results.Sort(CardsManager.ComparisonOfCard_LV_Down()); cards.Sort(CardsManager.ComparisonOfCard_LV_Down());
break; break;
case SortOrder.ByAttackUp: case SortOrder.ByAttackUp:
results.Sort(CardsManager.ComparisonOfCard_ATK_Up()); cards.Sort(CardsManager.ComparisonOfCard_ATK_Up());
break; break;
case SortOrder.ByAttackDown: case SortOrder.ByAttackDown:
results.Sort(CardsManager.ComparisonOfCard_ATK_Down()); cards.Sort(CardsManager.ComparisonOfCard_ATK_Down());
break; break;
case SortOrder.ByDefenceUp: case SortOrder.ByDefenceUp:
results.Sort(CardsManager.ComparisonOfCard_DEF_Up()); cards.Sort(CardsManager.ComparisonOfCard_DEF_Up());
break; break;
case SortOrder.ByDefenceDown: case SortOrder.ByDefenceDown:
results.Sort(CardsManager.ComparisonOfCard_DEF_Down()); cards.Sort(CardsManager.ComparisonOfCard_DEF_Down());
break; break;
case SortOrder.ByRarityUp: case SortOrder.ByRarityUp:
results.Sort(CardsManager.ComparisonOfCard_Rarity_Up()); cards.Sort(CardsManager.ComparisonOfCard_Rarity_Up());
break; break;
case SortOrder.ByRarityDown: case SortOrder.ByRarityDown:
results.Sort(CardsManager.ComparisonOfCard_Rarity_Down()); cards.Sort(CardsManager.ComparisonOfCard_Rarity_Down());
break;
case SortOrder.ByGPUp:
cards.Sort(CardsManager.ComparisonOfCard_GP_Up());
break;
case SortOrder.ByGPDown:
cards.Sort(CardsManager.ComparisonOfCard_GP_Down());
break; break;
} }
foreach (var card in results)
cards.Add(card.Id);
ButtonSearch.SetButtonText(cards.Count == 0 ? InterString.Get("搜索") : cards.Count.ToString());
PrintCards(cards);
}
public void PrintBookmarkCards()
{
PrintCards(CardRarity.GetBookCards());
}
public void PrintHistoryCards()
{
PrintCards(historyCards);
} }
public void AddHistoryCard(int code) public void AddHistoryCard(int code)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment