class Openra::Commands::Replays::ExtractMetadata
Public Instance Methods
call(filepath)
click to toggle source
# File lib/openra/commands/replays/extract_metadata.rb, line 9 def call(filepath) replay = Openra::Replays::Replay.new(filepath) { mod: replay.metadata.mod, version: replay.metadata.version, file: { hash: replay.file_hash }, map: { name: utf8(replay.metadata.map_name), hash: replay.metadata.map_hash }, game: { type: replay.players.each_with_object(Hash.new(0)) { |player, hash| if player.team.nil? hash[SecureRandom.uuid] += 1 else hash[player.team] += 1 end }.values.join('v'), start_time: replay.metadata.start_time.iso8601, end_time: replay.metadata.end_time.iso8601, duration: time((replay.metadata.end_time - replay.metadata.start_time) * 1000) }, players: replay.players.map { |player| { player_index: player.client_index, name: utf8(player.name), fingerprint: player.fingerprint, color: player.color, spawn: { random: player&.is_random_spawn, point: player.spawn_point }, faction: { random: player&.is_random_faction, chosen: player.faction_name.downcase, actual: player&.faction_id }, team: player&.team, is_bot: player&.is_bot || false, is_winner: player&.outcome == 'Won', outcome_time: player.outcome_time.iso8601 } } } end