Source code for metrics.util

import sc2reader

"""
This module contains a number of useful functions.

"""

def gametime_to_realtime_constant_r(replay):
    return replay.game_fps * replay.game_length.seconds / replay.frames


def realtime_to_gametime_constant_r(replay):
    return 1 / gametime_to_realtime_constant_r(replay)


def convert_to_gametime(real_time_s, game_frames,
                                 game_fps, game_length_s):
    game_time = 0

    real_fps = game_frames / game_length_s
    real_game_frame = real_time_s * real_fps
    game_time = round(real_game_frame / game_fps)

    return game_time


[docs]def convert_to_gametime_r(replay, real_time_s): ''' Converts the real time of a point in the replay to the internally calculated game time. Args: replay (sc2reader.replay): The sc2reader replay object from which to convert the real time to. real_time_s (int): The real time in the replay in seconds. Returns: int: The game time in seconds. ''' return convert_to_gametime(real_time_s, replay.frames, replay.game_fps, replay.game_length.seconds)
def convert_to_realtime(game_time_s, game_frames, game_fps, game_length_s): real_time = 0 real_game_frame = game_time_s * game_fps real_fps = game_frames / game_length_s real_time = round(real_game_frame / real_fps) return real_time
[docs]def convert_to_realtime_r(replay, game_time_s): """ Converts the internally calculated game time of a point in the replay to the real time, as can be seen when watching a replay. Args: replay (sc2reader.replay): The sc2reader replay object from which to convert the real time to. game_time_s (int): The game time internally calculated in the replay in seconds. Returns: int: The real time in seconds. """ return convert_to_realtime(game_time_s, replay.frames, replay.game_fps, replay.game_length.seconds)
def convert_frame_to_gametime(game_frame, game_fps): return game_frame // game_fps def convert_frame_to_gametime_r(replay, game_frame): return convert_frame_to_gametime(game_frame, replay.game_fps) def convert_frame_to_realtime_r(replay, game_frame): #gt = convert_frame_to_gametime_r(replay, game_frame) #return convert_to_realtime_r(replay, gt) real_fps = replay.frames / replay.game_length.seconds real_time = round(game_frame / real_fps) return real_time
[docs]def is_hallucinated(unit): """ A special function used to bypass a bug found in ``sc2reader.Data.Unit.hallucinated``, where the hallucinated property was not returning a correct boolean. Args: unit (sc2reader.Data.Unit): The ``Unit`` object. Returns: bool: True if the unit is hallucinated, False if it was not. """ ################ bug : for whatever reason hallucinated attribute does not return correctly, it seems flags == 0 indicates hallucination (but only applies for army ######################## return unit.hallucinated
#return not ((unit.is_army and unit.flags != 0) or unit.is_worker)