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 +1 -1
- data/demo-reader.gemspec +10 -4
- data/lib/demo_reader_warsow.rb +8 -8
- data/test/fixtures/warsow/wd12/freestyle_wctf1.wd12 +0 -0
- data/test/fixtures/warsow/wd12/race_bardok-egypt_10.690.wd12 +0 -0
- data/test/fixtures/warsow/wd12/race_bardok-w3sp_18.000.wd12 +0 -0
- data/test/fixtures/warsow/wd12/race_cjscomp008.wd12 +0 -0
- data/test/unit/demo_reader_warsow_wd12_race_test.rb +33 -0
- metadata +11 -5
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/demo-reader.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{demo-reader}
|
8
|
-
s.version = "0.
|
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{
|
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
|
data/lib/demo_reader_warsow.rb
CHANGED
@@ -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
|
84
|
-
@gamemode =
|
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
|
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?
|
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
|
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
|
229
|
+
def gamemode_wd1x(file_content)
|
230
230
|
if file_content =~ /cs 12 "(.*?)"/
|
231
231
|
$1
|
232
232
|
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -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:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
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:
|
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
|