demo-reader 0.2.6 → 0.3.0

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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.2.6
1
+ 0.3.0
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{demo-reader}
8
- s.version = "0.2.6"
8
+ s.version = "0.3.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["aekym"]
12
- s.date = %q{2010-12-19}
12
+ s.date = %q{2011-03-09}
13
13
  s.description = %q{A library to read warsow demo files (.wd8, .wd9, .wd10, .wd11 files) and q3 demo files (*.dm68)}
14
14
  s.email = %q{me@aekym.com}
15
15
  s.extensions = ["ext/dm68/extconf.rb"]
@@ -66,13 +66,18 @@ Gem::Specification.new do |s|
66
66
  "test/fixtures/warsow/wd11/race_st1_07.848.wd11",
67
67
  "test/fixtures/warsow/wd11/race_wdm16_unfinished.wd11",
68
68
  "test/fixtures/warsow/wd11/race_wrc03-3_28.684.wd11",
69
+ "test/fixtures/warsow/wd12/freestyle_wctf1.wd12",
70
+ "test/fixtures/warsow/wd12/race_bardok-egypt_10.690.wd12",
71
+ "test/fixtures/warsow/wd12/race_bardok-w3sp_18.000.wd12",
72
+ "test/fixtures/warsow/wd12/race_cjscomp008.wd12",
69
73
  "test/helper.rb",
70
74
  "test/unit/demo_reader_defrag_dm_68_cpm_test.rb",
71
75
  "test/unit/demo_reader_defrag_dm_68_vq3_test.rb",
72
76
  "test/unit/demo_reader_test.rb",
73
77
  "test/unit/demo_reader_warsow_wd10_race_test.rb",
74
78
  "test/unit/demo_reader_warsow_wd11_freestyle_test.rb",
75
- "test/unit/demo_reader_warsow_wd11_race_test.rb"
79
+ "test/unit/demo_reader_warsow_wd11_race_test.rb",
80
+ "test/unit/demo_reader_warsow_wd12_race_test.rb"
76
81
  ]
77
82
  s.homepage = %q{http://github.com/aekym/demo-reader}
78
83
  s.rdoc_options = ["--charset=UTF-8"]
@@ -86,7 +91,8 @@ Gem::Specification.new do |s|
86
91
  "test/unit/demo_reader_test.rb",
87
92
  "test/unit/demo_reader_warsow_wd10_race_test.rb",
88
93
  "test/unit/demo_reader_warsow_wd11_freestyle_test.rb",
89
- "test/unit/demo_reader_warsow_wd11_race_test.rb"
94
+ "test/unit/demo_reader_warsow_wd11_race_test.rb",
95
+ "test/unit/demo_reader_warsow_wd12_race_test.rb"
90
96
  ]
91
97
 
92
98
  if s.respond_to? :specification_version then
@@ -30,13 +30,13 @@ class DemoReaderWarsow
30
30
  @version = detect_version(file)
31
31
 
32
32
  # just support some wd* file versions
33
- return unless [8, 9, 10, 11].include? @version
33
+ return unless [8, 9, 10, 11, 12].include? @version
34
34
 
35
35
  # skip 4 bytes "svs.spawncount"
36
36
  file.pos += 4
37
37
 
38
38
  # skip 2 bytes "cl.snapFrameTime"
39
- file.pos += 2 if [10, 11].include? @version
39
+ file.pos += 2 if [10, 11, 12].include? @version
40
40
 
41
41
  # skip 4 bytes "cl.baseServerTime"
42
42
  file.pos += 4 if @version == 10
@@ -80,8 +80,8 @@ class DemoReaderWarsow
80
80
 
81
81
  # detect game mode
82
82
 
83
- if @version == 11
84
- @gamemode = gamemode_wd11(content)
83
+ if @version >= 11
84
+ @gamemode = gamemode_wd1x(content)
85
85
  else
86
86
  regex = /&([^ ]+) /
87
87
 
@@ -177,7 +177,7 @@ class DemoReaderWarsow
177
177
 
178
178
 
179
179
  def detect_version(file)
180
- # try to detect version 8, 9 or 10
180
+ # try to detect version 8, 9, 11, 12
181
181
  #
182
182
  file.pos = 0
183
183
 
@@ -188,7 +188,7 @@ class DemoReaderWarsow
188
188
  # reads 4 bytes and decodes the little-endian format
189
189
  version = file.read(4).unpack('V')[0]
190
190
 
191
- return version if [8, 9, 10].include? version
191
+ return version if [8, 9, 10].include?(version)
192
192
 
193
193
 
194
194
  # try to detect version 11
@@ -209,7 +209,7 @@ class DemoReaderWarsow
209
209
  # reads 4 bytes and decodes the little-endian format
210
210
  version = file.read(4).unpack('V')[0]
211
211
 
212
- return version if version == 11
212
+ return version if [11, 12].include?(version)
213
213
 
214
214
  nil # could not detect any known version
215
215
  end
@@ -226,7 +226,7 @@ class DemoReaderWarsow
226
226
  end
227
227
 
228
228
 
229
- def gamemode_wd11(file_content)
229
+ def gamemode_wd1x(file_content)
230
230
  if file_content =~ /cs 12 "(.*?)"/
231
231
  $1
232
232
  end
@@ -0,0 +1,33 @@
1
+ $LOAD_PATH << File.dirname(__FILE__) + '/..'
2
+ require "helper"
3
+
4
+ class DemoReaderWarsowWd12RaceTest < Test::Unit::TestCase
5
+
6
+ game = "Warsow"
7
+ gamemode = "race"
8
+ version = 12
9
+
10
+ [
11
+ %w(freestyle_wctf1 wctf1),
12
+ %w(race_bardok-w3sp_18.000 bardok-w3sp 00:18.000),
13
+ %w(race_bardok-egypt_10.690 bardok-egypt 00:10.690),
14
+ %w(race_cjscomp008 cjscomp008 00:17.932),
15
+ ].each do |entry|
16
+
17
+ file, map, time = entry
18
+
19
+ define_method "test_warsow_wd#{version}_demo_#{file.gsub(/[^a-z_0-9]/, "_")}" do
20
+ demo = DemoReader.parse("test/fixtures/warsow/wd#{version}/#{file}.wd#{version}")
21
+
22
+ assert demo.valid
23
+ assert_equal version, demo.version
24
+ assert_equal game, demo.game
25
+ assert_equal gamemode, demo.gamemode
26
+ assert_equal map, demo.mapname
27
+ assert_equal time, demo.time if time
28
+ end
29
+
30
+ end
31
+
32
+ end
33
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: demo-reader
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 2
9
- - 6
10
- version: 0.2.6
8
+ - 3
9
+ - 0
10
+ version: 0.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - aekym
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-19 00:00:00 +01:00
18
+ date: 2011-03-09 00:00:00 +01:00
19
19
  default_executable:
20
20
  dependencies: []
21
21
 
@@ -77,6 +77,10 @@ files:
77
77
  - test/fixtures/warsow/wd11/race_st1_07.848.wd11
78
78
  - test/fixtures/warsow/wd11/race_wdm16_unfinished.wd11
79
79
  - test/fixtures/warsow/wd11/race_wrc03-3_28.684.wd11
80
+ - test/fixtures/warsow/wd12/freestyle_wctf1.wd12
81
+ - test/fixtures/warsow/wd12/race_bardok-egypt_10.690.wd12
82
+ - test/fixtures/warsow/wd12/race_bardok-w3sp_18.000.wd12
83
+ - test/fixtures/warsow/wd12/race_cjscomp008.wd12
80
84
  - test/helper.rb
81
85
  - test/unit/demo_reader_defrag_dm_68_cpm_test.rb
82
86
  - test/unit/demo_reader_defrag_dm_68_vq3_test.rb
@@ -84,6 +88,7 @@ files:
84
88
  - test/unit/demo_reader_warsow_wd10_race_test.rb
85
89
  - test/unit/demo_reader_warsow_wd11_freestyle_test.rb
86
90
  - test/unit/demo_reader_warsow_wd11_race_test.rb
91
+ - test/unit/demo_reader_warsow_wd12_race_test.rb
87
92
  has_rdoc: true
88
93
  homepage: http://github.com/aekym/demo-reader
89
94
  licenses: []
@@ -126,3 +131,4 @@ test_files:
126
131
  - test/unit/demo_reader_warsow_wd10_race_test.rb
127
132
  - test/unit/demo_reader_warsow_wd11_freestyle_test.rb
128
133
  - test/unit/demo_reader_warsow_wd11_race_test.rb
134
+ - test/unit/demo_reader_warsow_wd12_race_test.rb