tclog 0.1.0 → 0.1.1
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/README.mkd +0 -2
- data/VERSION +1 -1
- data/lib/tclog.rb +70 -19
- data/tclog.gemspec +2 -2
- metadata +3 -3
data/README.mkd
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.1
|
data/lib/tclog.rb
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
+
# = TCLog
|
2
|
+
# Author:: Shota Fukumori (sora_h)
|
3
|
+
# Copyright:: (c) Shota Fukumori (sora_h) 2010- w/ mit license
|
4
|
+
# License:: MIT License; License terms written in README.mkd
|
5
|
+
#
|
6
|
+
# This library helps TC:E stats parsing.
|
7
|
+
#
|
1
8
|
module TCLog
|
2
9
|
class Game
|
3
|
-
def initialize(orders = [], gametype = :obj)
|
10
|
+
def initialize(orders = [], gametype = :obj) # :nodoc:
|
4
11
|
@orders = orders
|
5
12
|
@gametype = gametype
|
6
13
|
@rounds = []
|
@@ -23,12 +30,12 @@ module TCLog
|
|
23
30
|
end
|
24
31
|
|
25
32
|
|
26
|
-
def add_map(map_name)
|
33
|
+
def add_map(map_name) # :nodoc:
|
27
34
|
@round_r += 1
|
28
35
|
@rounds << Round.new(self, nil, @round_r, :map, true, map_name); self
|
29
36
|
end
|
30
37
|
|
31
|
-
def add_round(specops,terrorists,won)
|
38
|
+
def add_round(specops,terrorists,won) # :nodoc:
|
32
39
|
@round_n += 1
|
33
40
|
@round_r += 1
|
34
41
|
r = Round.new(self, @round_n, @round_r, won)
|
@@ -38,7 +45,7 @@ module TCLog
|
|
38
45
|
self
|
39
46
|
end
|
40
47
|
|
41
|
-
def add_player(name)
|
48
|
+
def add_player(name) # :nodoc:
|
42
49
|
@players[name] = Player.new(name)
|
43
50
|
if 0 <= @round_r
|
44
51
|
@players[name].push_result(@round_r)
|
@@ -47,12 +54,26 @@ module TCLog
|
|
47
54
|
end
|
48
55
|
|
49
56
|
|
50
|
-
def round; @round_n; end
|
57
|
+
def round; @round_n; end # :nodoc:
|
58
|
+
attr_reader :round_r # :nodoc:
|
59
|
+
|
60
|
+
# Has same mean as game.rounds[i]
|
51
61
|
def [](i); @rounds[i]; end
|
52
|
-
|
62
|
+
|
63
|
+
# Logged rounds.
|
64
|
+
attr_reader :rounds
|
65
|
+
|
66
|
+
# All players.
|
67
|
+
attr_reader :players
|
68
|
+
|
69
|
+
# Parser VM call stacks.
|
70
|
+
attr_reader :orders
|
71
|
+
|
72
|
+
# Gametype. obj, bc, ctf.
|
73
|
+
attr_reader :gametype
|
53
74
|
end
|
54
75
|
class Round
|
55
|
-
def initialize(game, n, rn, win, map_changing = false, map_name = nil)
|
76
|
+
def initialize(game, n, rn, win, map_changing = false, map_name = nil) # :nodoc
|
56
77
|
@game = game
|
57
78
|
@won = win
|
58
79
|
@round_number = n
|
@@ -63,33 +84,52 @@ module TCLog
|
|
63
84
|
@map_name = map_name
|
64
85
|
end
|
65
86
|
|
87
|
+
|
88
|
+
# Players which joined at this round.
|
66
89
|
def players
|
67
90
|
@game.players.map do |g|
|
68
91
|
g if @round_number && g.results[@real_round_number]
|
69
92
|
end.compact
|
70
93
|
end
|
71
94
|
|
95
|
+
# Players result which joined at this round.
|
72
96
|
def player_results
|
73
97
|
@game.players.map do |g|
|
74
98
|
g.results[@real_round_number] if @round_number
|
75
99
|
end.compact
|
76
100
|
end
|
77
101
|
|
102
|
+
# Is this round changing map?
|
78
103
|
def map_changing?; @map_changing; end
|
79
|
-
|
80
|
-
|
104
|
+
|
105
|
+
def map_changing=(x); @map_changing = x; end # :nodoc:
|
106
|
+
|
107
|
+
# Next map name if this round changing map.
|
108
|
+
attr_accessor :map_name
|
109
|
+
|
110
|
+
# specops total scores.
|
111
|
+
attr_accessor :specops
|
112
|
+
|
113
|
+
# terrorists total scores.
|
114
|
+
attr_accessor :terrorists
|
115
|
+
|
116
|
+
# Team which won this round.
|
117
|
+
attr_accessor :won
|
118
|
+
|
119
|
+
# Round number at game. (Counted without map changing)
|
81
120
|
attr_reader :round_number
|
82
121
|
end
|
83
122
|
class Player
|
84
|
-
def initialize(name)
|
123
|
+
def initialize(name) # :nodoc:
|
85
124
|
@name = name
|
86
125
|
@results = []
|
87
126
|
end
|
88
127
|
|
89
|
-
def add_result(n, score)
|
128
|
+
def add_result(n, score) # :nodoc:
|
90
129
|
@results[n] = score.merge(:round => n); self
|
91
130
|
end
|
92
131
|
|
132
|
+
# Returns this player's total score.
|
93
133
|
def total
|
94
134
|
a = @results.compact.inject({
|
95
135
|
:name => @name,
|
@@ -114,18 +154,29 @@ module TCLog
|
|
114
154
|
a
|
115
155
|
end
|
116
156
|
|
117
|
-
def push_result(i)
|
157
|
+
def push_result(i) # :nodoc:
|
118
158
|
@results[i] = nil
|
119
159
|
end
|
120
|
-
|
160
|
+
|
161
|
+
# This player's name.
|
162
|
+
attr_reader :name
|
163
|
+
|
164
|
+
# This player's round results.
|
165
|
+
# Use compact method to use Round#round_number.
|
166
|
+
attr_reader :results
|
121
167
|
end
|
122
168
|
|
123
|
-
|
124
|
-
#
|
169
|
+
|
170
|
+
# [logfile]
|
171
|
+
# String or IO. String is filename.
|
172
|
+
#
|
173
|
+
# [gametype]
|
174
|
+
# :obj => "Objective"
|
175
|
+
# :ctf => "Capture The Flag"
|
176
|
+
# :bc => "BodyCount"
|
125
177
|
#
|
126
|
-
#
|
127
|
-
#
|
128
|
-
# :bc => "BodyCount"
|
178
|
+
# Parses TC:E etconsole.log.
|
179
|
+
# You can catch etconsole.log by /set logfile 2 at tc:e console.
|
129
180
|
def self.analyze(logfile, gametype = :obj)
|
130
181
|
# Load file
|
131
182
|
log = case logfile
|
@@ -277,7 +328,7 @@ module TCLog
|
|
277
328
|
game
|
278
329
|
end
|
279
330
|
|
280
|
-
def self.compare_score(terrorists, specops)
|
331
|
+
def self.compare_score(terrorists, specops) # :nodoc:
|
281
332
|
if terrorists[:score] > specops[:score]
|
282
333
|
:terrorists
|
283
334
|
else
|
data/tclog.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{tclog}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Shota Fukumori"]
|
12
|
-
s.date = %q{2010-12-
|
12
|
+
s.date = %q{2010-12-25}
|
13
13
|
s.description = %q{Parser for etconsole.log of TrueCombat:Elite (TC:E)}
|
14
14
|
s.email = %q{sorah@tubusu.net}
|
15
15
|
s.extra_rdoc_files = [
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 1
|
9
|
+
version: 0.1.1
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Shota Fukumori
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-12-
|
17
|
+
date: 2010-12-25 00:00:00 +09:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|