# import all files
from config import *
from sprites import Player, all_sprites, load_img, screen, HPBar, load_img_noalpha
from colours import *
import maps 
import events
# import modules
from os import path
import os, sys
import pygame
from pygame.locals import *

# initialization

pygame.init()
#pygame.mixer.init()
pygame.display.set_caption(WIN_NAME)
clock=pygame.time.Clock()

# init resources

bg=load_img_noalpha("bg.png")
splash=load_img_noalpha("splash.png")
end=load_img_noalpha("end0.png")
p2end=load_img_noalpha("endp1.png")
p1end=load_img_noalpha("endp2.png")

# debug text

font=pygame.font.SysFont("Arial", 12)

def draw_debug_text():
    texts=[
            font.render("P1 HP: " + str(events.players[0].hp), True, (100,100,100)),
            font.render("P2 HP: " + str(events.players[1].hp), True, (100,100,100))
        ]
    count=0
    for text in texts:
        screen.blit(text, (0,count*12))
        count+=1

def init_round():
    events.players.append(Player('p1', 400, 100, 10))
    events.players.append(Player('p2', 430, 300, 10))
    events.p1_group.add(events.players[0])
    events.p2_group.add(events.players[1])
    all_sprites.add(events.players)
    events.running=True
    events.bars.append(HPBar(200,886))
    events.bars.append(HPBar(570,886))
    all_sprites.add(events.bars)

def clear_round():
    events.players[0].delete()
    events.players[1].delete()
    for i in events.p1_bullet:
        i.delete()
    for i in events.p2_bullet:
        i.delete()
    events.p1_group.remove()
    events.p2_group.remove()
    events.players.clear()
    for i in events.bars:
        i.delete()
    events.bars.clear()
    events.p1_bullet.clear()
    events.p2_bullet.clear()
    events.p1_bullet_group.remove()
    events.p2_bullet_group.remove()
    all_sprites.remove()

def waitforkey():
    waiting=True
    while waiting:
        clock.tick(FPS) 
        pygame.event.pump()
        events.event_handler()   
        keys=pygame.key.get_pressed()
        if keys[pygame.K_SPACE]:
            waiting=False
        if keys[pygame.K_ESCAPE]:
            pygame.quit()
            sys.exit()

def startscreen():
    screen.blit(splash,(0,0)) 
    pygame.display.flip()
    waitforkey()

def endscreen():
    if events.players[0].hp<=0 and events.players[1].hp<=0: #both players dead
        screen.blit(end,(0,0))
    elif events.players[0].hp<=0:
        screen.blit(p1end,(0,0))
    elif events.players[1].hp<=0:
        screen.blit(p2end,(0,0))
    pygame.display.flip()
    waitforkey()

# game loop
firstrun=True
while events.mainloop:
    init_round()
    if firstrun:
        startscreen()
    pygame.event.clear()
    while events.running:
        clock.tick(FPS)
        # events
        pygame.event.pump()
        events.event_handler()
        # update
        all_sprites.update()
        screen.fill(BLACK)
        if events.dead():
            break
        # draw
        screen.blit(bg,(0,0))
        #draw_debug_text()
        all_sprites.draw(screen)
        pygame.display.flip()   
    endscreen()
    clear_round()
    firstrun=False
pygame.quit()
sys.exit()