import pygame
import main					#able to load the lib
main.init()					#
import data, color, spr_type			#then load the libs
from color import *
from spr_type import *
import random

def init():
	global arrow_img
	global arrow_rect0
	global arrow_rect1
	global arrow_rect2
	global arrow_rect3
	global arrow_rect4
	global arrow_rect5
	global arrow_rect6
	global arrow_img_
	global arrow_rect0_
	global arrow_rect1_
	global arrow_rect2_
	global arrow_rect3_
	global arrow_rect4_
	global arrow_rect5_
	global arrow_rect6_
	arrow_img = data.load_img('ARROW.png')
	arrow_img.set_colorkey(white)
	arrow_img.convert()
	arrow_rect0 = arrow_img.get_rect()
	arrow_rect1 = arrow_rect0.move(0,100)
	arrow_rect2 = arrow_rect0.move(0,150)
	arrow_rect3 = arrow_rect0.move(0,200)
	arrow_rect4 = arrow_rect0.move(0,250)
	arrow_rect5 = arrow_rect0.move(0,300)
	arrow_rect6 = arrow_rect0.move(0,350)
	arrow_rect0 = arrow_rect0.move(0,50)
	arrow_img_ = pygame.transform.flip(arrow_img, False, True)
	arrow_img_.set_colorkey(white)
	arrow_img_.convert()
	arrow_rect0_ = arrow_img_.get_rect()
	arrow_rect1_ = arrow_rect0_.move(576,100)
	arrow_rect2_ = arrow_rect0_.move(576,150)
	arrow_rect3_ = arrow_rect0_.move(576,200)
	arrow_rect4_ = arrow_rect0_.move(576,250)
	arrow_rect5_ = arrow_rect0_.move(576,300)
	arrow_rect6_ = arrow_rect0_.move(576,350)
	arrow_rect0_ = arrow_rect0_.move(576,50)

class conveyor_in(pygame.sprite.Sprite):
	def __init__(self):
		pygame.sprite.Sprite.__init__(self)
		self.image = arrow_img
		self.rect = pygame.Rect(0,50,64,350)
		self.rects = [arrow_rect0,arrow_rect1,arrow_rect2,arrow_rect3,arrow_rect4,arrow_rect5,arrow_rect6]

	def update(self):
		pass

	def draw(self,screen):
		for arrow_rect in self.rects:
			screen.blit(self.image,arrow_rect)

class stopper(pygame.sprite.Sprite):
	def __init__(self):
		pygame.sprite.Sprite.__init__(self)
		self.image = data.load_img('STOP.png')
		self.rect = self.image.get_rect()
		self.image.convert()
		self.rect = self.rect.move(0,400)
		self.image.set_colorkey(white)

	def update(self):
		pass

	def draw(self,screen):
		screen.blit(self.image,self.rect)

class conveyor_out(pygame.sprite.Sprite):
	def __init__(self):
		pygame.sprite.Sprite.__init__(self)
		self.image = arrow_img_
		self.rect = pygame.Rect(576,50,64,350)
		self.rects = [arrow_rect0_,arrow_rect1_,arrow_rect2_,arrow_rect3_,arrow_rect4_,arrow_rect5_,arrow_rect6_]

	def update(self):
		pass

	def draw(self,screen):
		for arrow_rect in self.rects:
			screen.blit(self.image,arrow_rect)

if __name__=="__main__":
	#tester
	pygame.init()					#first
	screen = pygame.display.set_mode((640,480))	#the screen
	clock = pygame.time.Clock()			#the time

	#accelerator
	exit_button = pygame.QUIT
	pygame.event.set_blocked(None)
	pygame.event.set_allowed(exit_button)
	happen = pygame.event.peek
	fps = clock.tick
	flip = pygame.display.flip
	cls = screen.fill
	white = color.white

	#conveyor
	init()
	convoy_in = conveyor_in()
	convoy_out = conveyor_out()
	stop = stopper()

	#kossin
	import kossin
	kossin.init()

	#cube
	import grapping_cube
	grapping_cube.init()
	cube = grapping_cube.grappling_cube()
	taken = None

	sprites = pygame.sprite.Group()
	for i in range(15):
		sprites.add(kossin.kossin(random.randint(80,560),random.randint(80,320)))

	#main loop
	end = False
	raize = False
	button = False
	while not end:
		fps(40)
		flip()
		cls(white)
		if happen(exit_button):
			end = True
		else:
			pygame.event.clear()
		if True in pygame.mouse.get_pressed():
			if not button:
				raize = True
				button = True
			else:
				raize = False
		else:
			raize = False
			button = False

		#test conveyor
		stop.update()
		stop.draw(screen)
		convoy_in.update()
		convoy_in.draw(screen)
		for spr in pygame.sprite.spritecollide(convoy_in,sprites,0):
			if spr != cube.spr and not pygame.sprite.spritecollideany(stop,sprites):
				spr.rect.centerx = convoy_in.rect.centerx
				spr.rect.centery += 1
		convoy_out.update()
		convoy_out.draw(screen)
		for spr in pygame.sprite.spritecollide(convoy_out,sprites,0):
			if spr != cube.spr:
				spr.rect.centerx = convoy_out.rect.centerx
				spr.rect.centery -= 1

		#sprite
		sprites.update()
		sprites.draw(screen)

		#test cube
		cube.update()
		cube.draw(screen)




		if raize :
			(x,y) = pygame.mouse.get_pos()
			if not taken:
				for spr in sprites:
					if spr.rect.collidepoint(x,y):
						cube.take(spr)
						taken = spr
			else:
					cube.go((x,y))
					taken = None




