admiral_stats_parser 0.1.7 → 0.1.8
Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aef0c8b05ae9d0b5927985b4adddac004e9d8cd7
|
4
|
+
data.tar.gz: 2caebc70574e70a7d2d0bc5316aa3a1aa18c7a98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a494052c90c15bb4fb249e6ce6e2f83d727a01b02a660c16378baeb95c89424d436a12251347e14cee59d0b3c9ffc09e1c9016b31d65ae85fc787acacef69e4
|
7
|
+
data.tar.gz: cf820f157bedac27f066eaef137724f978b1a6ad7c4bab3a71bad66b33c207ff2eb1f7fa560e4b9984309611644d4271234be4d9de99963cac5dfa4ab96f7d13
|
@@ -136,8 +136,7 @@ class EventInfoParser
|
|
136
136
|
list = event_info_list.select{|info| info.level == level }
|
137
137
|
|
138
138
|
# その周回をクリア済みかどうか
|
139
|
-
|
140
|
-
cleared = ( list.first.area_clear_state != 'NOOPEN' and list.select{|i| i.area_clear_state == 'NOTCLEAR' }.size == 0 )
|
139
|
+
cleared = EventInfoParser.all_cleared?(event_info_list, level)
|
141
140
|
|
142
141
|
# 現在の周回数
|
143
142
|
loop_count = list.map{|i| i.loop_count }.max
|
@@ -149,12 +148,12 @@ class EventInfoParser
|
|
149
148
|
# 丙 E-1 クリア済みの場合も、乙 E-1 クリア済みの場合も 1 を返します。
|
150
149
|
# E-1 未クリアの場合は 0 を返します。
|
151
150
|
def self.cleared_stage_no(event_info_list, level)
|
151
|
+
# その難易度が未開放の場合は、0 を返す
|
152
|
+
return 0 unless EventInfoParser.opened?(event_info_list, level)
|
153
|
+
|
152
154
|
# 指定されたレベルの情報を、サブ海域番号の小さい順に取り出し
|
153
155
|
list = event_info_list.select{|info| info.level == level}.sort_by {|info| info.area_sub_id }
|
154
156
|
|
155
|
-
# 最初の海域が NOOPEN の場合は、難易度自体が開放されていないため、0 を返す
|
156
|
-
return 0 if list.first.area_clear_state == 'NOOPEN'
|
157
|
-
|
158
157
|
list.each_with_index do |info, prev_stage_no|
|
159
158
|
return prev_stage_no if info.area_clear_state == 'NOTCLEAR'
|
160
159
|
end
|
@@ -166,10 +165,13 @@ class EventInfoParser
|
|
166
165
|
# 与えられたリストから、攻略中のステージの海域ゲージの現在値を返します。
|
167
166
|
# 全ステージクリア後、および掃討戦の場合は 0 を返します。
|
168
167
|
def self.current_military_gauge_left(event_info_list, level)
|
168
|
+
# 全ステージクリア後は 0 を返す
|
169
|
+
return 0 if EventInfoParser.all_cleared?(event_info_list, level)
|
170
|
+
|
169
171
|
# 指定されたレベルの情報を、サブ海域番号の小さい順に取り出し
|
170
172
|
list = event_info_list.select{|info| info.level == level}.sort_by {|info| info.area_sub_id }
|
171
173
|
|
172
|
-
list.
|
174
|
+
list.each do |info|
|
173
175
|
if info.area_clear_state == 'NOTCLEAR' or info.area_clear_state == 'NOOPEN'
|
174
176
|
return info.military_gauge_left
|
175
177
|
end
|
@@ -178,4 +180,28 @@ class EventInfoParser
|
|
178
180
|
# NOTCLEAR のエリアがなければ 0 を返す
|
179
181
|
0
|
180
182
|
end
|
183
|
+
|
184
|
+
# 与えられた難易度が解放済みの場合に true を返します。
|
185
|
+
def self.opened?(event_info_list, level)
|
186
|
+
# 指定されたレベルの情報を、サブ海域番号の小さい順に取り出し
|
187
|
+
list = event_info_list.select{|info| info.level == level}.sort_by {|info| info.area_sub_id }
|
188
|
+
|
189
|
+
# その難易度のデータがなければ、未開放と見なす(通常は発生しない)
|
190
|
+
return false if list.size == 0
|
191
|
+
|
192
|
+
# 最初の海域の状態が NOOPEN の場合は未開放
|
193
|
+
return false if list.first.area_clear_state == 'NOOPEN'
|
194
|
+
|
195
|
+
true
|
196
|
+
end
|
197
|
+
|
198
|
+
# 与えられた難易度の全海域をクリア済みの場合に true を返します。
|
199
|
+
# その難易度が解放済みで、かつ 'NOTCLEAR' の海域が存在しない場合はクリア済みとみなします。
|
200
|
+
def self.all_cleared?(event_info_list, level)
|
201
|
+
return false unless EventInfoParser.opened?(event_info_list, level)
|
202
|
+
|
203
|
+
# 指定されたレベルの情報を、サブ海域番号の小さい順に取り出し
|
204
|
+
list = event_info_list.select{|info| info.level == level}.sort_by {|info| info.area_sub_id }
|
205
|
+
list.select{|i| i.area_clear_state == 'NOTCLEAR' }.size == 0
|
206
|
+
end
|
181
207
|
end
|