def render(self): glClearColor(1,0,1,1) glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) camera = self.camera.copy() if self.projectile: camera.x = min(max(self.projectile.pos.x - 19, 0), self.camera_max) self.follow_cam = camera elif self.follow_cam: camera = self.follow_cam self.render_hud(camera) self.render_world(camera) mat = Matrix.scale(self.size.x, self.size.y) Shader.upload_projection_view(self.ortho, Matrix.identity()) Shader.upload_model(mat) self.fbo.bind_texture() self.post.bind() self.quad.draw() y = self.size.x * (160./800) # hud background pm = Matrix.transform( 0, y, 0, self.size.x, -y, 1 ) self.shader_hud.bind() self.hudbg.texture_bind() Shader.upload_model(pm) self.quad.draw() # ui pm = Matrix.transform( 0, self.hud_ui.height, 0, self.hud_ui.width, -self.hud_ui.height, 1 ) self.hud_ui.draw() self.shader_hud.bind() Shader.upload_model(pm) self.quad.draw() # messagebox mat = Matrix.translate(self.size.x / 2 - self.hud_msgbox.width / 2, self.size.y - self.hud_msgbox.height) Shader.upload_model(mat) self.hud_msgbox.draw() # scrollbar mat = Matrix.translate(0, y-22) Shader.upload_model(mat) self.scrollbar.draw() pygame.display.flip()
def render_world(self, camera): view = Matrix.lookat( camera.x + 19, camera.y, 15, camera.x + 19, camera.y, 0, 0,1,0) with self.fbo as frame: frame.clear(0,0.03,0.15,1) Shader.upload_projection_view(self.projection, view) Shader.upload_game(None) Shader.upload_light(self.ambient_light, self.cull_lights()) # parallax background pm = Matrix.transform( 0.75 * camera.x, camera.y * 0.5 - 12, 0, (19*4) * self.parallax_rep, 19, 0 ) self.shader_hud.bind() self.parallax.texture_bind() Shader.upload_model(pm) self.repquad.draw() Shader.upload_projection_view(self.projection, view) self.shader.bind() self.map.draw() # entities for obj in self.map.obj: obj.draw() if not self.is_over: self.projectile.draw()
def __init__(self, height, properties, **kwargs): Item.__init__(self, height=height, properties=properties, **kwargs) flip = 1 offset = 0 if 'Flip' in properties: flip = -1 offset = 5 self.mat = Matrix.transform(self.pos.x + offset, self.pos.y - height * (1.0/8) + 1, 0, 5 * flip, 5, 1) self.loaded = self.sprite self.unloaded = image.Sprite(diffuse=Catapult.other) self.broken = image.Sprite(diffuse=Catapult.broken)