Skip to content

Commit fa0a18e

Browse files
committed
Merge pull request #1478 from brine/master2
some ugprades to the selectCard API
2 parents f404254 + 018c35c commit fa0a18e

File tree

9 files changed

+63
-41
lines changed

9 files changed

+63
-41
lines changed

octgnFX/Octgn/Scripting/Controls/SelectCardsDlg.xaml.cs

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,33 +18,30 @@ namespace Octgn.Scripting.Controls
1818

1919
using Octgn.Core.DataExtensionMethods;
2020
using Octgn.Core.DataManagers;
21-
using Octgn.DataNew.Entities;
21+
using Octgn.Play;
2222

2323
public partial class SelectCardsDlg
2424
{
2525
public static readonly DependencyProperty IsCardSelectedProperty = DependencyProperty.Register(
2626
"IsCardSelected", typeof(bool), typeof(SelectCardsDlg), new UIPropertyMetadata(false));
2727

28-
private List<DataNew.Entities.Card> _allCards;
28+
private List<Card> _allCards;
2929
private string _filterText = "";
30+
private IEnumerable<string> textProperties = Program.GameEngine.Definition.CustomProperties
31+
.Where(p => p.Type == DataNew.Entities.PropertyType.String && !p.IgnoreText)
32+
.Select(p => p.Name);
3033

31-
public SelectCardsDlg(List<string> guidList, string prompt, string title)
34+
public SelectCardsDlg(List<Card> cardList, string prompt, string title)
3235
{
3336
InitializeComponent();
3437
Title = title;
3538
promptLbl.Text = prompt;
3639
Task.Factory.StartNew(() =>
3740
{
3841
var game = GameManager.Get().GetById(Program.GameEngine.Definition.Id);
39-
if (guidList == null) guidList = new List<string>();
40-
41-
_allCards = new List<Card>();
42-
foreach (var c in guidList)
43-
{
44-
var tlist = game.AllCards()
45-
.Where(y => y.Id.ToString().ToLower() == c.ToLower()).ToList();
46-
_allCards.AddRange(tlist);
47-
}
42+
if (cardList == null) cardList = new List<Card>();
43+
44+
_allCards = cardList;
4845

4946
Dispatcher.BeginInvoke(new Action(() => allList.ItemsSource = _allCards));
5047
});
@@ -56,7 +53,7 @@ public bool IsCardSelected
5653
set { SetValue(IsCardSelectedProperty, value); }
5754
}
5855

59-
public DataNew.Entities.Card SelectedCard { get; private set; }
56+
public Card SelectedCard { get; private set; }
6057

6158
public int returnIndex { get; private set; }
6259

@@ -70,7 +67,7 @@ private void SelectClicked(object sender, RoutedEventArgs e)
7067

7168
allList.ItemsSource = _allCards;
7269

73-
if (allList.SelectedIndex != -1) SelectedCard = (DataNew.Entities.Card)allList.SelectedItem;
70+
if (allList.SelectedIndex != -1) SelectedCard = (Card)allList.SelectedItem;
7471
returnIndex = allList.SelectedIndex;
7572

7673
if (SelectedCard == null) return;
@@ -102,11 +99,14 @@ private void FilterChanged(object sender, EventArgs e)
10299
ThreadPool.QueueUserWorkItem(searchObj =>
103100
{
104101
var search = (string)searchObj;
105-
List<DataNew.Entities.Card> filtered =
102+
List<Card> filtered =
106103
_allCards.Where(
107104
m =>
108-
m.Name.IndexOf(search,
109-
StringComparison.CurrentCultureIgnoreCase) >= 0)
105+
m.RealName.IndexOf(search, StringComparison.CurrentCultureIgnoreCase) >= 0 ||
106+
textProperties.Select(property => (string) m.GetProperty(property)).
107+
Where(propertyValue => propertyValue != null).Any(
108+
propertyValue => propertyValue.IndexOf(search, StringComparison.CurrentCultureIgnoreCase) >= 0)
109+
)
110110
.ToList();
111111
if (search == _filterText)
112112
Dispatcher.Invoke(new Action(() => allList.ItemsSource = filtered));
@@ -124,7 +124,7 @@ private void SetPicture(object sender, RoutedEventArgs e)
124124
{
125125
var img = sender as Image;
126126
if (img == null) return;
127-
var model = img.DataContext as DataNew.Entities.Card;
127+
var model = (img.DataContext as Card).Type.Model;
128128
if (model != null) ImageUtils.GetCardImage(model, x => img.Source = x);
129129
}
130130

octgnFX/Octgn/Scripting/Controls/SelectMultiCardsDlg.xaml.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ public partial class SelectMultiCardsDlg
2929
private string _filterText = "";
3030
private int _min;
3131
private int _max;
32+
private IEnumerable<string> textProperties = Program.GameEngine.Definition.CustomProperties
33+
.Where(p => p.Type == DataNew.Entities.PropertyType.String && !p.IgnoreText)
34+
.Select(p => p.Name);
3235

3336
public SelectMultiCardsDlg(List<Card> cardList, string prompt, string title, int minValue, int maxValue)
3437
{
@@ -101,8 +104,11 @@ private void FilterChanged(object sender, EventArgs e)
101104
List<Card> filtered =
102105
_allCards.Where(
103106
m =>
104-
m.Name.IndexOf(search,
105-
StringComparison.CurrentCultureIgnoreCase) >= 0)
107+
m.RealName.IndexOf(search, StringComparison.CurrentCultureIgnoreCase) >= 0 ||
108+
textProperties.Select(property => (string) m.GetProperty(property)).
109+
Where(propertyValue => propertyValue != null).Any(
110+
propertyValue => propertyValue.IndexOf(search, StringComparison.CurrentCultureIgnoreCase) >= 0)
111+
)
106112
.ToList();
107113
if (search == _filterText)
108114
Dispatcher.Invoke(new Action(() => allList.ItemsSource = filtered));

octgnFX/Octgn/Scripting/Versions/3.1.0.0.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def askMarker():
7979
def askCard(properties = {}, operator = None, title = "Choose card"):
8080
if type(properties) is list:
8181
## Use SelectCard API for list properties
82-
realList = List[String]([str(c.model) for c in properties])
82+
realList = List[int]([c._id for c in properties])
8383
apiResult = _api.SelectCard(realList, operator, title)
8484
if apiResult == None: return
8585
return properties[apiResult]

octgnFX/Octgn/Scripting/Versions/3.1.0.1.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ def askMarker():
8080
def askCard(properties = {}, operator = None, title = "Choose card"):
8181
if type(properties) is list:
8282
## Use SelectCard API for list properties
83-
realList = List[String]([str(c.model) for c in properties])
83+
realList = List[int]([c._id for c in properties])
8484
apiResult = _api.SelectCard(realList, operator, title)
8585
if apiResult == None: return
8686
return properties[apiResult]

octgnFX/Octgn/Scripting/Versions/3.1.0.2.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -77,24 +77,27 @@ def askMarker():
7777
if apiResult == None: return (None, 0)
7878
return ((apiResult.Item1, apiResult.Item2), apiResult.Item3)
7979

80-
def selectCards(cardList = [], min = 1 , max = 1, title = "Choose card", question = None):
81-
if type(cardList) is list:
82-
realList = List[int]([c._id for c in cardList])
83-
apiResult = _api.SelectCard(realList, min, max, question, title)
80+
def selectCard(cardList, minValue = 1 , maxValue = 1, title = "Choose card", question = None):
81+
realList = List[int]([c._id for c in cardList])
82+
if minValue == 1 and maxValue == 1:
83+
apiResult = _api.SelectCard(realList, question, title)
84+
if apiResult == None: return
85+
return [Card(apiResult)]
86+
else:
87+
apiResult = _api.SelectMultiCard(realList, minValue, maxValue, question, title)
8488
if apiResult == None: return
8589
return [Card(c) for c in apiResult]
8690

8791
def askCard(properties = {}, operator = None, title = "Choose card"):
88-
if type(properties) is dict:
89-
realDick = Dictionary[String, List[String]]()
90-
for (propKey, propValue) in properties.items():
91-
if type(propValue) is list:
92-
realDick[propKey] = List[String](propValue)
93-
else:
94-
realDick[propKey] = List[String]([propValue])
95-
apiResult = _api.AskCard(realDick,operator,title)
96-
if apiResult == None: return (None, 0)
97-
return (apiResult.Item1, apiResult.Item2)
92+
realDict = Dictionary[String, List[String]]()
93+
for (propKey, propValue) in properties.items():
94+
if type(propValue) is list:
95+
realDict[propKey] = List[String](propValue)
96+
else:
97+
realDict[propKey] = List[String]([propValue])
98+
apiResult = _api.AskCard(realDict,operator,title)
99+
if apiResult == None: return (None, 0)
100+
return (apiResult.Item1, apiResult.Item2)
98101

99102
def getGlobalVariable(gname):
100103
return _api.GetGlobalVariable(gname)

octgnFX/Octgn/Scripting/Versions/Script_3_1_0_0.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -877,10 +877,11 @@ public string AskString(string question, string defaultValue)
877877
// });
878878
//}
879879

880-
public int? SelectCard(List<String> cardList, string question, string title)
880+
public int? SelectCard(List<int> idList, string question, string title)
881881
{
882882
return QueueAction<int?>(() =>
883883
{
884+
var cardList = idList.Select(x => Card.Find(x)).ToList();
884885
var dlg = new SelectCardsDlg(cardList, question, title) { Owner = WindowManager.PlayWindow };
885886
if (!dlg.ShowDialog().GetValueOrDefault()) return null;
886887
return dlg.returnIndex;

octgnFX/Octgn/Scripting/Versions/Script_3_1_0_1.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -899,10 +899,11 @@ public string AskString(string question, string defaultValue)
899899
// });
900900
//}
901901

902-
public int? SelectCard(List<String> cardList, string question, string title)
902+
public int? SelectCard(List<int> idList, string question, string title)
903903
{
904904
return QueueAction<int?>(() =>
905905
{
906+
var cardList = idList.Select(x => Card.Find(x)).ToList();
906907
var dlg = new SelectCardsDlg(cardList, question, title) { Owner = WindowManager.PlayWindow };
907908
if (!dlg.ShowDialog().GetValueOrDefault()) return null;
908909
return dlg.returnIndex;

octgnFX/Octgn/Scripting/Versions/Script_3_1_0_2.cs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -913,12 +913,23 @@ public string AskString(string question, string defaultValue)
913913
// });
914914
//}
915915

916-
public List<int> SelectCard(List<int> idList, int minValue, int maxValue, string question, string title)
916+
public List<int> SelectMultiCard(List<int> idList, int minValue, int maxValue, string question, string title)
917917
{
918918
return QueueAction<List<int>>(() =>
919919
{
920920
var cardList = idList.Select(x => Card.Find(x)).ToList();
921-
var dlg = new SelectMultiCardsDlg(cardList, question, title, minValue, maxValue ) { Owner = WindowManager.PlayWindow };
921+
var dlg = new SelectMultiCardsDlg(cardList, question, title, minValue, maxValue) { Owner = WindowManager.PlayWindow };
922+
if (!dlg.ShowDialog().GetValueOrDefault()) return null;
923+
return dlg.returnIndex;
924+
});
925+
}
926+
927+
public int? SelectCard(List<int> idList, string question, string title)
928+
{
929+
return QueueAction<int?>(() =>
930+
{
931+
var cardList = idList.Select(x => Card.Find(x)).ToList();
932+
var dlg = new SelectCardsDlg(cardList, question, title) { Owner = WindowManager.PlayWindow };
922933
if (!dlg.ShowDialog().GetValueOrDefault()) return null;
923934
return dlg.returnIndex;
924935
});

recentchanges.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1+
upgrades to the selectCard() API calls

0 commit comments

Comments
 (0)