import math
import haravasto


IKKUNAN_LEVEYS = 1200
IKKUNAN_KORKEUS = 600
PUTOAMISKIIHTYVYYS = 1.5

peli = {
    "x": 40,
    "y": 40,
    "kulma": 0,
    "voima": 0,
    "x_nopeus": 0,
    "y_nopeus": 0,
    "lennossa": False
}

def alkutila():
    
    *** Kirjoita tähän oma toteutuksesi laatikon alustusfunktiolle. ***

def ammu():

    *** Kirjoita tähän oma toteutuksesi laatikon laukaisufunktiolle. ***


def lento(kulunut_aika):

    *** Kirjoita tähän oma toteutuksesi lentoradan päivitysfunktiolle. ***


def piirra():
    """
    Tämä funktio hoitaa peli-ikkunan ja kappaleiden piirtämisen.
    Funktiota ei tarvitse muokata.
    """
    haravasto.tyhjaa_ikkuna()
    haravasto.piirra_tausta()
    haravasto.aloita_ruutujen_piirto()
    haravasto.lisaa_piirrettava_ruutu("sorsa", peli["x"], peli["y"])
    haravasto.piirra_ruudut()
    haravasto.piirra_tekstia("{}°\tVoima: {}".format(peli["kulma"], peli["voima"]), 10, 505)
    haravasto.piirra_tekstia(
        "Q: Lopeta  | "
        "R: Reset |  "
        "←/→: Säädä kulma  |  "
        "↑/↓: Säädä voima  |  "
        "Space: Laukaise", 
        10, 560, koko=20
    )
    haravasto.piirra_tekstia("1", 380, 175, koko=22)
    haravasto.piirra_tekstia("2", 830, 225, koko=22)
    haravasto.piirra_tekstia("3", 170, 455, koko=22)
    haravasto.piirra_tekstia("4", 50, 455, koko=22)
    haravasto.piirra_tekstia("5", 700, 455, koko=22)


def nappain(sym, mods):
    """
    Tämä funktio hoitaa näppäinsyötteiden käsittelyn.
    Funktiota ei tarvitse muokata.
    """
    key = haravasto.pyglet.window.key

    if sym == key.Q:
        haravasto.lopeta()

    if sym == key.R:
        alkutila()

    if sym == key.RIGHT:
        peli["kulma"] -= 10
        if peli["kulma"] < 0:
            peli["kulma"] = 350
    elif sym == key.LEFT:
        peli["kulma"] += 10
        if peli["kulma"] > 350:
            peli["kulma"] = 0

    if sym == key.UP:
        if peli["voima"] < 50:
            peli["voima"] += 5
    elif sym == key.DOWN:
        if peli["voima"] >= 5:
            peli["voima"] -= 5
        else:
            peli["voima"] = 0

    if sym == key.SPACE:
        ammu()


if __name__ == "__main__":

    haravasto.lataa_kuvat("spritet")
    haravasto.lataa_sorsa("spritet")
    haravasto.luo_ikkuna(leveys=IKKUNAN_LEVEYS, korkeus=IKKUNAN_KORKEUS)
    haravasto.aseta_piirto_kasittelija(piirra)
    haravasto.aseta_nappain_kasittelija(nappain)
    haravasto.aseta_toistuva_kasittelija(lento)
    haravasto.aloita()
