import pygame
import sys
def load():
    # path of player with different states
    PLAYER_PATH = (
            'assets/sprites/newbird-upflap.png',
            'assets/sprites/newbird-midflap.png',
            'assets/sprites/newbird-downflap.png'
    )

    # path of background
    BACKGROUND_PATH = 'assets/sprites/background-black.png'

    # path of pipe
    PIPE_PATH = 'assets/sprites/cactus-green.png'

    IMAGES, SOUNDS, HITMASKS = {}, {}, {}

    # Commented out since we are not scoring in this example
    # numbers sprites for score display
    #IMAGES['numbers'] = (
    #    pygame.image.load('assets/sprites/0.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/1.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/2.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/3.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/4.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/5.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/6.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/7.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/8.png').convert_alpha(),
    #    pygame.image.load('assets/sprites/9.png').convert_alpha()
    #)

    # base (ground) sprite
    IMAGES['base'] = pygame.image.load('assets/sprites/base.png').convert_alpha()

    # sounds
    if 'win' in sys.platform:
        soundExt = '.wav'
    else:
        soundExt = '.ogg'

    # Commented out since we are not using sounds in this example
    #SOUNDS['die']    = pygame.mixer.Sound('assets/audio/die' + soundExt)
    #SOUNDS['hit']    = pygame.mixer.Sound('assets/audio/hit' + soundExt)
    #SOUNDS['point']  = pygame.mixer.Sound('assets/audio/point' + soundExt)
    #SOUNDS['swoosh'] = pygame.mixer.Sound('assets/audio/swoosh' + soundExt)
    #SOUNDS['wing']   = pygame.mixer.Sound('assets/audio/wing' + soundExt)

    # select random background sprites
    IMAGES['background'] = pygame.image.load(BACKGROUND_PATH).convert()

    # select random player sprites
    IMAGES['player'] = (
        pygame.image.load(PLAYER_PATH[0]).convert_alpha(),
        pygame.image.load(PLAYER_PATH[1]).convert_alpha(),
        pygame.image.load(PLAYER_PATH[2]).convert_alpha(),
    )

    # select random pipe sprites
    IMAGES['pipe'] = (
        pygame.transform.rotate(
            pygame.image.load(PIPE_PATH).convert_alpha(), 180),
        pygame.image.load(PIPE_PATH).convert_alpha(),
    )

    # hismask for pipes
    HITMASKS['pipe'] = (
        getHitmask(IMAGES['pipe'][0]),
        getHitmask(IMAGES['pipe'][1]),
    )

    # hitmask for player
    HITMASKS['player'] = (
        getHitmask(IMAGES['player'][0]),
        getHitmask(IMAGES['player'][1]),
        getHitmask(IMAGES['player'][2]),
    )

    return IMAGES, SOUNDS, HITMASKS

def getHitmask(image):
    """returns a hitmask using an image's alpha."""
    mask = []
    for x in range(image.get_width()):
        mask.append([])
        for y in range(image.get_height()):
            mask[x].append(bool(image.get_at((x,y))[3]))
    return mask
