import PodSix
PodSix.engine = "pygame"
from PodSix.Resource import *
from PodSix.PhysicsBox2d import *

from PodSix.Game import Game
from PodSix.ArrayOps import Multiply, Distance

class Core(Game, EventMonitor):
	def __init__(self):
		gfx.Caption('Test Gfx features')
		gfx.SetSize([800, 600])
		gfx.LoadFont("hemihead", 0.04, "default")
		Game.__init__(self)
		EventMonitor.__init__(self)
		
		self.physics = Physics(gravity=(0, 0))
		#body = Circle(self.physics)
		self.circles = []
		self.const = 100.0 / gfx.width
		self.c = 0
	
	def Run(self):
		self.physics.Update()
		#position = body._body.GetPosition()
		#angle = body._body.GetAngle()
		#print position, angle
		
		gfx.SetBackgroundColor([255, 255, 255])
		[gfx.DrawCircle(Multiply(c._body.GetPosition().tuple(), 1.0 / self.const), (0, 0, 0), c._shape.getAsType().GetRadius() / self.const) for c in self.circles]
		Game.Run(self)
		gfx.Flip()
	
	def MouseDown(self, e):
		collided = [c for c in self.circles if Distance(e.pos, Multiply((c._body.GetPosition().x, c._body.GetPosition().y), 1.0 / self.const)) < c._body.GetShapeList().asCircle().GetRadius() / self.const]
		print collided
		if len(collided):
			[c.ApplyImpulse((1000.0, 0.0), (0.0, 0.0)) for c in collided]
		else:
			self.circles.append(Circle(self.physics, pos=Multiply(e.pos, self.const), radius=5.0, damping=1.0, density = self.c % 2))
			self.c += 1
	
	def MouseUp(self, e):
		pass
	
	def KeyDown_escape(self, e):
		self.Quit()
	
	def Pump(self):
		Game.Pump(self)
		EventMonitor.Pump(self)

c = Core()
c.Launch()


