Class: AlienSwarmStats

Inherits:
GameStats show all
Defined in:
lib/steam/community/alien_swarm/alien_swarm_stats.rb

Overview

The AlienSwarmStats class represents the game statistics for a single user in Alien Swarm

Constant Summary collapse

BASE_URL =
'http://steamcommunity.com/public/images/gamestats/swarm/'
WEAPONS =
[ 'Autogun', 'Cannon_Sentry', 'Chainsaw', 'Flamer',
'Grenade_Launcher', 'Hand_Grenades', 'Hornet_Barrage',
'Incendiary_Sentry', 'Laser_Mines', 'Marskman_Rifle', 'Minigun',
'Mining_Laser', 'PDW', 'Pistol', 'Prototype_Rifle', 'Rail_Rifle',
'Rifle', 'Rifle_Grenade', 'Sentry_Gun', 'Shotgun',
'Tesla_Cannon', 'Vindicator', 'Vindicator_Grenade' ]

Instance Attribute Summary collapse

Attributes inherited from GameStats

#app_id, #custom_url, #game_friendly_name, #game_name, #hours_played, #privacy_state, #steam_id64

Instance Method Summary collapse

Methods inherited from GameStats

#achievements, #achievements_done, #achievements_percentage, #base_url, create_game_stats, #public?

Constructor Details

#initialize(steam_id) ⇒ AlienSwarmStats

Creates an AlienSwarmStats object by calling the super constructor with the game name “alienswarm”



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/steam/community/alien_swarm/alien_swarm_stats.rb', line 26

def initialize(steam_id)
  super steam_id, 'alienswarm'

  if public?
    @hours_played = @xml_data.elements['stats/lifetime/timeplayed'].text

    @lifetime_stats = {}
    @lifetime_stats[:accuracy]            = @xml_data.elements['stats/lifetime/accuracy'].text.to_f
    @lifetime_stats[:aliens_burned]       = @xml_data.elements['stats/lifetime/aliensburned'].text.to_i
    @lifetime_stats[:aliens_killed]       = @xml_data.elements['stats/lifetime/alienskilled'].text.to_i
    @lifetime_stats[:campaigns]           = @xml_data.elements['stats/lifetime/campaigns'].text.to_i
    @lifetime_stats[:damage_taken]        = @xml_data.elements['stats/lifetime/damagetaken'].text.to_i
    @lifetime_stats[:experience]          = @xml_data.elements['stats/lifetime/experience'].text.to_i
    @lifetime_stats[:experience_required] = @xml_data.elements['stats/lifetime/xprequired'].text.to_i
    @lifetime_stats[:fast_hacks]          = @xml_data.elements['stats/lifetime/fasthacks'].text.to_i
    @lifetime_stats[:friendly_fire]       = @xml_data.elements['stats/lifetime/friendlyfire'].text.to_i
    @lifetime_stats[:games_successful]    = @xml_data.elements['stats/lifetime/gamessuccess'].text.to_i
    @lifetime_stats[:healing]             = @xml_data.elements['stats/lifetime/healing'].text.to_i
    @lifetime_stats[:kills_per_hour]      = @xml_data.elements['stats/lifetime/killsperhour'].text.to_f
    @lifetime_stats[:level]               = @xml_data.elements['stats/lifetime/level'].text.to_i
    @lifetime_stats[:promotion]           = @xml_data.elements['stats/lifetime/promotion'].text.to_i
    @lifetime_stats[:promotion_img]       = BASE_URL + @xml_data.elements['stats/lifetime/promotionpic'].text if @lifetime_stats[:promotion] > 0
    @lifetime_stats[:next_unlock]         = @xml_data.elements['stats/lifetime/nextunlock'].text
    @lifetime_stats[:next_unlock_img]     = BASE_URL + @xml_data.elements['stats/lifetime/nextunlockimg'].text
    @lifetime_stats[:shots_fired]         = @xml_data.elements['stats/lifetime/shotsfired'].text.to_i
    @lifetime_stats[:total_games]         = @xml_data.elements['stats/lifetime/totalgames'].text.to_i

    @lifetime_stats[:games_successful_percentage] = (@lifetime_stats[:total_games] > 0) ? @lifetime_stats[:games_successful].to_f / @lifetime_stats[:total_games] : 0;
  end
end

Instance Attribute Details

#lifetime_statsObject (readonly)

Returns the value of attribute lifetime_stats.



13
14
15
# File 'lib/steam/community/alien_swarm/alien_swarm_stats.rb', line 13

def lifetime_stats
  @lifetime_stats
end

Instance Method Details

#favoritesObject

Returns a Hash of favorites for this user like weapons and marine. If the favorites haven’t been parsed already, parsing is done now.



59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/steam/community/alien_swarm/alien_swarm_stats.rb', line 59

def favorites
  return unless public?

  if @favorites.nil?
    @favorites = {}
    @favorites[:class]                       = @xml_data.elements['stats/favorites/class'].text
    @favorites[:class_img]                   = @xml_data.elements['stats/favorites/classimg'].text
    @favorites[:class_percentage]            = @xml_data.elements['stats/favorites/classpct'].text.to_f
    @favorites[:difficulty]                  = @xml_data.elements['stats/favorites/difficulty'].text
    @favorites[:difficulty_percentage]       = @xml_data.elements['stats/favorites/difficultypct'].text.to_f
    @favorites[:extra]                       = @xml_data.elements['stats/favorites/extra'].text
    @favorites[:extra_img]                   = @xml_data.elements['stats/favorites/extraimg'].text
    @favorites[:extra_percentage]            = @xml_data.elements['stats/favorites/extrapct'].text.to_f
    @favorites[:marine]                      = @xml_data.elements['stats/favorites/marine'].text
    @favorites[:marine_img]                  = @xml_data.elements['stats/favorites/marineimg'].text
    @favorites[:marine_percentage]           = @xml_data.elements['stats/favorites/marinepct'].text.to_f
    @favorites[:mission]                     = @xml_data.elements['stats/favorites/mission'].text
    @favorites[:mission_img]                 = @xml_data.elements['stats/favorites/missionimg'].text
    @favorites[:mission_percentage]          = @xml_data.elements['stats/favorites/missionpct'].text.to_f
    @favorites[:primary_weapon]              = @xml_data.elements['stats/favorites/primary'].text
    @favorites[:primary_weapon_img]          = @xml_data.elements['stats/favorites/primaryimg'].text
    @favorites[:primary_weapon_percentage]   = @xml_data.elements['stats/favorites/primarypct'].text.to_f
    @favorites[:secondary_weapon]            = @xml_data.elements['stats/favorites/secondary'].text
    @favorites[:secondary_weapon_img]        = @xml_data.elements['stats/favorites/secondaryimg'].text
    @favorites[:secondary_weapon_percentage] = @xml_data.elements['stats/favorites/secondarypct'].text.to_f
  end

  @favorites
end

#item_statsObject

Returns a Hash of item stats for this user like ammo deployed and medkits used. If the items haven’t been parsed already, parsing is done now.



91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
# File 'lib/steam/community/alien_swarm/alien_swarm_stats.rb', line 91

def item_stats
  return unless public?

  if @item_stats.nil?
    @item_stats = {}
    @item_stats[:ammo_deployed]             = @xml_data.elements['stats/weapons/ammo_deployed'].text.to_i
    @item_stats[:sentryguns_deployed]       = @xml_data.elements['stats/weapons/sentryguns_deployed'].text.to_i
    @item_stats[:sentry_flamers_deployed]   = @xml_data.elements['stats/weapons/sentry_flamers_deployed'].text.to_i
    @item_stats[:sentry_freeze_deployed]    = @xml_data.elements['stats/weapons/sentry_freeze_deployed'].text.to_i
    @item_stats[:sentry_cannon_deployed]    = @xml_data.elements['stats/weapons/sentry_cannon_deployed'].text.to_i
    @item_stats[:medkits_used]              = @xml_data.elements['stats/weapons/medkits_used'].text.to_i
    @item_stats[:flares_used]               = @xml_data.elements['stats/weapons/flares_used'].text.to_i
    @item_stats[:adrenaline_used]           = @xml_data.elements['stats/weapons/adrenaline_used'].text.to_i
    @item_stats[:tesla_traps_deployed]      = @xml_data.elements['stats/weapons/tesla_traps_deployed'].text.to_i
    @item_stats[:freeze_grenades_thrown]    = @xml_data.elements['stats/weapons/freeze_grenades_thrown'].text.to_i
    @item_stats[:electric_armor_used]       = @xml_data.elements['stats/weapons/electric_armor_used'].text.to_i
    @item_stats[:healgun_heals]             = @xml_data.elements['stats/weapons/healgun_heals'].text.to_i
    @item_stats[:healgun_heals_self]        = @xml_data.elements['stats/weapons/healgun_heals_self'].text.to_i
    @item_stats[:healbeacon_heals]          = @xml_data.elements['stats/weapons/healbeacon_heals'].text.to_i
    @item_stats[:healbeacon_heals_self]     = @xml_data.elements['stats/weapons/healbeacon_heals_self'].text.to_i
    @item_stats[:damage_amps_used]          = @xml_data.elements['stats/weapons/damage_amps_used'].text.to_i
    @item_stats[:healbeacons_deployed]      = @xml_data.elements['stats/weapons/healbeacons_deployed'].text.to_i
    @item_stats[:healbeacon_heals_pct]      = @xml_data.elements['stats/weapons/healbeacon_heals_pct'].text.to_f
    @item_stats[:healgun_heals_pct]         = @xml_data.elements['stats/weapons/healgun_heals_pct'].text.to_f
    @item_stats[:healbeacon_heals_pct_self] = @xml_data.elements['stats/weapons/healbeacon_heals_pct_self'].text.to_f
    @item_stats[:healgun_heals_pct_self]    = @xml_data.elements['stats/weapons/healgun_heals_pct_self'].text.to_f
  end

  @item_stats
end

#mission_statsObject

Returns a Hash of AlienSwarmMission for this user containing all Alien Swarm missions. If the missions haven’t been parsed already, parsing is done now.



125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/steam/community/alien_swarm/alien_swarm_stats.rb', line 125

def mission_stats
  return unless public?

  if @mission_stats.nil?
    @mission_stats = {}
    @xml_data.elements.each('stats/missions/*') do |mission_data|
      @mission_stats[mission_data.name] = AlienSwarmMission.new(mission_data)
    end
  end

  @mission_stats
end

#weapon_statsObject

Returns a Hash of AlienSwarmWeapon for this user containing all Alien Swarm weapons. If the weapons haven’t been parsed already, parsing is done now.



140
141
142
143
144
145
146
147
148
149
150
151
152
153
# File 'lib/steam/community/alien_swarm/alien_swarm_stats.rb', line 140

def weapon_stats
  return unless public?

  if @weapon_stats.nil?
    @weapon_stats = {}
    WEAPONS.each do |weapon_node|
      weapon_data = @xml_data.elements["stats/weapons/#{weapon_node}"]
      weapon = AlienSwarmWeapon.new(weapon_data)
      @weapon_stats[weapon.name] = weapon
    end
  end

  @weapon_stats
end