import math
import sweeperlib


WIN_WIDTH = 1200
WIN_HEIGHT = 600
GRAVITATIONAL_ACCEL = 1.5

game = {
    "x": 40,
    "y": 40,
    "angle": 0,
    "force": 0,
    "x_velocity": 0,
    "y_velocity": 0,
    "flight": False
}

def initial_state():

    *** Write your box initialization function here. ***

def launch():

    *** Write your box launching function here. ***


def flight(elapsed):

    *** Write your flight path updating function here. ***


def draw():
    """
    This function handles interface's and objects drawing.
    You do NOT need to modify this.
    """
    sweeperlib.clear_window()
    sweeperlib.draw_background()
    sweeperlib.begin_sprite_draw()
    sweeperlib.prepare_sprite("x", game["x"], game["y"])
    sweeperlib.draw_sprites()
    sweeperlib.draw_text("{}°\tforce: {}".format(game["angle"], game["force"]), 10, 505)
    sweeperlib.draw_text(
        "Q: Quit  | "
        "R: Reset |  "
        "←/→: Set angle |  "
        "↑/↓: Set Force  |  "
        "Space: Launch",
        10, 560,
        size=20
    )
    sweeperlib.draw_text("1", 380, 175, size=22)
    sweeperlib.draw_text("2", 830, 225, size=22)
    sweeperlib.draw_text("3", 170, 455, size=22)
    sweeperlib.draw_text("4", 50, 455, size=22)
    sweeperlib.draw_text("5", 700, 455, size=22)


def keypress(sym, mods):
    """
    This function handles keyboard input.
    You do NOT need to modify this.
    """
    key = sweeperlib.pyglet.window.key

    if sym == key.Q:
        sweeperlib.close()

    if sym == key.R:
        initial_state()

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

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

    if sym == key.SPACE:
        launch()


if __name__ == "__main__":

    sweeperlib.load_sprites("sprites")
    sweeperlib.create_window(width=WIN_WIDTH, height=WIN_HEIGHT)
    sweeperlib.set_draw_handler(draw)
    sweeperlib.set_keyboard_handler(keypress)
    sweeperlib.set_interval_handler(flight)
    sweeperlib.start()
