To much gap between last commit
Im now working next on shoorting for turret Added new sand map and new cannon tower images aswell as function to play animations, showing range, placing turrets on allowed tiles for towers Buy and cancel button to buy towers
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
import pygame as pg
|
||||
from game.util import *
|
||||
|
||||
class Tower(pg.sprite.Sprite):
|
||||
def __init__(self, game, pos, tile_pos, type, range, level=1):
|
||||
super().__init__()
|
||||
self.game = game
|
||||
self.type = type
|
||||
self.image = self.game.assets[type]
|
||||
self.rect = self.image.get_rect()
|
||||
self.rect.center = pos
|
||||
|
||||
self.range = range
|
||||
self.selected = False
|
||||
|
||||
self.pos = pos
|
||||
self.tile_pos = tile_pos
|
||||
self.level = level
|
||||
self.action = ""
|
||||
self.set_action('shoot')
|
||||
|
||||
def update(self, enemies):
|
||||
self.animation.update()
|
||||
|
||||
def set_action(self, action):
|
||||
if action != self.action:
|
||||
self.action = action
|
||||
self.animation = self.game.assets[self.type + '/' + self.action].copy()
|
||||
|
||||
def render(self, surf, camera):
|
||||
screen_pos = camera.world_to_screen(pg.Vector2(
|
||||
tile_to_pixel(self.tile_pos, self.game.tilemap.tile_size, True)
|
||||
))
|
||||
|
||||
anim_img = self.animation.img()
|
||||
scaled_image = pg.transform.scale(
|
||||
anim_img,
|
||||
(
|
||||
int(anim_img.get_width() * camera.zoom),
|
||||
int(anim_img.get_height() * camera.zoom)
|
||||
)
|
||||
)
|
||||
|
||||
rect = scaled_image.get_rect(center=screen_pos)
|
||||
|
||||
if self.selected:
|
||||
scaled_range = int(self.range * camera.zoom)
|
||||
range_surf = pg.Surface((scaled_range * 2, scaled_range * 2), pg.SRCALPHA)
|
||||
pg.draw.circle(range_surf, (200, 200, 200, 100), (scaled_range, scaled_range), scaled_range)
|
||||
range_rect = range_surf.get_rect(center=screen_pos)
|
||||
surf.blit(range_surf, range_rect)
|
||||
|
||||
surf.blit(scaled_image, rect)
|
||||
|
||||
class TowerGroup(pg.sprite.Group):
|
||||
def render(self, surf, camera):
|
||||
for tower in self.sprites():
|
||||
tower.render(surf, camera)
|
||||
|
||||
def update(self, enemies):
|
||||
for tower in self.sprites():
|
||||
tower.update(enemies)
|
||||
Reference in New Issue
Block a user