Class: L4D2Map
Overview
L4D2Map holds statistical information about maps played by a player in Survival mode of Left4Dead 2. The basic information provided is more or less the same for Left4Dead and Left4Dead 2, but parsing has to be done differently.
Constant Summary collapse
- INFECTED =
The names of the special infected in Left4Dead 2
%w{boomer charger common hunter jockey smoker spitter tank}
- ITEMS =
The items available in Left4Dead 2
%w{adrenaline defibs medkits pills}
Constants inherited from L4DMap
L4DMap::BRONZE, L4DMap::GOLD, L4DMap::NONE, L4DMap::SILVER
Instance Attribute Summary collapse
-
#items ⇒ Hash<Symbol, Fixnum>
readonly
Returns statistics about the items used by the player on this map.
-
#kills ⇒ Hash<Symbol, Fixnum>
readonly
Returns the number of special infected killed by the player grouped by the names of the special infected.
-
#teammates ⇒ Array<SteamId>
readonly
Returns the SteamIDs of the teammates of the player in his best game on this map.
Attributes inherited from L4DMap
#best_time, #id, #medal, #name, #times_played
Instance Method Summary collapse
-
#initialize(map_data) ⇒ L4D2Map
constructor
Creates a new instance of a map based on the given XML data.
-
#played? ⇒ Boolean
Returns whether the player has already played this map.
Constructor Details
#initialize(map_data) ⇒ L4D2Map
Creates a new instance of a map based on the given XML data
The map statistics for the Survival mode of Left4Dead 2 hold much more information than those for Left4Dead, e.g. the teammates and items are listed.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/steam/community/l4d/l4d2_map.rb', line 47 def initialize(map_data) @id = map_data['img'].match(/http:\/\/cdn\.steamcommunity\.com\/public\/images\/gamestats\/550\/(.*).jpg/)[1] @name = map_data['name'] @played = (map_data['hasPlayed'].to_i == 1) if @played @best_time = map_data['besttimemilliseconds'].to_f / 1000 @teammates = [] map_data['teammates']['steamID64'].each do |teammate| @teammates << SteamId.new(teammate, false) end @items = {} ITEMS.each do |item| @items[item] = map_data["items_#{item}"].to_i end @kills = {} INFECTED.each do |infected| @kills[infected] = map_data["kills_#{infected}"].to_i end case map_data['medal'] when 'gold' @medal = L4D2Map::GOLD when 'silver' @medal = L4D2Map::SILVER when 'bronze' @medal = L4D2Map::BRONZE else @medal = L4D2Map::NONE end end end |
Instance Attribute Details
#items ⇒ Hash<Symbol, Fixnum> (readonly)
Returns statistics about the items used by the player on this map
20 21 22 |
# File 'lib/steam/community/l4d/l4d2_map.rb', line 20 def items @items end |
#kills ⇒ Hash<Symbol, Fixnum> (readonly)
Returns the number of special infected killed by the player grouped by the names of the special infected
26 27 28 |
# File 'lib/steam/community/l4d/l4d2_map.rb', line 26 def kills @kills end |
#teammates ⇒ Array<SteamId> (readonly)
Returns the SteamIDs of the teammates of the player in his best game on this map
32 33 34 |
# File 'lib/steam/community/l4d/l4d2_map.rb', line 32 def teammates @teammates end |
Instance Method Details
#played? ⇒ Boolean
Returns whether the player has already played this map
86 87 88 |
# File 'lib/steam/community/l4d/l4d2_map.rb', line 86 def played? @played end |