demoman 1.0.0 → 1.1.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/LICENSE +1 -1
- data/README.textile +60 -0
- data/VERSION +1 -1
- data/demoman.gemspec +4 -4
- data/lib/demoman.rb +24 -5
- data/test/test_demoman.rb +36 -0
- metadata +6 -6
- data/README.rdoc +0 -17
data/LICENSE
CHANGED
data/README.textile
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
h1. demoman
|
2
|
+
|
3
|
+
Demoman allows you to extract metadata from Half-Life and Half-Life 2 demo (.dem) files.
|
4
|
+
|
5
|
+
h2. Installation
|
6
|
+
|
7
|
+
<pre>
|
8
|
+
sudo gem install demoman
|
9
|
+
</pre>
|
10
|
+
|
11
|
+
And add the gem to your environment.rb configuration as a gem dependency:
|
12
|
+
|
13
|
+
<pre>
|
14
|
+
config.gem 'demoman'
|
15
|
+
</pre>
|
16
|
+
|
17
|
+
|
18
|
+
h2. Usage
|
19
|
+
|
20
|
+
<pre>
|
21
|
+
demo_object = Demoman.new("test/test.dem")
|
22
|
+
|
23
|
+
# Server IP Address
|
24
|
+
puts demo_object.server_address
|
25
|
+
|
26
|
+
|
27
|
+
# Player who recorded the demo
|
28
|
+
puts demo_object.player_name
|
29
|
+
|
30
|
+
# The map being played
|
31
|
+
puts demo_object.map
|
32
|
+
|
33
|
+
# The game directory (dod, tf2, ...)
|
34
|
+
puts demo_object.game_dir
|
35
|
+
|
36
|
+
# The duration of the demo (in seconds)
|
37
|
+
puts demo_object.duration
|
38
|
+
|
39
|
+
# The number of ticks in the demo
|
40
|
+
puts demo_object.ticks
|
41
|
+
|
42
|
+
# The total number of frames
|
43
|
+
puts demo_object.frames
|
44
|
+
|
45
|
+
</pre>
|
46
|
+
|
47
|
+
|
48
|
+
h2. Note on Patches/Pull Requests
|
49
|
+
|
50
|
+
* Fork the project.
|
51
|
+
* Make your feature addition or bug fix.
|
52
|
+
* Add tests for it. This is important so I don't break it in a
|
53
|
+
future version unintentionally.
|
54
|
+
* Commit, do not mess with rakefile, version, or history.
|
55
|
+
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
56
|
+
* Send me a pull request. Bonus points for topic branches.
|
57
|
+
|
58
|
+
h2. Copyright
|
59
|
+
|
60
|
+
Copyright (c) 2010 Mitch Dempsey. See LICENSE for details.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.1.0
|
data/demoman.gemspec
CHANGED
@@ -5,22 +5,22 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{demoman}
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.1.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Mitch Dempsey"]
|
12
|
-
s.date = %q{2010-09-
|
12
|
+
s.date = %q{2010-09-11}
|
13
13
|
s.description = %q{Library for reading metadata from Half-Life demo files}
|
14
14
|
s.email = %q{mrdempsey@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
16
16
|
"LICENSE",
|
17
|
-
"README.
|
17
|
+
"README.textile"
|
18
18
|
]
|
19
19
|
s.files = [
|
20
20
|
".document",
|
21
21
|
".gitignore",
|
22
22
|
"LICENSE",
|
23
|
-
"README.
|
23
|
+
"README.textile",
|
24
24
|
"Rakefile",
|
25
25
|
"VERSION",
|
26
26
|
"demoman.gemspec",
|
data/lib/demoman.rb
CHANGED
@@ -3,12 +3,31 @@ class Demoman
|
|
3
3
|
|
4
4
|
attr_reader :server_address, :player_name, :map, :game_dir, :demo_protocol, :network_protocol, :type, :duration, :ticks, :frames, :sign_on_length
|
5
5
|
|
6
|
-
def initialize(file)
|
7
|
-
io = File.new(file, "r")
|
6
|
+
def initialize(file=nil)
|
8
7
|
|
9
|
-
|
8
|
+
unless file.nil?
|
9
|
+
io = File.new(file, "r")
|
10
|
+
data = io.sysread(4096)
|
11
|
+
parse_data data
|
12
|
+
end
|
10
13
|
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.from_file(file)
|
17
|
+
io = File.new(file, "r")
|
18
|
+
data = io.sysread(4096)
|
11
19
|
|
20
|
+
Demoman.from_string(data)
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.from_string(data)
|
24
|
+
demoman = Demoman.new
|
25
|
+
demoman.parse_data(data)
|
26
|
+
demoman
|
27
|
+
end
|
28
|
+
|
29
|
+
|
30
|
+
def parse_data(data)
|
12
31
|
demodata = data.unpack("A8/I/I/A260/A260/A260/A260/f/I/I/I/")
|
13
32
|
@type = demodata[0]
|
14
33
|
@demo_protocol = demodata[1]
|
@@ -22,8 +41,8 @@ class Demoman
|
|
22
41
|
@ticks = demodata[8]
|
23
42
|
@frames = demodata[9]
|
24
43
|
@sign_on_length = demodata[10]
|
25
|
-
|
26
|
-
|
44
|
+
nil
|
27
45
|
end
|
28
46
|
|
47
|
+
|
29
48
|
end
|
data/test/test_demoman.rb
CHANGED
@@ -18,4 +18,40 @@ class TestDemoman < Test::Unit::TestCase
|
|
18
18
|
#["HL2DEMO", 3, 7, "69.90.189.79:27037", "Ham Salad[AOF]", "dod_jagd", "dod", 13.2424249649048, 874, 390, 115449]
|
19
19
|
|
20
20
|
end
|
21
|
+
|
22
|
+
should "new style load demo" do
|
23
|
+
|
24
|
+
demoman = Demoman.from_file("test/test.dem")
|
25
|
+
|
26
|
+
assert_equal "69.90.189.79:27037", demoman.server_address
|
27
|
+
assert_equal "Ham Salad[AOF]", demoman.player_name
|
28
|
+
assert_equal "dod_jagd", demoman.map
|
29
|
+
assert_equal "dod", demoman.game_dir
|
30
|
+
assert_equal 3, demoman.demo_protocol
|
31
|
+
assert_equal 7, demoman.network_protocol
|
32
|
+
|
33
|
+
assert_equal 874, demoman.ticks
|
34
|
+
assert_equal 390, demoman.frames
|
35
|
+
assert_equal 115449, demoman.sign_on_length
|
36
|
+
end
|
37
|
+
|
38
|
+
should "read from string" do
|
39
|
+
io = File.new("test/test.dem", "r")
|
40
|
+
data = io.sysread(4096)
|
41
|
+
|
42
|
+
demoman = Demoman.from_string(data)
|
43
|
+
|
44
|
+
assert_equal "69.90.189.79:27037", demoman.server_address
|
45
|
+
assert_equal "Ham Salad[AOF]", demoman.player_name
|
46
|
+
assert_equal "dod_jagd", demoman.map
|
47
|
+
assert_equal "dod", demoman.game_dir
|
48
|
+
assert_equal 3, demoman.demo_protocol
|
49
|
+
assert_equal 7, demoman.network_protocol
|
50
|
+
|
51
|
+
assert_equal 874, demoman.ticks
|
52
|
+
assert_equal 390, demoman.frames
|
53
|
+
assert_equal 115449, demoman.sign_on_length
|
54
|
+
|
55
|
+
end
|
56
|
+
|
21
57
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: demoman
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 1
|
8
|
+
- 1
|
8
9
|
- 0
|
9
|
-
|
10
|
-
version: 1.0.0
|
10
|
+
version: 1.1.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Mitch Dempsey
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-09-
|
18
|
+
date: 2010-09-11 00:00:00 -07:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -40,12 +40,12 @@ extensions: []
|
|
40
40
|
|
41
41
|
extra_rdoc_files:
|
42
42
|
- LICENSE
|
43
|
-
- README.
|
43
|
+
- README.textile
|
44
44
|
files:
|
45
45
|
- .document
|
46
46
|
- .gitignore
|
47
47
|
- LICENSE
|
48
|
-
- README.
|
48
|
+
- README.textile
|
49
49
|
- Rakefile
|
50
50
|
- VERSION
|
51
51
|
- demoman.gemspec
|
data/README.rdoc
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
= demoman
|
2
|
-
|
3
|
-
Demoman allows you to extract metadata from Half-Life and Half-Life 2 demo (.dem) files.
|
4
|
-
|
5
|
-
== Note on Patches/Pull Requests
|
6
|
-
|
7
|
-
* Fork the project.
|
8
|
-
* Make your feature addition or bug fix.
|
9
|
-
* Add tests for it. This is important so I don't break it in a
|
10
|
-
future version unintentionally.
|
11
|
-
* Commit, do not mess with rakefile, version, or history.
|
12
|
-
(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
|
13
|
-
* Send me a pull request. Bonus points for topic branches.
|
14
|
-
|
15
|
-
== Copyright
|
16
|
-
|
17
|
-
Copyright (c) 2010 Mitch Dempsey. See LICENSE for details.
|