manasimu 0.0.22 → 0.0.25

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 341d139d858f8ed21d1e9b2ea92f981b942fa4371cb25dad87a908ec4cf7b440
4
- data.tar.gz: 80bc0a8ad47a8422c3b38caefd99fa265f24ed792c63efb3d62d9ce083d155ee
3
+ metadata.gz: 7789310be16e9d3b352d2aa77999dbd18b80e90e86270637cc0317bc5941be4a
4
+ data.tar.gz: 6b85a7a3523e6033aa1efe1d70ef8f7540799a1e72ee4e8ba7f21f0b1d946b14
5
5
  SHA512:
6
- metadata.gz: 3c6d3d5223eca48ae93f6700d1d56a304fb57e32154963d635a2ff0d3bc47d2663f10a6293aea3663e97f914e0f8050c9cca141a4267ad7c105e7e0628d18323
7
- data.tar.gz: d5afad4365d7a20ea84e5e8b5d2267264e85d07f3eecc0eea4519ded233189fb971b9225728bc9c287a65b4778b1586249b4b90383c374912dbdbe20be65d3fc
6
+ metadata.gz: 2676d3fd0ba9efc9b1aea58f4dbf9d677da052ed4cd74e31d5e3a47a25db1ab74d5ca1ccab98081556d1d72edff16d5086b43d2579075c0e2684f5b208d80a2b
7
+ data.tar.gz: f8bb389f4018e8d70f6f810d2475e68635feff41f78b1460f55e3e8e8e8e34414e7182d8b8c38ae3f3cbb6c02010a337c566048cac9e80f2323e5d74422311c6
Binary file
data/lib/manasimu/card.rb CHANGED
@@ -294,6 +294,10 @@ class CardType
294
294
  return @is_land
295
295
  end
296
296
 
297
+ def names
298
+ @contents[0].names
299
+ end
300
+
297
301
  def playable?(lands, capas)
298
302
  return [false, [], []] if lands.empty?
299
303
  return [false, [], []] if converted_mana_cost > lands.length
@@ -391,17 +395,27 @@ class CardType
391
395
  end
392
396
 
393
397
  class CardTypeAggregate
398
+ def initialize
399
+ @memo = []
400
+ end
394
401
 
395
402
  def find(set_code, number)
396
- @memo ||= []
397
- @memo.find do |c|
403
+ ret = @memo.bsearch do |c|
398
404
  a = c.contents[0]
399
- a and a.set_code == set_code and a.number == number
405
+ if set_code == a.set_code
406
+ number.to_i <= a.number
407
+ else
408
+ set_code < a.set_code
409
+ end
410
+ end
411
+ if ret and ret.set_code == set_code and ret.number == number.to_i
412
+ ret
413
+ else
414
+ nil
400
415
  end
401
416
  end
402
417
 
403
418
  def add(card_type)
404
- @memo ||= []
405
419
  @memo << card_type
406
420
  end
407
421
 
@@ -420,10 +434,11 @@ class CardTypeAggregate
420
434
  end
421
435
 
422
436
  class Content
423
- attr_accessor :name, :number, :side, :set_code, :mana_cost, :type, :types, :color_identity, :converted_mana_cost, :text
437
+ attr_accessor :name, :names, :number, :side, :set_code, :mana_cost, :type, :types, :color_identity, :converted_mana_cost, :text
424
438
 
425
439
  def initialize(hash)
426
440
  @name = hash[:name]
441
+ @names = hash[:names]
427
442
  @number = hash[:number]
428
443
  @side = hash[:side]
429
444
  @set_code = hash[:set_code]
@@ -447,6 +462,7 @@ class Content
447
462
  <<EOF
448
463
  factory '#{@name.underscore}_content', class: Content do
449
464
  name {'#{@name}'}
465
+ names {'#{@names}'}
450
466
  number {'#{@number}'}
451
467
  side {'#{@side}'}
452
468
  set_code { '#{@set_code}'}
data/lib/manasimu/data.rb CHANGED
@@ -66,51 +66,70 @@ class Deck
66
66
  end
67
67
 
68
68
  def self.find_card_types(lines)
69
- types = card_types.map do |a| a end
70
- types.sort! do |a,b| a.name <=> b.name end
69
+ ret = []
71
70
 
72
71
  distinct_types = []
73
- types.each do |type|
72
+ card_types.each do |type|
74
73
  next if distinct_types[-1] and distinct_types[-1].name == type.name
75
- type.name
76
74
  distinct_types << type
77
75
  end
78
76
 
79
- ret = []
80
- lines.each do |line|
81
- line.chomp!
82
- search_type = distinct_types.bsearch do |type|
83
- name = type.name.split(' // ')[0]
84
- flag = true
85
- name.chars.each_with_index do |nc,i|
86
- if line.length > i
87
- lc = line.chars[i]
88
- if nc > lc
77
+
78
+ [-1, 4].each do |i|
79
+
80
+ distinct_types.sort! do |a,b|
81
+ if i < 0
82
+ a.name <=> b.name
83
+ elsif a.names[i] and b.names[i]
84
+ a.names[i] <=> b.names[i]
85
+ else
86
+ 0
87
+ end
88
+ end
89
+
90
+ lines.each do |line|
91
+ line.chomp!
92
+ search_type = distinct_types.bsearch do |type|
93
+ if i < 0
94
+ name = type.name.split(' // ')[0]
95
+ elsif type.names[i]
96
+ name = type.names[i].split(' // ')[0]
97
+ else
98
+ next
99
+ end
100
+
101
+ flag = true
102
+ name.chars.each_with_index do |nc,i|
103
+ if line.length > i
104
+ lc = line.chars[i]
105
+ if nc > lc
106
+ flag = true
107
+ break
108
+ elsif nc < lc
109
+ flag = false
110
+ break
111
+ else
112
+ # continue
113
+ end
114
+ else
89
115
  flag = true
90
116
  break
91
- elsif nc < lc
92
- flag = false
93
- break
94
- else
95
- # continue
96
117
  end
97
- else
98
- flag = true
99
- break
100
118
  end
119
+ flag
101
120
  end
102
- flag
103
- end
104
- if search_type
105
- a = search_type.name.split(' // ')[0]
106
- if line =~ /^#{a}.*$/ and a != 'X'
107
- ret << search_type
121
+ if search_type
122
+ a = search_type.name.split(' // ')[0]
123
+ if line =~ /^#{a}.*$/ and a != 'X'
124
+ ret << search_type
125
+ end
108
126
  end
109
127
  end
110
128
  end
111
129
 
112
- ret.sort! do |a,b| a.mana_cost <=> b.mana_cost end
130
+ ret.sort! do |a,b| a.converted_mana_cost <=> b.converted_mana_cost end
113
131
  ret.uniq!
132
+ ret
114
133
  end
115
134
 
116
135
  def self.get_card_details(deck_items)
@@ -0,0 +1,3 @@
1
+ class Expansion
2
+ attr_accessor :code, :name, :exists
3
+ end
data/lib/manasimu.rb CHANGED
@@ -13,4 +13,5 @@ require_relative './manasimu/planner.rb'
13
13
  require_relative './manasimu/game.rb'
14
14
  require_relative './manasimu/simulator.rb'
15
15
  require_relative './manasimu/data.rb'
16
+ require_relative './manasimu/expansion.rb'
16
17
  require_relative '../ext/ford_fulkerson.so'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: manasimu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.22
4
+ version: 0.0.25
5
5
  platform: ruby
6
6
  authors:
7
7
  - so1itaryrove
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-28 00:00:00.000000000 Z
11
+ date: 2022-06-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: mtg arrena mana curve simulator
14
14
  email: so1itaryrove@gmail.com
@@ -27,6 +27,7 @@ files:
27
27
  - lib/manasimu/card/snc_fetchland.rb
28
28
  - lib/manasimu/card/tapland.rb
29
29
  - lib/manasimu/data.rb
30
+ - lib/manasimu/expansion.rb
30
31
  - lib/manasimu/game.rb
31
32
  - lib/manasimu/hello.rb
32
33
  - lib/manasimu/mana_type.rb