Class: ESM::Exile::Player

Inherits:
Object
  • Object
show all
Defined in:
lib/esm/model/exile/player.rb

Instance Method Summary collapse

Constructor Details

#initialize(server:, player:) ⇒ Player

Returns a new instance of Player.



6
7
8
9
10
11
12
13
# File 'lib/esm/model/exile/player.rb', line 6

def initialize(server:, player:)
  @server = server
  @data = player
  @alive = true

  # If the player is dead, not all information is returned.
  normalize
end

Instance Method Details

#alive?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/esm/model/exile/player.rb', line 19

def alive?
  @alive
end

#damageObject

Arma stores the health as 0 (full) to 1 (dead)



24
25
26
# File 'lib/esm/model/exile/player.rb', line 24

def damage
  (100 - (@data.damage * 100)).round(2)
end

#deathsObject



52
53
54
# File 'lib/esm/model/exile/player.rb', line 52

def deaths
  @data.deaths
end

#hungerObject



28
29
30
# File 'lib/esm/model/exile/player.rb', line 28

def hunger
  @data.hunger.round(2)
end

#kd_ratioObject



56
57
58
59
60
61
# File 'lib/esm/model/exile/player.rb', line 56

def kd_ratio
  return 0 if deaths.zero?

  # These are returns as integers, cast to float
  (kills.to_f / deaths).round(2)
end

#killsObject



48
49
50
# File 'lib/esm/model/exile/player.rb', line 48

def kills
  @data.kills
end

#lockerObject



40
41
42
# File 'lib/esm/model/exile/player.rb', line 40

def locker
  @data.locker
end

#moneyObject



36
37
38
# File 'lib/esm/model/exile/player.rb', line 36

def money
  @data.money
end

#nameObject



15
16
17
# File 'lib/esm/model/exile/player.rb', line 15

def name
  @data.name
end

#respectObject



44
45
46
# File 'lib/esm/model/exile/player.rb', line 44

def respect
  @data.score
end

#territoriesObject



63
64
65
66
67
68
69
70
71
72
73
74
75
# File 'lib/esm/model/exile/player.rb', line 63

def territories
  @territories ||= begin
    territories = @data.territories

    # V1 - Wtf? Why did I send this as a hash?? And using the name as the key?? lol
    if territories.is_a?(String)
      territory = ImmutableStruct.define(:id, :name)
      territories = territories.to_h.map { |name, id| territory.new(id, name) }
    end

    territories.sort_by { |t| t.name.downcase }
  end
end

#thirstObject



32
33
34
# File 'lib/esm/model/exile/player.rb', line 32

def thirst
  @data.thirst.round(2)
end

#to_embedObject



77
78
79
80
81
82
83
84
85
86
# File 'lib/esm/model/exile/player.rb', line 77

def to_embed
  ESM::Embed.build do |e|
    e.title = I18n.t("commands.me.embed.title", server_id: @server.server_id, user: name)

    add_general_field(e)
    add_currency_field(e)
    add_scoreboard_field(e)
    add_territories_field(e) if territories.present?
  end
end