def __init__(self, x, y, size_factor): if size_factor > Asteroid.GetMaximumFactor(): size_factor = Asteroid.GetMaximumFactor() r = Asteroid.GetActualRadius(size_factor) self.size_factor = size_factor df = Engine_reference().CurrentScene().difficultyFactor hp = 120 * size_factor if df > 2: hp += hp*(df/25.0) BasicEntity.__init__(self, x, y, "images/asteroid%s.png" % (randint(1,3)), r, hp) self.group = Group.ASTEROIDS angle = random() * 2 * pi self.rotation_speed = 0 if random() > 0.2: self.rotation_speed = random()*pi - pi/2 self.node.modifier().set_rotation( angle ) self.has_splitted = False self.mass = 1000.0 + 100000000*size_factor self.collidedWithAsteroids = [] self.diedFromPlanet = False self.turret = None if Asteroid.CheckChanceForTurret(size_factor): if df > 110: df = 110.0 cooldown = 2.7 - (size_factor/Asteroid.GetMaximumFactor()) - df/100 - random()*0.5 speed = 80 + df power = 0.3 + random()*(size_factor/Asteroid.GetMaximumFactor()) self.turret = Turret(self, "Ship", cooldown, speed, power, Color(1.0, 0.0, 0.3, 1.0))
def __init__(self, x, y, velocity, power, damage = 25.0, isFromPlayer=False): self.parent = None #game entity that "owns" this projectile self.power = power self.damage = damage * power self.original_damage = self.damage self.lifetime = 10.0 * power self.original_radius = Projectile.GetActualRadius(power) BasicEntity.__init__(self, x, y, "images/projectile.png", self.original_radius, self.damage) self.shape.set_hotspot( Vector2D(32.0, 32.0) ) self.shape.set_size( Vector2D(64, 128) ) # original projectile.png size self.on_hit_events = [] #self.tracking_target = None self.tracking_coefficient = 0.0 self.rangeCheck = None self.isFromPlayer = isFromPlayer self.hitsFriendlyToParent = True self.hitsSameClassAsParent = True # scale: # base_radius <=> 0.5 (scale value) # # radius <=> scale scale = self.radius * 0.20 / Projectile.base_radius self.node.modifier().set_scale( Vector2D(scale, scale) ) self.node.modifier().set_rotation( -(velocity.Angle() + pi/2.0) ) self.velocity = velocity self.value = 0 self.life_hud.node.set_active(False)
def __init__(self, parent, life, starting_angle): self.parent = parent x = parent.GetPos().get_x() y = parent.GetPos().get_y() BasicEntity.__init__(self, x, y, "images/satellite.png", 10.0, life) self.orbit_angle = starting_angle self.angle_speed = pi/2.5 # angle speed in radians per second self.turret = Weapons.Turret(self, "Asteroid", 0.6, 170.0, 0.6, Color(0.0, 1.0, 0.1, 0.7)) self.turret.hitsFriendlyToParent = False self.turret.hitsSameClassAsParent = False
def __init__(self, x, y, size_factor): self.size_factor = size_factor df = Engine_reference().CurrentScene().difficultyFactor r = 75.0 * size_factor hp = 600 * size_factor hp += hp*(df/100.0) BasicEntity.__init__(self, x, y, "images/planet%s.png" % (randint(1,5)), r, hp) self.has_splitted = False self.well = GravityWell(x, y, r) self.well.AddIDToIgnoreList(self.id) AddNewObjectToScene(self.well)
def __init__(self, x, y, texture_name, lifetime, effect, name, effectCreationFunc): r = 15.0 BasicEntity.__init__(self, x, y, texture_name, r, 1) self.life_hud.node.set_active(False) self.max_velocity = 135.0 self.lifespan = lifetime self.lifetime = lifetime self.effect = effect self.effect.creation_func = effectCreationFunc self.wasApplied = False self.blink_time = 0.0 self.text = Engine_reference().text_manager().GetText(name) self.textNode = Node(self.text) self.textNode.modifier().set_offset( Vector2D(-self.text.width()/2.0, 0.0 ) ) # TODO: text hotspot! self.textNode.set_active(False) self.node.AddChild(self.textNode)
def __init__(self, x, y, data): self.image_w = 420.0 self.image_h = 830.0 BasicEntity.__init__(self, x, y, "images/ship.png", 20.0, data.max_life, self.image_h/self.image_w) self.radius = (self.size*0.5).Length() self.node.set_zindex(1.0) self.graphic_node = Node() self.node.set_drawable(None) self.graphic_node.set_drawable(self.shape) self.graphic_node.set_zindex(1.0) self.node.AddChild(self.graphic_node) self.group = Group.SHIP self.acceleration = Vector2D(0.0, 0.0) self.data = data self.max_energy = self.data.max_energy self.energy = self.max_energy self.bonus_regen_counter = 0.0 self.bonus_regen_threshold = 3.0 self.speed = 400.0 # |acceleration| in a given frame self.max_speed = 200.0 # max |velocity| ship can attain. #self.rangeCheck = RangeCheck(0, 0, 1024.0, "Asteroid") #self.rangeCheck.AttachToEntity(self) self.pulse_weapon = Weapons.Pulse() self.right_weapon = None self.pulse_weapon.Activate(self) #self.right_weapon.Activate(self) offset = self.size.get_y()/2.0 self.life_hud.SetOffset(offset) self.energy_hud = BarUI(self, "energy", Color(0.0,0.0,1.0,1.0), offset+BAR_SIZE) self.hud_node.AddChild(self.energy_hud.node) self.charge_hud = BarUI(self.pulse_weapon, "charge_time", Color(1.0,1.0,0.0,1.0), -offset-2*BAR_SIZE) self.hud_node.AddChild(self.charge_hud.node)